Theorem: Cardinal.lt_wf
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: let f : ι → Cardinal := Subtype.val
state_before: α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (?u.43215 + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
⊢ False
state_after: α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (?u.43215 + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{?u.43215} := Subtype.val
⊢ False

tactic: haveI hι : Nonempty ι := ⟨⟨_, h⟩⟩
state_before: α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (?u.43215 + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{?u.43215} := Subtype.val
⊢ False
state_after: α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
⊢ False

tactic: refine hc (Acc.intro _ fun j h' => by_contradiction fun hj => h'.2 ?_)
state_before: case intro.mk.intro
α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
c : Cardinal.{u}
hc : ¬Acc (fun x x_1 => x < x_1) c
h_1 : (j : ι) → Quotient.out (f ⟨c, hc⟩) ↪ Quotient.out (f j)
⊢ False
state_after: case intro.mk.intro
α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
c : Cardinal.{u}
hc : ¬Acc (fun x x_1 => x < x_1) c
h_1 : (j : ι) → Quotient.out (f ⟨c, hc⟩) ↪ Quotient.out (f j)
j : Cardinal.{u}
h' : j < c
hj : ¬Acc (fun x x_1 => x < x_1) j
⊢ Quotient.liftOn₂ c j (fun α β => Nonempty (α ↪ β)) instLE.proof_1

tactic: have : #_ ≤ #_ := ⟨h_1 ⟨j, hj⟩⟩
state_before: case intro.mk.intro
α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
c : Cardinal.{u}
hc : ¬Acc (fun x x_1 => x < x_1) c
h_1 : (j : ι) → Quotient.out (f ⟨c, hc⟩) ↪ Quotient.out (f j)
j : Cardinal.{u}
h' : j < c
hj : ¬Acc (fun x x_1 => x < x_1) j
⊢ Quotient.liftOn₂ c j (fun α β => Nonempty (α ↪ β)) instLE.proof_1
state_after: case intro.mk.intro
α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
c : Cardinal.{u}
hc : ¬Acc (fun x x_1 => x < x_1) c
h_1 : (j : ι) → Quotient.out (f ⟨c, hc⟩) ↪ Quotient.out (f j)
j : Cardinal.{u}
h' : j < c
hj : ¬Acc (fun x x_1 => x < x_1) j
this : #(Quotient.out (f ⟨c, hc⟩)) ≤ #(Quotient.out (f ⟨j, hj⟩))
⊢ Quotient.liftOn₂ c j (fun α β => Nonempty (α ↪ β)) instLE.proof_1

tactic: simpa only [mk_out] using this
state_before: case intro.mk.intro
α β : Type u
a : Cardinal.{u}
h : ¬Acc (fun x x_1 => x < x_1) a
ι : Type (u + 1) := { c // ¬Acc (fun x x_1 => x < x_1) c }
f : ι → Cardinal.{u} := Subtype.val
hι : Nonempty ι
c : Cardinal.{u}
hc : ¬Acc (fun x x_1 => x < x_1) c
h_1 : (j : ι) → Quotient.out (f ⟨c, hc⟩) ↪ Quotient.out (f j)
j : Cardinal.{u}
h' : j < c
hj : ¬Acc (fun x x_1 => x < x_1) j
this : #(Quotient.out (f ⟨c, hc⟩)) ≤ #(Quotient.out (f ⟨j, hj⟩))
⊢ Quotient.liftOn₂ c j (fun α β => Nonempty (α ↪ β)) instLE.proof_1
state_after: no goals