From: Cut-paste string operation for collaborative groupware applications
Notations | Description |
---|---|
o.id | Id of site that generates operation o |
o.type | Type of operation o, i.e., either insert or delete |
o.pos | Position of operation o |
o.str | String insert/delete by o |
o1→o2 | o1 occurs before o2 |
o1||o2 | o1 and o2 are concurrent |
o1Uo2 | o1 and o2 are contextually equivalent |
o1→o2 | o1 and o2 are contextually serialized |
[o1,o2] | An ordered list of two operations o1 and o2 |
<o1,o2> | Two operations in sequence |
|L| | Number of objects in list L |
L1.L2 | Concatenation of two lists L1 and L2 |
s[i:len] | Substring of string s starts from position i of length len |
Sq | A sequence is a special list |
R1Â =Â [o1.start, o1.end] | Operation region of operation o1 is R1 which starts from o1.start & ends at o1.end |
cut-paste(p1, s, p2) | Cut a string s from p1 and paste at p2 |
exec(oi) | Execution of operation oi |