aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-04-08 00:58:00 +0200
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-04-08 00:58:00 +0200
commitc1f185fd8fc2c3dfc123d9271726c588963c7c01 (patch)
tree88a5bb94017e7d3f0fbce0a51a78c2549b0977bd /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
parentInfrastructure for objective functions (diff)
downloadVIATRA-Generator-c1f185fd8fc2c3dfc123d9271726c588963c7c01.tar.gz
VIATRA-Generator-c1f185fd8fc2c3dfc123d9271726c588963c7c01.tar.zst
VIATRA-Generator-c1f185fd8fc2c3dfc123d9271726c588963c7c01.zip
Objective POC implementation
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend85
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend4
2 files changed, 53 insertions, 36 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 f43ab96d..b6918294 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
@@ -1,8 +1,10 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra 1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2 2
3import com.google.common.collect.ImmutableMap
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 4import 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.logic.model.logicproblem.LogicProblem
5import 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.patterns.ModalPatternQueries
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider 8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider 9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider 10import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider
@@ -10,6 +12,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.par
10import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 12import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
11import java.util.Collection 13import java.util.Collection
12import java.util.List 14import java.util.List
15import java.util.Map
13import java.util.Set 16import java.util.Set
14import org.eclipse.viatra.query.runtime.api.IPatternMatch 17import org.eclipse.viatra.query.runtime.api.IPatternMatch
15import org.eclipse.viatra.query.runtime.api.IQuerySpecification 18import org.eclipse.viatra.query.runtime.api.IQuerySpecification
@@ -20,34 +23,41 @@ import org.eclipse.xtend.lib.annotations.Data
20 23
21class ModelGenerationStatistics { 24class ModelGenerationStatistics {
22 public var long transformationExecutionTime = 0 25 public var long transformationExecutionTime = 0
26
23 synchronized def addExecutionTime(long amount) { 27 synchronized def addExecutionTime(long amount) {
24 transformationExecutionTime+=amount 28 transformationExecutionTime += amount
25 } 29 }
30
26 public var long PreliminaryTypeAnalisisTime = 0 31 public var long PreliminaryTypeAnalisisTime = 0
27} 32}
33
28@Data class ModelGenerationMethod { 34@Data class ModelGenerationMethod {
29 ModelGenerationStatistics statistics 35 ModelGenerationStatistics statistics
30 36
31 Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules 37 Collection<? extends BatchTransformationRule<?, ?>> objectRefinementRules
32 Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules 38 Collection<? extends BatchTransformationRule<?, ?>> relationRefinementRules
33 39
34 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities 40 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities
35 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF 41 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF
36 42
37 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF 43 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF
38 44
39 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> allPatterns 45 Map<String, ModalPatternQueries> modalRelationQueries
46
47 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> allPatterns
40} 48}
49
41enum TypeInferenceMethod { 50enum TypeInferenceMethod {
42 Generic, PreliminaryAnalysis 51 Generic,
52 PreliminaryAnalysis
43} 53}
44 54
45class ModelGenerationMethodProvider { 55class ModelGenerationMethodProvider {
46 private val PatternProvider patternProvider = new PatternProvider 56 val PatternProvider patternProvider = new PatternProvider
47 private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider 57 val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider
48 private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider 58 val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider
49 59
50 public def ModelGenerationMethod createModelGenerationMethod( 60 def ModelGenerationMethod createModelGenerationMethod(
51 LogicProblem logicProblem, 61 LogicProblem logicProblem,
52 PartialInterpretation emptySolution, 62 PartialInterpretation emptySolution,
53 ReasonerWorkspace workspace, 63 ReasonerWorkspace workspace,
@@ -58,25 +68,31 @@ class ModelGenerationMethodProvider {
58 ) { 68 ) {
59 val statistics = new ModelGenerationStatistics 69 val statistics = new ModelGenerationStatistics
60 val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL) 70 val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL)
61 71
62 val Set<PQuery> existingQueries = logicProblem 72 val Set<PQuery> existingQueries = logicProblem.relations.map[annotations].flatten.filter(TransfomedViatraQuery).
63 .relations 73 map[it.patternPQuery as PQuery].toSet
64 .map[annotations] 74
65 .flatten 75 val queries = patternProvider.generateQueries(logicProblem, emptySolution, statistics, existingQueries,
66 .filter(TransfomedViatraQuery) 76 workspace, typeInferenceMethod, writeFiles)
67 .map[it.patternPQuery as PQuery] 77 val // LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
68 .toSet 78 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries, scopePropagator,
69 79 nameNewElements, statistics)
70 val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod,writeFiles) 80 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries, statistics)
71 val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>> 81
72 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,scopePropagator,nameNewElements,statistics)
73 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics)
74
75 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries) 82 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries)
76 val unfinishedWF = queries.getUnfinishedWFQueries.values 83 val unfinishedWF = queries.getUnfinishedWFQueries.values
77 84
85 val modalRelationQueriesBuilder = ImmutableMap.builder
86 for (entry : queries.modalRelationQueries.entrySet) {
87 val annotation = entry.key.annotations.filter(TransfomedViatraQuery).head
88 if (annotation !== null) {
89 modalRelationQueriesBuilder.put(annotation.patternFullyQualifiedName, entry.value)
90 }
91 }
92 val modalRelationQueries = modalRelationQueriesBuilder.build
93
78 val invalidWF = queries.getInvalidWFQueries.values 94 val invalidWF = queries.getInvalidWFQueries.values
79 95
80 return new ModelGenerationMethod( 96 return new ModelGenerationMethod(
81 statistics, 97 statistics,
82 objectRefinementRules.values, 98 objectRefinementRules.values,
@@ -84,6 +100,7 @@ class ModelGenerationMethodProvider {
84 unfinishedMultiplicities, 100 unfinishedMultiplicities,
85 unfinishedWF, 101 unfinishedWF,
86 invalidWF, 102 invalidWF,
103 modalRelationQueries,
87 queries.allQueries 104 queries.allQueries
88 ) 105 )
89 } 106 }
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend
index a2b11632..c9e64a9d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend
@@ -55,7 +55,7 @@ class PatternGenerator {
55 typeIndexer.requiresTypeAnalysis || typeRefinementGenerator.requiresTypeAnalysis 55 typeIndexer.requiresTypeAnalysis || typeRefinementGenerator.requiresTypeAnalysis
56 } 56 }
57 57
58 public dispatch def referRelation( 58 public dispatch def CharSequence referRelation(
59 RelationDeclaration referred, 59 RelationDeclaration referred,
60 String sourceVariable, 60 String sourceVariable,
61 String targetVariable, 61 String targetVariable,
@@ -64,7 +64,7 @@ class PatternGenerator {
64 { 64 {
65 return this.relationDeclarationIndexer.referRelation(referred,sourceVariable,targetVariable,modality) 65 return this.relationDeclarationIndexer.referRelation(referred,sourceVariable,targetVariable,modality)
66 } 66 }
67 public dispatch def referRelation( 67 public dispatch def CharSequence referRelation(
68 RelationDefinition referred, 68 RelationDefinition referred,
69 String sourceVariable, 69 String sourceVariable,
70 String targetVariable, 70 String targetVariable,