# HG changeset patch # User paulson # Date 890063277 -3600 # Node ID b855a7094195a7d225b6e33f03fd4713f7d84a28 # Parent 4469d498cd4815734b1312c6bbcdd9ba0ff29c87 re-ordered proofs diff -r 4469d498cd48 -r b855a7094195 src/HOL/NatDef.ML --- a/src/HOL/NatDef.ML Fri Mar 13 18:15:14 1998 +0100 +++ b/src/HOL/NatDef.ML Mon Mar 16 16:47:57 1998 +0100 @@ -320,52 +320,12 @@ Addsimps [gr_implies_gr0]; -(** Inductive (?) properties **) - -val [prem] = goal thy "Suc(m) < n ==> m P \ -\ |] ==> P"; -by (rtac (major RS lessE) 1); -by (etac (lessI RS minor) 1); -by (etac (Suc_lessD RS minor) 1); -by (assume_tac 1); -qed "Suc_lessE"; - -goal thy "!!m n. Suc(m) < Suc(n) ==> m Suc(m) < Suc(n)"; by (etac rev_mp 1); by (nat_ind_tac "n" 1); by (ALLGOALS (fast_tac (claset() addEs [less_trans, lessE]))); qed "Suc_mono"; - -goal thy "(Suc(m) < Suc(n)) = (m j Suc i < k"; -by (nat_ind_tac "k" 1); -by (ALLGOALS (asm_simp_tac (simpset()))); -by (asm_simp_tac (simpset() addsimps [less_Suc_eq]) 1); -by (blast_tac (claset() addDs [Suc_lessD]) 1); -qed_spec_mp "less_trans_Suc"; - (*"Less than" is a linear ordering*) goal thy "m Suc(m) < n"; +by (full_simp_tac (simpset() addsimps [nat_neq_iff]) 1); +by (blast_tac (claset() addSEs [less_irrefl, less_SucE] addEs [less_asym]) 1); +qed "Suc_lessI"; + +val [prem] = goal thy "Suc(m) < n ==> m P \ +\ |] ==> P"; +by (rtac (major RS lessE) 1); +by (etac (lessI RS minor) 1); +by (etac (Suc_lessD RS minor) 1); +by (assume_tac 1); +qed "Suc_lessE"; + +goal thy "!!m n. Suc(m) < Suc(n) ==> m j Suc i < k"; +by (nat_ind_tac "k" 1); +by (ALLGOALS (asm_simp_tac (simpset()))); +by (asm_simp_tac (simpset() addsimps [less_Suc_eq]) 1); +by (blast_tac (claset() addDs [Suc_lessD]) 1); +qed_spec_mp "less_trans_Suc"; + (*Can be used with less_Suc_eq to get n=m | n