diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend | 101 |
1 files changed, 51 insertions, 50 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 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 | |||
7 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper | 7 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper |
8 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler | 8 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler |
9 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage | 9 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage |
10 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner | 11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner |
11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException | 12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException |
12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration | 13 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration |
@@ -14,80 +15,81 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem | |||
14 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | 15 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult |
15 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | 16 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace |
16 | 17 | ||
17 | class VampireSolver extends LogicReasoner{ | 18 | class 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 | ||