aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend')
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend34
1 files changed, 34 insertions, 0 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend
new file mode 100644
index 00000000..300f8b51
--- /dev/null
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemHint.xtend
@@ -0,0 +1,34 @@
1package hu.bme.mit.inf.dslreasoner.run
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
5import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.LinearTypeExpressionBuilderFactory
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator
7import java.util.Map
8import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
9
10class FileSystemHint extends Ecore2LogicTraceBasedHint {
11 static val REMAINING_CONTENTS_ROOT = "hint_root"
12
13 new(Ecore2Logic ecore2Logic, Ecore2Logic_Trace trace) {
14 super(ecore2Logic, trace)
15 }
16
17 override getAdditionalPatterns(PatternGenerator it, Map<String, PQuery> fqnToPQuery) '''
18 pattern «REMAINING_CONTENTS_ROOT»(problem:LogicProblem, interpretation:PartialInterpretation, remainingContents:java Integer) {
19 find interpretation(problem, interpretation);
20 remainingContents == sum find remainingContents_root_reference_Dir_helper(problem, interpretation, _, #_)
21 }
22 '''
23
24 override createConstraintUpdater(LinearTypeExpressionBuilderFactory it) {
25 val dirCount = createBuilder.add(1, "Dir".type).build
26
27 val remainingContentsRootMatcher = createMatcher(REMAINING_CONTENTS_ROOT)
28
29 return [ p |
30 dirCount.tightenLowerBound(remainingContentsRootMatcher.getCount(p))
31 ]
32 }
33
34}