Search in sources :

Example 11 with AgreeRenaming

use of com.rockwellcollins.atc.agree.analysis.AgreeRenaming in project AMASE by loonwerks.

the class GenMCSHandler method createVerification.

/**
 * Copied from AGREE VerifyHandler - allows for min cut set Analysis Type in
 * param analysisType
 *
 * @param resultName
 * @param compInst
 * @param lustreProgram
 * @param agreeProgram
 * @param analysisType
 * @return
 */
private AnalysisResult createVerification(String resultName, ComponentInstance compInst, Program lustreProgram, AgreeProgram agreeProgram, AnalysisType analysisType) {
    AgreeAutomaterRegistry aAReg = (AgreeAutomaterRegistry) ExtensionRegistry.getRegistry(ExtensionRegistry.AGREE_AUTOMATER_EXT_ID);
    List<AgreeAutomater> automaters = aAReg.getAgreeAutomaters();
    AgreeRenaming renaming = new AgreeRenaming();
    AgreeLayout layout = new AgreeLayout();
    Node mainNode = null;
    for (Node node : lustreProgram.nodes) {
        if (node.id.equals(lustreProgram.main)) {
            mainNode = node;
            break;
        }
    }
    if (mainNode == null) {
        throw new AgreeException("Could not find main lustre node after translation");
    }
    List<String> properties = new ArrayList<>();
    RenamingVisitor.addRenamings(lustreProgram, renaming, compInst, layout);
    addProperties(renaming, properties, mainNode, agreeProgram);
    for (AgreeAutomater aa : automaters) {
        renaming = aa.rename(renaming);
        layout = aa.transformLayout(layout);
    }
    JKindResult result;
    switch(analysisType) {
        case Consistency:
            result = new ConsistencyResult(resultName, mainNode.properties, Collections.singletonList(true), renaming);
            break;
        case Realizability:
            result = new JRealizabilityResult(resultName, renaming);
            break;
        case AssumeGuarantee:
            result = new JKindResult(resultName, properties, renaming);
            break;
        default:
            throw new AgreeException("Unhandled Analysis Type");
    }
    queue.add(result);
    ComponentImplementation compImpl = AgreeUtils.getInstanceImplementation(compInst);
    linker.setProgram(result, lustreProgram);
    linker.setComponent(result, compImpl);
    linker.setContract(result, getContract(compImpl));
    linker.setLayout(result, layout);
    linker.setReferenceMap(result, renaming.getRefMap());
    linker.setLog(result, AgreeLogger.getLog());
    linker.setRenaming(result, renaming);
    return result;
}
Also used : ComponentImplementation(org.osate.aadl2.ComponentImplementation) JRealizabilityResult(jkind.api.results.JRealizabilityResult) AgreeRenaming(com.rockwellcollins.atc.agree.analysis.AgreeRenaming) Node(jkind.lustre.Node) ArrayList(java.util.ArrayList) JKindResult(jkind.api.results.JKindResult) AgreeAutomaterRegistry(com.rockwellcollins.atc.agree.analysis.extentions.AgreeAutomaterRegistry) AgreeLayout(com.rockwellcollins.atc.agree.analysis.AgreeLayout) ConsistencyResult(com.rockwellcollins.atc.agree.analysis.ConsistencyResult) AgreeAutomater(com.rockwellcollins.atc.agree.analysis.extentions.AgreeAutomater) AgreeException(com.rockwellcollins.atc.agree.analysis.AgreeException)

Example 12 with AgreeRenaming

use of com.rockwellcollins.atc.agree.analysis.AgreeRenaming in project AMASE by loonwerks.

the class SafetyAnalysisResultLabelProvider method getText.

@Override
public String getText(Object element) {
    if (element instanceof SafetyPropertyResult) {
        SafetyPropertyResult pr = (SafetyPropertyResult) element;
        switch(column) {
            case PROPERTY:
                if (AddPairwiseFaultDriverWitnesses.FAULT_DRIVER_PAIR_WITNESS_PATTERN.matcher(pr.getName()).find()) {
                    List<String> guarantees = new ArrayList<>();
                    AgreeRenaming renaming = (AgreeRenaming) pr.getRenaming();
                    final Pattern GUARANTEE_PATTERN = Pattern.compile(renaming.forceRename(GUARANTEE_BASENAME).replaceAll(".", "\\.") + "(\\d+)");
                    Matcher matcher = GUARANTEE_PATTERN.matcher(pr.getName());
                    while (matcher.find()) {
                        String varName = GUARANTEE_BASENAME + matcher.group(1);
                        String guaranteeName = renaming.rename(varName);
                        if (guaranteeName.length() > TRUNCATION_LENGTH) {
                            guaranteeName = guaranteeName.substring(0, TRUNCATION_LENGTH) + " ...";
                        }
                        guarantees.add("\"" + guaranteeName + "\"");
                    }
                    return String.join(" and ", guarantees) + " cannot fail together";
                }
            default:
        }
    }
    return super.getText(element);
}
Also used : Pattern(java.util.regex.Pattern) SafetyPropertyResult(edu.umn.cs.crisys.safety.analysis.results.SafetyPropertyResult) AgreeRenaming(com.rockwellcollins.atc.agree.analysis.AgreeRenaming) Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList)

Aggregations

AgreeRenaming (com.rockwellcollins.atc.agree.analysis.AgreeRenaming)12 AgreeException (com.rockwellcollins.atc.agree.analysis.AgreeException)8 ArrayList (java.util.ArrayList)8 JKindResult (jkind.api.results.JKindResult)8 ComponentImplementation (org.osate.aadl2.ComponentImplementation)7 AgreeLayout (com.rockwellcollins.atc.agree.analysis.AgreeLayout)6 Node (jkind.lustre.Node)5 ConsistencyResult (com.rockwellcollins.atc.agree.analysis.ConsistencyResult)4 AgreeAutomater (com.rockwellcollins.atc.agree.analysis.extentions.AgreeAutomater)4 AgreeAutomaterRegistry (com.rockwellcollins.atc.agree.analysis.extentions.AgreeAutomaterRegistry)4 AnalysisResult (jkind.api.results.AnalysisResult)4 JRealizabilityResult (jkind.api.results.JRealizabilityResult)4 Renaming (jkind.api.results.Renaming)4 EObject (org.eclipse.emf.ecore.EObject)4 Action (org.eclipse.jface.action.Action)4 IAction (org.eclipse.jface.action.IAction)4 List (java.util.List)3 PropertyResult (jkind.api.results.PropertyResult)3 Program (jkind.lustre.Program)3 InvalidProperty (jkind.results.InvalidProperty)3