aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend98
1 files changed, 86 insertions, 12 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
index eb3f4b14..1fac968b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend
@@ -1,34 +1,108 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse 1package ca.mcgill.ecse.dslreasoner.vampire.icse
2 2
3import functionalarchitecture.FunctionalarchitecturePackage 3import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
8import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
11import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
4import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace 13import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
14import java.util.HashMap
5import org.eclipse.emf.ecore.resource.Resource 15import org.eclipse.emf.ecore.resource.Resource
6import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl 16import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
7import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage
8import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns
9 17
10class YakinduTest { 18class YakinduTest {
11 def static void main(String[] args) { 19 def static void main(String[] args) {
12 //Workspace setup 20 val Ecore2Logic ecore2Logic = new Ecore2Logic
21 val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
22 val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
23
24 // Workspace setup
13 val inputs = new FileSystemWorkspace('''initialModels/''', "") 25 val inputs = new FileSystemWorkspace('''initialModels/''', "")
14 val workspace = new FileSystemWorkspace('''output/YakinduTest/''', "") 26 val workspace = new FileSystemWorkspace('''output/YakinduTest/''', "")
15 workspace.initAndClear 27 workspace.initAndClear
16 28
17 //Logicproblem writing setup 29 // Logicproblem writing setup
18 val reg = Resource.Factory.Registry.INSTANCE 30 val reg = Resource.Factory.Registry.INSTANCE
19 val map = reg.extensionToFactoryMap 31 val map = reg.extensionToFactoryMap
20 map.put("logicproblem", new XMIResourceFactoryImpl) 32 map.put("logicproblem", new XMIResourceFactoryImpl)
21 33
22 println("Input and output workspaces are created") 34 println("Input and output workspaces are created")
23 35
24 val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) 36 val metamodel = GeneralTest.loadMetamodel(yakinduPackage.eINSTANCE)
25 val partialModel = GeneralTest.loadPartialModel(inputs, "Yakindu.xmi") 37 val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/yakinduinstance.xmi")
26// val queries = GeneralTest.loadQueries(metamodel, FamPa 38// val queries = GeneralTest.loadQueries(metamodel, FamPa
39 val queries = null
27 40
28 println("DSL loaded") 41 println("DSL loaded")
29 42
30// GeneralTest.createAndSolveProblem(metamodel, partialModel, queries, workspace) 43 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration())
44 var problem = modelGenerationProblem.output
45// problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output
46// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output
47 workspace.writeModel(problem, "Yakindu.logicproblem")
48
49 println("Problem created")
50
51 // Start Time
52 var startTime = System.currentTimeMillis
53
54 var LogicReasoner reasoner
55 // *
56 reasoner = new VampireSolver
57
58 // /////////////////////////////////////////////////////
59 // Minimum Scope
60 val classMapMin = new HashMap<Class, Integer>
61// classMapMin.put(Function, 1)
62// classMapMin.put(FunctionalInterface, 2)
63// classMapMin.put(FunctionalOutput, 3)
64 val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.trace)
65
66 // Maximum Scope
67 val classMapMax = new HashMap<Class, Integer>
68// classMapMax.put(Function, 5)
69// classMapMax.put(FunctionalInterface, 2)
70// classMapMax.put(FunctionalOutput, 4)
71 val typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, modelGenerationProblem.trace)
72
73 // Define Config File
74 val vampireConfig = new VampireSolverConfiguration => [
75 // add configuration things, in config file first
76 it.documentationLevel = DocumentationLevel::FULL
77
78 it.typeScopes.minNewElements = 20
79 it.typeScopes.maxNewElements = 30
80 if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin
81 if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax
82 it.contCycleLevel = 5
83 it.uniquenessDuplicates = false
84 ]
85
86 var LogicResult solution = reasoner.solve(problem, vampireConfig, workspace)
87
88 /*/
89 *
90 * reasoner = new AlloySolver
91 * val alloyConfig = new AlloySolverConfiguration => [
92 * it.typeScopes.maxNewElements = 7
93 * it.typeScopes.minNewElements = 3
94 * it.solutionScope.numberOfRequiredSolution = 1
95 * it.typeScopes.maxNewIntegers = 0
96 * it.documentationLevel = DocumentationLevel::NORMAL
97 * ]
98 * solution = reasoner.solve(problem, alloyConfig, workspace)
99 //*/
100 // /////////////////////////////////////////////////////
101 var totalTimeMin = (System.currentTimeMillis - startTime) / 60000
102 var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60
103
104 println("Problem solved")
105 println("Time was: " + totalTimeMin + ":" + totalTimeSec)
31 } 106 }
32 107
33
34} 108}