121
tion operations, and also used to track the relative positions of significant addresses, which
are used in address comparison. The comparison of addresses is discussed in Section 6.7.1.
The application strategy discussed in Section 3.4.2a allows applications to increase merge
possibilities by automatically translating destination addresses within move results to their
ultimate source. Such an address has the form (I
1 …I
n , i), whereI
1 …I
n–1 are moves or copies,
and I
n is an insertion operation. Such a destination is stored as if it were inserted at (I
n , i),
to ease the traversal of a P-sequence. The altered location correctly reflects its ordering with
respect to the other data within the moved or copied context. The insertion point, and its
actual address, (I
1 …I
n , i)must also be indexed in their correct relative position for address
comparison.
Inserted data is represented by a logical list of subsequence segments. Each segment is
tagged with its insertion of origin. When data is inserted into the middle of a segment, that
segment is split, and the new data is tagged with its own insertion tag. The first segment of
any insertion maintains a pointer to its last segment. This allows an absent insertion to be
quickly traversed, since no data inserted inside of it can be present in a version from which
it is absent. This trick for sequential enumeration of segments essentially skips any inserted
segments that are causally than an insertion not present in the version of interest.
Segments inserted into post-move or post-copy contexts will have been translated back-
wards to the sources of their context-defining operations. They are additionally tagged with
the ID of the move or copy changes to indicate that they are only valid within the destina-
tion region of a particular set of move or copy operations. When encountered in other con-
texts they are ignored, just like ones that are not part of the current version. This structure
also contains point markers representing the destinations of move and copy operations,
whose IDs allow their source regions to be determined. These are essentially transclusion
links in the sense of (Nelson 1987; Nelson 1987). They represent the transparent inclusion of
material stored elsewhere. When traversing a segment list to enumerate the contents of a P-
tion operations, and also used to track the relative positions of significant addresses, which
are used in address comparison. The comparison of addresses is discussed in Section 6.7.1.
The application strategy discussed in Section 3.4.2a allows applications to increase merge
possibilities by automatically translating destination addresses within move results to their
ultimate source. Such an address has the form (I
1 …I
n , i), whereI
1 …I
n–1 are moves or copies,
and I
n is an insertion operation. Such a destination is stored as if it were inserted at (I
n , i),
to ease the traversal of a P-sequence. The altered location correctly reflects its ordering with
respect to the other data within the moved or copied context. The insertion point, and its
actual address, (I
1 …I
n , i)must also be indexed in their correct relative position for address
comparison.
Inserted data is represented by a logical list of subsequence segments. Each segment is
tagged with its insertion of origin. When data is inserted into the middle of a segment, that
segment is split, and the new data is tagged with its own insertion tag. The first segment of
any insertion maintains a pointer to its last segment. This allows an absent insertion to be
quickly traversed, since no data inserted inside of it can be present in a version from which
it is absent. This trick for sequential enumeration of segments essentially skips any inserted
segments that are causally than an insertion not present in the version of interest.
Segments inserted into post-move or post-copy contexts will have been translated back-
wards to the sources of their context-defining operations. They are additionally tagged with
the ID of the move or copy changes to indicate that they are only valid within the destina-
tion region of a particular set of move or copy operations. When encountered in other con-
texts they are ignored, just like ones that are not part of the current version. This structure
also contains point markers representing the destinations of move and copy operations,
whose IDs allow their source regions to be determined. These are essentially transclusion
links in the sense of (Nelson 1987; Nelson 1987). They represent the transparent inclusion of
material stored elsewhere. When traversing a segment list to enumerate the contents of a P-