-- Lecture 4: Example 2: Commutativity of + -- page 14 mod! BASIC-NAT{ [Zero NzNat < Nat] op 0 : -> Zero op s_ : Nat -> NzNat } mod! NAT+ { pr(BASIC-NAT) op _+_ : Nat Nat -> Nat vars M N : Nat eq N + 0 = N . eq M + s N = s(M + N) . } -- page 14 -- Proof score for M + N = N + M (failed) open NAT+ + EQL var M : Nat red M + 0 = 0 + M . op n : -> Nat . eq M + n = n + M . red M + s n = s n + M . close -- page 17 -- Proof score for M + N = N + M (+1 lemmna but failed) open NAT+ + EQL vars M N : Nat . eq 0 + N = N . op n : -> Nat . red M + 0 = 0 + M . eq M + n = n + M . red M + s n = s n + M . close -- page 18 -- Proof score for s M + N = s(N + M) open NAT+ + EQL var M : Nat op n : -> Nat . red s M + 0 = s(M + 0) . eq s M + n = s(M + n) . red s M + s n = s(M + s n) . close -- Proof score for M + N = N + M (succeed) open NAT+ + EQL vars M N : Nat eq 0 + N = N . eq s M + N = s(M + N) . op n : -> Nat . red M + 0 = 0 + M . eq M + n = n + M . red M + s n = s n + M . close