Theorem: Ordinal.succ_le_iff'
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: haveI := hs
state_before: α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
⊢ type r + 1 ≤ type s
state_after: α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
⊢ type r + 1 ≤ type s

tactic: refine ⟨⟨RelEmbedding.ofMonotone (Sum.rec f fun _ => t) (fun a b ↦ ?_), fun a b ↦ ?_⟩⟩
state_before: α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
⊢ type r + 1 ≤ type s
state_after: case refine_1
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a b : α ⊕ PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation a b →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) a) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) b)

case refine_2
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α ⊕ PUnit.{u_3 + 1}
b : β
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: rcases a with (a | _) <;> rcases b with (b | _)
state_before: case refine_1
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a b : α ⊕ PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation a b →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) a) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) b)
state_after: case refine_1.inl.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a b : α
⊢ Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inl b) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl b))

case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))

case refine_1.inr.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
val✝ : PUnit.{u_3 + 1}
b : α
⊢ Sum.Lex r EmptyRelation (Sum.inr val✝) (Sum.inl b) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl b))

case refine_1.inr.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
val✝¹ val✝ : PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation (Sum.inr val✝¹) (Sum.inr val✝) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝¹))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))

tactic: simpa only [Sum.lex_inl_inl] using f.map_rel_iff.2
state_before: case refine_1.inl.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a b : α
⊢ Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inl b) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl b))
state_after: no goals

tactic: intro
state_before: case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))
state_after: case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝¹ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
a✝ : Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝)
⊢ s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))

tactic: rw [hf]
state_before: case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝¹ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
a✝ : Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝)
⊢ s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)) ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))
state_after: case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝¹ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
a✝ : Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝)
⊢ ∃ a_1, f a_1 = (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)

tactic: exact ⟨_, rfl⟩
state_before: case refine_1.inl.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝¹ b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α
val✝ : PUnit.{u_3 + 1}
a✝ : Sum.Lex r EmptyRelation (Sum.inl a) (Sum.inr val✝)
⊢ ∃ a_1, f a_1 = (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl a)
state_after: no goals

tactic: exact False.elim ∘ Sum.lex_inr_inl
state_before: case refine_1.inr.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
val✝ : PUnit.{u_3 + 1}
b : α
⊢ Sum.Lex r EmptyRelation (Sum.inr val✝) (Sum.inl b) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inl b))
state_after: no goals

tactic: exact False.elim ∘ Sum.lex_inr_inr.1
state_before: case refine_1.inr.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
val✝¹ val✝ : PUnit.{u_3 + 1}
⊢ Sum.Lex r EmptyRelation (Sum.inr val✝¹) (Sum.inr val✝) →
    s ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝¹))
      ((fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) (Sum.inr val✝))
state_after: no goals

tactic: rcases a with (a | _)
state_before: case refine_2
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
a : α ⊕ PUnit.{u_3 + 1}
b : β
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a)) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

case refine_2.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝)) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: intro h
state_before: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a)) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: have := @PrincipalSeg.init _ _ _ _ _ ⟨f, t, hf⟩ _ _ h
state_before: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this✝ : IsWellOrder β s
b : β
a : α
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
this : ∃ a', { toRelEmbedding := f, top := t, down' := hf }.toRelEmbedding a' = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: cases' this with w h
state_before: case refine_2.inl
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this✝ : IsWellOrder β s
b : β
a : α
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
this : ∃ a', { toRelEmbedding := f, top := t, down' := hf }.toRelEmbedding a' = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inl.intro
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
h✝ : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
w : α
h : { toRelEmbedding := f, top := t, down' := hf }.toRelEmbedding w = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: exact ⟨Sum.inl w, h⟩
state_before: case refine_2.inl.intro
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a✝ b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
a : α
h✝ : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inl a))
w : α
h : { toRelEmbedding := f, top := t, down' := hf }.toRelEmbedding w = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: no goals

tactic: intro h
state_before: case refine_2.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
⊢ s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝)) →
    ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝))
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: cases' (hf b).1 h with w h
state_before: case refine_2.inr
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
h : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝))
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: case refine_2.inr.intro
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
h✝ : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝))
w : α
h : f w = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b

tactic: exact ⟨Sum.inl w, h⟩
state_before: case refine_2.inr.intro
α✝ : Type u
β✝ : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t✝ : γ → γ → Prop
a b✝ : Ordinal.{u_3}
α : Type u_3
r : α → α → Prop
hr : IsWellOrder α r
β : Type u_3
s : β → β → Prop
hs : IsWellOrder β s
x✝ : type r < type s
f : r ↪r s
t : β
hf : ∀ (b : β), s b t ↔ ∃ a, f a = b
this : IsWellOrder β s
b : β
val✝ : PUnit.{u_3 + 1}
h✝ : s b ((RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) (Sum.inr val✝))
w : α
h : f w = b
⊢ ∃ a', (RelEmbedding.ofMonotone (fun t_1 => Sum.rec (⇑f) (fun x => t) t_1) ⋯) a' = b
state_after: no goals