-- Lecture 4 : Example 1: Left-identity of + -- page 9 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) . } -- Prove N + 0 = N . open NAT+ + EQL red 0 + 0 = 0 . op n : -> Nat . eq 0 + n = n . red 0 + s n = s n . close -- page 10 open NAT+ + EQL red 0 + 0 = 0 . op n : -> Nat . eq 0 + n = n . set trace on set trace whole on red 0 + s n = s n . set trace whole off set trace off close -- page 11 -- BAD proof score (Variable) open NAT+ + EQL red 0 + 0 = 0 . var N : Nat . eq 0 + N = N . set trace on set trace whole on red 0 + s N = s N . set trace whole off set trace off close -- page 13 mod! NAT+' { pr(BASIC-NAT) op _+_ : Nat Nat -> Nat vars M N : Nat eq N + 0 = N . eq M + s N = s(M + N) . eq 0 + N = N . }