@@ -37,7 +37,7 @@ package Occurrences {
3737 feature predecessors: Occurrence[0..*] subsets occurrences;
3838
3939 /**
40- * Occurrences that start after this occcurrence ends.
40+ * Occurrences that start after this occurrence ends.
4141 */
4242 feature successors: Occurrence[0..*] subsets occurrences;
4343
@@ -84,7 +84,8 @@ package Occurrences {
8484 * to 3, without regard to higher dimensional spaces it might be emedded in.
8585 */
8686 feature innerSpaceDimension : Natural [1];
87- inv { innerSpaceDimension >= 0 & innerSpaceDimension <= 3 }
87+
88+ inv { innerSpaceDimension <= 3 }
8889
8990 /**
9091 * For occurrences of innerSpaceDimension 1 or 2, the number of variables need to
@@ -188,7 +189,7 @@ package Occurrences {
188189 /**
189190 * Occurrences of which this occurrence is a space shot.
190191 */
191- feature spaceShotOf: Occurrence[1 ..*] subsets spaceSliceOf;
192+ feature spaceShotOf: Occurrence[0 ..*] subsets spaceSliceOf;
192193
193194 /**
194195 * Sets of occurrences, where the time and space taken by all the occurrences in each
@@ -270,12 +271,12 @@ package Occurrences {
270271 * An Occurrence of which this one is the space interior.
271272 */
272273 feature spaceInteriorOf: Occurrence[0..1] subsets spaceSliceOf;
274+
273275 inv { notEmpty(spaceInterior) implies spaceInterior.innerSpaceDimension == innerSpaceDimension }
274- inv { innerSpaceDimension == 0 implies isEmpty(spaceInterior) }
275276
276277 /**
277- * A space shot of this Occurrence that is not among those of its space interior, of
278- * which it must be outside. It must have no spaceBoundary.
278+ * A space shot of this Occurrence that is not among those of its space interior,
279+ * which must be outside it . It must not have a spaceBoundary.
279280 */
280281 portion feature spaceBoundary: Occurrence[0..1] subsets spaceShots {
281282 feature redefines isClosed = true;
@@ -286,7 +287,8 @@ package Occurrences {
286287 */
287288 feature spaceBoundaryOf: Occurrence[0..*] subsets spaceShotOf;
288289
289- inv { isClosed implies contains(self.unionsOf, union(spaceBoundary, spaceInterior)) }
290+ inv { !isClosed implies contains(self.unionsOf, union(spaceBoundary, spaceInterior)) }
291+ inv { innerSpaceDimension == 0 implies isEmpty(spaceBoundary) }
290292
291293 connector :OutsideOf
292294 from separateSpaceToo :> spaceInterior [0..1]
@@ -476,8 +478,8 @@ package Occurrences {
476478 * SnapshotsOf asserts one occurrence is a snapshot of another.
477479 */
478480 assoc SnapshotOf specializes TimeSliceOf {
479- end feature snapshotOcccurrence : Occurrence[1..*] redefines timeSliceOccurrence subsets snapshottedOccurrence.snapshots;
480- end feature snapshottedOccurrence: Occurrence[0..*] redefines timeSlicedOccurrence subsets snapshotOcccurrence .snapshotOf;
481+ end feature snapshotOccurrence : Occurrence[1..*] redefines timeSliceOccurrence subsets snapshottedOccurrence.snapshots;
482+ end feature snapshottedOccurrence: Occurrence[0..*] redefines timeSlicedOccurrence subsets snapshotOccurrence .snapshotOf;
481483 }
482484
483485 /**
@@ -498,8 +500,10 @@ package Occurrences {
498500 * it spaceShottedOccurrence.
499501 */
500502 assoc SpaceShotOf specializes SpaceSliceOf {
501- end feature spaceShotOcccurrence: Occurrence[1..*] redefines spaceSliceOccurrence subsets spaceShottedOccurrence.spaceShots;
502- end feature spaceShottedOccurrence: Occurrence[1..*] redefines spaceSlicedOccurrence subsets spaceShotOcccurrence.spaceShotOf;
503+ end feature spaceShotOccurrence: Occurrence[1..*] redefines spaceSliceOccurrence subsets spaceShottedOccurrence.spaceShots;
504+ end feature spaceShottedOccurrence: Occurrence[1..*] redefines spaceSlicedOccurrence subsets spaceShotOccurrence.spaceShotOf;
505+
506+ inv { spaceShotOccurrence.innerSpaceDimension < spaceShottedOccurrence.innerSpaceDimension }
503507 }
504508
505509 /**
0 commit comments