Nat.ML
changeset 2 befa4e9f7c90
parent 0 7949f97df77a
child 5 968d2dccf2de
equal deleted inserted replaced
1:142f1eb707b4 2:befa4e9f7c90
   349 	     Suc_not_Zero, Zero_not_Suc, Suc_Suc_eq, 
   349 	     Suc_not_Zero, Zero_not_Suc, Suc_Suc_eq, 
   350 	     nat_case_0, nat_case_Suc, nat_rec_0, nat_rec_Suc];
   350 	     nat_case_0, nat_case_Suc, nat_rec_0, nat_rec_Suc];
   351 
   351 
   352 val nat_ss = pair_ss  addsimps  nat_simps;
   352 val nat_ss = pair_ss  addsimps  nat_simps;
   353 
   353 
       
   354 (*Prevents simplification of f and g: much faster*)
       
   355 val nat_case_weak_cong = prove_goal Nat.thy
       
   356   "m=n ==> nat_case(m,a,f) = nat_case(n,a,f)"
       
   357   (fn [prem] => [rtac (prem RS arg_cong) 1]);
       
   358 
       
   359 val nat_rec_weak_cong = prove_goal Nat.thy
       
   360   "m=n ==> nat_rec(m,a,f) = nat_rec(n,a,f)"
       
   361   (fn [prem] => [rtac (prem RS arg_cong) 1]);
       
   362 
   354 val prems = goalw Nat.thy [le_def] "~(n<m) ==> m<=n::nat";
   363 val prems = goalw Nat.thy [le_def] "~(n<m) ==> m<=n::nat";
   355 by (resolve_tac prems 1);
   364 by (resolve_tac prems 1);
   356 val leI = result();
   365 val leI = result();
   357 
   366 
   358 val prems = goalw Nat.thy [le_def] "m<=n ==> ~(n<m::nat)";
   367 val prems = goalw Nat.thy [le_def] "m<=n ==> ~(n<m::nat)";