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.xtend108
1 files changed, 0 insertions, 108 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
deleted file mode 100644
index 7e78c27e..00000000
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
+++ /dev/null
@@ -1,108 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
11import java.util.Collection
12import java.util.List
13import java.util.Set
14import org.eclipse.viatra.query.runtime.api.IPatternMatch
15import org.eclipse.viatra.query.runtime.api.IQuerySpecification
16import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
17import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
18import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule
19import org.eclipse.xtend.lib.annotations.Data
20import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
21import java.util.Map
22
23class ModelGenerationStatistics {
24 public var long transformationExecutionTime = 0
25 public var long metricCalculationTime = 0
26
27 synchronized def addExecutionTime(long amount) {
28 transformationExecutionTime+=amount
29 }
30
31 synchronized def addMetricCalculationTime(long amount) {
32 metricCalculationTime+=amount
33 }
34
35 public var long PreliminaryTypeAnalisisTime = 0
36}
37@Data class ModelGenerationMethod {
38 ModelGenerationStatistics statistics
39
40 Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules
41 Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules
42
43 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities
44 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF
45
46 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF
47
48 Map<PConstraint, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> mustUnitPropagationPreconditions
49 Map<PConstraint, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> currentUnitPropagationPreconditions
50
51 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> allPatterns
52}
53enum TypeInferenceMethod {
54 Generic, PreliminaryAnalysis
55}
56
57class ModelGenerationMethodProvider {
58 private val PatternProvider patternProvider = new PatternProvider
59 private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider
60 private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider
61
62 public def ModelGenerationMethod createModelGenerationMethod(
63 LogicProblem logicProblem,
64 PartialInterpretation emptySolution,
65 ReasonerWorkspace workspace,
66 boolean nameNewElements,
67 TypeInferenceMethod typeInferenceMethod,
68 ScopePropagator scopePropagator,
69 DocumentationLevel debugLevel,
70 boolean objectCreationCosts
71 ) {
72 val statistics = new ModelGenerationStatistics
73 val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL)
74
75 val Set<PQuery> existingQueries = logicProblem
76 .relations
77 .map[annotations]
78 .flatten
79 .filter(TransfomedViatraQuery)
80 .map[it.patternPQuery as PQuery]
81 .toSet
82
83 val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod,writeFiles)
84 val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
85 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(logicProblem, emptySolution, queries,scopePropagator,nameNewElements,statistics)
86 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics)
87
88 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(logicProblem,queries,objectCreationCosts)
89 val unfinishedWF = queries.getUnfinishedWFQueries.values
90
91 val invalidWF = queries.getInvalidWFQueries.values
92
93 val mustUnitPropagationPreconditions = queries.getMustUnitPropagationPreconditionPatterns
94 val currentUnitPropagationPreconditions = queries.getCurrentUnitPropagationPreconditionPatterns
95
96 return new ModelGenerationMethod(
97 statistics,
98 objectRefinementRules.values,
99 relationRefinementRules.values,
100 unfinishedMultiplicities,
101 unfinishedWF,
102 invalidWF,
103 mustUnitPropagationPreconditions,
104 currentUnitPropagationPreconditions,
105 queries.allQueries
106 )
107 }
108}