diff -r a642599ffdea -r 9fc34f76b4e8 src/ZF/OrderType.thy --- a/src/ZF/OrderType.thy Tue Sep 27 17:46:52 2022 +0100 +++ b/src/ZF/OrderType.thy Tue Sep 27 17:54:20 2022 +0100 @@ -80,7 +80,7 @@ apply (frule lt_pred_Memrel) apply (erule ltE) apply (rule well_ord_Memrel [THEN well_ord_iso_predE, of i f j], auto) -apply (unfold ord_iso_def) + unfolding ord_iso_def (*Combining the two simplifications causes looping*) apply (simp (no_asm_simp)) apply (blast intro: bij_is_fun [THEN apply_type] Ord_trans) @@ -156,7 +156,7 @@ lemma Ord_ordertype: "well_ord(A,r) \ Ord(ordertype(A,r))" -apply (unfold ordertype_def) + unfolding ordertype_def apply (subst image_fun [OF ordermap_type subset_refl]) apply (rule OrdI [OF _ Ord_is_Transset]) prefer 2 apply (blast intro: Ord_ordermap) @@ -201,7 +201,7 @@ lemma ordertype_ord_iso: "well_ord(A,r) \ ordermap(A,r) \ ord_iso(A,r, ordertype(A,r), Memrel(ordertype(A,r)))" -apply (unfold ord_iso_def) + unfolding ord_iso_def apply (safe elim!: well_ord_is_wf intro!: ordermap_type [THEN apply_type] ordermap_mono ordermap_bij) apply (blast dest!: converse_ordermap_mono) @@ -272,7 +272,7 @@ lemma ordertype_unfold: "ordertype(A,r) = {ordermap(A,r)`y . y \ A}" -apply (unfold ordertype_def) + unfolding ordertype_def apply (rule image_fun [OF ordermap_type subset_refl]) done @@ -311,7 +311,7 @@ (*proof by Krzysztof Grabczewski*) lemma Ord_is_Ord_alt: "Ord(i) \ Ord_alt(i)" -apply (unfold Ord_alt_def) + unfolding Ord_alt_def apply (rule conjI) apply (erule well_ord_Memrel) apply (unfold Ord_def Transset_def pred_def Memrel_def, blast) @@ -363,7 +363,7 @@ lemma pred_Inl_bij: "a \ A \ (\x\pred(A,a,r). Inl(x)) \ bij(pred(A,a,r), pred(A+B, Inl(a), radd(A,r,B,s)))" -apply (unfold pred_def) + unfolding pred_def apply (rule_tac d = "case (\x. x, \y. y) " in lam_bijective) apply auto done @@ -709,7 +709,7 @@ lemma Ord_odiff [simp,TC]: "\Ord(i); Ord(j)\ \ Ord(i--j)" -apply (unfold odiff_def) + unfolding odiff_def apply (blast intro: Ord_ordertype Diff_subset well_ord_subset well_ord_Memrel) done @@ -750,7 +750,7 @@ lemma Ord_omult [simp,TC]: "\Ord(i); Ord(j)\ \ Ord(i**j)" -apply (unfold omult_def) + unfolding omult_def apply (blast intro: Ord_ordertype well_ord_rmult well_ord_Memrel) done @@ -797,7 +797,7 @@ lemma lt_omult: "\Ord(i); Ord(j); k \ \j' i'. k = j**i' ++ j' \ j' i'j' \ j**i' ++ j' < j**i" -apply (unfold omult_def) + unfolding omult_def apply (rule ltI) prefer 2 apply (simp add: Ord_ordertype well_ord_rmult well_ord_Memrel lt_Ord2) @@ -834,19 +834,19 @@ text\Ordinal multiplication by zero\ lemma omult_0 [simp]: "i**0 = 0" -apply (unfold omult_def) + unfolding omult_def apply (simp (no_asm_simp)) done lemma omult_0_left [simp]: "0**i = 0" -apply (unfold omult_def) + unfolding omult_def apply (simp (no_asm_simp)) done text\Ordinal multiplication by 1\ lemma omult_1 [simp]: "Ord(i) \ i**1 = i" -apply (unfold omult_def) + unfolding omult_def apply (rule_tac s1="Memrel(i)" in ord_isoI [THEN ordertype_eq, THEN trans]) apply (rule_tac c = snd and d = "\z.\0,z\" in lam_bijective) @@ -854,7 +854,7 @@ done lemma omult_1_left [simp]: "Ord(i) \ 1**i = i" -apply (unfold omult_def) + unfolding omult_def apply (rule_tac s1="Memrel(i)" in ord_isoI [THEN ordertype_eq, THEN trans]) apply (rule_tac c = fst and d = "\z.\z,0\" in lam_bijective) @@ -886,7 +886,7 @@ lemma omult_assoc: "\Ord(i); Ord(j); Ord(k)\ \ (i**j)**k = i**(j**k)" -apply (unfold omult_def) + unfolding omult_def apply (rule ordertype_eq [THEN trans]) apply (rule prod_ord_iso_cong [OF ord_iso_refl ordertype_ord_iso [THEN ord_iso_sym]])