src/ZF/Nat.ML
changeset 2929 4eefc6c22d41
parent 2469 b50b8c0eec01
child 4091 771b1f6422a8
equal deleted inserted replaced
2928:c0e3f1ceabf2 2929:4eefc6c22d41
   102 
   102 
   103 goal Nat.thy "!!i. Limit(i) ==> nat le i";
   103 goal Nat.thy "!!i. Limit(i) ==> nat le i";
   104 by (rtac subset_imp_le 1);
   104 by (rtac subset_imp_le 1);
   105 by (rtac subsetI 1);
   105 by (rtac subsetI 1);
   106 by (etac nat_induct 1);
   106 by (etac nat_induct 1);
   107 by (fast_tac (!claset addIs [Limit_has_succ RS ltD, ltI, Limit_is_Ord]) 2);
   107 by (blast_tac (!claset addIs [Limit_has_succ RS ltD, ltI, Limit_is_Ord]) 2);
   108 by (REPEAT (ares_tac [Limit_has_0 RS ltD,
   108 by (REPEAT (ares_tac [Limit_has_0 RS ltD,
   109                       Ord_nat, Limit_is_Ord] 1));
   109                       Ord_nat, Limit_is_Ord] 1));
   110 qed "nat_le_Limit";
   110 qed "nat_le_Limit";
   111 
   111 
   112 (* succ(i): nat ==> i: nat *)
   112 (* succ(i): nat ==> i: nat *)
   184 qed "succ_lt_induct";
   184 qed "succ_lt_induct";
   185 
   185 
   186 (** nat_case **)
   186 (** nat_case **)
   187 
   187 
   188 goalw Nat.thy [nat_case_def] "nat_case(a,b,0) = a";
   188 goalw Nat.thy [nat_case_def] "nat_case(a,b,0) = a";
   189 by (fast_tac (!claset addIs [the_equality]) 1);
   189 by (blast_tac (!claset addIs [the_equality]) 1);
   190 qed "nat_case_0";
   190 qed "nat_case_0";
   191 
   191 
   192 goalw Nat.thy [nat_case_def] "nat_case(a,b,succ(m)) = b(m)";
   192 goalw Nat.thy [nat_case_def] "nat_case(a,b,succ(m)) = b(m)";
   193 by (fast_tac (!claset addIs [the_equality]) 1);
   193 by (blast_tac (!claset addIs [the_equality]) 1);
   194 qed "nat_case_succ";
   194 qed "nat_case_succ";
   195 
   195 
   196 Addsimps [nat_case_0, nat_case_succ];
   196 Addsimps [nat_case_0, nat_case_succ];
   197 
   197 
   198 val major::prems = goal Nat.thy
   198 val major::prems = goal Nat.thy