Theorem: IntermediateField.Lifts.exists_upper_bound
File: Mathlib/FieldTheory/Extension.lean

Proof steps:
state_before: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc : IsChain (fun x x_1 => x ≤ x_1) c
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
state_after: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
tactic: let t (i : ↑(insert ⊥ c)) := i.val.carrier
state_before: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
state_after: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
tactic: let t' (i) := (t i).toSubalgebra
state_before: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
state_after: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc✝ : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
hc : IsChain (fun x x_1 => x ≤ x_1) (insert ⊥ c)
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
tactic: have hc := hc.insert fun _ _ _ ↦ .inl bot_le
state_before: F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc✝ : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
hc : IsChain (fun x x_1 => x ≤ x_1) (insert ⊥ c)
dir : Directed (fun x x_1 => x ≤ x_1) t
⊢ ∃ ub, ∀ a ∈ c, a ≤ ub
state_after: case refine_1
F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc✝ : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
hc : IsChain (fun x x_1 => x ≤ x_1) (insert ⊥ c)
dir : Directed (fun x x_1 => x ≤ x_1) t
i j : ↑(insert ⊥ c)
h : t' i ≤ t' j
⊢ (fun i => (↑i).emb) i = ((fun i => (↑i).emb) j).comp (Subalgebra.inclusion h)

case refine_2
F : Type u_1
E : Type u_2
K : Type u_3
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Field K
inst✝¹ : Algebra F E
inst✝ : Algebra F K
S : Set E
c : Set (Lifts F E K)
hc✝ : IsChain (fun x x_1 => x ≤ x_1) c
t : ↑(insert ⊥ c) → IntermediateField F E := fun i => (↑i).carrier
t' : ↑(insert ⊥ c) → Subalgebra F E := fun i => (t i).toSubalgebra
hc : IsChain (fun x x_1 => x ≤ x_1) (insert ⊥ c)
dir : Directed (fun x x_1 => x ≤ x_1) t
L : Lifts F E K
hL✝ : L ∈ c
hL : L ∈ insert ⊥ c
x : ↥L.carrier
⊢ { carrier := iSup t,
          emb :=
            (Subalgebra.iSupLift t' dir (fun i => (↑i).emb) ⋯ (iSup t') ⋯).comp
              ↑((iSup t).equivOfEq (⨆ i, (t i).toSubalgebra) ⋯) }.emb
      ((inclusion ⋯) x) =
    L.emb x
tactic: refine ⟨⟨iSup t, (Subalgebra.iSupLift t' dir (fun i ↦ i.val.emb) (fun i j h ↦ ?_) _ rfl).comp
      (Subalgebra.equivOfEq _ _ <| toSubalgebra_iSup_of_directed dir)⟩,
    fun L hL ↦ have hL := Set.mem_insert_of_mem ⊥ hL; ⟨le_iSup t ⟨L, hL⟩, fun x ↦ ?_⟩⟩