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-03-04 17:31:16 -0500
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-06-07 19:18:56 -0400
commit9643b7b7a735afc408ca6a172e2719653553627a (patch)
treea608396a89759a3d3d6ead5b659c23612ff9d56c /Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner
parentcomplete vsconfig files #19 (diff)
downloadVIATRA-Generator-9643b7b7a735afc408ca6a172e2719653553627a.tar.gz
VIATRA-Generator-9643b7b7a735afc408ca6a172e2719653553627a.tar.zst
VIATRA-Generator-9643b7b7a735afc408ca6a172e2719653553627a.zip
Begin handing of scope and fix type definitions.
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties5
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend3
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend101
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend203
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend74
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend45
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtend9
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend74
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend119
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbinbin2685 -> 2382 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireSolver.xtendbinbin5502 -> 5941 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.java8
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolverConfiguration.java3
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper.xtendbinbin17671 -> 18004 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapperTrace.xtendbinbin3140 -> 3137 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_RelationMapper.xtendbinbin8247 -> 8246 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_ScopeMapper.xtendbinbin0 -> 5890 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_Support.xtendbinbin9398 -> 9766 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper.xtendbinbin3224 -> 3223 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtendbinbin2742 -> 2643 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtendbinbin9279 -> 9048 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbinbin7552 -> 1720 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireHandler.xtendbinbin4907 -> 4908 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbinbin1490 -> 1491 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbinbin1691 -> 1688 bytes
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.gitignore1
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.java26
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java96
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.java23
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.java3
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.java95
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.java54
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireSolutionModel.java3
34 files changed, 544 insertions, 401 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties
index 41eb6ade..aed85a48 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties
@@ -1,4 +1,5 @@
1source.. = src/
2output.. = bin/
3bin.includes = META-INF/,\ 1bin.includes = META-INF/,\
4 . 2 .
3source.. = src/,\
4 src-gen/
5output.. = bin/
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend
index 27e00ccf..618980a3 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend
@@ -4,10 +4,9 @@ import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
4 4
5class VampireSolverConfiguration extends LogicSolverConfiguration { 5class VampireSolverConfiguration extends LogicSolverConfiguration {
6 6
7 public var int symmetry = 0 // by default 7 //public var int symmetry = 0 // by default
8 //choose needed backend solver 8 //choose needed backend solver
9// public var VampireBackendSolver solver = VampireBackendSolver.SAT4J 9// public var VampireBackendSolver solver = VampireBackendSolver.SAT4J
10 public var boolean writeToFile = false
11} 10}
12 11
13 12
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 cbe53bff..ee802a99 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
@@ -7,6 +7,7 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguage
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper 7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper
8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler 8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage 9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner 11import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException 12import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException
12import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration 13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
@@ -14,80 +15,81 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
14import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult 15import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
15import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 16import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
16 17
17class VampireSolver extends LogicReasoner{ 18class VampireSolver extends LogicReasoner {
18 19
19 new() { 20 new() {
20 VampireLanguagePackage.eINSTANCE.eClass 21 VampireLanguagePackage.eINSTANCE.eClass
21 val x = new VampireLanguageStandaloneSetupGenerated 22 val x = new VampireLanguageStandaloneSetupGenerated
22 VampireLanguageStandaloneSetup::doSetup() 23 VampireLanguageStandaloneSetup::doSetup()
23 } 24 }
24 25
25 val Logic2VampireLanguageMapper forwardMapper = new Logic2VampireLanguageMapper(new Logic2VampireLanguageMapper_TypeMapper_FilteredTypes) 26 val Logic2VampireLanguageMapper forwardMapper = new Logic2VampireLanguageMapper(
26 val Vampire2LogicMapper backwardMapper = new Vampire2LogicMapper 27 new Logic2VampireLanguageMapper_TypeMapper_FilteredTypes)
27 val VampireHandler handler = new VampireHandler 28 val Vampire2LogicMapper backwardMapper = new Vampire2LogicMapper
28 29 val VampireHandler handler = new VampireHandler
29 30
30 val fileName = "vampireProblem.tptp" 31 val fileName = "vampireProblem.tptp"
31 32
32 override solve(LogicProblem problem, LogicSolverConfiguration config, ReasonerWorkspace workspace) throws LogicReasonerException { 33 override solve(LogicProblem problem, LogicSolverConfiguration config,
34 ReasonerWorkspace workspace) throws LogicReasonerException {
33 val vampireConfig = config.asConfig 35 val vampireConfig = config.asConfig
34 36
35 // Start: Logic -> Vampire mapping 37 // Start: Logic -> Vampire mapping
36 val transformationStart = System.currentTimeMillis 38 val transformationStart = System.currentTimeMillis
37 //TODO 39 // TODO
38 val result = forwardMapper.transformProblem(problem,vampireConfig) 40 val result = forwardMapper.transformProblem(problem, vampireConfig)
39 val vampireProblem = result.output 41 val vampireProblem = result.output
40 val forwardTrace = result.trace 42 val forwardTrace = result.trace
41 43
42 var String fileURI = null; 44 var String fileURI = null;
43 var String vampireCode = null; 45 var String vampireCode = null;
44 vampireCode = workspace.writeModelToString(vampireProblem,fileName) 46 vampireCode = workspace.writeModelToString(vampireProblem, fileName)
45 if(vampireConfig.writeToFile) { 47
46 fileURI = workspace.writeModel(vampireProblem,fileName).toFileString 48 val writeFile = (
49 vampireConfig.documentationLevel === DocumentationLevel::NORMAL ||
50 vampireConfig.documentationLevel === DocumentationLevel::FULL)
51 if (writeFile) {
52 fileURI = workspace.writeModel(vampireProblem, fileName).toFileString
47 } 53 }
48
49 //Result as String
50 54
51 55 // Result as String
52 val transformationTime = System.currentTimeMillis - transformationStart 56 val transformationTime = System.currentTimeMillis - transformationStart
53 // Finish: Logic -> Vampire mapping 57 // Finish: Logic -> Vampire mapping
54
55
56 /* 58 /*
57 // Start: Solving Alloy problem 59 * // Start: Solving Alloy problem
58 val solverStart = System.currentTimeMillis 60 * val solverStart = System.currentTimeMillis
59 //Calling Solver (Currently Manually) 61 * //Calling Solver (Currently Manually)
60 val result2 = handler.callSolver(vampireProblem,workspace,vampireConfig,vampireCode) 62 * val result2 = handler.callSolver(vampireProblem,workspace,vampireConfig,vampireCode)
61// val result2 = null 63 * // val result2 = null
62 //TODO 64 * //TODO
63 //Backwards Mapper 65 * //Backwards Mapper
64 val logicResult = backwardMapper.transformOutput(problem,config.solutionScope.numberOfRequiredSolution,result2,forwardTrace,transformationTime) 66 * val logicResult = backwardMapper.transformOutput(problem,config.solutionScope.numberOfRequiredSolution,result2,forwardTrace,transformationTime)
65 67 *
66 val solverFinish = System.currentTimeMillis-solverStart 68 * val solverFinish = System.currentTimeMillis-solverStart
67 // Finish: Solving Alloy problem 69 * // Finish: Solving Alloy problem
68 70 *
69 if(vampireConfig.writeToFile) workspace.deactivateModel(fileName) 71 * if(vampireConfig.writeToFile) workspace.deactivateModel(fileName)
70 72 *
71 return logicResult 73 * return logicResult
72 74 *
73 /*/ 75 /*/
74 return null // for now 76 return null // for now
75 //*/ 77 // */
76 } 78 }
77 79
78 def asConfig(LogicSolverConfiguration configuration){ 80 def asConfig(LogicSolverConfiguration configuration) {
79 if(configuration instanceof VampireSolverConfiguration) { 81 if (configuration instanceof VampireSolverConfiguration) {
80 return configuration 82 return configuration
81 } else { 83 } else {
82 throw new IllegalArgumentException('''The configuration have to be an «VampireSolverConfiguration.simpleName»!''') 84 throw new IllegalArgumentException('''The configuration have to be an «VampireSolverConfiguration.simpleName»!''')
83 } 85 }
84 } 86 }
85 87
86// /* 88// /*
87// * not for now 89// * not for now
88// * 90// *
89 override getInterpretations(ModelResult modelResult) { 91 override getInterpretations(ModelResult modelResult) {
90 //val answers = (modelResult.representation as MonitoredAlloySolution).aswers.map[key] 92 // val answers = (modelResult.representation as MonitoredAlloySolution).aswers.map[key]
91// val sols = modelResult.representation// as List<A4Solution> 93// val sols = modelResult.representation// as List<A4Solution>
92// //val res = answers.map 94// //val res = answers.map
93// sols.map[ 95// sols.map[
@@ -98,7 +100,6 @@ class VampireSolver extends LogicReasoner{
98// modelResult.trace as Logic2AlloyLanguageMapperTrace 100// modelResult.trace as Logic2AlloyLanguageMapperTrace
99// ) 101// )
100// ] 102// ]
101 } 103 }
102// */ 104// */
103 105}
104} \ No newline at end of file
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 cd48a032..e2c15b75 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
@@ -48,6 +48,8 @@ class Logic2VampireLanguageMapper {
48 this) 48 this)
49 @Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_RelationMapper relationMapper = new Logic2VampireLanguageMapper_RelationMapper( 49 @Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_RelationMapper relationMapper = new Logic2VampireLanguageMapper_RelationMapper(
50 this) 50 this)
51 @Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_ScopeMapper scopeMapper = new Logic2VampireLanguageMapper_ScopeMapper(
52 this)
51 @Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_TypeMapper typeMapper 53 @Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_TypeMapper typeMapper
52 54
53 public new(Logic2VampireLanguageMapper_TypeMapper typeMapper) { 55 public new(Logic2VampireLanguageMapper_TypeMapper typeMapper) {
@@ -72,11 +74,15 @@ class Logic2VampireLanguageMapper {
72// it.incQueryEngine = viatraQueryEngine.on(new EMFScope(problem)) 74// it.incQueryEngine = viatraQueryEngine.on(new EMFScope(problem))
73 ] 75 ]
74 76
75 // call mappers 77 // TYPE MAPPER
76 if (!problem.types.isEmpty) { 78 if (!problem.types.isEmpty) {
77 typeMapper.transformTypes(problem.types, problem.elements, this, trace) 79 typeMapper.transformTypes(problem.types, problem.elements, this, trace)
78 } 80 }
79 81
82 // SCOPE MAPPER
83 scopeMapper.transformScope(config, trace)
84
85
80 trace.constantDefinitions = problem.collectConstantDefinitions 86 trace.constantDefinitions = problem.collectConstantDefinitions
81 trace.relationDefinitions = problem.collectRelationDefinitions 87 trace.relationDefinitions = problem.collectRelationDefinitions
82 88
@@ -204,8 +210,9 @@ class Logic2VampireLanguageMapper {
204 ] 210 ]
205 } 211 }
206 212
207 def dispatch protected VLSTerm transformTerm(Distinct distinct, Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { 213 def dispatch protected VLSTerm transformTerm(Distinct distinct, Logic2VampireLanguageMapperTrace trace,
208 support.unfoldDistinctTerms(this,distinct.operands,trace,variables) } 214 Map<Variable, VLSVariable> variables) { support.unfoldDistinctTerms(this, distinct.operands, trace, variables) }
215
209// 216//
210// def dispatch protected ALSTerm transformTerm(Plus plus, Logic2AlloyLanguageMapperTrace trace, Map<Variable, ALSVariableDeclaration> variables) { 217// def dispatch protected ALSTerm transformTerm(Plus plus, Logic2AlloyLanguageMapperTrace trace, Map<Variable, ALSVariableDeclaration> variables) {
211// createALSFunctionCall => [it.params += plus.leftOperand.transformTerm(trace,variables) it.params += plus.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.PLUS] } 218// createALSFunctionCall => [it.params += plus.leftOperand.transformTerm(trace,variables) it.params += plus.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.PLUS] }
@@ -228,12 +235,14 @@ class Logic2VampireLanguageMapper {
228 support.createExistentiallyQuantifiedExpression(this, exists, trace, variables) 235 support.createExistentiallyQuantifiedExpression(this, exists, trace, variables)
229 } 236 }
230 237
231 def dispatch protected VLSTerm transformTerm(InstanceOf instanceOf, Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { 238 def dispatch protected VLSTerm transformTerm(InstanceOf instanceOf, Logic2VampireLanguageMapperTrace trace,
239 Map<Variable, VLSVariable> variables) {
232 return createVLSFunction => [ 240 return createVLSFunction => [
233 it.constant = support.toIDMultiple("type", (instanceOf.range as ComplexTypeReference).referred.name ) 241 it.constant = support.toIDMultiple("type", (instanceOf.range as ComplexTypeReference).referred.name)
234 it.terms += instanceOf.value.transformTerm(trace, variables) 242 it.terms += instanceOf.value.transformTerm(trace, variables)
235 ] 243 ]
236 } 244 }
245
237// 246//
238// def dispatch protected ALSTerm transformTerm(TransitiveClosure tc, Logic2AlloyLanguageMapperTrace trace, Map<Variable, ALSVariableDeclaration> variables) { 247// def dispatch protected ALSTerm transformTerm(TransitiveClosure tc, Logic2AlloyLanguageMapperTrace trace, Map<Variable, ALSVariableDeclaration> variables) {
239// return this.relationMapper.transformTransitiveRelationReference( 248// return this.relationMapper.transformTransitiveRelationReference(
@@ -253,50 +262,49 @@ class Logic2VampireLanguageMapper {
253 def dispatch protected VLSTerm transformSymbolicReference(DefinedElement referred, 262 def dispatch protected VLSTerm transformSymbolicReference(DefinedElement referred,
254 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 263 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
255 Map<Variable, VLSVariable> variables) { 264 Map<Variable, VLSVariable> variables) {
256 typeMapper.transformReference(referred, trace) 265 typeMapper.transformReference(referred, trace)
257 } 266 }
258 267
259 def dispatch protected VLSTerm transformSymbolicReference(ConstantDeclaration constant, 268 def dispatch protected VLSTerm transformSymbolicReference(ConstantDeclaration constant,
260 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 269 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
261 Map<Variable, VLSVariable> variables) { 270 Map<Variable, VLSVariable> variables) {
262 // might need to make sure that only declared csts get transformed. see for Alloy 271 // might need to make sure that only declared csts get transformed. see for Alloy
263 val res = createVLSConstant => [ 272 val res = createVLSConstant => [
264 // ask if necessary VLSConstantDeclaration and not just directly strng 273 // ask if necessary VLSConstantDeclaration and not just directly strng
265 it.name = support.toID(constant.name) 274 it.name = support.toID(constant.name)
266 ] 275 ]
267 // no postprocessing cuz booleans are accepted 276 // no postprocessing cuz booleans are accepted
268 return res 277 return res
269 } 278 }
270 279
271 // NOT NEEDED FOR NOW 280 // NOT NEEDED FOR NOW
272 // TODO 281 // TODO
273 def dispatch protected VLSTerm transformSymbolicReference(ConstantDefinition constant, 282 def dispatch protected VLSTerm transformSymbolicReference(ConstantDefinition constant,
274 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 283 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
275 Map<Variable, VLSVariable> variables) { 284 Map<Variable, VLSVariable> variables) {
276// val res = createVLSFunctionCall => [ 285// val res = createVLSFunctionCall => [
277// it.referredDefinition = constant.lookup(trace.constantDefinition2Function) 286// it.referredDefinition = constant.lookup(trace.constantDefinition2Function)
278// ] 287// ]
279// return support.postprocessResultOfSymbolicReference(constant.type,res,trace) 288// return support.postprocessResultOfSymbolicReference(constant.type,res,trace)
280 } 289 }
281 290
282 def dispatch protected VLSTerm transformSymbolicReference(Variable variable, 291 def dispatch protected VLSTerm transformSymbolicReference(Variable variable, List<Term> parameterSubstitutions,
283 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 292 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) {
284 Map<Variable, VLSVariable> variables) {
285 293
286 // cannot treat variable as function (constant) because of name ID not being the same 294 // cannot treat variable as function (constant) because of name ID not being the same
287 // below does not work 295 // below does not work
288 val res = createVLSVariable => [ 296 val res = createVLSVariable => [
289// it.name = support.toIDMultiple("Var", variable.lookup(variables).name) 297// it.name = support.toIDMultiple("Var", variable.lookup(variables).name)
290 it.name = support.toID(variable.lookup(variables).name) 298 it.name = support.toID(variable.lookup(variables).name)
291 ] 299 ]
292 // no need for potprocessing cuz booleans are supported 300 // no need for potprocessing cuz booleans are supported
293 return res 301 return res
294 } 302 }
295 303
296 // TODO 304 // TODO
297 def dispatch protected VLSTerm transformSymbolicReference(FunctionDeclaration function, 305 def dispatch protected VLSTerm transformSymbolicReference(FunctionDeclaration function,
298 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 306 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
299 Map<Variable, VLSVariable> variables) { 307 Map<Variable, VLSVariable> variables) {
300// if(trace.functionDefinitions.containsKey(function)) { 308// if(trace.functionDefinitions.containsKey(function)) {
301// return this.transformSymbolicReference(function.lookup(trace.functionDefinitions),parameterSubstitutions,trace,variables) 309// return this.transformSymbolicReference(function.lookup(trace.functionDefinitions),parameterSubstitutions,trace,variables)
302// } else { 310// } else {
@@ -316,71 +324,68 @@ class Logic2VampireLanguageMapper {
316// return support.postprocessResultOfSymbolicReference(function.range,res,trace) 324// return support.postprocessResultOfSymbolicReference(function.range,res,trace)
317// } 325// }
318// } 326// }
319 } 327 }
320 328
321 // TODO 329 // TODO
322 def dispatch protected VLSTerm transformSymbolicReference(FunctionDefinition function, 330 def dispatch protected VLSTerm transformSymbolicReference(FunctionDefinition function,
323 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 331 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
324 Map<Variable, VLSVariable> variables) { 332 Map<Variable, VLSVariable> variables) {
325// val result = createVLSFunctionCall => [ 333// val result = createVLSFunctionCall => [
326// it.referredDefinition = function.lookup(trace.functionDefinition2Function) 334// it.referredDefinition = function.lookup(trace.functionDefinition2Function)
327// it.params += parameterSubstitutions.map[it.transformTerm(trace,variables)] 335// it.params += parameterSubstitutions.map[it.transformTerm(trace,variables)]
328// ] 336// ]
329// return support.postprocessResultOfSymbolicReference(function.range,result,trace) 337// return support.postprocessResultOfSymbolicReference(function.range,result,trace)
330 } 338 }
331 339
332 // TODO 340 // TODO
333 /* 341 /*
334 def dispatch protected VLSTerm transformSymbolicReference(Relation relation, 342 * def dispatch protected VLSTerm transformSymbolicReference(Relation relation,
335 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 343 * List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
336 Map<Variable, VLSVariable> variables) { 344 * Map<Variable, VLSVariable> variables) {
337 if (trace.relationDefinitions.containsKey(relation)) { 345 * if (trace.relationDefinitions.containsKey(relation)) {
338 this.transformSymbolicReference(relation.lookup(trace.relationDefinitions), 346 * this.transformSymbolicReference(relation.lookup(trace.relationDefinitions),
339 parameterSubstitutions, trace, variables) 347 * parameterSubstitutions, trace, variables)
340 } 348 * }
341 else { 349 * else {
342// if (relationMapper.transformToHostedField(relation, trace)) { 350 * // if (relationMapper.transformToHostedField(relation, trace)) {
343// val VLSRelation = relation.lookup(trace.relationDeclaration2Field) 351 * // val VLSRelation = relation.lookup(trace.relationDeclaration2Field)
344// // R(a,b) => 352 * // // R(a,b) =>
345// // b in a.R 353 * // // b in a.R
346// return createVLSSubset => [ 354 * // return createVLSSubset => [
347// it.leftOperand = parameterSubstitutions.get(1).transformTerm(trace, variables) 355 * // it.leftOperand = parameterSubstitutions.get(1).transformTerm(trace, variables)
348// it.rightOperand = createVLSJoin => [ 356 * // it.rightOperand = createVLSJoin => [
349// it.leftOperand = parameterSubstitutions.get(0).transformTerm(trace, variables) 357 * // it.leftOperand = parameterSubstitutions.get(0).transformTerm(trace, variables)
350// it.rightOperand = createVLSReference => [it.referred = VLSRelation] 358 * // it.rightOperand = createVLSReference => [it.referred = VLSRelation]
351// ] 359 * // ]
352// ] 360 * // ]
353// } else { 361 * // } else {
354// val target = createVLSJoin => [ 362 * // val target = createVLSJoin => [
355// leftOperand = createVLSReference => [referred = trace.logicLanguage] 363 * // leftOperand = createVLSReference => [referred = trace.logicLanguage]
356// rightOperand = createVLSReference => [ 364 * // rightOperand = createVLSReference => [
357// referred = relation.lookup(trace.relationDeclaration2Global) 365 * // referred = relation.lookup(trace.relationDeclaration2Global)
358// ] 366 * // ]
359// ] 367 * // ]
360// val source = support.unfoldTermDirectProduct(this, parameterSubstitutions, trace, variables) 368 * // val source = support.unfoldTermDirectProduct(this, parameterSubstitutions, trace, variables)
361// 369 * //
362// return createVLSSubset => [ 370 * // return createVLSSubset => [
363// leftOperand = source 371 * // leftOperand = source
364// rightOperand = target 372 * // rightOperand = target
365// ] 373 * // ]
366// } 374 * // }
367 } 375 * }
368 } 376 * }
369 */ 377 */
370 378 // TODO
371 // TODO 379 def dispatch protected VLSTerm transformSymbolicReference(Relation relation, List<Term> parameterSubstitutions,
372 def dispatch protected VLSTerm transformSymbolicReference(Relation relation, 380 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) {
373 List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
374 Map<Variable, VLSVariable> variables) {
375// createVLSFunction => [ 381// createVLSFunction => [
376// it.referredDefinition = relation.lookup(trace.relationDefinition2Predicate) 382// it.referredDefinition = relation.lookup(trace.relationDefinition2Predicate)
377// it.params += parameterSubstitutions.map[p|p.transformTerm(trace, variables)] 383// it.params += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
378// ] 384// ]
379 return createVLSFunction => [ 385 return createVLSFunction => [
380 it.constant = support.toIDMultiple("rel", relation.name) 386 it.constant = support.toIDMultiple("rel", relation.name)
381 it.terms += parameterSubstitutions.map[p | p.transformTerm(trace,variables)] 387 it.terms += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
382 ] 388 ]
383 } 389 }
384 390
385 } 391}
386 \ No newline at end of file
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
new file mode 100644
index 00000000..84aa521d
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
@@ -0,0 +1,74 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2
3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant
4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
7import java.util.List
8
9class Logic2VampireLanguageMapper_ScopeMapper {
10 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
11 private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
12 val Logic2VampireLanguageMapper base
13
14 public new(Logic2VampireLanguageMapper base) {
15 this.base = base
16 }
17
18 def dispatch public void transformScope(LogicSolverConfiguration config, Logic2VampireLanguageMapperTrace trace) {
19 val VLSVariable variable = createVLSVariable => [it.name = "A"]
20
21
22 // 1. make a list of constants equaling the min number of specified objects
23 val List<VLSConstant> instances = newArrayList
24 for (var i = 0; i < config.typeScopes.minNewElements; i++) {
25 val num = i + 1
26 val cst = createVLSConstant => [
27 it.name = "o" + num
28 ]
29 instances.add(cst)
30 }
31
32
33 // TODO: specify for the max
34
35
36 // 2. Create initial fof formula to specify the number of elems
37 val cstDec = createVLSFofFormula => [
38 it.name = "typeScope"
39 it.fofRole = "axiom"
40 it.fofFormula = createVLSUniversalQuantifier => [
41 it.variables += support.duplicate(variable)
42 // check below
43 it.operand = createVLSEquivalent => [
44 it.left = support.topLevelTypeFunc
45 it.right = support.unfoldOr(instances.map [ i |
46 createVLSEquality => [
47 it.left = createVLSVariable => [it.name = variable.name]
48 it.right = i
49 ]
50 ])
51 ]
52 ]
53 ]
54 trace.specification.formulas += cstDec
55
56
57 // TODO: specify for scope per type
58
59
60
61 // 3. Specify uniqueness of elements
62 val uniqueness = createVLSFofFormula => [
63 it.name = "typeUniqueness"
64 it.fofRole = "axiom"
65 it.fofFormula = support.unfoldOr(instances.map [ i |
66 createVLSEquality => [
67 it.left = createVLSVariable => [it.name = variable.name]
68 it.right = i
69 ]
70 ])
71 ]
72 trace.specification.formulas += cstDec
73 }
74}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
index ab92b42f..e69f0d51 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
@@ -1,17 +1,18 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder 1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression 3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm 4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable 5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory 6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
8import java.util.ArrayList 11import java.util.ArrayList
9import java.util.HashMap 12import java.util.HashMap
10import java.util.List 13import java.util.List
11import java.util.Map 14import java.util.Map
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
13import org.eclipse.emf.common.util.EList 15import org.eclipse.emf.common.util.EList
14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
15 16
16class Logic2VampireLanguageMapper_Support { 17class Logic2VampireLanguageMapper_Support {
17 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE 18 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
@@ -25,6 +26,19 @@ class Logic2VampireLanguageMapper_Support {
25 ids.split("\\s+").join("_") 26 ids.split("\\s+").join("_")
26 } 27 }
27 28
29 def protected VLSVariable duplicate(VLSVariable vrbl) {
30 return createVLSVariable => [it.name = vrbl.name]
31 }
32
33 def protected VLSFunction topLevelTypeFunc() {
34 return createVLSFunction => [
35 it.constant = "object"
36 it.terms += createVLSVariable => [
37 it.name = "A"
38 ]
39 ]
40 }
41
28 // Support Functions 42 // Support Functions
29 // booleans 43 // booleans
30 // AND and OR 44 // AND and OR
@@ -41,7 +55,6 @@ class Logic2VampireLanguageMapper_Support {
41 } 55 }
42 56
43 def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) { 57 def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) {
44
45// if(operands.size == 0) {basically return true} 58// if(operands.size == 0) {basically return true}
46 /*else*/ if (operands.size == 1) { 59 /*else*/ if (operands.size == 1) {
47 return operands.head 60 return operands.head
@@ -56,20 +69,21 @@ class Logic2VampireLanguageMapper_Support {
56 69
57 def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands, 70 def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands,
58 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { 71 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) {
59 if(operands.size == 1) { return m.transformTerm(operands.head,trace,variables) } 72 if (operands.size == 1) {
60 else if(operands.size > 1) { 73 return m.transformTerm(operands.head, trace, variables)
61 val notEquals = new ArrayList<VLSTerm>(operands.size*operands.size/2) 74 } else if (operands.size > 1) {
62 for(i:0..<operands.size) { 75 val notEquals = new ArrayList<VLSTerm>(operands.size * operands.size / 2)
63 for(j: i+1..<operands.size) { 76 for (i : 0 ..< operands.size) {
64 notEquals+=createVLSInequality=>[ 77 for (j : i + 1 ..< operands.size) {
65 it.left= m.transformTerm(operands.get(i),trace,variables) 78 notEquals += createVLSInequality => [
66 it.right = m.transformTerm(operands.get(j),trace,variables) 79 it.left = m.transformTerm(operands.get(i), trace, variables)
80 it.right = m.transformTerm(operands.get(j), trace, variables)
67 ] 81 ]
68 } 82 }
69 } 83 }
70 return notEquals.unfoldAnd 84 return notEquals.unfoldAnd
71 } 85 } else
72 else throw new UnsupportedOperationException('''Logic operator with 0 operands!''') 86 throw new UnsupportedOperationException('''Logic operator with 0 operands!''')
73 } 87 }
74 88
75 // Symbolic 89 // Symbolic
@@ -105,7 +119,6 @@ class Logic2VampireLanguageMapper_Support {
105 ] 119 ]
106 typedefs.add(eq) 120 typedefs.add(eq)
107 } 121 }
108
109 122
110 createVLSUniversalQuantifier => [ 123 createVLSUniversalQuantifier => [
111 it.variables += variableMap.values 124 it.variables += variableMap.values
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtend
index a0f0edda..aba47edb 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtend
@@ -1,20 +1,17 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder 1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction 3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm 4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
8import java.util.ArrayList 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
9import java.util.HashMap 7import java.util.HashMap
10import java.util.List
11import java.util.Map 8import java.util.Map
12 9
13class Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapperTrace{ 10class Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapperTrace{
14 11
15// public var VLSFofFormula objectSuperClass 12// public var VLSFofFormula objectSuperClass
16 public val Map<Type, VLSFunction> type2Predicate = new HashMap; 13 public val Map<Type, VLSFunction> type2Predicate = new HashMap;
17 public val Map<DefinedElement, VLSEquality> definedElement2Declaration = new HashMap //Not Yet Used 14 public val Map<DefinedElement, VLSFunction> element2Predicate = new HashMap
18 public val Map<Type, VLSTerm> type2PossibleNot = new HashMap 15 public val Map<Type, VLSTerm> type2PossibleNot = new HashMap
19 public val Map<Type, VLSTerm> type2And = new HashMap 16 public val Map<Type, VLSTerm> type2And = new HashMap
20 17
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
index 41e2137c..eed10656 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
@@ -11,6 +11,8 @@ import java.util.ArrayList
11import java.util.Collection 11import java.util.Collection
12 12
13import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 13import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
14import java.util.List
15import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
14 16
15class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapper { 17class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapper {
16 private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support 18 private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
@@ -25,50 +27,66 @@ class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2Vamp
25 val typeTrace = new Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes 27 val typeTrace = new Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes
26 trace.typeMapperTrace = typeTrace 28 trace.typeMapperTrace = typeTrace
27 29
28 val VLSVariable variable = createVLSVariable => [it.name = "A"] // did not work 30 // The variable
29 // 1. store predicates for declarations in trace 31 val VLSVariable variable = createVLSVariable => [it.name = "A"]
32
33 // 1. Each type (class) is a predicate with a single variable as input
30 for (type : types) { 34 for (type : types) {
31 val typePred = createVLSFunction => [ 35 val typePred = createVLSFunction => [
32 it.constant = support.toIDMultiple("type", type.name) 36 it.constant = support.toIDMultiple("t", type.name)
33 it.terms += createVLSVariable => [it.name = variable.name] 37 it.terms += support.duplicate(variable)
34 ] 38 ]
35 typeTrace.type2Predicate.put(type, typePred) 39 typeTrace.type2Predicate.put(type, typePred)
36 } 40 }
37 41
38 // 2. Map each type definition to fof formula 42 // 2. Map each ENUM type definition to fof formula
39 for (type : types.filter(TypeDefinition)) { 43 for (type : types.filter(TypeDefinition)) {
44 val List<VLSFunction> orElems = newArrayList
45 for (e : type.elements) {
46 val enumElemPred = createVLSFunction => [
47 it.constant = support.toIDMultiple("e", e.name, type.name)
48 it.terms += support.duplicate(variable)
49 ]
50 typeTrace.element2Predicate.put(e, enumElemPred)
51 orElems.add(enumElemPred)
52 }
40 53
41 val res = createVLSFofFormula => [ 54 val res = createVLSFofFormula => [
42 it.name = support.toIDMultiple("typeDef", type.name) 55 it.name = support.toIDMultiple("typeDef", type.name)
43 // below is temporary solution 56 // below is temporary solution
44 it.fofRole = "axiom" 57 it.fofRole = "axiom"
45 it.fofFormula = createVLSUniversalQuantifier => [ 58 it.fofFormula = createVLSUniversalQuantifier => [
46 it.variables += createVLSVariable => [it.name = variable.name] 59 it.variables += support.duplicate(variable)
47 it.operand = createVLSEquivalent => [ 60 it.operand = createVLSEquivalent => [
48 it.left = createVLSFunction => [ 61// it.left = createVLSFunction => [
49 it.constant = type.lookup(typeTrace.type2Predicate).constant 62// it.constant = type.lookup(typeTrace.type2Predicate).constant
50 it.terms += createVLSVariable => [it.name = "A"] 63// it.terms += createVLSVariable => [it.name = "A"]
51 ] 64// ]
52 65 it.left = type.lookup(typeTrace.type2Predicate)
53 type.lookup(typeTrace.type2Predicate) 66
54 it.right = support.unfoldOr(type.elements.map [ e | 67 it.right = support.unfoldOr(orElems)
55 createVLSEquality => [ 68
56 it.left = createVLSVariable => [it.name = variable.name] 69 // TEMPPPPPPP
70// it.right = support.unfoldOr(type.elements.map [e |
71//
72// createVLSEquality => [
73// it.left = support.duplicate(variable)
57// it.right = createVLSDoubleQuote => [ 74// it.right = createVLSDoubleQuote => [
58// it.value = "\"" + e.name + "\"" 75// it.value = "\"a" + e.name + "\""
59// ] 76// ]
60 it.right = createVLSDoubleQuote => [ 77// ]
61 it.value = "\"a" + e.name + "\"" 78// ])
62 ] 79 // END TEMPPPPP
63 ]
64 ])
65 ] 80 ]
66 ] 81 ]
67 82
68 ] 83 ]
69 trace.specification.formulas += res 84 trace.specification.formulas += res
70 } 85 }
71 // 2.5. Currently allowing duplicate types. Not problematic cuz strings are by def unique 86
87 //HIERARCHY HANDLER
88
89
72 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates 90 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates
73 // and store in a map 91 // and store in a map
74// val List<VLSTerm> type2PossibleNot = new ArrayList 92// val List<VLSTerm> type2PossibleNot = new ArrayList
@@ -97,19 +115,17 @@ class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2Vamp
97 } 115 }
98 116
99 // 5. create fof function that is an or with all the elements in map 117 // 5. create fof function that is an or with all the elements in map
100 // Do this only if there are more than 1 type 118
119
120
121
101 val hierarch = createVLSFofFormula => [ 122 val hierarch = createVLSFofFormula => [
102 it.name = "hierarchyHandler" 123 it.name = "hierarchyHandler"
103 it.fofRole = "axiom" 124 it.fofRole = "axiom"
104 it.fofFormula = createVLSUniversalQuantifier => [ 125 it.fofFormula = createVLSUniversalQuantifier => [
105 it.variables += createVLSVariable => [it.name = "A"] 126 it.variables += createVLSVariable => [it.name = "A"]
106 it.operand = createVLSEquivalent => [ 127 it.operand = createVLSEquivalent => [
107 it.left = createVLSFunction => [ 128 it.left = support.topLevelTypeFunc
108 it.constant = "object"
109 it.terms += createVLSVariable => [
110 it.name = "A"
111 ]
112 ]
113 it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values)) 129 it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values))
114 ] 130 ]
115 ] 131 ]
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend
index 5cb0198e..9c9e65b4 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend
@@ -4,63 +4,64 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory 4import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory
5 5
6class Vampire2LogicMapper { 6class Vampire2LogicMapper {
7 val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE
8
9 public def transformOutput(LogicProblem problem, int requiredNumberOfSolution, VampireSolutionModel vampireSolution, Logic2VampireLanguageMapperTrace trace, long transformationTime) {
10 val models = vampireSolution.aswers.map[it.key].toList
11
12 if(!monitoredAlloySolution.finishedBeforeTimeout) {
13 return createInsuficientResourcesResult => [
14 it.problem = problem
15 it.representation += models
16 it.trace = trace
17 it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
18 ]
19 } else {
20 if(models.last.satisfiable || requiredNumberOfSolution == -1) {
21 return createModelResult => [
22 it.problem = problem
23 it.representation += models
24 it.trace = trace
25 it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
26 ]
27 } else {
28 return createInconsistencyResult => [
29 it.problem = problem
30 it.representation += models
31 it.trace = trace
32 it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
33 ]
34 }
35 }
36 }
37
38 def transformStatistics(MonitoredAlloySolution solution, long transformationTime) {
39 createStatistics => [
40 it.transformationTime = transformationTime as int
41 for(solutionIndex : 0..<solution.aswers.size) {
42 val solutionTime = solution.aswers.get(solutionIndex).value
43 it.entries+= createIntStatisticEntry => [
44 it.name = '''Answer«solutionIndex»Time'''
45 it.value = solutionTime.intValue
46 ]
47 }
48 it.entries+= createIntStatisticEntry => [
49 it.name = "Alloy2KodKodTransformationTime"
50 it.value = solution.kodkodTime as int
51 ]
52 it.entries+= createIntStatisticEntry => [
53 it.name = "Alloy2KodKodTransformationTime"
54 it.value = solution.kodkodTime as int
55 ]
56 it.entries+= createStringStatisticEntry => [
57 it.name = "warnings"
58 it.value = '''[«FOR warning : solution.warnings SEPARATOR ","»«warning»«ENDFOR»]'''
59 ]
60 ]
61 }
62
63 def sum(Iterable<Long> ints) {
64 ints.reduce[p1, p2|p1+p2]
65 }
66} 7}
8// val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE
9//
10// public def transformOutput(LogicProblem problem, int requiredNumberOfSolution, VampireSolutionModel vampireSolution, Logic2VampireLanguageMapperTrace trace, long transformationTime) {
11// val models = vampireSolution.aswers.map[it.key].toList
12//
13// if(!monitoredAlloySolution.finishedBeforeTimeout) {
14// return createInsuficientResourcesResult => [
15// it.problem = problem
16// it.representation += models
17// it.trace = trace
18// it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
19// ]
20// } else {
21// if(models.last.satisfiable || requiredNumberOfSolution == -1) {
22// return createModelResult => [
23// it.problem = problem
24// it.representation += models
25// it.trace = trace
26// it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
27// ]
28// } else {
29// return createInconsistencyResult => [
30// it.problem = problem
31// it.representation += models
32// it.trace = trace
33// it.statistics = transformStatistics(monitoredAlloySolution,transformationTime)
34// ]
35// }
36// }
37// }
38//
39// def transformStatistics(MonitoredAlloySolution solution, long transformationTime) {
40// createStatistics => [
41// it.transformationTime = transformationTime as int
42// for(solutionIndex : 0..<solution.aswers.size) {
43// val solutionTime = solution.aswers.get(solutionIndex).value
44// it.entries+= createIntStatisticEntry => [
45// it.name = '''Answer«solutionIndex»Time'''
46// it.value = solutionTime.intValue
47// ]
48// }
49// it.entries+= createIntStatisticEntry => [
50// it.name = "Alloy2KodKodTransformationTime"
51// it.value = solution.kodkodTime as int
52// ]
53// it.entries+= createIntStatisticEntry => [
54// it.name = "Alloy2KodKodTransformationTime"
55// it.value = solution.kodkodTime as int
56// ]
57// it.entries+= createStringStatisticEntry => [
58// it.name = "warnings"
59// it.value = '''[«FOR warning : solution.warnings SEPARATOR ","»«warning»«ENDFOR»]'''
60// ]
61// ]
62// }
63//
64// def sum(Iterable<Long> ints) {
65// ints.reduce[p1, p2|p1+p2]
66// }
67//}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
index 462a940b..9a2a1b15 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/.VampireAnalyzerConfiguration.xtendbin
Binary files differ
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 d8b8ca61..ce05b92c 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/VampireSolver.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.java
index e1a1ca6e..1846ba2e 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.java
@@ -10,6 +10,7 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper;
10import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler; 10import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler;
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; 11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage;
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel; 12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel;
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel;
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation; 14import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation;
14import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; 15import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner;
15import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException; 16import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException;
@@ -30,7 +31,8 @@ public class VampireSolver extends LogicReasoner {
30 VampireLanguageStandaloneSetup.doSetup(); 31 VampireLanguageStandaloneSetup.doSetup();
31 } 32 }
32 33
33 private final Logic2VampireLanguageMapper forwardMapper = new Logic2VampireLanguageMapper(new Logic2VampireLanguageMapper_TypeMapper_FilteredTypes()); 34 private final Logic2VampireLanguageMapper forwardMapper = new Logic2VampireLanguageMapper(
35 new Logic2VampireLanguageMapper_TypeMapper_FilteredTypes());
34 36
35 private final Vampire2LogicMapper backwardMapper = new Vampire2LogicMapper(); 37 private final Vampire2LogicMapper backwardMapper = new Vampire2LogicMapper();
36 38
@@ -48,7 +50,9 @@ public class VampireSolver extends LogicReasoner {
48 String fileURI = null; 50 String fileURI = null;
49 String vampireCode = null; 51 String vampireCode = null;
50 vampireCode = workspace.writeModelToString(vampireProblem, this.fileName); 52 vampireCode = workspace.writeModelToString(vampireProblem, this.fileName);
51 if (vampireConfig.writeToFile) { 53 final boolean writeFile = ((vampireConfig.documentationLevel == DocumentationLevel.NORMAL) ||
54 (vampireConfig.documentationLevel == DocumentationLevel.FULL));
55 if (writeFile) {
52 fileURI = workspace.writeModel(vampireProblem, this.fileName).toFileString(); 56 fileURI = workspace.writeModel(vampireProblem, this.fileName).toFileString();
53 } 57 }
54 long _currentTimeMillis = System.currentTimeMillis(); 58 long _currentTimeMillis = System.currentTimeMillis();
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolverConfiguration.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolverConfiguration.java
index d392016e..1f6b3d42 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolverConfiguration.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolverConfiguration.java
@@ -4,7 +4,4 @@ import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration;
4 4
5@SuppressWarnings("all") 5@SuppressWarnings("all")
6public class VampireSolverConfiguration extends LogicSolverConfiguration { 6public class VampireSolverConfiguration extends LogicSolverConfiguration {
7 public int symmetry = 0;
8
9 public boolean writeToFile = false;
10} 7}
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 d248b361..379d0683 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 d747e8ab..76dd192f 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 4dc095c0..936ab9ca 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_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 9a948c6f..e0f442f5 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
new file mode 100644
index 00000000..493ff288
--- /dev/null
+++ 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 4ef4809b..13281767 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 0f4acafe..1a777880 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/.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtendbin
index 7d6865bb..e8658e7b 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.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_FilteredTypes.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtendbin
index 6db26bf7..aec1688a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.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/.Vampire2LogicMapper.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin
index 8c96afa7..e77b9866 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.Vampire2LogicMapper.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 2427721d..100a52b8 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/.VampireModelInterpretation_TypeInterpretation.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin
index d2c93ab4..231c1995 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation.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/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin
index 28c5d0f7..b67a307c 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtendbin
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.VampireModelInterpretation_TypeInterpretation_FilteredTypes.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/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.gitignore
index 3d29fb07..ec8107e8 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.gitignore
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/.gitignore
@@ -37,3 +37,4 @@
37/.VampireSolverException.java._trace 37/.VampireSolverException.java._trace
38/.VampireSolutionModel.java._trace 38/.VampireSolutionModel.java._trace
39/.VampireCallerWithTimeout.java._trace 39/.VampireCallerWithTimeout.java._trace
40/.Logic2VampireLanguageMapper_ScopeMapper.java._trace
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 a1d80e58..89c9637e 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
@@ -4,6 +4,7 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration;
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace; 4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace;
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_ConstantMapper; 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_ConstantMapper;
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_RelationMapper; 6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_RelationMapper;
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_ScopeMapper;
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support; 8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support;
8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapper; 9import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapper;
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment; 10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment;
@@ -84,6 +85,9 @@ public class Logic2VampireLanguageMapper {
84 private final Logic2VampireLanguageMapper_RelationMapper relationMapper = new Logic2VampireLanguageMapper_RelationMapper(this); 85 private final Logic2VampireLanguageMapper_RelationMapper relationMapper = new Logic2VampireLanguageMapper_RelationMapper(this);
85 86
86 @Accessors(AccessorType.PUBLIC_GETTER) 87 @Accessors(AccessorType.PUBLIC_GETTER)
88 private final Logic2VampireLanguageMapper_ScopeMapper scopeMapper = new Logic2VampireLanguageMapper_ScopeMapper(this);
89
90 @Accessors(AccessorType.PUBLIC_GETTER)
87 private final Logic2VampireLanguageMapper_TypeMapper typeMapper; 91 private final Logic2VampireLanguageMapper_TypeMapper typeMapper;
88 92
89 public Logic2VampireLanguageMapper(final Logic2VampireLanguageMapper_TypeMapper typeMapper) { 93 public Logic2VampireLanguageMapper(final Logic2VampireLanguageMapper_TypeMapper typeMapper) {
@@ -112,6 +116,7 @@ public class Logic2VampireLanguageMapper {
112 if (_not) { 116 if (_not) {
113 this.typeMapper.transformTypes(problem.getTypes(), problem.getElements(), this, trace); 117 this.typeMapper.transformTypes(problem.getTypes(), problem.getElements(), this, trace);
114 } 118 }
119 this.scopeMapper.transformScope(config, trace);
115 trace.constantDefinitions = this.collectConstantDefinitions(problem); 120 trace.constantDefinitions = this.collectConstantDefinitions(problem);
116 trace.relationDefinitions = this.collectRelationDefinitions(problem); 121 trace.relationDefinitions = this.collectRelationDefinitions(problem);
117 final Consumer<Relation> _function_3 = (Relation it) -> { 122 final Consumer<Relation> _function_3 = (Relation it) -> {
@@ -316,13 +321,13 @@ public class Logic2VampireLanguageMapper {
316 321
317 /** 322 /**
318 * def dispatch protected VLSTerm transformSymbolicReference(Relation relation, 323 * def dispatch protected VLSTerm transformSymbolicReference(Relation relation,
319 * List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace, 324 * List<Term> parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
320 * Map<Variable, VLSVariable> variables) { 325 * Map<Variable, VLSVariable> variables) {
321 * if (trace.relationDefinitions.containsKey(relation)) { 326 * if (trace.relationDefinitions.containsKey(relation)) {
322 * this.transformSymbolicReference(relation.lookup(trace.relationDefinitions), 327 * this.transformSymbolicReference(relation.lookup(trace.relationDefinitions),
323 * parameterSubstitutions, trace, variables) 328 * parameterSubstitutions, trace, variables)
324 * } 329 * }
325 * else { 330 * else {
326 * // if (relationMapper.transformToHostedField(relation, trace)) { 331 * // if (relationMapper.transformToHostedField(relation, trace)) {
327 * // val VLSRelation = relation.lookup(trace.relationDeclaration2Field) 332 * // val VLSRelation = relation.lookup(trace.relationDeclaration2Field)
328 * // // R(a,b) => 333 * // // R(a,b) =>
@@ -348,7 +353,7 @@ public class Logic2VampireLanguageMapper {
348 * // rightOperand = target 353 * // rightOperand = target
349 * // ] 354 * // ]
350 * // } 355 * // }
351 * } 356 * }
352 * } 357 * }
353 */ 358 */
354 protected VLSTerm _transformSymbolicReference(final Relation relation, final List<Term> parameterSubstitutions, final Logic2VampireLanguageMapperTrace trace, final Map<Variable, VLSVariable> variables) { 359 protected VLSTerm _transformSymbolicReference(final Relation relation, final List<Term> parameterSubstitutions, final Logic2VampireLanguageMapperTrace trace, final Map<Variable, VLSVariable> variables) {
@@ -436,6 +441,11 @@ public class Logic2VampireLanguageMapper {
436 } 441 }
437 442
438 @Pure 443 @Pure
444 public Logic2VampireLanguageMapper_ScopeMapper getScopeMapper() {
445 return this.scopeMapper;
446 }
447
448 @Pure
439 public Logic2VampireLanguageMapper_TypeMapper getTypeMapper() { 449 public Logic2VampireLanguageMapper_TypeMapper getTypeMapper() {
440 return this.typeMapper; 450 return this.typeMapper;
441 } 451 }
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
new file mode 100644
index 00000000..86d8b648
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.java
@@ -0,0 +1,96 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder;
2
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper;
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace;
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support;
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant;
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality;
8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent;
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula;
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier;
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable;
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory;
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration;
14import java.util.List;
15import org.eclipse.emf.common.util.EList;
16import org.eclipse.xtext.xbase.lib.CollectionLiterals;
17import org.eclipse.xtext.xbase.lib.Extension;
18import org.eclipse.xtext.xbase.lib.Functions.Function1;
19import org.eclipse.xtext.xbase.lib.ListExtensions;
20import org.eclipse.xtext.xbase.lib.ObjectExtensions;
21import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
22
23@SuppressWarnings("all")
24public class Logic2VampireLanguageMapper_ScopeMapper {
25 @Extension
26 private final VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE;
27
28 private final Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support();
29
30 private final Logic2VampireLanguageMapper base;
31
32 public Logic2VampireLanguageMapper_ScopeMapper(final Logic2VampireLanguageMapper base) {
33 this.base = base;
34 }
35
36 public void _transformScope(final LogicSolverConfiguration config, final Logic2VampireLanguageMapperTrace trace) {
37 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
38 final Procedure1<VLSVariable> _function = (VLSVariable it) -> {
39 it.setName("A");
40 };
41 final VLSVariable variable = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function);
42 final List<VLSConstant> instances = CollectionLiterals.<VLSConstant>newArrayList();
43 for (int i = 0; (i < config.typeScopes.minNewElements); i++) {
44 {
45 final int num = (i + 1);
46 VLSConstant _createVLSConstant = this.factory.createVLSConstant();
47 final Procedure1<VLSConstant> _function_1 = (VLSConstant it) -> {
48 it.setName(("o" + Integer.valueOf(num)));
49 };
50 final VLSConstant cst = ObjectExtensions.<VLSConstant>operator_doubleArrow(_createVLSConstant, _function_1);
51 instances.add(cst);
52 }
53 }
54 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
55 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> {
56 it.setName("typeScope");
57 it.setFofRole("axiom");
58 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
59 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> {
60 EList<VLSVariable> _variables = it_1.getVariables();
61 VLSVariable _duplicate = this.support.duplicate(variable);
62 _variables.add(_duplicate);
63 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
64 final Procedure1<VLSEquivalent> _function_3 = (VLSEquivalent it_2) -> {
65 it_2.setLeft(this.support.topLevelTypeFunc());
66 final Function1<VLSConstant, VLSEquality> _function_4 = (VLSConstant i) -> {
67 VLSEquality _createVLSEquality = this.factory.createVLSEquality();
68 final Procedure1<VLSEquality> _function_5 = (VLSEquality it_3) -> {
69 VLSVariable _createVLSVariable_1 = this.factory.createVLSVariable();
70 final Procedure1<VLSVariable> _function_6 = (VLSVariable it_4) -> {
71 it_4.setName(variable.getName());
72 };
73 VLSVariable _doubleArrow = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_1, _function_6);
74 it_3.setLeft(_doubleArrow);
75 it_3.setRight(i);
76 };
77 return ObjectExtensions.<VLSEquality>operator_doubleArrow(_createVLSEquality, _function_5);
78 };
79 it_2.setRight(this.support.unfoldOr(ListExtensions.<VLSConstant, VLSEquality>map(instances, _function_4)));
80 };
81 VLSEquivalent _doubleArrow = ObjectExtensions.<VLSEquivalent>operator_doubleArrow(_createVLSEquivalent, _function_3);
82 it_1.setOperand(_doubleArrow);
83 };
84 VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_2);
85 it.setFofFormula(_doubleArrow);
86 };
87 final VLSFofFormula cstDec = ObjectExtensions.<VLSFofFormula>operator_doubleArrow(_createVLSFofFormula, _function_1);
88 EList<VLSFofFormula> _formulas = trace.specification.getFormulas();
89 _formulas.add(cstDec);
90 }
91
92 public void transformScope(final LogicSolverConfiguration config, final Logic2VampireLanguageMapperTrace trace) {
93 _transformScope(config, trace);
94 return;
95 }
96}
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 e1be7df5..b111732f 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
@@ -50,6 +50,29 @@ public class Logic2VampireLanguageMapper_Support {
50 return IterableExtensions.join(((Iterable<?>)Conversions.doWrapArray(ids.split("\\s+"))), "_"); 50 return IterableExtensions.join(((Iterable<?>)Conversions.doWrapArray(ids.split("\\s+"))), "_");
51 } 51 }
52 52
53 protected VLSVariable duplicate(final VLSVariable vrbl) {
54 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
55 final Procedure1<VLSVariable> _function = (VLSVariable it) -> {
56 it.setName(vrbl.getName());
57 };
58 return ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function);
59 }
60
61 protected VLSFunction topLevelTypeFunc() {
62 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
63 final Procedure1<VLSFunction> _function = (VLSFunction it) -> {
64 it.setConstant("object");
65 EList<VLSTerm> _terms = it.getTerms();
66 VLSVariable _createVLSVariable = this.factory.createVLSVariable();
67 final Procedure1<VLSVariable> _function_1 = (VLSVariable it_1) -> {
68 it_1.setName("A");
69 };
70 VLSVariable _doubleArrow = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function_1);
71 _terms.add(_doubleArrow);
72 };
73 return ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function);
74 }
75
53 protected VLSTerm unfoldAnd(final List<? extends VLSTerm> operands) { 76 protected VLSTerm unfoldAnd(final List<? extends VLSTerm> operands) {
54 int _size = operands.size(); 77 int _size = operands.size();
55 boolean _equals = (_size == 1); 78 boolean _equals = (_size == 1);
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.java
index d674ac71..f7c6cb70 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes.java
@@ -1,7 +1,6 @@
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.builder.Logic2VampireLanguageMapper_TypeMapperTrace; 3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapperTrace;
4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality;
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; 4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction;
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; 5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm;
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement; 6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
@@ -13,7 +12,7 @@ import java.util.Map;
13public class Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapperTrace { 12public class Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes implements Logic2VampireLanguageMapper_TypeMapperTrace {
14 public final Map<Type, VLSFunction> type2Predicate = new HashMap<Type, VLSFunction>(); 13 public final Map<Type, VLSFunction> type2Predicate = new HashMap<Type, VLSFunction>();
15 14
16 public final Map<DefinedElement, VLSEquality> definedElement2Declaration = new HashMap<DefinedElement, VLSEquality>(); 15 public final Map<DefinedElement, VLSFunction> element2Predicate = new HashMap<DefinedElement, VLSFunction>();
17 16
18 public final Map<Type, VLSTerm> type2PossibleNot = new HashMap<Type, VLSTerm>(); 17 public final Map<Type, VLSTerm> type2PossibleNot = new HashMap<Type, VLSTerm>();
19 18
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.java
index 0f5e4e7a..71e98871 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.java
@@ -7,7 +7,6 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguage
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes; 7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes;
8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireModelInterpretation_TypeInterpretation; 8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireModelInterpretation_TypeInterpretation;
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote; 9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote;
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality;
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent; 10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent;
12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; 11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula;
13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; 12import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction;
@@ -27,10 +26,10 @@ import java.util.ArrayList;
27import java.util.Collection; 26import java.util.Collection;
28import java.util.List; 27import java.util.List;
29import org.eclipse.emf.common.util.EList; 28import org.eclipse.emf.common.util.EList;
29import org.eclipse.xtext.xbase.lib.CollectionLiterals;
30import org.eclipse.xtext.xbase.lib.Extension; 30import org.eclipse.xtext.xbase.lib.Extension;
31import org.eclipse.xtext.xbase.lib.Functions.Function1; 31import org.eclipse.xtext.xbase.lib.Functions.Function1;
32import org.eclipse.xtext.xbase.lib.IterableExtensions; 32import org.eclipse.xtext.xbase.lib.IterableExtensions;
33import org.eclipse.xtext.xbase.lib.ListExtensions;
34import org.eclipse.xtext.xbase.lib.ObjectExtensions; 33import org.eclipse.xtext.xbase.lib.ObjectExtensions;
35import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; 34import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
36 35
@@ -58,14 +57,10 @@ public class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Log
58 { 57 {
59 VLSFunction _createVLSFunction = this.factory.createVLSFunction(); 58 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
60 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> { 59 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> {
61 it.setConstant(this.support.toIDMultiple("type", type.getName())); 60 it.setConstant(this.support.toIDMultiple("t", type.getName()));
62 EList<VLSTerm> _terms = it.getTerms(); 61 EList<VLSTerm> _terms = it.getTerms();
63 VLSVariable _createVLSVariable_1 = this.factory.createVLSVariable(); 62 VLSVariable _duplicate = this.support.duplicate(variable);
64 final Procedure1<VLSVariable> _function_2 = (VLSVariable it_1) -> { 63 _terms.add(_duplicate);
65 it_1.setName(variable.getName());
66 };
67 VLSVariable _doubleArrow = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_1, _function_2);
68 _terms.add(_doubleArrow);
69 }; 64 };
70 final VLSFunction typePred = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_1); 65 final VLSFunction typePred = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_1);
71 typeTrace.type2Predicate.put(type, typePred); 66 typeTrace.type2Predicate.put(type, typePred);
@@ -74,6 +69,22 @@ public class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Log
74 Iterable<TypeDefinition> _filter = Iterables.<TypeDefinition>filter(types, TypeDefinition.class); 69 Iterable<TypeDefinition> _filter = Iterables.<TypeDefinition>filter(types, TypeDefinition.class);
75 for (final TypeDefinition type_1 : _filter) { 70 for (final TypeDefinition type_1 : _filter) {
76 { 71 {
72 final List<VLSFunction> orElems = CollectionLiterals.<VLSFunction>newArrayList();
73 EList<DefinedElement> _elements = type_1.getElements();
74 for (final DefinedElement e : _elements) {
75 {
76 VLSFunction _createVLSFunction = this.factory.createVLSFunction();
77 final Procedure1<VLSFunction> _function_1 = (VLSFunction it) -> {
78 it.setConstant(this.support.toIDMultiple("e", e.getName(), type_1.getName()));
79 EList<VLSTerm> _terms = it.getTerms();
80 VLSVariable _duplicate = this.support.duplicate(variable);
81 _terms.add(_duplicate);
82 };
83 final VLSFunction enumElemPred = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_1);
84 typeTrace.element2Predicate.put(e, enumElemPred);
85 orElems.add(enumElemPred);
86 }
87 }
77 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula(); 88 VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula();
78 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> { 89 final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> {
79 it.setName(this.support.toIDMultiple("typeDef", type_1.getName())); 90 it.setName(this.support.toIDMultiple("typeDef", type_1.getName()));
@@ -81,53 +92,15 @@ public class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Log
81 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); 92 VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier();
82 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> { 93 final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> {
83 EList<VLSVariable> _variables = it_1.getVariables(); 94 EList<VLSVariable> _variables = it_1.getVariables();
84 VLSVariable _createVLSVariable_1 = this.factory.createVLSVariable(); 95 VLSVariable _duplicate = this.support.duplicate(variable);
85 final Procedure1<VLSVariable> _function_3 = (VLSVariable it_2) -> { 96 _variables.add(_duplicate);
86 it_2.setName(variable.getName());
87 };
88 VLSVariable _doubleArrow = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_1, _function_3);
89 _variables.add(_doubleArrow);
90 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 97 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
91 final Procedure1<VLSEquivalent> _function_4 = (VLSEquivalent it_2) -> { 98 final Procedure1<VLSEquivalent> _function_3 = (VLSEquivalent it_2) -> {
92 VLSFunction _createVLSFunction = this.factory.createVLSFunction(); 99 it_2.setLeft(CollectionsUtil.<TypeDefinition, VLSFunction>lookup(type_1, typeTrace.type2Predicate));
93 final Procedure1<VLSFunction> _function_5 = (VLSFunction it_3) -> { 100 it_2.setRight(this.support.unfoldOr(orElems));
94 it_3.setConstant(CollectionsUtil.<TypeDefinition, VLSFunction>lookup(type_1, typeTrace.type2Predicate).getConstant());
95 EList<VLSTerm> _terms = it_3.getTerms();
96 VLSVariable _createVLSVariable_2 = this.factory.createVLSVariable();
97 final Procedure1<VLSVariable> _function_6 = (VLSVariable it_4) -> {
98 it_4.setName("A");
99 };
100 VLSVariable _doubleArrow_1 = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_2, _function_6);
101 _terms.add(_doubleArrow_1);
102 };
103 VLSFunction _doubleArrow_1 = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_5);
104 it_2.setLeft(_doubleArrow_1);
105 CollectionsUtil.<TypeDefinition, VLSFunction>lookup(type_1, typeTrace.type2Predicate);
106 final Function1<DefinedElement, VLSEquality> _function_6 = (DefinedElement e) -> {
107 VLSEquality _createVLSEquality = this.factory.createVLSEquality();
108 final Procedure1<VLSEquality> _function_7 = (VLSEquality it_3) -> {
109 VLSVariable _createVLSVariable_2 = this.factory.createVLSVariable();
110 final Procedure1<VLSVariable> _function_8 = (VLSVariable it_4) -> {
111 it_4.setName(variable.getName());
112 };
113 VLSVariable _doubleArrow_2 = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_2, _function_8);
114 it_3.setLeft(_doubleArrow_2);
115 VLSDoubleQuote _createVLSDoubleQuote = this.factory.createVLSDoubleQuote();
116 final Procedure1<VLSDoubleQuote> _function_9 = (VLSDoubleQuote it_4) -> {
117 String _name = e.getName();
118 String _plus = ("\"a" + _name);
119 String _plus_1 = (_plus + "\"");
120 it_4.setValue(_plus_1);
121 };
122 VLSDoubleQuote _doubleArrow_3 = ObjectExtensions.<VLSDoubleQuote>operator_doubleArrow(_createVLSDoubleQuote, _function_9);
123 it_3.setRight(_doubleArrow_3);
124 };
125 return ObjectExtensions.<VLSEquality>operator_doubleArrow(_createVLSEquality, _function_7);
126 };
127 it_2.setRight(this.support.unfoldOr(ListExtensions.<DefinedElement, VLSEquality>map(type_1.getElements(), _function_6)));
128 }; 101 };
129 VLSEquivalent _doubleArrow_1 = ObjectExtensions.<VLSEquivalent>operator_doubleArrow(_createVLSEquivalent, _function_4); 102 VLSEquivalent _doubleArrow = ObjectExtensions.<VLSEquivalent>operator_doubleArrow(_createVLSEquivalent, _function_3);
130 it_1.setOperand(_doubleArrow_1); 103 it_1.setOperand(_doubleArrow);
131 }; 104 };
132 VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_2); 105 VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_2);
133 it.setFofFormula(_doubleArrow); 106 it.setFofFormula(_doubleArrow);
@@ -201,19 +174,7 @@ public class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Log
201 _variables.add(_doubleArrow); 174 _variables.add(_doubleArrow);
202 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent(); 175 VLSEquivalent _createVLSEquivalent = this.factory.createVLSEquivalent();
203 final Procedure1<VLSEquivalent> _function_5 = (VLSEquivalent it_2) -> { 176 final Procedure1<VLSEquivalent> _function_5 = (VLSEquivalent it_2) -> {
204 VLSFunction _createVLSFunction = this.factory.createVLSFunction(); 177 it_2.setLeft(this.support.topLevelTypeFunc());
205 final Procedure1<VLSFunction> _function_6 = (VLSFunction it_3) -> {
206 it_3.setConstant("object");
207 EList<VLSTerm> _terms = it_3.getTerms();
208 VLSVariable _createVLSVariable_2 = this.factory.createVLSVariable();
209 final Procedure1<VLSVariable> _function_7 = (VLSVariable it_4) -> {
210 it_4.setName("A");
211 };
212 VLSVariable _doubleArrow_1 = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable_2, _function_7);
213 _terms.add(_doubleArrow_1);
214 };
215 VLSFunction _doubleArrow_1 = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_6);
216 it_2.setLeft(_doubleArrow_1);
217 Collection<VLSTerm> _values = typeTrace.type2And.values(); 178 Collection<VLSTerm> _values = typeTrace.type2And.values();
218 ArrayList<VLSTerm> _arrayList = new ArrayList<VLSTerm>(_values); 179 ArrayList<VLSTerm> _arrayList = new ArrayList<VLSTerm>(_values);
219 it_2.setRight(this.support.unfoldOr(_arrayList)); 180 it_2.setRight(this.support.unfoldOr(_arrayList));
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.java
index f4380894..f4b5a1d2 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.java
@@ -1,59 +1,5 @@
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.builder.Logic2VampireLanguageMapperTrace;
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireSolutionModel;
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
6import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult;
7import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory;
8import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.Statistics;
9import org.eclipse.xtext.xbase.lib.Extension;
10import org.eclipse.xtext.xbase.lib.Functions.Function2;
11import org.eclipse.xtext.xbase.lib.IterableExtensions;
12
13@SuppressWarnings("all") 3@SuppressWarnings("all")
14public class Vampire2LogicMapper { 4public class Vampire2LogicMapper {
15 @Extension
16 private final LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE;
17
18 public LogicResult transformOutput(final LogicProblem problem, final int requiredNumberOfSolution, final VampireSolutionModel vampireSolution, final Logic2VampireLanguageMapperTrace trace, final long transformationTime) {
19 throw new Error("Unresolved compilation problems:"
20 + "\nThe method or field aswers is undefined for the type VampireSolutionModel"
21 + "\nThe method or field key is undefined for the type Object"
22 + "\nThe method or field monitoredAlloySolution is undefined"
23 + "\nThe method or field monitoredAlloySolution is undefined"
24 + "\nThe method or field monitoredAlloySolution is undefined"
25 + "\nThe method or field monitoredAlloySolution is undefined"
26 + "\nThe method transformStatistics(MonitoredAlloySolution, long) from the type Vampire2LogicMapper refers to the missing type MonitoredAlloySolution"
27 + "\nThe method transformStatistics(MonitoredAlloySolution, long) from the type Vampire2LogicMapper refers to the missing type MonitoredAlloySolution"
28 + "\nThe method transformStatistics(MonitoredAlloySolution, long) from the type Vampire2LogicMapper refers to the missing type MonitoredAlloySolution"
29 + "\nmap cannot be resolved"
30 + "\ntoList cannot be resolved"
31 + "\nfinishedBeforeTimeout cannot be resolved"
32 + "\n! cannot be resolved"
33 + "\nlast cannot be resolved"
34 + "\nsatisfiable cannot be resolved"
35 + "\n|| cannot be resolved");
36 }
37
38 public Statistics transformStatistics(final /* MonitoredAlloySolution */Object solution, final long transformationTime) {
39 throw new Error("Unresolved compilation problems:"
40 + "\nCannot cast from Object to int"
41 + "\nCannot cast from Object to int"
42 + "\naswers cannot be resolved"
43 + "\nsize cannot be resolved"
44 + "\naswers cannot be resolved"
45 + "\nget cannot be resolved"
46 + "\nvalue cannot be resolved"
47 + "\nintValue cannot be resolved"
48 + "\nkodkodTime cannot be resolved"
49 + "\nkodkodTime cannot be resolved"
50 + "\nwarnings cannot be resolved");
51 }
52
53 public Long sum(final Iterable<Long> ints) {
54 final Function2<Long, Long, Long> _function = (Long p1, Long p2) -> {
55 return Long.valueOf(((p1).longValue() + (p2).longValue()));
56 };
57 return IterableExtensions.<Long>reduce(ints, _function);
58 }
59} 5}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireSolutionModel.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireSolutionModel.java
index c665b9a6..3c43c4ea 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireSolutionModel.java
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireSolutionModel.java
@@ -10,8 +10,7 @@ public class VampireSolutionModel {
10 @Override 10 @Override
11 @Pure 11 @Pure
12 public int hashCode() { 12 public int hashCode() {
13 int result = 1; 13 return 1;
14 return result;
15 } 14 }
16 15
17 @Override 16 @Override