| theorem ex1 (n : Nat) : 0 + n = n := by | |
| let m := n | |
| have h : ∃ k, id k = m := ⟨m, rfl⟩ | |
| cases h with | |
| | intro a e => | |
| trace_state | |
| subst e | |
| trace_state | |
| apply Nat.zero_add | |
| theorem ex2 (n : Nat) : 0 + n = n := by | |
| let m := n | |
| have h : ∃ k, m = id k := ⟨m, rfl⟩ | |
| cases h with | |
| | intro a e => | |
| trace_state | |
| subst e | |
| trace_state | |
| apply Nat.zero_add | |
| theorem ex3 (n : Nat) (h : n = 0) : 0 + n = 0 := by | |
| let m := n + 1 | |
| let v := m + 1 | |
| have : v = n + 2 := rfl | |
| subst v -- error | |
| done |