Theorem: lift.SubfieldWithHom.maximal_subfieldWithHom_chain_bounded
File: Mathlib/FieldTheory/IsAlgClosed/Basic.lean

tactic: by_cases hcn : c.Nonempty
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: case neg => rw [Set.not_nonempty_iff_eq_empty] at hcn; simp [hcn]
state_before: case pos
k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

case neg
k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : ¬Set.Nonempty c
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: rw [Set.not_nonempty_iff_eq_empty] at hcn
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : ¬Set.Nonempty c
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: simp [hcn]
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : c = ∅
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: have : Nonempty c := Set.Nonempty.to_subtype hcn
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: exact ⟨ub, fun N hN =>
     ⟨(le_iSup (fun i : c => (i : SubfieldWithHom K L M).carrier) ⟨N, hN⟩ : _), by
       intro x
       simp⟩⟩
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
ub : SubfieldWithHom K L M :=
  { carrier := ⨆ (i : ↑c), (↑i).carrier,
    emb :=
      iSupLift (fun i => (↑i).carrier)
        (_ :
          ∀ (i j : ↑c),
            ∃ z,
              (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) i) ((fun i => (↑i).carrier) z) ∧
                (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) j) ((fun i => (↑i).carrier) z))
        (fun i => (↑i).emb)
        (_ :
          ∀ (i j : ↑c) (h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j),
            (fun i => (↑i).emb) i = AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h))
        (⨆ (i : ↑c), (↑i).carrier) (_ : (⨆ (i : ↑c), (↑i).carrier) = ⨆ (i : ↑c), (↑i).carrier) }
⊢ ∃ ub, ∀ (N : SubfieldWithHom K L M), N ∈ c → N ≤ ub

tactic: intro i j h
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
⊢ ∀ (i j : ↑c) (h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j),
    (fun i => (↑i).emb) i = AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h)

tactic: ext x
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
i j : ↑c
h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j
⊢ (fun i => (↑i).emb) i = AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h)

tactic: cases' hc.total i.prop j.prop with hij hji
state_before: case H
k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
i j : ↑c
h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j
x : { x // x ∈ (↑i).carrier }
⊢ ↑((fun i => (↑i).emb) i) x = ↑(AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h)) x

tactic: simp [← hij.snd x]
state_before: case H.inl
k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
i j : ↑c
h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j
x : { x // x ∈ (↑i).carrier }
hij : ↑i ≤ ↑j
⊢ ↑((fun i => (↑i).emb) i) x = ↑(AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h)) x

tactic: erw [AlgHom.comp_apply, ← hji.snd (inclusion h x), inclusion_inclusion,
  inclusion_self, AlgHom.id_apply x]
state_before: case H.inr
k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
i j : ↑c
h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j
x : { x // x ∈ (↑i).carrier }
hji : ↑j ≤ ↑i
⊢ ↑((fun i => (↑i).emb) i) x = ↑(AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h)) x

tactic: intro x
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
ub : SubfieldWithHom K L M :=
  { carrier := ⨆ (i : ↑c), (↑i).carrier,
    emb :=
      iSupLift (fun i => (↑i).carrier)
        (_ :
          ∀ (i j : ↑c),
            ∃ z,
              (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) i) ((fun i => (↑i).carrier) z) ∧
                (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) j) ((fun i => (↑i).carrier) z))
        (fun i => (↑i).emb)
        (_ :
          ∀ (i j : ↑c) (h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j),
            (fun i => (↑i).emb) i = AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h))
        (⨆ (i : ↑c), (↑i).carrier) (_ : (⨆ (i : ↑c), (↑i).carrier) = ⨆ (i : ↑c), (↑i).carrier) }
N : SubfieldWithHom K L M
hN : N ∈ c
⊢ ∀ (x : { x // x ∈ N.carrier }),
    ↑ub.emb (↑(inclusion (_ : (↑{ val := N, property := hN }).carrier ≤ ⨆ (i : ↑c), (↑i).carrier)) x) = ↑N.emb x

tactic: simp
state_before: k : Type u
inst✝⁶ : Field k
K : Type u
L : Type v
M : Type w
inst✝⁵ : Field K
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : Field M
inst✝¹ : Algebra K M
inst✝ : IsAlgClosed M
hL : Algebra.IsAlgebraic K L
E₁ E₂ E₃ : SubfieldWithHom K L M
c : Set (SubfieldWithHom K L M)
hc : IsChain (fun x x_1 => x ≤ x_1) c
hcn : Set.Nonempty c
this : Nonempty ↑c
ub : SubfieldWithHom K L M :=
  { carrier := ⨆ (i : ↑c), (↑i).carrier,
    emb :=
      iSupLift (fun i => (↑i).carrier)
        (_ :
          ∀ (i j : ↑c),
            ∃ z,
              (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) i) ((fun i => (↑i).carrier) z) ∧
                (fun x x_1 => x ≤ x_1) ((fun i => (↑i).carrier) j) ((fun i => (↑i).carrier) z))
        (fun i => (↑i).emb)
        (_ :
          ∀ (i j : ↑c) (h : (fun i => (↑i).carrier) i ≤ (fun i => (↑i).carrier) j),
            (fun i => (↑i).emb) i = AlgHom.comp ((fun i => (↑i).emb) j) (inclusion h))
        (⨆ (i : ↑c), (↑i).carrier) (_ : (⨆ (i : ↑c), (↑i).carrier) = ⨆ (i : ↑c), (↑i).carrier) }
N : SubfieldWithHom K L M
hN : N ∈ c
x : { x // x ∈ N.carrier }
⊢ ↑ub.emb (↑(inclusion (_ : (↑{ val := N, property := hN }).carrier ≤ ⨆ (i : ↑c), (↑i).carrier)) x) = ↑N.emb x