From a8eb346fb97b54b6ee693da4840abd8be8b43843 Mon Sep 17 00:00:00 2001 From: Aren Babikian Date: Sun, 14 Feb 2021 08:01:00 +0100 Subject: Add strategy flag + implement alost working crossingScenarioStrategy --- .../logic2viatra/patterns/RelationDefinitionIndexer.xtend | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend index 338a9af2..0c9612e8 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend @@ -11,6 +11,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PDisjunction import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation class RelationDefinitionIndexer { public val PatternGenerator base; @@ -70,6 +71,19 @@ class RelationDefinitionIndexer { private def transformPattern(RelationDefinition relation, PQuery p, Modality modality) { try { val bodies = (relation.annotations.filter(TransfomedViatraQuery).head.optimizedDisjunction as PDisjunction).bodies + + //TODO ISSUE if a structural and numeric constraint are ORed in the same pattern + var boolean isCheck = false + for (body : bodies) { + for (constraint : body.constraints) { + if (constraint instanceof ExpressionEvaluation) { + // below not working +// return "" + isCheck = true + } + } + } + return ''' private pattern «relationDefinitionName(relation,modality)»( problem:LogicProblem, interpretation:PartialInterpretation, @@ -79,6 +93,7 @@ class RelationDefinitionIndexer { «FOR constraint : body.constraints» «this.constraintTransformer.transformConstraint(constraint,modality,relation.annotations.filter(TransfomedViatraQuery).head.variableTrace)» «ENDFOR» + «IF isCheck»1 == 0;«ENDIF» }«ENDFOR» ''' } catch(UnsupportedOperationException e) { -- cgit v1.2.3-70-g09d2