aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
committerLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
commit60f01f46ba232ed6416054f0a6115cb2a9b70b4e (patch)
tree5edf8aeb07abc51f3fec63bbd15c926e1de09552 /Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend
parentInitial commit, migrating from SVN (diff)
downloadVIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.gz
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.zst
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.zip
Migrating Additional projects
Diffstat (limited to 'Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend')
-rw-r--r--Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend49
1 files changed, 49 insertions, 0 deletions
diff --git a/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend b/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend
new file mode 100644
index 00000000..d371b89e
--- /dev/null
+++ b/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/SMTSolver.xtend
@@ -0,0 +1,49 @@
1package hu.bme.mit.inf.dslreasoner.smt.reasoner
2
3import hu.bme.mit.inf.dslreasoner.SmtLanguageStandaloneSetupGenerated
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
6import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
7import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
8import hu.bme.mit.inf.dslreasoner.smt.reasoner.builder.SmtSolverHandler
9import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTDocument
10import hu.bme.mit.inf.dslreasoner.smtLanguage.SmtLanguagePackage
11import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
12import org.eclipse.emf.ecore.util.EcoreUtil
13
14class SMTSolver extends LogicReasoner{
15
16 public new() {
17 SmtLanguagePackage.eINSTANCE.eClass
18 val x = new SmtLanguageStandaloneSetupGenerated
19 x.createInjectorAndDoEMFRegistration
20 }
21
22 val forwardMapper = new Logic2SmtMapper(new Logic2Smt_TypeMapper_FilteredTypes);
23 val backMapper = new Smt2LogicMapper;
24 val handler = new SmtSolverHandler
25
26 override solve(LogicProblem problem, LogicSolverConfiguration configuration, ReasonerWorkspace workspace) {
27 if(configuration instanceof SmtSolverConfiguration) {
28 val transformationStart = System.currentTimeMillis
29 val transformationResult = forwardMapper.transformProblem(problem,configuration.typeScopes,configuration.strategy)
30 val SMTDocument inputModel= transformationResult.output
31 val trace = transformationResult.trace
32 val input = workspace.writeModel(inputModel,"problem.smt2")
33 val transformationTime = System.currentTimeMillis-transformationStart
34 val solverTimeStart = System.currentTimeMillis
35 handler.callSolver(input,configuration)
36 val solverTime = System.currentTimeMillis - solverTimeStart
37 val outputModel = workspace.reloadModel(typeof(SMTDocument), "problem.smt2")
38 EcoreUtil.resolveAll(outputModel)
39 workspace.deactivateModel("problem.smt2")
40 return backMapper.transformOutput(problem,outputModel.output,trace, transformationTime, solverTime)
41 } else throw new IllegalArgumentException('''The configuration have to be an «SmtSolverConfiguration.simpleName»!''')
42 }
43
44 override getInterpretation(ModelResult modelResult) {
45 val representation = modelResult.representation as SMTDocument
46 val trace = modelResult.trace as Logic2SmtMapperTrace
47 return new SmtModelInterpretation(trace.problem,representation,trace.forwardMapper,trace)
48 }
49} \ No newline at end of file