aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-08-29 06:26:02 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-06-07 19:41:39 -0400
commit15602c7cfbfc80b8c826855b94c9f9582650dd21 (patch)
tree3f90d5812e68215838efd52372bcc26df88b9033 /Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner
parentVAMPIRE: integrate local Vampire executeable #32 (diff)
downloadVIATRA-Generator-15602c7cfbfc80b8c826855b94c9f9582650dd21.tar.gz
VIATRA-Generator-15602c7cfbfc80b8c826855b94c9f9582650dd21.tar.zst
VIATRA-Generator-15602c7cfbfc80b8c826855b94c9f9582650dd21.zip
VAMPIRE: adapt grammar to Vampire solution + get model from text
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend14
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend10
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend2
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend417
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbinbin6386 -> 6465 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbinbin18150 -> 17754 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbinbin4656 -> 4692 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbinbin3164 -> 3164 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbinbin11904 -> 11835 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbinbin6454 -> 6497 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbinbin10667 -> 10701 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbinbin13048 -> 13083 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbinbin11136 -> 11170 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbinbin6553 -> 6445 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java14
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java25
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java3
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java3
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java9
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java9
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.java64
21 files changed, 280 insertions, 290 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend
index 6bb49080..1fd40801 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend
@@ -6,6 +6,8 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguage
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper 6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler 7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler
8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage 8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 11import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner 12import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException 13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException
@@ -13,7 +15,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
13import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 15import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
14import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult 16import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
15import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 17import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
16import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapper 18import org.eclipse.emf.ecore.resource.Resource
17 19
18class VampireSolver extends LogicReasoner { 20class VampireSolver extends LogicReasoner {
19 21
@@ -55,6 +57,16 @@ class VampireSolver extends LogicReasoner {
55 if (writeFile) { 57 if (writeFile) {
56 fileURI = workspace.writeModel(vampireProblem, fileName).toFileString 58 fileURI = workspace.writeModel(vampireProblem, fileName).toFileString
57 } 59 }
60
61
62
63// Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("tptp", new VampireLanguageFactoryImpl)
64//// val Resource resource = Resource.
65//// Resource.getResource(wsURI+"problem.tptp") as Resource
66//// resource
67// val model = workspace.readModel(VampireModel, "problem.tptp").eResource.contents
68// println(model)
69
58 70
59 // Result as String 71 // Result as String
60 val transformationTime = System.currentTimeMillis - transformationStart 72 val transformationTime = System.currentTimeMillis - transformationStart
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
index 13db3c99..a2449fc0 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
@@ -61,7 +61,7 @@ class Logic2VampireLanguageMapper {
61 // create model bases 61 // create model bases
62 // TODO 62 // TODO
63 val initialComment = createVLSComment => [ 63 val initialComment = createVLSComment => [
64 it.comment = "This is an initial Test Comment" 64 it.comment = "%This is an initial Test Comment"
65 ] 65 ]
66 66
67 val specification = createVampireModel => [ 67 val specification = createVampireModel => [
@@ -163,10 +163,10 @@ class Logic2VampireLanguageMapper {
163 createVLSInt => [it.value = literal.value.toString()] 163 createVLSInt => [it.value = literal.value.toString()]
164 } 164 }
165 165
166 def dispatch protected VLSTerm transformTerm(RealLiteral literal, Logic2VampireLanguageMapperTrace trace, 166// def dispatch protected VLSTerm transformTerm(RealLiteral literal, Logic2VampireLanguageMapperTrace trace,
167 Map<Variable, VLSVariable> variables) { 167// Map<Variable, VLSVariable> variables) {
168 createVLSReal => [it.value = literal.value.toString()] 168// createVLSReal => [it.value = literal.value.toString()]
169 } 169// }
170 170
171 def dispatch protected VLSTerm transformTerm(Not not, Logic2VampireLanguageMapperTrace trace, 171 def dispatch protected VLSTerm transformTerm(Not not, Logic2VampireLanguageMapperTrace trace,
172 Map<Variable, VLSVariable> variables) { 172 Map<Variable, VLSVariable> variables) {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
index 93c28e7c..c79003bd 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
@@ -189,7 +189,7 @@ class Logic2VampireLanguageMapper_ContainmentMapper {
189 189
190// STEP 2 CONT'D 190// STEP 2 CONT'D
191 for (e : type2cont.entrySet) { 191 for (e : type2cont.entrySet) {
192 println(e.key + " " + e.value) 192// println(e.key + " " + e.value)
193 val relFormula = createVLSFofFormula => [ 193 val relFormula = createVLSFofFormula => [
194 it.name = support.toIDMultiple("containment_contained", e.key.constant.toString) 194 it.name = support.toIDMultiple("containment_contained", e.key.constant.toString)
195 it.fofRole = "axiom" 195 it.fofRole = "axiom"
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
index 274396ee..f0426245 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
@@ -9,31 +9,35 @@ import java.util.List
9import org.eclipse.emf.ecore.resource.Resource 9import org.eclipse.emf.ecore.resource.Resource
10import org.eclipse.xtend.lib.annotations.Data 10import org.eclipse.xtend.lib.annotations.Data
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl 11import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl
13
14class VampireSolverException extends Exception {
15 new(String s) {
16 super(s)
17 }
18
19 new(String s, Exception e) {
20 super(s, e)
21 }
12 22
13class VampireSolverException extends Exception{
14 new(String s) { super(s) }
15 new(String s, Exception e) { super(s,e) }
16 new(String s, List<String> errors, Exception e) { 23 new(String s, List<String> errors, Exception e) {
17 super(s + '\n' + errors.join('\n'), e) 24 super(s + '\n' + errors.join('\n'), e)
18 } 25 }
19} 26}
20 27
21@Data class VampireSolutionModel{ 28@Data class VampireSolutionModel {
22// List<String> warnings 29// List<String> warnings
23// List<String> debugs 30// List<String> debugs
24// long kodkodTime 31// long kodkodTime
25// val List<Pair<A4Solution, Long>> aswers 32// val List<Pair<A4Solution, Long>> aswers
26// val boolean finishedBeforeTimeout 33// val boolean finishedBeforeTimeout
27
28
29} 34}
30 35
31class VampireHandler { 36class VampireHandler {
32 37
33 //val fileName = "problem.als" 38 // val fileName = "problem.als"
34
35 public def callSolver(VampireModel problem, ReasonerWorkspace workspace, VampireSolverConfiguration configuration) { 39 public def callSolver(VampireModel problem, ReasonerWorkspace workspace, VampireSolverConfiguration configuration) {
36 40
37 val CMD = "cmd /c " 41 val CMD = "cmd /c "
38 val VAMPDIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\" 42 val VAMPDIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\"
39 val VAMPNAME = "vampire.exe" 43 val VAMPNAME = "vampire.exe"
@@ -41,222 +45,213 @@ class VampireHandler {
41 val OPTION = " --mode casc_sat " 45 val OPTION = " --mode casc_sat "
42 val SOLNNAME = "solution.tptp" 46 val SOLNNAME = "solution.tptp"
43 val PATH = "C:/cygwin64/bin" 47 val PATH = "C:/cygwin64/bin"
44 48
45 val wsURI = workspace.workspaceURI 49 val wsURI = workspace.workspaceURI
46 val tempLoc = wsURI + TEMPNAME 50 val tempLoc = wsURI + TEMPNAME
47 val solnLoc = wsURI + SOLNNAME + " " 51 val solnLoc = wsURI + SOLNNAME + " "
48 val vampLoc = VAMPDIR + VAMPNAME 52 val vampLoc = VAMPDIR + VAMPNAME
49 53
50 54 // 1. create temp file for vampire problem
51 //1. create temp file for vampire problem
52 var tempURI = workspace.writeModel(problem, TEMPNAME).toFileString 55 var tempURI = workspace.writeModel(problem, TEMPNAME).toFileString
53
54 //2. run command and save to
55 //need to have cygwin downloaded
56
57
58
59
60 val p = Runtime.runtime.exec(CMD + vampLoc + OPTION + tempLoc + " > " + solnLoc, newArrayList("Path=" + PATH))
61 //2.1 determine time left
62 p.waitFor
63
64 //2.2 store output into local variable
65 val BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
66 val List<String> output = newArrayList
67 56
68 var line = ""; 57 // 2. run command and save to
69 while ((line = reader.readLine())!= null) { 58 // need to have cygwin downloaded
70 output.add(line + "\n"); 59 val p = Runtime.runtime.exec(CMD + vampLoc + OPTION + tempLoc + " > " + solnLoc, newArrayList("Path=" + PATH))
71 } 60 // 2.1 determine time left
61 p.waitFor
72 62
73// println(output.toString()) 63 // 2.2 store output into local variable
64 val BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
65 val List<String> output = newArrayList
74 66
75 //4. delete temp file 67 var line = "";
76 workspace.getFile(TEMPNAME).delete 68 while ((line = reader.readLine()) != null) {
77 69 output.add(line + "\n");
78 //5. determine and return whether or not finite model was found
79
80 //6. save solution as a .tptp model
81 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new VampireLanguageFactoryImpl)
82 workspace.readModel(VampireModel, SOLNNAME).eResource.contents
83
84
85
86
87
88
89
90
91 /*
92 //Prepare
93 val warnings = new LinkedList<String>
94 val debugs = new LinkedList<String>
95 val runtime = new ArrayList<Long>
96 val reporter = new A4Reporter() {
97 override debug(String message) { debugs += message }
98 override resultSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
99 override resultUNSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
100 override warning(ErrorWarning msg) { warnings += msg.message }
101 } 70 }
71
72// println(output.toString())
73 // 4. delete temp file
74 workspace.getFile(TEMPNAME).delete
75
76 // 5. determine and return whether or not finite model was found
77 // 6. save solution as a .tptp model
78 val root = workspace.readModel(VampireModel, SOLNNAME).eResource.contents
102 79
103 val options = new A4Options() => [ 80
104 it.symmetry = configuration.symmetry 81
105 it.noOverflow = true 82 println((root.get(0) as VampireModelImpl ).comments)
106 it.solver = getSolver(configuration.getSolver, configuration)
107 if(configuration.getSolver.externalSolver) {
108 it.solverDirectory = configuration.solverPath
109 }
110 //it.inferPartialInstance
111 //it.tempDirectory = CommonPlugin.resolve(workspace.workspaceURI).toFileString
112 ]
113
114 // Transform
115 var Command command = null;
116 var CompModule compModule = null
117
118 // Start: Alloy -> Kodkod
119 val kodkodTransformStart = System.currentTimeMillis();
120 try {
121 compModule = CompUtil.parseEverything_fromString(reporter,alloyCode)
122 if(compModule.allCommands.size != 1)
123 throw new UnsupportedOperationException('''Alloy files with multiple commands are not supported!''')
124 command = compModule.allCommands.head
125 } catch (Err e){
126 throw new AlloySolverException(e.message,warnings,e)
127 }
128 val kodkodTransformFinish = System.currentTimeMillis - kodkodTransformStart
129 // Finish: Alloy -> Kodkod
130 83
131 val limiter = new SimpleTimeLimiter 84 return root
132 val callable = new AlloyCallerWithTimeout(warnings,debugs,reporter,options,command,compModule,configuration)
133 var List<Pair<A4Solution, Long>> answers
134 var boolean finished
135 if(configuration.runtimeLimit == LogicSolverConfiguration::Unlimited) {
136 answers = callable.call
137 finished = true
138 } else {
139 try{
140 answers = limiter.callWithTimeout(callable,configuration.runtimeLimit,TimeUnit.SECONDS,true)
141 finished = true
142 } catch (UncheckedTimeoutException e) {
143 answers = callable.partialAnswers
144 finished = false
145 }
146 }
147 85
148 new MonitoredAlloySolution(warnings,debugs,kodkodTransformFinish,answers,finished)
149 */
150 }
151 /* 86 /*
152 val static Map<SolverConfiguration, SatSolver> previousSolverConfigurations = new HashMap 87 * //Prepare
153 def getSolverConfiguration(AlloyBackendSolver backedSolver, String path, String[] options) { 88 * val warnings = new LinkedList<String>
154 val config = new SolverConfiguration(backedSolver,path,options) 89 * val debugs = new LinkedList<String>
155 if(previousSolverConfigurations.containsKey(config)) { 90 * val runtime = new ArrayList<Long>
156 return previousSolverConfigurations.get(config) 91 * val reporter = new A4Reporter() {
157 } else { 92 * override debug(String message) { debugs += message }
158 val id ='''DSLReasoner_Alloy_«previousSolverConfigurations.size»_«backedSolver»''' 93 * override resultSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
159 val newSolver = A4Options.SatSolver.make(id,id,path,options) 94 * override resultUNSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
160 previousSolverConfigurations.put(config,newSolver) 95 * override warning(ErrorWarning msg) { warnings += msg.message }
161 return newSolver 96 * }
162 } 97 *
163 } 98 * val options = new A4Options() => [
164 99 * it.symmetry = configuration.symmetry
165 def getSolver(AlloyBackendSolver backedSolver, AlloySolverConfiguration configuration) { 100 * it.noOverflow = true
166 switch(backedSolver){ 101 * it.solver = getSolver(configuration.getSolver, configuration)
167 case BerkMinPIPE: return A4Options.SatSolver.BerkMinPIPE 102 * if(configuration.getSolver.externalSolver) {
168 case SpearPIPE: return A4Options.SatSolver.SpearPIPE 103 * it.solverDirectory = configuration.solverPath
169 case MiniSatJNI: return A4Options.SatSolver.MiniSatJNI 104 * }
170 case MiniSatProverJNI: return A4Options.SatSolver.MiniSatProverJNI 105 * //it.inferPartialInstance
171 case LingelingJNI: return A4Options.SatSolver.LingelingJNI 106 * //it.tempDirectory = CommonPlugin.resolve(workspace.workspaceURI).toFileString
172 case PLingelingJNI: return getSolverConfiguration(backedSolver,configuration.solverPath,null) 107 * ]
173 case GlucoseJNI: return A4Options.SatSolver.GlucoseJNI 108 *
174 case CryptoMiniSatJNI: return A4Options.SatSolver.CryptoMiniSatJNI 109 * // Transform
175 case SAT4J: return A4Options.SatSolver.SAT4J 110 * var Command command = null;
176 case CNF: return A4Options.SatSolver.CNF 111 * var CompModule compModule = null
177 case KodKod: return A4Options.SatSolver.KK 112 *
178 } 113 * // Start: Alloy -> Kodkod
179 } 114 * val kodkodTransformStart = System.currentTimeMillis();
180 115 * try {
181 def isExternalSolver(AlloyBackendSolver backedSolver) { 116 * compModule = CompUtil.parseEverything_fromString(reporter,alloyCode)
182 return !(backedSolver == AlloyBackendSolver.SAT4J) 117 * if(compModule.allCommands.size != 1)
118 * throw new UnsupportedOperationException('''Alloy files with multiple commands are not supported!''')
119 * command = compModule.allCommands.head
120 * } catch (Err e){
121 * throw new AlloySolverException(e.message,warnings,e)
122 * }
123 * val kodkodTransformFinish = System.currentTimeMillis - kodkodTransformStart
124 * // Finish: Alloy -> Kodkod
125 *
126 * val limiter = new SimpleTimeLimiter
127 * val callable = new AlloyCallerWithTimeout(warnings,debugs,reporter,options,command,compModule,configuration)
128 * var List<Pair<A4Solution, Long>> answers
129 * var boolean finished
130 * if(configuration.runtimeLimit == LogicSolverConfiguration::Unlimited) {
131 * answers = callable.call
132 * finished = true
133 * } else {
134 * try{
135 * answers = limiter.callWithTimeout(callable,configuration.runtimeLimit,TimeUnit.SECONDS,true)
136 * finished = true
137 * } catch (UncheckedTimeoutException e) {
138 * answers = callable.partialAnswers
139 * finished = false
140 * }
141 * }
142
143 * new MonitoredAlloySolution(warnings,debugs,kodkodTransformFinish,answers,finished)
144 */
183 } 145 }
184*/
185}
186/* 146/*
187class VampireCallerWithTimeout implements Callable<List<Pair<A4Solution,Long>>>{ 147 * val static Map<SolverConfiguration, SatSolver> previousSolverConfigurations = new HashMap
188 148 * def getSolverConfiguration(AlloyBackendSolver backedSolver, String path, String[] options) {
189 val List<String> warnings 149 * val config = new SolverConfiguration(backedSolver,path,options)
190 val List<String> debugs 150 * if(previousSolverConfigurations.containsKey(config)) {
191 val A4Reporter reporter 151 * return previousSolverConfigurations.get(config)
192 val A4Options options 152 * } else {
193 153 * val id ='''DSLReasoner_Alloy_«previousSolverConfigurations.size»_«backedSolver»'''
194 val Command command 154 * val newSolver = A4Options.SatSolver.make(id,id,path,options)
195 val CompModule compModule 155 * previousSolverConfigurations.put(config,newSolver)
196 val AlloySolverConfiguration configuration 156 * return newSolver
197 157 * }
198 val List<Pair<A4Solution,Long>> answers = new LinkedList() 158 * }
199 159 *
200 new(List<String> warnings, 160 * def getSolver(AlloyBackendSolver backedSolver, AlloySolverConfiguration configuration) {
201 List<String> debugs, 161 * switch(backedSolver){
202 A4Reporter reporter, 162 * case BerkMinPIPE: return A4Options.SatSolver.BerkMinPIPE
203 A4Options options, 163 * case SpearPIPE: return A4Options.SatSolver.SpearPIPE
204 Command command, 164 * case MiniSatJNI: return A4Options.SatSolver.MiniSatJNI
205 CompModule compModule, 165 * case MiniSatProverJNI: return A4Options.SatSolver.MiniSatProverJNI
206 AlloySolverConfiguration configuration) 166 * case LingelingJNI: return A4Options.SatSolver.LingelingJNI
207 { 167 * case PLingelingJNI: return getSolverConfiguration(backedSolver,configuration.solverPath,null)
208 this.warnings = warnings 168 * case GlucoseJNI: return A4Options.SatSolver.GlucoseJNI
209 this.debugs = debugs 169 * case CryptoMiniSatJNI: return A4Options.SatSolver.CryptoMiniSatJNI
210 this.reporter = reporter 170 * case SAT4J: return A4Options.SatSolver.SAT4J
211 this.options = options 171 * case CNF: return A4Options.SatSolver.CNF
212 this.command = command 172 * case KodKod: return A4Options.SatSolver.KK
213 this.compModule = compModule 173 * }
214 this.configuration = configuration 174 * }
215 } 175 *
216 176 * def isExternalSolver(AlloyBackendSolver backedSolver) {
217 override call() throws Exception { 177 * return !(backedSolver == AlloyBackendSolver.SAT4J)
218 val startTime = System.currentTimeMillis 178 * }
219 179 */
220 // Start: Execute
221 var A4Solution lastAnswer = null
222 try {
223 if(!configuration.progressMonitor.isCancelled) {
224 do{
225 if(lastAnswer == null) {
226 lastAnswer = TranslateAlloyToKodkod.execute_command(reporter,compModule.allSigs,command,options)
227 } else {
228 lastAnswer = lastAnswer.next
229 }
230 configuration.progressMonitor.workedBackwardTransformation(configuration.solutionScope.numberOfRequiredSolution)
231
232 val runtime = System.currentTimeMillis -startTime
233 synchronized(this) {
234 answers += (lastAnswer->runtime)
235 }
236 } while(lastAnswer.satisfiable != false && !hasEnoughSolution(answers) && !configuration.progressMonitor.isCancelled)
237
238 }
239 }catch(Exception e) {
240 warnings +=e.message
241 }
242 // Finish: execute
243 return answers
244 }
245
246 def hasEnoughSolution(List<?> answers) {
247 if(configuration.solutionScope.numberOfRequiredSolution < 0) return false
248 else return answers.size() == configuration.solutionScope.numberOfRequiredSolution
249 }
250
251 public def getPartialAnswers() {
252 return answers
253 }
254
255} 180}
256/* 181/*
257@Data class SolverConfiguration { 182 * class VampireCallerWithTimeout implements Callable<List<Pair<A4Solution,Long>>>{
258 VampireBackendSolver backendSolver 183 *
259 String path 184 * val List<String> warnings
260 String[] options 185 * val List<String> debugs
261} 186 * val A4Reporter reporter
262*/ 187 * val A4Options options
188 *
189 * val Command command
190 * val CompModule compModule
191 * val AlloySolverConfiguration configuration
192 *
193 * val List<Pair<A4Solution,Long>> answers = new LinkedList()
194 *
195 * new(List<String> warnings,
196 * List<String> debugs,
197 * A4Reporter reporter,
198 * A4Options options,
199 * Command command,
200 * CompModule compModule,
201 * AlloySolverConfiguration configuration)
202 * {
203 * this.warnings = warnings
204 * this.debugs = debugs
205 * this.reporter = reporter
206 * this.options = options
207 * this.command = command
208 * this.compModule = compModule
209 * this.configuration = configuration
210 * }
211 *
212 * override call() throws Exception {
213 * val startTime = System.currentTimeMillis
214 *
215 * // Start: Execute
216 * var A4Solution lastAnswer = null
217 * try {
218 * if(!configuration.progressMonitor.isCancelled) {
219 * do{
220 * if(lastAnswer == null) {
221 * lastAnswer = TranslateAlloyToKodkod.execute_command(reporter,compModule.allSigs,command,options)
222 * } else {
223 * lastAnswer = lastAnswer.next
224 * }
225 * configuration.progressMonitor.workedBackwardTransformation(configuration.solutionScope.numberOfRequiredSolution)
226 *
227 * val runtime = System.currentTimeMillis -startTime
228 * synchronized(this) {
229 * answers += (lastAnswer->runtime)
230 * }
231 * } while(lastAnswer.satisfiable != false && !hasEnoughSolution(answers) && !configuration.progressMonitor.isCancelled)
232 *
233 * }
234 * }catch(Exception e) {
235 * warnings +=e.message
236 * }
237 * // Finish: execute
238 * return answers
239 * }
240 *
241 * def hasEnoughSolution(List<?> answers) {
242 * if(configuration.solutionScope.numberOfRequiredSolution < 0) return false
243 * else return answers.size() == configuration.solutionScope.numberOfRequiredSolution
244 * }
245 *
246 * public def getPartialAnswers() {
247 * return answers
248 * }
249
250 * }
251 * /*
252 * @Data class SolverConfiguration {
253 * VampireBackendSolver backendSolver
254 * String path
255 * String[] options
256 * }
257 */
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
index a7942958..43992ea0 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
index 487f9569..19608361 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
index bd61b874..791a9524 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
index 2e58cecd..89003c27 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ConstantMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
index 1b894303..b37d993a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ContainmentMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
index 4b7fd4bf..45afcecc 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_RelationMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
index 6626adf4..0f4dc63a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
index 339baea9..ab58fcab 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
index 868f30e7..cf19663e 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
index 08ffcb3b..0b2cb192 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbin
Binary files differ
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java
index 65f58281..58da7ccd 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java
@@ -16,7 +16,6 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; 16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction;
17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; 17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies;
18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt; 18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt;
19import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSReal;
20import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; 19import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
21import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; 20import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation;
22import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 21import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
@@ -44,7 +43,6 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.InstanceOf;
44import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntLiteral; 43import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntLiteral;
45import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Not; 44import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Not;
46import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Or; 45import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Or;
47import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral;
48import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation; 46import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation;
49import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration; 47import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration;
50import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition; 48import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition;
@@ -98,7 +96,7 @@ public class Logic2VampireLanguageMapper {
98 public TracedOutput<VampireModel, Logic2VampireLanguageMapperTrace> transformProblem(final LogicProblem problem, final VampireSolverConfiguration config) { 96 public TracedOutput<VampireModel, Logic2VampireLanguageMapperTrace> transformProblem(final LogicProblem problem, final VampireSolverConfiguration config) {
99 VLSComment _createVLSComment = this.factory.createVLSComment(); 97 VLSComment _createVLSComment = this.factory.createVLSComment();
100 final Procedure1<VLSComment> _function = (VLSComment it) -> { 98 final Procedure1<VLSComment> _function = (VLSComment it) -> {
101 it.setComment("This is an initial Test Comment"); 99 it.setComment("%This is an initial Test Comment");
102 }; 100 };
103 final VLSComment initialComment = ObjectExtensions.<VLSComment>operator_doubleArrow(_createVLSComment, _function); 101 final VLSComment initialComment = ObjectExtensions.<VLSComment>operator_doubleArrow(_createVLSComment, _function);
104 VampireModel _createVampireModel = this.factory.createVampireModel(); 102 VampireModel _createVampireModel = this.factory.createVampireModel();
@@ -202,14 +200,6 @@ public class Logic2VampireLanguageMapper {
202 return ObjectExtensions.<VLSInt>operator_doubleArrow(_createVLSInt, _function); 200 return ObjectExtensions.<VLSInt>operator_doubleArrow(_createVLSInt, _function);
203 } 201 }
204 202
205 protected VLSTerm _transformTerm(final RealLiteral literal, final Logic2VampireLanguageMapperTrace trace, final Map<Variable, VLSVariable> variables) {
206 VLSReal _createVLSReal = this.factory.createVLSReal();
207 final Procedure1<VLSReal> _function = (VLSReal it) -> {
208 it.setValue(literal.getValue().toString());
209 };
210 return ObjectExtensions.<VLSReal>operator_doubleArrow(_createVLSReal, _function);
211 }
212
213 protected VLSTerm _transformTerm(final Not not, final Logic2VampireLanguageMapperTrace trace, final Map<Variable, VLSVariable> variables) { 203 protected VLSTerm _transformTerm(final Not not, final Logic2VampireLanguageMapperTrace trace, final Map<Variable, VLSVariable> variables) {
214 VLSUnaryNegation _createVLSUnaryNegation = this.factory.createVLSUnaryNegation(); 204 VLSUnaryNegation _createVLSUnaryNegation = this.factory.createVLSUnaryNegation();
215 final Procedure1<VLSUnaryNegation> _function = (VLSUnaryNegation it) -> { 205 final Procedure1<VLSUnaryNegation> _function = (VLSUnaryNegation it) -> {
@@ -394,8 +384,6 @@ public class Logic2VampireLanguageMapper {
394 return _transformTerm((Not)and, trace, variables); 384 return _transformTerm((Not)and, trace, variables);
395 } else if (and instanceof Or) { 385 } else if (and instanceof Or) {
396 return _transformTerm((Or)and, trace, variables); 386 return _transformTerm((Or)and, trace, variables);
397 } else if (and instanceof RealLiteral) {
398 return _transformTerm((RealLiteral)and, trace, variables);
399 } else if (and instanceof InstanceOf) { 387 } else if (and instanceof InstanceOf) {
400 return _transformTerm((InstanceOf)and, trace, variables); 388 return _transformTerm((InstanceOf)and, trace, variables);
401 } else if (and instanceof SymbolicValue) { 389 } else if (and instanceof SymbolicValue) {
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
index dd549c29..7daf1b2f 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.java
@@ -15,6 +15,7 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; 15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; 16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration;
18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; 19import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
19import com.google.common.base.Objects; 20import com.google.common.base.Objects;
20import com.google.common.collect.Iterables; 21import com.google.common.collect.Iterables;
@@ -37,7 +38,6 @@ import org.eclipse.emf.common.util.EList;
37import org.eclipse.xtext.xbase.lib.CollectionLiterals; 38import org.eclipse.xtext.xbase.lib.CollectionLiterals;
38import org.eclipse.xtext.xbase.lib.Conversions; 39import org.eclipse.xtext.xbase.lib.Conversions;
39import org.eclipse.xtext.xbase.lib.Extension; 40import org.eclipse.xtext.xbase.lib.Extension;
40import org.eclipse.xtext.xbase.lib.InputOutput;
41import org.eclipse.xtext.xbase.lib.ObjectExtensions; 41import org.eclipse.xtext.xbase.lib.ObjectExtensions;
42import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; 42import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
43 43
@@ -123,7 +123,7 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
123 it.setFofRole("axiom"); 123 it.setFofRole("axiom");
124 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 124 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
125 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> { 125 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> {
126 EList<VLSVariable> _variables = it_1.getVariables(); 126 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
127 VLSVariable _duplicate = this.support.duplicate(this.variable); 127 VLSVariable _duplicate = this.support.duplicate(this.variable);
128 _variables.add(_duplicate); 128 _variables.add(_duplicate);
129 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 129 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
@@ -193,10 +193,10 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
193 it.setFofRole("axiom"); 193 it.setFofRole("axiom");
194 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier(); 194 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier();
195 final Procedure1<VLSExistentialQuantifier> _function_5 = (VLSExistentialQuantifier it_1) -> { 195 final Procedure1<VLSExistentialQuantifier> _function_5 = (VLSExistentialQuantifier it_1) -> {
196 EList<VLSVariable> _variables = it_1.getVariables(); 196 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
197 VLSVariable _duplicate = this.support.duplicate(varA); 197 VLSVariable _duplicate = this.support.duplicate(varA);
198 _variables.add(_duplicate); 198 _variables.add(_duplicate);
199 EList<VLSVariable> _variables_1 = it_1.getVariables(); 199 EList<VLSVariableDeclaration> _variables_1 = it_1.getVariables();
200 VLSVariable _duplicate_1 = this.support.duplicate(varB); 200 VLSVariable _duplicate_1 = this.support.duplicate(varB);
201 _variables_1.add(_duplicate_1); 201 _variables_1.add(_duplicate_1);
202 VLSImplies _createVLSImplies = this.factory.createVLSImplies(); 202 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
@@ -206,10 +206,10 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
206 final Procedure1<VLSUnaryNegation> _function_7 = (VLSUnaryNegation it_3) -> { 206 final Procedure1<VLSUnaryNegation> _function_7 = (VLSUnaryNegation it_3) -> {
207 VLSExistentialQuantifier _createVLSExistentialQuantifier_1 = this.factory.createVLSExistentialQuantifier(); 207 VLSExistentialQuantifier _createVLSExistentialQuantifier_1 = this.factory.createVLSExistentialQuantifier();
208 final Procedure1<VLSExistentialQuantifier> _function_8 = (VLSExistentialQuantifier it_4) -> { 208 final Procedure1<VLSExistentialQuantifier> _function_8 = (VLSExistentialQuantifier it_4) -> {
209 EList<VLSVariable> _variables_2 = it_4.getVariables(); 209 EList<VLSVariableDeclaration> _variables_2 = it_4.getVariables();
210 VLSVariable _duplicate_2 = this.support.duplicate(varC); 210 VLSVariable _duplicate_2 = this.support.duplicate(varC);
211 _variables_2.add(_duplicate_2); 211 _variables_2.add(_duplicate_2);
212 EList<VLSVariable> _variables_3 = it_4.getVariables(); 212 EList<VLSVariableDeclaration> _variables_3 = it_4.getVariables();
213 VLSVariable _duplicate_3 = this.support.duplicate(varB); 213 VLSVariable _duplicate_3 = this.support.duplicate(varB);
214 _variables_3.add(_duplicate_3); 214 _variables_3.add(_duplicate_3);
215 it_4.setOperand(this.support.duplicate(rel, CollectionLiterals.<VLSVariable>newArrayList(varC, varB))); 215 it_4.setOperand(this.support.duplicate(rel, CollectionLiterals.<VLSVariable>newArrayList(varC, varB)));
@@ -234,18 +234,13 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
234 Set<Map.Entry<VLSFunction, List<VLSFunction>>> _entrySet = type2cont.entrySet(); 234 Set<Map.Entry<VLSFunction, List<VLSFunction>>> _entrySet = type2cont.entrySet();
235 for (final Map.Entry<VLSFunction, List<VLSFunction>> e : _entrySet) { 235 for (final Map.Entry<VLSFunction, List<VLSFunction>> e : _entrySet) {
236 { 236 {
237 VLSFunction _key = e.getKey();
238 String _plus = (_key + " ");
239 List<VLSFunction> _value = e.getValue();
240 String _plus_1 = (_plus + _value);
241 InputOutput.<String>println(_plus_1);
242 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula(); 237 VLSFofFormula _createVLSFofFormula_1 = this.factory.createVLSFofFormula();
243 final Procedure1<VLSFofFormula> _function_4 = (VLSFofFormula it) -> { 238 final Procedure1<VLSFofFormula> _function_4 = (VLSFofFormula it) -> {
244 it.setName(this.support.toIDMultiple("containment_contained", e.getKey().getConstant().toString())); 239 it.setName(this.support.toIDMultiple("containment_contained", e.getKey().getConstant().toString()));
245 it.setFofRole("axiom"); 240 it.setFofRole("axiom");
246 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 241 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
247 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> { 242 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> {
248 EList<VLSVariable> _variables = it_1.getVariables(); 243 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
249 VLSVariable _duplicate = this.support.duplicate(varA); 244 VLSVariable _duplicate = this.support.duplicate(varA);
250 _variables.add(_duplicate); 245 _variables.add(_duplicate);
251 VLSImplies _createVLSImplies = this.factory.createVLSImplies(); 246 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
@@ -253,7 +248,7 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
253 it_2.setLeft(this.support.duplicate(e.getKey(), varA)); 248 it_2.setLeft(this.support.duplicate(e.getKey(), varA));
254 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier(); 249 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier();
255 final Procedure1<VLSExistentialQuantifier> _function_7 = (VLSExistentialQuantifier it_3) -> { 250 final Procedure1<VLSExistentialQuantifier> _function_7 = (VLSExistentialQuantifier it_3) -> {
256 EList<VLSVariable> _variables_1 = it_3.getVariables(); 251 EList<VLSVariableDeclaration> _variables_1 = it_3.getVariables();
257 VLSVariable _duplicate_1 = this.support.duplicate(varB); 252 VLSVariable _duplicate_1 = this.support.duplicate(varB);
258 _variables_1.add(_duplicate_1); 253 _variables_1.add(_duplicate_1);
259 int _length_1 = ((Object[])Conversions.unwrapArray(e.getValue(), Object.class)).length; 254 int _length_1 = ((Object[])Conversions.unwrapArray(e.getValue(), Object.class)).length;
@@ -313,9 +308,9 @@ public class Logic2VampireLanguageMapper_ContainmentMapper {
313 final Procedure1<VLSUnaryNegation> _function_6 = (VLSUnaryNegation it_1) -> { 308 final Procedure1<VLSUnaryNegation> _function_6 = (VLSUnaryNegation it_1) -> {
314 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier(); 309 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier();
315 final Procedure1<VLSExistentialQuantifier> _function_7 = (VLSExistentialQuantifier it_2) -> { 310 final Procedure1<VLSExistentialQuantifier> _function_7 = (VLSExistentialQuantifier it_2) -> {
316 EList<VLSVariable> _variables = it_2.getVariables(); 311 EList<VLSVariableDeclaration> _variables = it_2.getVariables();
317 List<VLSVariable> _duplicate = this.support.duplicate(variables); 312 List<VLSVariable> _duplicate = this.support.duplicate(variables);
318 Iterables.<VLSVariable>addAll(_variables, _duplicate); 313 Iterables.<VLSVariableDeclaration>addAll(_variables, _duplicate);
319 it_2.setOperand(this.support.unfoldAnd(conjunctionList)); 314 it_2.setOperand(this.support.unfoldAnd(conjunctionList));
320 }; 315 };
321 VLSExistentialQuantifier _doubleArrow_1 = ObjectExtensions.<VLSExistentialQuantifier>operator_doubleArrow(_createVLSExistentialQuantifier, _function_7); 316 VLSExistentialQuantifier _doubleArrow_1 = ObjectExtensions.<VLSExistentialQuantifier>operator_doubleArrow(_createVLSExistentialQuantifier, _function_7);
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
index c6565f6a..657c3292 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java
@@ -9,6 +9,7 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies;
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; 9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; 10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration;
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; 13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference; 14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference;
14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation; 15import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation;
@@ -76,7 +77,7 @@ public class Logic2VampireLanguageMapper_RelationMapper {
76 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 77 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
77 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> { 78 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it_1) -> {
78 for (final VLSVariable v : relVar2VLS) { 79 for (final VLSVariable v : relVar2VLS) {
79 EList<VLSVariable> _variables = it_1.getVariables(); 80 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
80 VLSVariable _duplicate = this.support.duplicate(v); 81 VLSVariable _duplicate = this.support.duplicate(v);
81 _variables.add(_duplicate); 82 _variables.add(_duplicate);
82 } 83 }
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java
index c2e4033b..6d4767a7 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java
@@ -13,6 +13,7 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies;
13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; 13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
14import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; 14import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; 17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
17import com.google.common.base.Objects; 18import com.google.common.base.Objects;
18import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement; 19import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
@@ -244,7 +245,7 @@ public class Logic2VampireLanguageMapper_ScopeMapper {
244 it.setFofRole("axiom"); 245 it.setFofRole("axiom");
245 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 246 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
246 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> { 247 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> {
247 EList<VLSVariable> _variables = it_1.getVariables(); 248 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
248 VLSVariable _duplicate = this.support.duplicate(this.variable); 249 VLSVariable _duplicate = this.support.duplicate(this.variable);
249 _variables.add(_duplicate); 250 _variables.add(_duplicate);
250 VLSImplies _createVLSImplies = this.factory.createVLSImplies(); 251 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
index f1d73bec..6cd53fae 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java
@@ -13,6 +13,7 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr;
13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; 13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
14import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; 14import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; 17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
17import com.google.common.base.Objects; 18import com.google.common.base.Objects;
18import com.google.common.collect.Iterables; 19import com.google.common.collect.Iterables;
@@ -323,9 +324,9 @@ public class Logic2VampireLanguageMapper_Support {
323 if (isUniversal) { 324 if (isUniversal) {
324 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 325 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
325 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it) -> { 326 final Procedure1<VLSUniversalQuantifier> _function_1 = (VLSUniversalQuantifier it) -> {
326 EList<VLSVariable> _variables = it.getVariables(); 327 EList<VLSVariableDeclaration> _variables = it.getVariables();
327 Collection<VLSVariable> _values = variableMap.values(); 328 Collection<VLSVariable> _values = variableMap.values();
328 Iterables.<VLSVariable>addAll(_variables, _values); 329 Iterables.<VLSVariableDeclaration>addAll(_variables, _values);
329 VLSImplies _createVLSImplies = this.factory.createVLSImplies(); 330 VLSImplies _createVLSImplies = this.factory.createVLSImplies();
330 final Procedure1<VLSImplies> _function_2 = (VLSImplies it_1) -> { 331 final Procedure1<VLSImplies> _function_2 = (VLSImplies it_1) -> {
331 it_1.setLeft(this.unfoldAnd(typedefs)); 332 it_1.setLeft(this.unfoldAnd(typedefs));
@@ -341,9 +342,9 @@ public class Logic2VampireLanguageMapper_Support {
341 typedefs.add(mapper.transformTerm(expression.getExpression(), trace, this.withAddition(variables, variableMap))); 342 typedefs.add(mapper.transformTerm(expression.getExpression(), trace, this.withAddition(variables, variableMap)));
342 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier(); 343 VLSExistentialQuantifier _createVLSExistentialQuantifier = this.factory.createVLSExistentialQuantifier();
343 final Procedure1<VLSExistentialQuantifier> _function_2 = (VLSExistentialQuantifier it) -> { 344 final Procedure1<VLSExistentialQuantifier> _function_2 = (VLSExistentialQuantifier it) -> {
344 EList<VLSVariable> _variables = it.getVariables(); 345 EList<VLSVariableDeclaration> _variables = it.getVariables();
345 Collection<VLSVariable> _values = variableMap.values(); 346 Collection<VLSVariable> _values = variableMap.values();
346 Iterables.<VLSVariable>addAll(_variables, _values); 347 Iterables.<VLSVariableDeclaration>addAll(_variables, _values);
347 it.setOperand(this.unfoldAnd(typedefs)); 348 it.setOperand(this.unfoldAnd(typedefs));
348 }; 349 };
349 _xblockexpression_1 = ObjectExtensions.<VLSExistentialQuantifier>operator_doubleArrow(_createVLSExistentialQuantifier, _function_2); 350 _xblockexpression_1 = ObjectExtensions.<VLSExistentialQuantifier>operator_doubleArrow(_createVLSExistentialQuantifier, _function_2);
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
index 73e59774..7921f204 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.java
@@ -15,6 +15,7 @@ import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; 15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation;
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; 16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; 17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration;
18import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; 19import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
19import com.google.common.base.Objects; 20import com.google.common.base.Objects;
20import com.google.common.collect.Iterables; 21import com.google.common.collect.Iterables;
@@ -143,7 +144,7 @@ public class Logic2VampireLanguageMapper_TypeMapper {
143 it.setFofRole("axiom"); 144 it.setFofRole("axiom");
144 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 145 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
145 final Procedure1<VLSUniversalQuantifier> _function_3 = (VLSUniversalQuantifier it_1) -> { 146 final Procedure1<VLSUniversalQuantifier> _function_3 = (VLSUniversalQuantifier it_1) -> {
146 EList<VLSVariable> _variables = it_1.getVariables(); 147 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
147 VLSVariable _duplicate = this.support.duplicate(variable); 148 VLSVariable _duplicate = this.support.duplicate(variable);
148 _variables.add(_duplicate); 149 _variables.add(_duplicate);
149 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 150 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
@@ -193,7 +194,7 @@ public class Logic2VampireLanguageMapper_TypeMapper {
193 it.setFofRole("axiom"); 194 it.setFofRole("axiom");
194 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 195 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
195 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> { 196 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> {
196 EList<VLSVariable> _variables = it_1.getVariables(); 197 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
197 VLSVariable _duplicate = this.support.duplicate(variable); 198 VLSVariable _duplicate = this.support.duplicate(variable);
198 _variables.add(_duplicate); 199 _variables.add(_duplicate);
199 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 200 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
@@ -263,7 +264,7 @@ public class Logic2VampireLanguageMapper_TypeMapper {
263 it.setFofRole("axiom"); 264 it.setFofRole("axiom");
264 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 265 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
265 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> { 266 final Procedure1<VLSUniversalQuantifier> _function_5 = (VLSUniversalQuantifier it_1) -> {
266 EList<VLSVariable> _variables = it_1.getVariables(); 267 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
267 VLSVariable _duplicate = this.support.duplicate(variable); 268 VLSVariable _duplicate = this.support.duplicate(variable);
268 _variables.add(_duplicate); 269 _variables.add(_duplicate);
269 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 270 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
@@ -291,7 +292,7 @@ public class Logic2VampireLanguageMapper_TypeMapper {
291 it.setFofRole("axiom"); 292 it.setFofRole("axiom");
292 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 293 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
293 final Procedure1<VLSUniversalQuantifier> _function_6 = (VLSUniversalQuantifier it_1) -> { 294 final Procedure1<VLSUniversalQuantifier> _function_6 = (VLSUniversalQuantifier it_1) -> {
294 EList<VLSVariable> _variables = it_1.getVariables(); 295 EList<VLSVariableDeclaration> _variables = it_1.getVariables();
295 VLSVariable _duplicate = this.support.duplicate(variable); 296 VLSVariable _duplicate = this.support.duplicate(variable);
296 _variables.add(_duplicate); 297 _variables.add(_duplicate);
297 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 298 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.java
index 1479e6b7..7f6ce1c6 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.java
@@ -1,59 +1,55 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder; 1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder;
2 2
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; 3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration;
4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment;
4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel; 5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel;
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl; 6import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl;
6import com.google.common.base.Objects; 7import com.google.common.base.Objects;
7import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; 8import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace;
8import java.io.BufferedReader; 9import java.io.BufferedReader;
9import java.io.InputStream; 10import java.io.InputStream;
10import java.io.InputStreamReader; 11import java.io.InputStreamReader;
11import java.util.List; 12import java.util.List;
12import java.util.Map;
13import org.eclipse.emf.common.util.EList; 13import org.eclipse.emf.common.util.EList;
14import org.eclipse.emf.common.util.URI; 14import org.eclipse.emf.common.util.URI;
15import org.eclipse.emf.ecore.EObject; 15import org.eclipse.emf.ecore.EObject;
16import org.eclipse.emf.ecore.resource.Resource;
17import org.eclipse.xtext.xbase.lib.CollectionLiterals; 16import org.eclipse.xtext.xbase.lib.CollectionLiterals;
18import org.eclipse.xtext.xbase.lib.Conversions; 17import org.eclipse.xtext.xbase.lib.Conversions;
19import org.eclipse.xtext.xbase.lib.Exceptions; 18import org.eclipse.xtext.xbase.lib.Exceptions;
19import org.eclipse.xtext.xbase.lib.InputOutput;
20 20
21@SuppressWarnings("all") 21@SuppressWarnings("all")
22public class VampireHandler { 22public class VampireHandler {
23 public EList<EObject> callSolver(final VampireModel problem, final ReasonerWorkspace workspace, final VampireSolverConfiguration configuration) { 23 public EList<EObject> callSolver(final VampireModel problem, final ReasonerWorkspace workspace, final VampireSolverConfiguration configuration) {
24 try { 24 try {
25 EList<EObject> _xblockexpression = null; 25 final String CMD = "cmd /c ";
26 { 26 final String VAMPDIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\";
27 final String CMD = "cmd /c "; 27 final String VAMPNAME = "vampire.exe";
28 final String VAMPDIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\"; 28 final String TEMPNAME = "TEMP.tptp";
29 final String VAMPNAME = "vampire.exe"; 29 final String OPTION = " --mode casc_sat ";
30 final String TEMPNAME = "TEMP.tptp"; 30 final String SOLNNAME = "solution.tptp";
31 final String OPTION = " --mode casc_sat "; 31 final String PATH = "C:/cygwin64/bin";
32 final String SOLNNAME = "solution.tptp"; 32 final URI wsURI = workspace.getWorkspaceURI();
33 final String PATH = "C:/cygwin64/bin"; 33 final String tempLoc = (wsURI + TEMPNAME);
34 final URI wsURI = workspace.getWorkspaceURI(); 34 String _plus = (wsURI + SOLNNAME);
35 final String tempLoc = (wsURI + TEMPNAME); 35 final String solnLoc = (_plus + " ");
36 String _plus = (wsURI + SOLNNAME); 36 final String vampLoc = (VAMPDIR + VAMPNAME);
37 final String solnLoc = (_plus + " "); 37 String tempURI = workspace.writeModel(problem, TEMPNAME).toFileString();
38 final String vampLoc = (VAMPDIR + VAMPNAME); 38 final Process p = Runtime.getRuntime().exec((((((CMD + vampLoc) + OPTION) + tempLoc) + " > ") + solnLoc), ((String[])Conversions.unwrapArray(CollectionLiterals.<String>newArrayList(("Path=" + PATH)), String.class)));
39 String tempURI = workspace.writeModel(problem, TEMPNAME).toFileString(); 39 p.waitFor();
40 final Process p = Runtime.getRuntime().exec((((((CMD + vampLoc) + OPTION) + tempLoc) + " > ") + solnLoc), ((String[])Conversions.unwrapArray(CollectionLiterals.<String>newArrayList(("Path=" + PATH)), String.class))); 40 InputStream _inputStream = p.getInputStream();
41 p.waitFor(); 41 InputStreamReader _inputStreamReader = new InputStreamReader(_inputStream);
42 InputStream _inputStream = p.getInputStream(); 42 final BufferedReader reader = new BufferedReader(_inputStreamReader);
43 InputStreamReader _inputStreamReader = new InputStreamReader(_inputStream); 43 final List<String> output = CollectionLiterals.<String>newArrayList();
44 final BufferedReader reader = new BufferedReader(_inputStreamReader); 44 String line = "";
45 final List<String> output = CollectionLiterals.<String>newArrayList(); 45 while ((!Objects.equal((line = reader.readLine()), null))) {
46 String line = ""; 46 output.add((line + "\n"));
47 while ((!Objects.equal((line = reader.readLine()), null))) {
48 output.add((line + "\n"));
49 }
50 workspace.getFile(TEMPNAME).delete();
51 Map<String, Object> _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
52 VampireLanguageFactoryImpl _vampireLanguageFactoryImpl = new VampireLanguageFactoryImpl();
53 _extensionToFactoryMap.put("*", _vampireLanguageFactoryImpl);
54 _xblockexpression = workspace.<VampireModel>readModel(VampireModel.class, SOLNNAME).eResource().getContents();
55 } 47 }
56 return _xblockexpression; 48 workspace.getFile(TEMPNAME).delete();
49 final EList<EObject> root = workspace.<VampireModel>readModel(VampireModel.class, SOLNNAME).eResource().getContents();
50 EObject _get = root.get(0);
51 InputOutput.<EList<VLSComment>>println(((VampireModelImpl) _get).getComments());
52 return root;
57 } catch (Throwable _e) { 53 } catch (Throwable _e) {
58 throw Exceptions.sneakyThrow(_e); 54 throw Exceptions.sneakyThrow(_e);
59 } 55 }