aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend24
1 files changed, 23 insertions, 1 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
index b6918294..0040dbcd 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
@@ -4,6 +4,11 @@ import com.google.common.collect.ImmutableMap
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 4import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery 6import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedronScopePropagator
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagator
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy
10import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.Z3PolyhedronSolver
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.GeneratedPatterns
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.ModalPatternQueries 12import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.ModalPatternQueries
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider 13import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider 14import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider
@@ -63,7 +68,7 @@ class ModelGenerationMethodProvider {
63 ReasonerWorkspace workspace, 68 ReasonerWorkspace workspace,
64 boolean nameNewElements, 69 boolean nameNewElements,
65 TypeInferenceMethod typeInferenceMethod, 70 TypeInferenceMethod typeInferenceMethod,
66 ScopePropagator scopePropagator, 71 ScopePropagatorStrategy scopePropagatorStrategy,
67 DocumentationLevel debugLevel 72 DocumentationLevel debugLevel
68 ) { 73 ) {
69 val statistics = new ModelGenerationStatistics 74 val statistics = new ModelGenerationStatistics
@@ -74,6 +79,8 @@ class ModelGenerationMethodProvider {
74 79
75 val queries = patternProvider.generateQueries(logicProblem, emptySolution, statistics, existingQueries, 80 val queries = patternProvider.generateQueries(logicProblem, emptySolution, statistics, existingQueries,
76 workspace, typeInferenceMethod, writeFiles) 81 workspace, typeInferenceMethod, writeFiles)
82 val scopePropagator = createScopePropagator(scopePropagatorStrategy, emptySolution, queries)
83 scopePropagator.propagateAllScopeConstraints
77 val // LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>> 84 val // LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
78 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries, scopePropagator, 85 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries, scopePropagator,
79 nameNewElements, statistics) 86 nameNewElements, statistics)
@@ -104,4 +111,19 @@ class ModelGenerationMethodProvider {
104 queries.allQueries 111 queries.allQueries
105 ) 112 )
106 } 113 }
114
115 private def createScopePropagator(ScopePropagatorStrategy scopePropagatorStrategy,
116 PartialInterpretation emptySolution, GeneratedPatterns queries) {
117 switch (scopePropagatorStrategy) {
118 case BasicTypeHierarchy:
119 new ScopePropagator(emptySolution)
120 case PolyhedralTypeHierarchy: {
121 val types = queries.refineObjectQueries.keySet.map[newType].toSet
122 val solver = new Z3PolyhedronSolver
123 new PolyhedronScopePropagator(emptySolution, types, solver)
124 }
125 default:
126 throw new IllegalArgumentException("Unknown scope propagator strategy: " + scopePropagatorStrategy)
127 }
128 }
107} 129}