aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-08-29 16:54:53 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-06-07 19:41:41 -0400
commit5cfe202ab86f117e35b286cfadf7f8301bce3a43 (patch)
treed3d6bc6b07a841dac02af22523c37327c309a119 /Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill
parentVAMPIRE: adapt grammar to Vampire solution + get model from text (diff)
downloadVIATRA-Generator-5cfe202ab86f117e35b286cfadf7f8301bce3a43.tar.gz
VIATRA-Generator-5cfe202ab86f117e35b286cfadf7f8301bce3a43.tar.zst
VIATRA-Generator-5cfe202ab86f117e35b286cfadf7f8301bce3a43.zip
VAMPIRE: setup structure of model interpretation
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend49
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend58
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend9
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend49
4 files changed, 98 insertions, 67 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend
index 1fd40801..0ec4d0da 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
@@ -3,11 +3,12 @@ package ca.mcgill.ecse.dslreasoner.vampire.reasoner
3import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup 3import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup
4import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetupGenerated 4import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetupGenerated
5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper 5import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.MonitoredVampireSolution
6import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper 8import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper
7import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler 9import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler
10import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireModelInterpretation
8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage 11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 12import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
12import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner 13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException 14import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException
@@ -15,7 +16,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
15import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 16import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
16import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult 17import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
17import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 18import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
18import org.eclipse.emf.ecore.resource.Resource 19import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
19 20
20class VampireSolver extends LogicReasoner { 21class VampireSolver extends LogicReasoner {
21 22
@@ -71,21 +72,21 @@ class VampireSolver extends LogicReasoner {
71 // Result as String 72 // Result as String
72 val transformationTime = System.currentTimeMillis - transformationStart 73 val transformationTime = System.currentTimeMillis - transformationStart
73 // Finish: Logic -> Vampire mapping 74 // Finish: Logic -> Vampire mapping
75
74 // Start: Solving .tptp problem 76 // Start: Solving .tptp problem
75 val solverStart = System.currentTimeMillis 77 val solverStart = System.currentTimeMillis
76 // Calling Solver (Currently Manually) 78 val MonitoredVampireSolution vampSol = handler.callSolver(vampireProblem, workspace, vampireConfig)
77 val result2 = handler.callSolver(vampireProblem, workspace, vampireConfig)
78 // val result2 = null
79 val solvingTime = System.currentTimeMillis - solverStart 79 val solvingTime = System.currentTimeMillis - solverStart
80 // TODO 80 // Finish: Solving .tptp problem
81// val backTransformationStart = System.currentTimeMillis 81
82// // Backwards Mapper 82 // Start: Vampire -> Logic mapping
83// val logicResult = backwardMapper.transformOutput(problem, config.solutionScope.numberOfRequiredSolution, 83 val backTransformationStart = System.currentTimeMillis
84// result2, forwardTrace, transformationTime) 84 // Backwards Mapper
85// 85 val logicResult = backwardMapper.transformOutput(problem,vampireConfig.solutionScope.numberOfRequiredSolution,vampSol,forwardTrace,transformationTime)
86// val backTransformationTime = System.currentTimeMillis - backTransformationStart 86
87 // Finish: Solving Alloy problem 87 val backTransformationTime = System.currentTimeMillis - backTransformationStart
88 return null 88 // Finish: Vampire -> Logic Mapping
89 return logicResult //currently only a ModelResult
89 } 90 }
90 91
91 def asConfig(LogicSolverConfiguration configuration) { 92 def asConfig(LogicSolverConfiguration configuration) {
@@ -100,17 +101,17 @@ class VampireSolver extends LogicReasoner {
100// * not for now 101// * not for now
101// * 102// *
102 override getInterpretations(ModelResult modelResult) { 103 override getInterpretations(ModelResult modelResult) {
103 // val answers = (modelResult.representation as MonitoredAlloySolution).aswers.map[key] 104// val answers = (modelResult.representation as MonitoredAlloySolution).aswers.map[key]
104// val sols = modelResult.representation// as List<A4Solution> 105 val sols = modelResult.representation// as List<A4Solution>
105// //val res = answers.map 106 //val res = answers.map
106// sols.map[ 107 sols.map[
107// new VampireModelInterpretation( 108 new VampireModelInterpretation(
108// forwardMapper.typeMapper.typeInterpreter, 109// forwardMapper.typeMapper.typeInterpreter,
109// it as A4Solution, 110 it as VampireModel,
110// forwardMapper, 111// forwardMapper,
111// modelResult.trace as Logic2AlloyLanguageMapperTrace 112 modelResult.trace as Logic2VampireLanguageMapperTrace
112// ) 113 )
113// ] 114 ]
114 } 115 }
115// */ 116// */
116} 117}
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 9c9e65b4..a0084204 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,39 +4,24 @@ 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} 7 val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE
8// val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE 8
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// 9//
39// def transformStatistics(MonitoredAlloySolution solution, long transformationTime) { 10 public def transformOutput(LogicProblem problem, int requiredNumberOfSolution,
11 MonitoredVampireSolution monitoredVampireSolution, Logic2VampireLanguageMapperTrace trace,
12 long transformationTime) {
13
14 // ModelRsult implements LogicResult
15 return createModelResult => [
16 it.problem = problem
17 it.representation += monitoredVampireSolution.generatedModel
18 it.trace = trace
19 it.statistics = transformStatistics(monitoredVampireSolution, transformationTime)
20 ]
21 }
22
23 def transformStatistics(MonitoredVampireSolution solution, long transformationTime) {
24 return createStatistics
40// createStatistics => [ 25// createStatistics => [
41// it.transformationTime = transformationTime as int 26// it.transformationTime = transformationTime as int
42// for(solutionIndex : 0..<solution.aswers.size) { 27// for(solutionIndex : 0..<solution.aswers.size) {
@@ -59,9 +44,6 @@ class Vampire2LogicMapper {
59// it.value = '''[«FOR warning : solution.warnings SEPARATOR ","»«warning»«ENDFOR»]''' 44// it.value = '''[«FOR warning : solution.warnings SEPARATOR ","»«warning»«ENDFOR»]'''
60// ] 45// ]
61// ] 46// ]
62// } 47 }
63// 48
64// def sum(Iterable<Long> ints) { 49}
65// ints.reduce[p1, p2|p1+p2]
66// }
67//}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
index f0426245..ce672211 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
@@ -25,11 +25,12 @@ class VampireSolverException extends Exception {
25 } 25 }
26} 26}
27 27
28@Data class VampireSolutionModel { 28@Data class MonitoredVampireSolution {
29// List<String> warnings 29// List<String> warnings
30// List<String> debugs 30// List<String> debugs
31// long kodkodTime 31// long kodkodTime
32// val List<Pair<A4Solution, Long>> aswers 32// val List<Pair<A4Solution, Long>> aswers
33 val VampireModel generatedModel
33// val boolean finishedBeforeTimeout 34// val boolean finishedBeforeTimeout
34} 35}
35 36
@@ -76,12 +77,10 @@ class VampireHandler {
76 // 5. determine and return whether or not finite model was found 77 // 5. determine and return whether or not finite model was found
77 // 6. save solution as a .tptp model 78 // 6. save solution as a .tptp model
78 val root = workspace.readModel(VampireModel, SOLNNAME).eResource.contents 79 val root = workspace.readModel(VampireModel, SOLNNAME).eResource.contents
79
80
81 80
82 println((root.get(0) as VampireModelImpl ).comments) 81// println((root.get(0) as VampireModel ).comments)
83 82
84 return root 83 return new MonitoredVampireSolution(root.get(0) as VampireModel)
85 84
86 /* 85 /*
87 * //Prepare 86 * //Prepare
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend
new file mode 100644
index 00000000..c2cffa6b
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend
@@ -0,0 +1,49 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2
3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
10
11class VampireModelInterpretation implements LogicModelInterpretation {
12 protected val extension LogiclanguageFactory factory = LogiclanguageFactory.eINSTANCE
13
14 protected val Logic2VampireLanguageMapperTrace forwardTrace;
15
16
17 public new(VampireModel model, Logic2VampireLanguageMapperTrace trace) {
18 this.forwardTrace = trace
19 }
20
21 override getElements(Type type) {
22 throw new UnsupportedOperationException("TODO: auto-generated method stub")
23 }
24
25 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) {
26 throw new UnsupportedOperationException("TODO: auto-generated method stub")
27 }
28
29 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) {
30 throw new UnsupportedOperationException("TODO: auto-generated method stub")
31 }
32
33 override getInterpretation(ConstantDeclaration constant) {
34 throw new UnsupportedOperationException("TODO: auto-generated method stub")
35 }
36
37 override getAllIntegersInStructure() {
38 throw new UnsupportedOperationException("TODO: auto-generated method stub")
39 }
40
41 override getAllRealsInStructure() {
42 throw new UnsupportedOperationException("TODO: auto-generated method stub")
43 }
44
45 override getAllStringsInStructure() {
46 throw new UnsupportedOperationException("TODO: auto-generated method stub")
47 }
48
49} \ No newline at end of file