@@ -505,12 +505,16 @@ theorem type_eq {α β} {r : α → α → Prop} {s : β → β → Prop}
505
505
quotient.eq
506
506
507
507
theorem _root_.rel_iso.ordinal_type_eq {α β} {r : α → α → Prop } {s : β → β → Prop }
508
- [is_well_order α r] [is_well_order β s] (h : r ≃r s) :
509
- type r = type s := type_eq.2 ⟨h⟩
508
+ [is_well_order α r] [is_well_order β s] (h : r ≃r s) : type r = type s :=
509
+ type_eq.2 ⟨h⟩
510
510
511
511
@[simp] theorem type_lt (o : ordinal) : type ((<) : o.out.α → o.out.α → Prop ) = o :=
512
512
(type_def' _).symm.trans $ quotient.out_eq o
513
513
514
+ @[simp] theorem type_preimage {α β : Type u} (r : α → α → Prop ) [is_well_order α r] (f : β ≃ α) :
515
+ type (f ⁻¹'o r) = type r :=
516
+ (rel_iso.preimage f r).ordinal_type_eq
517
+
514
518
@[elab_as_eliminator] theorem induction_on {C : ordinal → Prop }
515
519
(o : ordinal) (H : ∀ α r [is_well_order α r], by exactI C (type r)) : C o :=
516
520
quot.induction_on o $ λ ⟨α, r, wo⟩, @H α r wo
@@ -808,16 +812,23 @@ quotient.sound ⟨⟨punit_equiv_punit, λ _ _, iff.rfl⟩⟩
808
812
a proper initial segment of `ordinal.{v}` for `v > u`. For the initial segment version,
809
813
see `lift.initial_seg`. -/
810
814
def lift (o : ordinal.{v}) : ordinal.{max v u} :=
811
- quotient.lift_on o (λ ⟨α, r, wo⟩,
812
- @type _ _ (@rel_embedding.is_well_order _ _ (@equiv.ulift.{u} α ⁻¹'o r) r
813
- (rel_iso.preimage equiv.ulift.{u} r) wo)) $
814
- λ ⟨α, r, _⟩ ⟨β, s, _⟩ ⟨f⟩,
815
- quot.sound ⟨(rel_iso.preimage equiv.ulift r).trans $
816
- f.trans (rel_iso.preimage equiv.ulift s).symm⟩
815
+ quotient.lift_on o (λ w, type $ ulift.down ⁻¹'o w.r) $
816
+ λ ⟨α, r, _⟩ ⟨β, s, _⟩ ⟨f⟩, quot.sound ⟨(rel_iso.preimage equiv.ulift r).trans $
817
+ f.trans (rel_iso.preimage equiv.ulift s).symm⟩
818
+
819
+ @[simp] theorem type_ulift (r : α → α → Prop ) [is_well_order α r] :
820
+ type (ulift.down ⁻¹'o r) = lift.{v} (type r) :=
821
+ rfl
822
+
823
+ theorem _root_.rel_iso.ordinal_lift_type_eq {α : Type u} {β : Type v}
824
+ {r : α → α → Prop } {s : β → β → Prop } [is_well_order α r] [is_well_order β s] (f : r ≃r s) :
825
+ lift.{v} (type r) = lift.{u} (type s) :=
826
+ ((rel_iso.preimage equiv.ulift r).trans $
827
+ f.trans (rel_iso.preimage equiv.ulift s).symm).ordinal_type_eq
817
828
818
- theorem lift_type {α} (r : α → α → Prop ) [is_well_order α r] :
819
- ∃ wo', lift (type r) = @type _ (@equiv.ulift.{v} α ⁻¹'o r) wo' :=
820
- ⟨_, rfl⟩
829
+ @[simp] theorem type_lift_preimage {α : Type u} {β : Type v} (r : α → α → Prop ) [is_well_order α r]
830
+ (f : β ≃ α) : lift.{u} (type (f ⁻¹'o r)) = lift.{v} (type r) :=
831
+ (rel_iso.preimage f r).ordinal_lift_type_eq
821
832
822
833
/-- `lift.{(max u v) u}` equals `lift.{v u}`. Using `set_option pp.universes true` will make it much
823
834
easier to understand what's happening when using this lemma. -/
@@ -871,22 +882,18 @@ by haveI := @rel_embedding.is_well_order _ _ (@equiv.ulift.{max v w} α ⁻¹'o
871
882
(initial_seg.of_iso (rel_iso.preimage equiv.ulift s).symm)⟩⟩
872
883
873
884
@[simp] theorem lift_le {a b : ordinal} : lift.{u v} a ≤ lift b ↔ a ≤ b :=
874
- induction_on a $ λ α r _, induction_on b $ λ β s _,
875
- by rw ← lift_umax; exactI lift_type_le
885
+ induction_on a $ λ α r _, induction_on b $ λ β s _, by { rw ← lift_umax, exactI lift_type_le }
876
886
877
887
@[simp] theorem lift_inj {a b : ordinal} : lift a = lift b ↔ a = b :=
878
888
by simp only [le_antisymm_iff, lift_le]
879
889
880
890
@[simp] theorem lift_lt {a b : ordinal} : lift a < lift b ↔ a < b :=
881
891
by simp only [lt_iff_le_not_le, lift_le]
882
892
883
- @[simp] theorem lift_zero : lift 0 = 0 :=
884
- quotient.sound ⟨(rel_iso.preimage equiv.ulift _).trans
885
- ⟨equiv_of_is_empty _ _, λ a b, iff.rfl⟩⟩
893
+ @[simp] theorem lift_zero : lift 0 = 0 := (rel_iso.rel_iso_of_is_empty _ _).ordinal_type_eq
886
894
887
895
@[simp] theorem lift_one : lift 1 = 1 :=
888
- quotient.sound ⟨(rel_iso.preimage equiv.ulift _).trans
889
- ⟨punit_equiv_punit, λ a b, iff.rfl⟩⟩
896
+ quotient.sound ⟨(rel_iso.preimage equiv.ulift _).trans ⟨punit_equiv_punit, λ a b, iff.rfl⟩⟩
890
897
891
898
theorem one_eq_lift_type_unit : 1 = lift.{u} (@type unit empty_relation _) :=
892
899
by rw [← one_eq_type_unit, lift_one]
0 commit comments