diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend index ffa9e6e6..52a390a8 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/RelationConstraintCalculator.xtend | |||
@@ -20,6 +20,7 @@ class RelationConstraints { | |||
20 | @Data | 20 | @Data |
21 | class RelationMultiplicityConstraint { | 21 | class RelationMultiplicityConstraint { |
22 | Relation relation | 22 | Relation relation |
23 | Relation inverseRelation | ||
23 | boolean containment | 24 | boolean containment |
24 | boolean container | 25 | boolean container |
25 | int lowerBound | 26 | int lowerBound |
@@ -47,7 +48,7 @@ class RelationMultiplicityConstraint { | |||
47 | } | 48 | } |
48 | 49 | ||
49 | def constrainsRemainingInverse() { | 50 | def constrainsRemainingInverse() { |
50 | !containment && inverseUpperBoundFinite | 51 | lowerBound >= 1 && !containment && inverseUpperBoundFinite |
51 | } | 52 | } |
52 | 53 | ||
53 | def constrainsRemainingContents() { | 54 | def constrainsRemainingContents() { |
@@ -119,8 +120,8 @@ class RelationConstraintCalculator { | |||
119 | inverseUpperMultiplicity = upperMultiplicities.get(relation) | 120 | inverseUpperMultiplicity = upperMultiplicities.get(relation) |
120 | container = containmentRelations.contains(inverseRelation) | 121 | container = containmentRelations.contains(inverseRelation) |
121 | } | 122 | } |
122 | val constraint = new RelationMultiplicityConstraint(relation, containment, container, lowerMultiplicity, | 123 | val constraint = new RelationMultiplicityConstraint(relation, inverseRelation, containment, container, |
123 | upperMultiplicity, inverseUpperMultiplicity) | 124 | lowerMultiplicity, upperMultiplicity, inverseUpperMultiplicity) |
124 | if (constraint.isActive) { | 125 | if (constraint.isActive) { |
125 | if (relation.parameters.size != 2) { | 126 | if (relation.parameters.size != 2) { |
126 | throw new IllegalArgumentException('''Relation «relation.name» has multiplicity or containment constraints, but it is not binary''') | 127 | throw new IllegalArgumentException('''Relation «relation.name» has multiplicity or containment constraints, but it is not binary''') |