Theorem: Cardinal.ord_le
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: let ⟨r, _, e⟩ := ord_eq α
state_before: α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
⊢ ord (#α) ≤ type s ↔ (#α) ≤ card (type s)

tactic: skip
state_before: α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
⊢ ord (#α) ≤ type s ↔ (#α) ≤ card (type s)

tactic: simp only [card_type]
state_before: α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
⊢ ord (#α) ≤ type s ↔ (#α) ≤ card (type s)

tactic: constructor <;> intro h
state_before: α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
⊢ ord (#α) ≤ type s ↔ (#α) ≤ (#β)

tactic: rw [e] at h
state_before: case mp
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
h : ord (#α) ≤ type s
⊢ (#α) ≤ (#β)

tactic: exact
  let ⟨f⟩ := h
  ⟨f.toEmbedding⟩
state_before: case mp
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
h : type r ≤ type s
⊢ (#α) ≤ (#β)

tactic: cases' h with f
state_before: case mpr
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
h : (#α) ≤ (#β)
⊢ ord (#α) ≤ type s

tactic: have g := RelEmbedding.preimage f s
state_before: case mpr.intro
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
f : α ↪ β
⊢ ord (#α) ≤ type s

tactic: haveI := RelEmbedding.isWellOrder g
state_before: case mpr.intro
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
f : α ↪ β
g : ↑f ⁻¹'o s ↪r s
⊢ ord (#α) ≤ type s

tactic: exact le_trans (ord_le_type _) g.ordinal_type_le
state_before: case mpr.intro
α✝ : Type ?u.223328
β✝ : Type ?u.223331
γ : Type ?u.223334
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
c : Cardinal
o : Ordinal
α β : Type u_1
s : β → β → Prop
x✝ : IsWellOrder β s
r : α → α → Prop
w✝ : IsWellOrder α r
e : ord (#α) = type r
f : α ↪ β
g : ↑f ⁻¹'o s ↪r s
this : IsWellOrder α (↑f ⁻¹'o s)
⊢ ord (#α) ≤ type s