Theorem: RelEmbedding.collapseF.lt
File: Mathlib/Order/InitialSeg.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a✝ a : α
⊢ r a a✝ → s ↑(f.collapseF a) ↑(f.collapseF a✝)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ∀ (a_1 : α), r a_1 a → s ↑(f.collapseF a_1) ↑(f.collapseF a)
tactic: revert a
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ∀ (a_1 : α), r a_1 a → s ↑(f.collapseF a_1) ↑(f.collapseF a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(f.collapseF a) ∈ {b | ∀ (a' : α), r a' a → s (↑(f.collapseF a')) b}
tactic: show (collapseF f a).1 ∈ { b | ∀ (a') (_ : r a' a), s (collapseF f a').1 b }
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(f.collapseF a) ∈ {b | ∀ (a' : α), r a' a → s (↑(f.collapseF a')) b}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(⋯.fix
        (fun a IH =>
          let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
          let_fun this := ⋯;
          ⟨⋯.min S ⋯, ⋯⟩)
        a) ∈
    {b |
      ∀ (a' : α),
        r a' a →
          s
            (↑(⋯.fix
                (fun a IH =>
                  let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
                  let_fun this := ⋯;
                  ⟨⋯.min S ⋯, ⋯⟩)
                a'))
            b}
tactic: unfold collapseF
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(⋯.fix
        (fun a IH =>
          let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
          let_fun this := ⋯;
          ⟨⋯.min S ⋯, ⋯⟩)
        a) ∈
    {b |
      ∀ (a' : α),
        r a' a →
          s
            (↑(⋯.fix
                (fun a IH =>
                  let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
                  let_fun this := ⋯;
                  ⟨⋯.min S ⋯, ⋯⟩)
                a'))
            b}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(let S :=
        {b |
          ∀ (a_1 : α) (h : r a_1 a),
            s
              (↑((fun y x =>
                    ⋯.fix
                      (fun a IH =>
                        let S := {b | ∀ (a_2 : α) (h : r a_2 a), s (↑(IH a_2 h)) b};
                        let_fun this := ⋯;
                        ⟨⋯.min S ⋯, ⋯⟩)
                      y)
                  a_1 h))
              b};
      let_fun this := ⋯;
      ⟨⋯.min S ⋯, ⋯⟩) ∈
    {b |
      ∀ (a' : α),
        r a' a →
          s
            (↑(⋯.fix
                (fun a IH =>
                  let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
                  let_fun this := ⋯;
                  ⟨⋯.min S ⋯, ⋯⟩)
                a'))
            b}
tactic: rw [WellFounded.fix_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ↑(let S :=
        {b |
          ∀ (a_1 : α) (h : r a_1 a),
            s
              (↑((fun y x =>
                    ⋯.fix
                      (fun a IH =>
                        let S := {b | ∀ (a_2 : α) (h : r a_2 a), s (↑(IH a_2 h)) b};
                        let_fun this := ⋯;
                        ⟨⋯.min S ⋯, ⋯⟩)
                      y)
                  a_1 h))
              b};
      let_fun this := ⋯;
      ⟨⋯.min S ⋯, ⋯⟩) ∈
    {b |
      ∀ (a' : α),
        r a' a →
          s
            (↑(⋯.fix
                (fun a IH =>
                  let S := {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b};
                  let_fun this := ⋯;
                  ⟨⋯.min S ⋯, ⋯⟩)
                a'))
            b}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ⋯.min
      {b |
        ∀ (a_1 : α),
          r a_1 a → s (↑(⋯.fix (fun a IH => ⟨⋯.min {b | ∀ (a_2 : α) (h : r a_2 a), s (↑(IH a_2 h)) b} ⋯, ⋯⟩) a_1)) b}
      ⋯ ∈
    {b |
      ∀ (a' : α),
        r a' a → s (↑(⋯.fix (fun a IH => ⟨⋯.min {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b} ⋯, ⋯⟩) a')) b}
tactic: dsimp only
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ↪r s
a : α
⊢ ⋯.min
      {b |
        ∀ (a_1 : α),
          r a_1 a → s (↑(⋯.fix (fun a IH => ⟨⋯.min {b | ∀ (a_2 : α) (h : r a_2 a), s (↑(IH a_2 h)) b} ⋯, ⋯⟩) a_1)) b}
      ⋯ ∈
    {b |
      ∀ (a' : α),
        r a' a → s (↑(⋯.fix (fun a IH => ⟨⋯.min {b | ∀ (a_1 : α) (h : r a_1 a), s (↑(IH a_1 h)) b} ⋯, ⋯⟩) a')) b}
state_after: no goals
tactic: apply WellFounded.min_mem _ _