equal
deleted
inserted
replaced
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 |