aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.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/patterns/GenericTypeRefinementGenerator.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend18
1 files changed, 18 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend
index 4b7af959..1081fafc 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend
@@ -25,6 +25,12 @@ class GenericTypeRefinementGenerator extends TypeRefinementGenerator {
25 inverseRelations.put(it.inverseB,it.inverseA) 25 inverseRelations.put(it.inverseB,it.inverseA)
26 ] 26 ]
27 return ''' 27 return '''
28 private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
29 «FOR type :containment.typesOrderedInHierarchy SEPARATOR "or"»{
30 find interpretation(problem,interpretation);
31 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"root")»
32 find mustExist(problem, interpretation, root);
33 }«ENDFOR»
28 «FOR type:newObjectTypes» 34 «FOR type:newObjectTypes»
29 «IF(containment.typesOrderedInHierarchy.contains(type))» 35 «IF(containment.typesOrderedInHierarchy.contains(type))»
30 «FOR containmentRelation : containment.containmentRelations.filter[canBeContainedByRelation(it,type)]» 36 «FOR containmentRelation : containment.containmentRelations.filter[canBeContainedByRelation(it,type)]»
@@ -66,6 +72,18 @@ class GenericTypeRefinementGenerator extends TypeRefinementGenerator {
66 } 72 }
67 «ENDIF» 73 «ENDIF»
68 «ENDFOR» 74 «ENDFOR»
75 pattern «patternName(null,null,type)»(
76 problem:LogicProblem, interpretation:PartialInterpretation,
77 typeInterpretation:PartialTypeInterpratation)
78 {
79 find interpretation(problem,interpretation);
80 neg find hasElementInContainment(problem,interpretation);
81 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
82 PartialTypeInterpratation.interpretationOf.name(type,"«type.name»");
83 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
84 find mayExist(problem, interpretation, newObject);
85 neg find mustExist(problem, interpretation, newObject);
86 }
69 «ELSE» 87 «ELSE»
70 pattern createObject_«this.patternName(null,null,type)»( 88 pattern createObject_«this.patternName(null,null,type)»(
71 problem:LogicProblem, interpretation:PartialInterpretation, 89 problem:LogicProblem, interpretation:PartialInterpretation,