| 49 |
|
|
| 50 |
let any_record = { empty with record = any.record } |
let any_record = { empty with record = any.record } |
| 51 |
|
|
| 52 |
let cup x y = { |
let cup x y = |
| 53 |
|
if x = y then x else { |
| 54 |
times = Boolean.cup x.times y.times; |
times = Boolean.cup x.times y.times; |
| 55 |
arrow = Boolean.cup x.arrow y.arrow; |
arrow = Boolean.cup x.arrow y.arrow; |
| 56 |
record= Boolean.cup x.record y.record; |
record= Boolean.cup x.record y.record; |
| 58 |
atoms = Atoms.cup x.atoms y.atoms; |
atoms = Atoms.cup x.atoms y.atoms; |
| 59 |
strs = Strings.cup x.strs y.strs; |
strs = Strings.cup x.strs y.strs; |
| 60 |
} |
} |
| 61 |
let cap x y = { |
|
| 62 |
|
let cap x y = |
| 63 |
|
if x = y then x else { |
| 64 |
times = Boolean.cap x.times y.times; |
times = Boolean.cap x.times y.times; |
| 65 |
record= Boolean.cap x.record y.record; |
record= Boolean.cap x.record y.record; |
| 66 |
arrow = Boolean.cap x.arrow y.arrow; |
arrow = Boolean.cap x.arrow y.arrow; |
| 68 |
atoms = Atoms.cap x.atoms y.atoms; |
atoms = Atoms.cap x.atoms y.atoms; |
| 69 |
strs = Strings.cap x.strs y.strs; |
strs = Strings.cap x.strs y.strs; |
| 70 |
} |
} |
| 71 |
let diff x y = { |
|
| 72 |
|
let diff x y = |
| 73 |
|
if x = y then empty else { |
| 74 |
times = Boolean.diff x.times y.times; |
times = Boolean.diff x.times y.times; |
| 75 |
arrow = Boolean.diff x.arrow y.arrow; |
arrow = Boolean.diff x.arrow y.arrow; |
| 76 |
record= Boolean.diff x.record y.record; |
record= Boolean.diff x.record y.record; |
| 78 |
atoms = Atoms.diff x.atoms y.atoms; |
atoms = Atoms.diff x.atoms y.atoms; |
| 79 |
strs = Strings.diff x.strs y.strs; |
strs = Strings.diff x.strs y.strs; |
| 80 |
} |
} |
| 81 |
|
|
| 82 |
let neg x = diff any x |
let neg x = diff any x |
| 83 |
|
|
| 84 |
let equal e a b = |
let equal e a b = |