Skip to content

Commit 5fa97d3

Browse files
authored
Merge pull request #451 from Systems-Modeling/ST6RI-633-1
ST6RI-633-1 Add inverses and move necessary association conditions to cross-nav features in Kernel Semantic Library - Update
2 parents ff0d76b + a3f3ab4 commit 5fa97d3

1 file changed

Lines changed: 14 additions & 15 deletions

File tree

sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)