diff options
author | 2019-09-08 16:12:55 -0400 | |
---|---|---|
committer | 2019-09-08 16:12:55 -0400 | |
commit | 71108d462c2695d917e87acea6f49d3f2954c6f4 (patch) | |
tree | 755962edeb635f46f1c860e2ff4dcc0235099597 /Tests | |
parent | VAMPIRE: complete first version of VampireModelInterpretation (diff) | |
download | VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.gz VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.zst VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.zip |
VAMPIRE: Implement wf constraint handling
Diffstat (limited to 'Tests')
11 files changed, 102 insertions, 40 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem index dcbb21eb..fe14bb31 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem | |||
@@ -1,5 +1,5 @@ | |||
1 | <?xml version="1.0" encoding="ASCII"?> | 1 | <?xml version="1.0" encoding="ASCII"?> |
2 | <language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"> | 2 | <language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:viatra2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/viatra2logicannotation"> |
3 | <types xsi:type="language_1:TypeDeclaration" name="FunctionalElement class" subtypes="//@types.2" isAbstract="true"/> | 3 | <types xsi:type="language_1:TypeDeclaration" name="FunctionalElement class" subtypes="//@types.2" isAbstract="true"/> |
4 | <types xsi:type="language_1:TypeDeclaration" name="FunctionalArchitectureModel class" subtypes="//@types.10 //@types.11" isAbstract="true"/> | 4 | <types xsi:type="language_1:TypeDeclaration" name="FunctionalArchitectureModel class" subtypes="//@types.10 //@types.11" isAbstract="true"/> |
5 | <types xsi:type="language_1:TypeDeclaration" name="Function class" supertypes="//@types.0"/> | 5 | <types xsi:type="language_1:TypeDeclaration" name="Function class" supertypes="//@types.0"/> |
@@ -496,6 +496,22 @@ | |||
496 | </expression> | 496 | </expression> |
497 | </value> | 497 | </value> |
498 | </assertions> | 498 | </assertions> |
499 | <assertions name="errorpattern hu bme mit inf dslreasoner domains transima fam terminatorAndInformation" annotations="//@annotations.20"> | ||
500 | <value xsi:type="language_1:Forall"> | ||
501 | <quantifiedVariables name="p0"> | ||
502 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/> | ||
503 | </quantifiedVariables> | ||
504 | <quantifiedVariables name="p1"> | ||
505 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/> | ||
506 | </quantifiedVariables> | ||
507 | <expression xsi:type="language_1:Not"> | ||
508 | <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15"> | ||
509 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.0"/> | ||
510 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.1"/> | ||
511 | </operand> | ||
512 | </expression> | ||
513 | </value> | ||
514 | </assertions> | ||
499 | <relations xsi:type="language_1:RelationDeclaration" name="interface reference FunctionalElement"> | 515 | <relations xsi:type="language_1:RelationDeclaration" name="interface reference FunctionalElement"> |
500 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/> | 516 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/> |
501 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/> | 517 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/> |
@@ -556,11 +572,57 @@ | |||
556 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/> | 572 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/> |
557 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/> | 573 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/> |
558 | </relations> | 574 | </relations> |
575 | <relations xsi:type="language_1:RelationDefinition" name="pattern hu bme mit inf dslreasoner domains transima fam terminatorAndInformation" annotations="//@annotations.19"> | ||
576 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/> | ||
577 | <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/> | ||
578 | <variables name="parameter T"> | ||
579 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/> | ||
580 | </variables> | ||
581 | <variables name="parameter I"> | ||
582 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/> | ||
583 | </variables> | ||
584 | <value xsi:type="language_1:Or"> | ||
585 | <operands xsi:type="language_1:Exists"> | ||
586 | <quantifiedVariables name="variable Out"> | ||
587 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/> | ||
588 | </quantifiedVariables> | ||
589 | <expression xsi:type="language_1:And"> | ||
590 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.11"> | ||
591 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/> | ||
592 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.1"/> | ||
593 | </operands> | ||
594 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12"> | ||
595 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.0/@quantifiedVariables.0"/> | ||
596 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/> | ||
597 | </operands> | ||
598 | </expression> | ||
599 | </operands> | ||
600 | <operands xsi:type="language_1:Exists"> | ||
601 | <quantifiedVariables name="variable In"> | ||
602 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/> | ||
603 | </quantifiedVariables> | ||
604 | <expression xsi:type="language_1:And"> | ||
605 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7"> | ||
606 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.1"/> | ||
607 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.1/@quantifiedVariables.0"/> | ||
608 | </operands> | ||
609 | <operands xsi:type="language_1:InstanceOf"> | ||
610 | <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.1/@quantifiedVariables.0"/> | ||
611 | <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/> | ||
612 | </operands> | ||
613 | <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.12"> | ||
614 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@value/@operands.1/@quantifiedVariables.0"/> | ||
615 | <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15/@variables.0"/> | ||
616 | </operands> | ||
617 | </expression> | ||
618 | </operands> | ||
619 | </value> | ||
620 | </relations> | ||
559 | <elements name="Root literal FunctionType" definedInType="//@types.9"/> | 621 | <elements name="Root literal FunctionType" definedInType="//@types.9"/> |
560 | <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/> | 622 | <elements name="Intermediate literal FunctionType" definedInType="//@types.9"/> |
561 | <elements name="Leaf literal FunctionType" definedInType="//@types.9"/> | 623 | <elements name="Leaf literal FunctionType" definedInType="//@types.9"/> |
562 | <elements name="o 1" definedInType="//@types.10"/> | 624 | <elements name="o 1" definedInType="//@types.10"/> |
563 | <containmentHierarchies typesOrderedInHierarchy="//@types.5 //@types.4 //@types.3 //@types.6 //@types.7 //@types.8 //@types.1 //@types.0 //@types.2 //@types.10 //@types.11" containmentRelations="//@relations.0 //@relations.3 //@relations.4 //@relations.8 //@relations.11 //@relations.12"/> | 625 | <containmentHierarchies typesOrderedInHierarchy="//@types.4 //@types.5 //@types.2 //@types.3 //@types.7 //@types.6 //@types.8 //@types.0 //@types.1 //@types.10 //@types.11" containmentRelations="//@relations.0 //@relations.3 //@relations.4 //@relations.8 //@relations.11 //@relations.12"/> |
564 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" upper="1"/> | 626 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" upper="1"/> |
565 | <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.1" relation="//@relations.1" lower="1"/> | 627 | <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.1" relation="//@relations.1" lower="1"/> |
566 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" upper="1"/> | 628 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.1" upper="1"/> |
@@ -580,4 +642,6 @@ | |||
580 | <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.16" inverseA="//@relations.8" inverseB="//@relations.13"/> | 642 | <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.16" inverseA="//@relations.8" inverseB="//@relations.13"/> |
581 | <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.17" relation="//@relations.14" lower="1"/> | 643 | <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.17" relation="//@relations.14" lower="1"/> |
582 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.18" relation="//@relations.14" upper="1"/> | 644 | <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.18" relation="//@relations.14" upper="1"/> |
645 | <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.15" patternFullyQualifiedName="hu.bme.mit.inf.dslreasoner.domains.transima.fam.terminatorAndInformation"/> | ||
646 | <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.19" query="//@annotations.19"/> | ||
583 | </language:LogicProblem> | 647 | </language:LogicProblem> |
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend index 1045189c..3c6a65ca 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend | |||
@@ -7,6 +7,7 @@ import functionalarchitecture.FunctionalArchitectureModel | |||
7 | import functionalarchitecture.FunctionalInterface | 7 | import functionalarchitecture.FunctionalInterface |
8 | import functionalarchitecture.FunctionalOutput | 8 | import functionalarchitecture.FunctionalOutput |
9 | import functionalarchitecture.FunctionalarchitecturePackage | 9 | import functionalarchitecture.FunctionalarchitecturePackage |
10 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns | ||
10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | 11 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic |
11 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | 12 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration |
12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | 13 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel |
@@ -14,15 +15,14 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | |||
14 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | 15 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult |
15 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | 16 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore |
16 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | 17 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic |
18 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
17 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | 19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic |
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation | 20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation |
19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml | ||
21 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser | ||
22 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | 21 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace |
23 | import java.util.HashMap | 22 | import java.util.HashMap |
24 | import org.eclipse.emf.ecore.resource.Resource | 23 | import org.eclipse.emf.ecore.resource.Resource |
25 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | 24 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl |
25 | import functionalarchitecture.FAMTerminator | ||
26 | 26 | ||
27 | class FAMTest { | 27 | class FAMTest { |
28 | def static void main(String[] args) { | 28 | def static void main(String[] args) { |
@@ -47,15 +47,15 @@ class FAMTest { | |||
47 | // Load DSL | 47 | // Load DSL |
48 | val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) | 48 | val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) |
49 | val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") | 49 | val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") |
50 | // val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) | 50 | val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) |
51 | val queries = null | 51 | // val queries = null |
52 | 52 | ||
53 | println("DSL loaded") | 53 | println("DSL loaded") |
54 | 54 | ||
55 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) | 55 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) |
56 | var problem = modelGenerationProblem.output | 56 | var problem = modelGenerationProblem.output |
57 | problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output | 57 | problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output |
58 | // problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output | 58 | problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output |
59 | workspace.writeModel(problem, "Fam.logicproblem") | 59 | workspace.writeModel(problem, "Fam.logicproblem") |
60 | 60 | ||
61 | println("Problem created") | 61 | println("Problem created") |
@@ -73,7 +73,8 @@ class FAMTest { | |||
73 | // classMapMin.put(FunctionalArchitectureModel, 1) | 73 | // classMapMin.put(FunctionalArchitectureModel, 1) |
74 | // classMapMin.put(Function, 1) | 74 | // classMapMin.put(Function, 1) |
75 | // classMapMin.put(FunctionalInterface, 2) | 75 | // classMapMin.put(FunctionalInterface, 2) |
76 | classMapMin.put(FunctionalOutput, 3) | 76 | // classMapMin.put(FunctionalOutput, 3) |
77 | classMapMin.put(FAMTerminator, 1) | ||
77 | 78 | ||
78 | val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.trace) | 79 | val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.trace) |
79 | 80 | ||
@@ -93,7 +94,7 @@ class FAMTest { | |||
93 | 94 | ||
94 | it.typeScopes.minNewElements = 4//24 | 95 | it.typeScopes.minNewElements = 4//24 |
95 | it.typeScopes.maxNewElements = 5//25 | 96 | it.typeScopes.maxNewElements = 5//25 |
96 | // if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin | 97 | if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin |
97 | // if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax | 98 | // if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax |
98 | it.contCycleLevel = 5 | 99 | it.contCycleLevel = 5 |
99 | it.uniquenessDuplicates = false | 100 | it.uniquenessDuplicates = false |
@@ -108,22 +109,23 @@ class FAMTest { | |||
108 | // Literal(modelGenerationProblem.trace, ecore2Logic.allLiteralsInScope(modelGenerationProblem.trace).get(0) ) | 109 | // Literal(modelGenerationProblem.trace, ecore2Logic.allLiteralsInScope(modelGenerationProblem.trace).get(0) ) |
109 | // ) | 110 | // ) |
110 | // println((ecore2Logic.allAttributesInScope(modelGenerationProblem.trace)).get(0).EAttributeType) | 111 | // println((ecore2Logic.allAttributesInScope(modelGenerationProblem.trace)).get(0).EAttributeType) |
112 | print(interpretations.class) | ||
111 | for (interpretation : interpretations) { | 113 | for (interpretation : interpretations) { |
112 | val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) | 114 | val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) |
113 | workspace.writeModel(model, "model.xmi") | 115 | workspace.writeModel(model, "model.xmi") |
114 | 116 | ||
115 | val representation = im2pi.transform(modelGenerationProblem, model.eAllContents.toList, false)//solution.representation.get(0) // TODO: fix for multiple represenations | 117 | // val representation = im2pi.transform(modelGenerationProblem, model.eAllContents.toList, false)//solution.representation.get(0) // TODO: fix for multiple represenations |
116 | if (representation instanceof PartialInterpretation) { | 118 | // if (representation instanceof PartialInterpretation) { |
117 | val vis1 = new PartialInterpretation2Gml | 119 | // val vis1 = new PartialInterpretation2Gml |
118 | val gml = vis1.transform(representation) | 120 | // val gml = vis1.transform(representation) |
119 | workspace.writeText("model.gml", gml) | 121 | // workspace.writeText("model.gml", gml) |
120 | 122 | // | |
121 | val vis2 = new GraphvizVisualiser | 123 | // val vis2 = new GraphvizVisualiser |
122 | val dot = vis2.visualiseConcretization(representation) | 124 | // val dot = vis2.visualiseConcretization(representation) |
123 | dot.writeToFile(workspace, "model.png") | 125 | // dot.writeToFile(workspace, "model.png") |
124 | } else { | 126 | // } else { |
125 | println("ERROR") | 127 | // println("ERROR") |
126 | } | 128 | // } |
127 | // look here: hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor | 129 | // look here: hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor |
128 | } | 130 | } |
129 | 131 | ||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin index 771e1d1a..775c1663 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin index ad844992..4e802213 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin index 7dcb4392..f7e42672 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin index dc040005..ae8b52eb 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin index 2bb8be0d..73b1182c 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java index 8ef096d9..7f6dfcd5 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java | |||
@@ -3,10 +3,12 @@ package ca.mcgill.ecse.dslreasoner.vampire.icse; | |||
3 | import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; | 3 | import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; |
4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; | 4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; |
5 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; | 5 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; |
6 | import functionalarchitecture.FAMTerminator; | ||
6 | import functionalarchitecture.Function; | 7 | import functionalarchitecture.Function; |
7 | import functionalarchitecture.FunctionalArchitectureModel; | 8 | import functionalarchitecture.FunctionalArchitectureModel; |
8 | import functionalarchitecture.FunctionalOutput; | 9 | import functionalarchitecture.FunctionalOutput; |
9 | import functionalarchitecture.FunctionalarchitecturePackage; | 10 | import functionalarchitecture.FunctionalarchitecturePackage; |
11 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns; | ||
10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; | 12 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; |
11 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; | 13 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; |
12 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; | 14 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; |
@@ -20,12 +22,10 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; | |||
20 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult; | 22 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult; |
21 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore; | 23 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore; |
22 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; | 24 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; |
25 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration; | ||
26 | import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor; | ||
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; | 27 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; |
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation; | 28 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation; |
25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | ||
26 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml; | ||
27 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualisation; | ||
28 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser; | ||
29 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; | 29 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; |
30 | import java.util.HashMap; | 30 | import java.util.HashMap; |
31 | import java.util.List; | 31 | import java.util.List; |
@@ -37,7 +37,6 @@ import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; | |||
37 | import org.eclipse.xtend2.lib.StringConcatenation; | 37 | import org.eclipse.xtend2.lib.StringConcatenation; |
38 | import org.eclipse.xtext.xbase.lib.Exceptions; | 38 | import org.eclipse.xtext.xbase.lib.Exceptions; |
39 | import org.eclipse.xtext.xbase.lib.InputOutput; | 39 | import org.eclipse.xtext.xbase.lib.InputOutput; |
40 | import org.eclipse.xtext.xbase.lib.IteratorExtensions; | ||
41 | import org.eclipse.xtext.xbase.lib.ObjectExtensions; | 40 | import org.eclipse.xtext.xbase.lib.ObjectExtensions; |
42 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; | 41 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; |
43 | 42 | ||
@@ -64,12 +63,14 @@ public class FAMTest { | |||
64 | InputOutput.<String>println("Input and output workspaces are created"); | 63 | InputOutput.<String>println("Input and output workspaces are created"); |
65 | final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE); | 64 | final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE); |
66 | final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi"); | 65 | final EList<EObject> partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi"); |
67 | final Object queries = null; | 66 | final ViatraQuerySetDescriptor queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance()); |
68 | InputOutput.<String>println("DSL loaded"); | 67 | InputOutput.<String>println("DSL loaded"); |
69 | Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); | 68 | Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); |
70 | final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); | 69 | final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); |
71 | LogicProblem problem = modelGenerationProblem.getOutput(); | 70 | LogicProblem problem = modelGenerationProblem.getOutput(); |
72 | problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).getOutput(); | 71 | problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).getOutput(); |
72 | Viatra2LogicConfiguration _viatra2LogicConfiguration = new Viatra2LogicConfiguration(); | ||
73 | problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, _viatra2LogicConfiguration).getOutput(); | ||
73 | workspace.writeModel(problem, "Fam.logicproblem"); | 74 | workspace.writeModel(problem, "Fam.logicproblem"); |
74 | InputOutput.<String>println("Problem created"); | 75 | InputOutput.<String>println("Problem created"); |
75 | long startTime = System.currentTimeMillis(); | 76 | long startTime = System.currentTimeMillis(); |
@@ -77,7 +78,7 @@ public class FAMTest { | |||
77 | VampireSolver _vampireSolver = new VampireSolver(); | 78 | VampireSolver _vampireSolver = new VampireSolver(); |
78 | reasoner = _vampireSolver; | 79 | reasoner = _vampireSolver; |
79 | final HashMap<Class, Integer> classMapMin = new HashMap<Class, Integer>(); | 80 | final HashMap<Class, Integer> classMapMin = new HashMap<Class, Integer>(); |
80 | classMapMin.put(FunctionalOutput.class, Integer.valueOf(3)); | 81 | classMapMin.put(FAMTerminator.class, Integer.valueOf(1)); |
81 | final Map<Type, Integer> typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); | 82 | final Map<Type, Integer> typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); |
82 | final HashMap<Class, Integer> classMapMax = new HashMap<Class, Integer>(); | 83 | final HashMap<Class, Integer> classMapMax = new HashMap<Class, Integer>(); |
83 | classMapMax.put(FunctionalArchitectureModel.class, Integer.valueOf(3)); | 84 | classMapMax.put(FunctionalArchitectureModel.class, Integer.valueOf(3)); |
@@ -90,27 +91,22 @@ public class FAMTest { | |||
90 | it.documentationLevel = DocumentationLevel.FULL; | 91 | it.documentationLevel = DocumentationLevel.FULL; |
91 | it.typeScopes.minNewElements = 4; | 92 | it.typeScopes.minNewElements = 4; |
92 | it.typeScopes.maxNewElements = 5; | 93 | it.typeScopes.maxNewElements = 5; |
94 | int _size = typeMapMin.size(); | ||
95 | boolean _notEquals = (_size != 0); | ||
96 | if (_notEquals) { | ||
97 | it.typeScopes.minNewElementsByType = typeMapMin; | ||
98 | } | ||
93 | it.contCycleLevel = 5; | 99 | it.contCycleLevel = 5; |
94 | it.uniquenessDuplicates = false; | 100 | it.uniquenessDuplicates = false; |
95 | }; | 101 | }; |
96 | final VampireSolverConfiguration vampireConfig = ObjectExtensions.<VampireSolverConfiguration>operator_doubleArrow(_vampireSolverConfiguration, _function); | 102 | final VampireSolverConfiguration vampireConfig = ObjectExtensions.<VampireSolverConfiguration>operator_doubleArrow(_vampireSolverConfiguration, _function); |
97 | LogicResult solution = reasoner.solve(problem, vampireConfig, workspace); | 103 | LogicResult solution = reasoner.solve(problem, vampireConfig, workspace); |
98 | List<? extends LogicModelInterpretation> interpretations = reasoner.getInterpretations(((ModelResult) solution)); | 104 | List<? extends LogicModelInterpretation> interpretations = reasoner.getInterpretations(((ModelResult) solution)); |
105 | InputOutput.<Class<? extends List>>print(interpretations.getClass()); | ||
99 | for (final LogicModelInterpretation interpretation : interpretations) { | 106 | for (final LogicModelInterpretation interpretation : interpretations) { |
100 | { | 107 | { |
101 | final EObject model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.getTrace()); | 108 | final EObject model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.getTrace()); |
102 | workspace.writeModel(model, "model.xmi"); | 109 | workspace.writeModel(model, "model.xmi"); |
103 | final PartialInterpretation representation = im2pi.transform(modelGenerationProblem, IteratorExtensions.<EObject>toList(model.eAllContents()), false); | ||
104 | if ((representation instanceof PartialInterpretation)) { | ||
105 | final PartialInterpretation2Gml vis1 = new PartialInterpretation2Gml(); | ||
106 | final String gml = vis1.transform(representation); | ||
107 | workspace.writeText("model.gml", gml); | ||
108 | final GraphvizVisualiser vis2 = new GraphvizVisualiser(); | ||
109 | final PartialInterpretationVisualisation dot = vis2.visualiseConcretization(representation); | ||
110 | dot.writeToFile(workspace, "model.png"); | ||
111 | } else { | ||
112 | InputOutput.<String>println("ERROR"); | ||
113 | } | ||
114 | } | 110 | } |
115 | } | 111 | } |
116 | long _currentTimeMillis = System.currentTimeMillis(); | 112 | long _currentTimeMillis = System.currentTimeMillis(); |
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin index 7ab6b54b..91c99504 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin index f7c267ec..dec17082 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin | |||
Binary files differ | |||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin index e91e816f..3c55afad 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin | |||
Binary files differ | |||