equal
deleted
inserted
replaced
241 |
241 |
242 lemma Normal_imp_mono: "[| i<j; Normal(F) |] ==> F(i) < F(j)" |
242 lemma Normal_imp_mono: "[| i<j; Normal(F) |] ==> F(i) < F(j)" |
243 by (simp add: Normal_def mono_Ord_def) |
243 by (simp add: Normal_def mono_Ord_def) |
244 |
244 |
245 lemma Normal_increasing: "[| Ord(i); Normal(F) |] ==> i\<le>F(i)" |
245 lemma Normal_increasing: "[| Ord(i); Normal(F) |] ==> i\<le>F(i)" |
246 apply (induct i rule: trans_induct3_rule) |
246 apply (induct i rule: trans_induct3) |
247 apply (simp add: subset_imp_le) |
247 apply (simp add: subset_imp_le) |
248 apply (subgoal_tac "F(x) < F(succ(x))") |
248 apply (subgoal_tac "F(x) < F(succ(x))") |
249 apply (force intro: lt_trans1) |
249 apply (force intro: lt_trans1) |
250 apply (simp add: Normal_def mono_Ord_def) |
250 apply (simp add: Normal_def mono_Ord_def) |
251 apply (subgoal_tac "(\<Union>y<x. y) \<le> (\<Union>y<x. F(y))") |
251 apply (subgoal_tac "(\<Union>y<x. y) \<le> (\<Union>y<x. F(y))") |
381 "normalize(F,a) == transrec2(a, F(0), \<lambda>x r. F(succ(x)) \<union> succ(r))" |
381 "normalize(F,a) == transrec2(a, F(0), \<lambda>x r. F(succ(x)) \<union> succ(r))" |
382 |
382 |
383 |
383 |
384 lemma Ord_normalize [simp, intro]: |
384 lemma Ord_normalize [simp, intro]: |
385 "[| Ord(a); !!x. Ord(x) ==> Ord(F(x)) |] ==> Ord(normalize(F, a))" |
385 "[| Ord(a); !!x. Ord(x) ==> Ord(F(x)) |] ==> Ord(normalize(F, a))" |
386 apply (induct a rule: trans_induct3_rule) |
386 apply (induct a rule: trans_induct3) |
387 apply (simp_all add: ltD def_transrec2 [OF normalize_def]) |
387 apply (simp_all add: ltD def_transrec2 [OF normalize_def]) |
388 done |
388 done |
389 |
389 |
390 lemma normalize_lemma [rule_format]: |
390 lemma normalize_lemma [rule_format]: |
391 "[| Ord(b); !!x. Ord(x) ==> Ord(F(x)) |] |
391 "[| Ord(b); !!x. Ord(x) ==> Ord(F(x)) |] |