@@ -72,14 +72,15 @@ standard library package Occurrences {
7272 feature redefines incomingTransferSort default (that as Occurrence).incomingTransferSort;
7373 }
7474
75- feature withoutOccurrences: Occurrence[0..*] subsets occurrences inverse of withoutOccurrences {
75+ feature withoutOccurrences: Occurrence[0..*] unions successors, predecessors, outsideOfOccurrences
76+ inverse of withoutOccurrences {
7677 doc
7778 /*
7879 * Occurrences that are completely separate either in time or space or both.
7980 */
8081
8182 /* withoutOccurrences is irreflexive. */
82- inv { (that as Occurrence) != (self as Occurrence) }
83+ inv { (that as Occurrence) != (that.that as Occurrence) }
8384 }
8485
8586 feature predecessors: Occurrence[0..*] subsets withoutOccurrences {
@@ -322,7 +323,7 @@ standard library package Occurrences {
322323 * is none when the startShot and endShot are the same.
323324 */
324325 }
325- inv { isEmpty(middleTimeSlice) == (startShot == endShot) }
326+ inv { isEmpty((that as Occurrence). middleTimeSlice) == ((that as Occurrence). startShot == (that as Occurrence). endShot) }
326327
327328 connector :HappensJustBefore
328329 from earlierOccurrence references startShot [1]
@@ -377,10 +378,10 @@ standard library package Occurrences {
377378 */
378379 }
379380
380- feature spaceShotOf: Occurrence[0..*] subsets spaceSliceOf inverse of spaceShots {
381+ feature all spaceShotOf: Occurrence[0..*] subsets spaceSliceOf inverse of spaceShots {
381382 doc
382383 /*
383- * Occurrences of which this occurrence is a space shot.
384+ * All occurrences of which this occurrence is a space shot.
384385 */
385386
386387 feature spaceShotOccurrence: Occurrence[1] subsets that;
@@ -491,7 +492,7 @@ standard library package Occurrences {
491492
492493 feature redefines isClosed = true;
493494
494- feature spaceBounder: Occurrence subsets self;
495+ feature spaceBounder: Occurrence [1] subsets self;
495496
496497 outer: Occurrence [0..1] subsets spaceSlices {
497498 feature redefines isClosed = true;
@@ -518,7 +519,7 @@ standard library package Occurrences {
518519 inv { spaceBounderOf.spaceBoundary == that.that }
519520 }
520521
521- inv { not isClosed implies contains(self .unionsOf, union(spaceBoundary, spaceInterior)) }
522+ inv { not isClosed implies contains((that as Occurrence) .unionsOf, union(spaceBoundary, spaceInterior)) }
522523 inv { innerSpaceDimension == 0 implies isEmpty(spaceBoundary) }
523524
524525 connector :SurroundedBy
@@ -529,7 +530,7 @@ standard library package Occurrences {
529530 from surroundedSpace references spaceBoundary.inner [0..*]
530531 to surroundingSpace references spaceInterior [1];
531532
532- feature innerSpaceOccurrences: Occurrence [0..*] {
533+ feature innerSpaceOccurrences: Occurrence [0..*] subsets outsideOfOccurrences {
533534 doc
534535 /*
535536 * Occurrences that completely occupy the space surrounded by an inner space boundary of this occurrence.
@@ -547,7 +548,7 @@ standard library package Occurrences {
547548 inv { (isEmpty(hbi) == notEmpty(hbo)) & (notEmpty(hbo) == outerSpace.isClosed) }
548549 }
549550
550- feature surroundedByOccurrences: Occurrence [0..*] {
551+ feature surroundedByOccurrences: Occurrence [0..*] subsets outsideOfOccurrences {
551552 doc
552553 /*
553554 * Occurrences that have inner spaces that completely include this occurrence.
@@ -567,7 +568,7 @@ standard library package Occurrences {
567568 * Tells whether an occurrence has a spaceBoundary, true if it does, false otherwise.
568569 */
569570 }
570- inv { isClosed == isEmpty(spaceBoundary) }
571+ inv { isClosed == isEmpty((that as Occurrence). spaceBoundary) }
571572
572573 feature incomingTransfers: Transfers::Transfer[0..*] subsets Transfers::transfers {
573574 doc
@@ -613,9 +614,8 @@ standard library package Occurrences {
613614 */
614615
615616 end feature redefines source;
616- end feature redefines target;
617+ end feature redefines target = that ;
617618 }
618- binding incomingTransfersToSelf.target = self;
619619
620620 feature outgoingTransfers: Transfers::Transfer[0..*] subsets Transfers::transfers {
621621 doc
@@ -633,10 +633,9 @@ standard library package Occurrences {
633633 * The outgoing transfers with this occurrence as the source.
634634 */
635635
636- end feature redefines source;
636+ end feature redefines source = that ;
637637 end feature redefines target;
638638 }
639- binding outgoingTransfersFromSelf.source = self;
640639 }
641640
642641 abstract class all Life specializes Occurrence {
@@ -688,7 +687,7 @@ standard library package Occurrences {
688687 /*
689688 * HappensLink is the most general associations that assert temporal relationships between a
690689 * sourceOccurrence and a targetOccurrence. Because HappensLinks assert temporal
691- * relationships, they cannot themselves be Occurrences that happen in time. Therefore
690+ * relationships, they cannot also be Occurrences that happen in time. Therefore
692691 * HappensLink is disjoint with LinkObject, that is, no HappensLink can also be a
693692 * LinkObject.
694693 */
0 commit comments