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

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
⊢ ∃ 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) := (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
⊢ ∃ 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: 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
⊢ ∃ 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: 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 ↦ ?_⟩⟩
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 AlgHom.ext fun x ↦ (hc.total i.2 j.2).elim (fun hij ↦ (hij.snd x).symm) fun hji ↦ ?_
state_before: 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)
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
x : ↥(↑i).carrier
hji : ↑j ≤ ↑i
⊢ ((fun i => (↑i).emb) i) x = (((fun i => (↑i).emb) j).comp (Subalgebra.inclusion h)) x

tactic: erw [AlgHom.comp_apply, ← hji.snd (Subalgebra.inclusion h x),
     inclusion_inclusion, inclusion_self, AlgHom.id_apply x]
state_before: 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
x : ↥(↑i).carrier
hji : ↑j ≤ ↑i
⊢ ((fun i => (↑i).emb) i) x = (((fun i => (↑i).emb) j).comp (Subalgebra.inclusion h)) x
state_after: no goals

tactic: dsimp only [AlgHom.comp_apply]
state_before: 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
state_after: 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
⊢ (Subalgebra.iSupLift t' dir (fun i => (↑i).emb) ⋯ (iSup t') ⋯)
      (↑((iSup t).equivOfEq (⨆ i, (t i).toSubalgebra) ⋯) ((inclusion ⋯) x)) =
    L.emb x

tactic: exact Subalgebra.iSupLift_inclusion (K := t') (i := ⟨L, hL⟩) x (le_iSup t' ⟨L, hL⟩)
state_before: 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
⊢ (Subalgebra.iSupLift t' dir (fun i => (↑i).emb) ⋯ (iSup t') ⋯)
      (↑((iSup t).equivOfEq (⨆ i, (t i).toSubalgebra) ⋯) ((inclusion ⋯) x)) =
    L.emb x
state_after: no goals