diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend index c8fb3409..f0494214 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend | |||
@@ -47,6 +47,20 @@ class ScopePropagator { | |||
47 | } | 47 | } |
48 | } | 48 | } |
49 | } | 49 | } |
50 | var boolean changed | ||
51 | do { | ||
52 | changed = false | ||
53 | for (scope : p.scopes) { | ||
54 | val subScopeSet = subScopes.get(scope) | ||
55 | val superScopeSet = superScopes.get(scope) | ||
56 | for (subScope : subScopeSet) { | ||
57 | changed = changed || superScopes.get(subScope).addAll(superScopeSet) | ||
58 | } | ||
59 | for (superScope : superScopeSet) { | ||
60 | changed = changed || subScopes.get(superScope).addAll(subScopeSet) | ||
61 | } | ||
62 | } | ||
63 | } while (changed) | ||
50 | } | 64 | } |
51 | 65 | ||
52 | def propagateAllScopeConstraints() { | 66 | def propagateAllScopeConstraints() { |