author | lcp |
Wed, 10 Nov 1993 05:00:57 +0100 | |
changeset 104 | d8205bb279a7 |
child 359 | b5a2e9503a7a |
permissions | -rw-r--r-- |
lcp@104 | 1 |
> goal Nat.thy "m+0 = m"; |
lcp@104 | 2 |
Level 0 |
lcp@104 | 3 |
m + 0 = m |
lcp@104 | 4 |
1. m + 0 = m |
lcp@104 | 5 |
> by (res_inst_tac [("n","m")] induct 1); |
lcp@104 | 6 |
Level 1 |
lcp@104 | 7 |
m + 0 = m |
lcp@104 | 8 |
1. 0 + 0 = 0 |
lcp@104 | 9 |
2. !!x. x + 0 = x ==> Suc(x) + 0 = Suc(x) |
lcp@104 | 10 |
> by (simp_tac add_ss 1); |
lcp@104 | 11 |
Level 2 |
lcp@104 | 12 |
m + 0 = m |
lcp@104 | 13 |
1. !!x. x + 0 = x ==> Suc(x) + 0 = Suc(x) |
lcp@104 | 14 |
> by (asm_simp_tac add_ss 1); |
lcp@104 | 15 |
Level 3 |
lcp@104 | 16 |
m + 0 = m |
lcp@104 | 17 |
No subgoals! |
lcp@104 | 18 |
|
lcp@104 | 19 |
|
lcp@104 | 20 |
> goal Nat.thy "m+Suc(n) = Suc(m+n)"; |
lcp@104 | 21 |
Level 0 |
lcp@104 | 22 |
m + Suc(n) = Suc(m + n) |
lcp@104 | 23 |
1. m + Suc(n) = Suc(m + n) |
lcp@104 | 24 |
val it = [] : thm list |
lcp@104 | 25 |
> by (res_inst_tac [("n","m")] induct 1); |
lcp@104 | 26 |
Level 1 |
lcp@104 | 27 |
m + Suc(n) = Suc(m + n) |
lcp@104 | 28 |
1. 0 + Suc(n) = Suc(0 + n) |
lcp@104 | 29 |
2. !!x. x + Suc(n) = Suc(x + n) ==> Suc(x) + Suc(n) = Suc(Suc(x) + n) |
lcp@104 | 30 |
val it = () : unit |
lcp@104 | 31 |
> by (simp_tac add_ss 1); |
lcp@104 | 32 |
Level 2 |
lcp@104 | 33 |
m + Suc(n) = Suc(m + n) |
lcp@104 | 34 |
1. !!x. x + Suc(n) = Suc(x + n) ==> Suc(x) + Suc(n) = Suc(Suc(x) + n) |
lcp@104 | 35 |
val it = () : unit |
lcp@104 | 36 |
> trace_simp := true; |
lcp@104 | 37 |
val it = () : unit |
lcp@104 | 38 |
> by (asm_simp_tac add_ss 1); |
lcp@104 | 39 |
Rewriting: |
lcp@104 | 40 |
Suc(x) + Suc(n) == Suc(x + Suc(n)) |
lcp@104 | 41 |
Rewriting: |
lcp@104 | 42 |
x + Suc(n) == Suc(x + n) |
lcp@104 | 43 |
Rewriting: |
lcp@104 | 44 |
Suc(x) + n == Suc(x + n) |
lcp@104 | 45 |
Rewriting: |
lcp@104 | 46 |
Suc(Suc(x + n)) = Suc(Suc(x + n)) == True |
lcp@104 | 47 |
Level 3 |
lcp@104 | 48 |
m + Suc(n) = Suc(m + n) |
lcp@104 | 49 |
No subgoals! |
lcp@104 | 50 |
val it = () : unit |
lcp@104 | 51 |
|
lcp@104 | 52 |
|
lcp@104 | 53 |
|
lcp@104 | 54 |
> val prems = goal Nat.thy "(!!n. f(Suc(n)) = Suc(f(n))) ==> f(i+j) = i+f(j)"; |
lcp@104 | 55 |
Level 0 |
lcp@104 | 56 |
f(i + j) = i + f(j) |
lcp@104 | 57 |
1. f(i + j) = i + f(j) |
lcp@104 | 58 |
> prths prems; |
lcp@104 | 59 |
f(Suc(?n)) = Suc(f(?n)) [!!n. f(Suc(n)) = Suc(f(n))] |
lcp@104 | 60 |
|
lcp@104 | 61 |
> by (res_inst_tac [("n","i")] induct 1); |
lcp@104 | 62 |
Level 1 |
lcp@104 | 63 |
f(i + j) = i + f(j) |
lcp@104 | 64 |
1. f(0 + j) = 0 + f(j) |
lcp@104 | 65 |
2. !!x. f(x + j) = x + f(j) ==> f(Suc(x) + j) = Suc(x) + f(j) |
lcp@104 | 66 |
> by (simp_tac f_ss 1); |
lcp@104 | 67 |
Level 2 |
lcp@104 | 68 |
f(i + j) = i + f(j) |
lcp@104 | 69 |
1. !!x. f(x + j) = x + f(j) ==> f(Suc(x) + j) = Suc(x) + f(j) |
lcp@104 | 70 |
> by (asm_simp_tac (f_ss addrews prems) 1); |
lcp@104 | 71 |
Level 3 |
lcp@104 | 72 |
f(i + j) = i + f(j) |
lcp@104 | 73 |
No subgoals! |