equal
deleted
inserted
replaced
240 goalw Nat.thy [less_def] "~ n<(n::nat)"; |
240 goalw Nat.thy [less_def] "~ n<(n::nat)"; |
241 by (rtac notI 1); |
241 by (rtac notI 1); |
242 by (etac (wf_pred_nat RS wf_trancl RS wf_irrefl) 1); |
242 by (etac (wf_pred_nat RS wf_trancl RS wf_irrefl) 1); |
243 qed "less_not_refl"; |
243 qed "less_not_refl"; |
244 |
244 |
245 (* n(n ==> R *) |
245 (* n<n ==> R *) |
246 bind_thm ("less_irrefl", (less_not_refl RS notE)); |
246 bind_thm ("less_irrefl", (less_not_refl RS notE)); |
247 |
247 |
248 goal Nat.thy "!!m. n<m ==> m ~= (n::nat)"; |
248 goal Nat.thy "!!m. n<m ==> m ~= (n::nat)"; |
249 by (fast_tac (!claset addEs [less_irrefl]) 1); |
249 by (fast_tac (!claset addEs [less_irrefl]) 1); |
250 qed "less_not_refl2"; |
250 qed "less_not_refl2"; |
454 |
454 |
455 goalw Nat.thy [le_def] "!!m. Suc(m) <= n ==> m <= n"; |
455 goalw Nat.thy [le_def] "!!m. Suc(m) <= n ==> m <= n"; |
456 by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1); |
456 by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1); |
457 by (Fast_tac 1); |
457 by (Fast_tac 1); |
458 qed "Suc_leD"; |
458 qed "Suc_leD"; |
|
459 |
|
460 (* stronger version of Suc_leD *) |
|
461 goalw Nat.thy [le_def] |
|
462 "!!m. Suc m <= n ==> m < n"; |
|
463 by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1); |
|
464 by (cut_facts_tac [less_linear] 1); |
|
465 by (fast_tac HOL_cs 1); |
|
466 qed "Suc_le_lessD"; |
|
467 |
|
468 goal Nat.thy "(Suc m <= n) = (m < n)"; |
|
469 by (fast_tac (!claset addIs [lessD, Suc_le_lessD]) 1); |
|
470 qed "Suc_le_eq"; |
459 |
471 |
460 goalw Nat.thy [le_def] "!!m. m <= n ==> m <= Suc n"; |
472 goalw Nat.thy [le_def] "!!m. m <= n ==> m <= Suc n"; |
461 by (fast_tac (!claset addDs [Suc_lessD]) 1); |
473 by (fast_tac (!claset addDs [Suc_lessD]) 1); |
462 qed "le_SucI"; |
474 qed "le_SucI"; |
463 Addsimps[le_SucI]; |
475 Addsimps[le_SucI]; |