use of de.be4.classicalb.core.parser.node.PModelClause in project prob2 by bendisposto.
the class EventBMachineTranslator method translateMachine.
public Node translateMachine() {
AEventBModelParseUnit ast = new AEventBModelParseUnit();
ast.setName(new TIdentifierLiteral(machine.getName()));
List<PModelClause> clauses = new ArrayList<>();
clauses.add(processContexts());
ARefinesModelClause refines = processRefines();
if (refines != null) {
clauses.add(refines);
}
clauses.add(processVariables());
clauses.addAll(processInvariantsAndTheorems());
AVariantModelClause variant = processVariant();
if (variant != null) {
clauses.add(variant);
}
clauses.add(processEvents());
ast.setModelClauses(clauses);
return ast;
}
use of de.be4.classicalb.core.parser.node.PModelClause in project probparsers by bendisposto.
the class ASTPrologTest method testEvent.
@Test
public void testEvent() throws BCompoundException {
final AEventBModelParseUnit model = new AEventBModelParseUnit();
model.setName(new TIdentifierLiteral("mm"));
final AEventsModelClause events = new AEventsModelClause();
model.setModelClauses(Arrays.asList((PModelClause) events));
AEvent event = new AEvent();
events.setEvent(Arrays.asList((PEvent) event));
event.setEventName(new TIdentifierLiteral("testevent"));
event.setVariables(Arrays.asList(createId("param")));
event.setGuards(Arrays.asList((PPredicate) new ATruthPredicate()));
PSubstitution subst1 = new AAssignSubstitution(Arrays.asList(createId("x")), Arrays.asList(createId("param")));
event.setAssignments(Arrays.asList(subst1));
PWitness witness = new AWitness(new TIdentifierLiteral("ab"), new AEqualPredicate(createId("ab"), createId("y")));
event.setWitness(Arrays.asList(witness));
event.setRefines(Arrays.asList(new TIdentifierLiteral("abstract1"), new TIdentifierLiteral("abstract2")));
checkAST(0, "event_b_model($,mm,[events($,[" + "event($,testevent,[abstract1,abstract2],[identifier($,param)],[truth($)],[]," + "[assign($,[identifier($,x)],[identifier($,param)])]," + "[witness($,identifier(%,ab),equal($,identifier($,ab),identifier($,y)))])])])", model);
}
use of de.be4.classicalb.core.parser.node.PModelClause in project prob2 by bendisposto.
the class EventBMachineTranslator method processInvariantsAndTheorems.
private List<PModelClause> processInvariantsAndTheorems() {
List<PModelClause> invsAndTheorems = new ArrayList<>();
List<PPredicate> invs = new ArrayList<>();
List<PPredicate> thms = new ArrayList<>();
List<EventBInvariant> allInvs = machine.getInvariants();
for (EventBInvariant ebInv : allInvs) {
PPredicate ppred = (PPredicate) ((EventB) ebInv.getPredicate()).getAst();
nodeInfos.put(ppred, new Tuple2<>(machine.getName(), ebInv.getName()));
if (ebInv.isTheorem()) {
thms.add(ppred);
} else {
invs.add(ppred);
}
}
invsAndTheorems.add(new AInvariantModelClause(invs));
invsAndTheorems.add(new ATheoremsModelClause(thms));
return invsAndTheorems;
}
Aggregations