Theorem: Subfield.mem_iSup_of_directed
File: Mathlib/FieldTheory/Subfield.lean

tactic: refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
⊢ (x ∈ ⨆ (i : ι), S i) ↔ ∃ i, x ∈ S i

tactic: suffices x ∈ closure (⋃ i, (S i : Set K)) → ∃ i, x ∈ S i by
  simpa only [closure_iUnion, closure_eq]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
⊢ (x ∈ ⨆ (i : ι), S i) → ∃ i, x ∈ S i

tactic: refine' fun hx => closure_induction hx (fun x => Set.mem_iUnion.mp) _ _ _ _ _
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
⊢ x ∈ closure (⋃ (i : ι), ↑(S i)) → ∃ i, x ∈ S i

tactic: simpa only [closure_iUnion, closure_eq]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
this : x ∈ closure (⋃ (i : ι), ↑(S i)) → ∃ i, x ∈ S i
⊢ (x ∈ ⨆ (i : ι), S i) → ∃ i, x ∈ S i

tactic: exact hι.elim fun i => ⟨i, (S i).one_mem⟩
state_before: case refine'_1
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
hx : x ∈ closure (⋃ (i : ι), ↑(S i))
⊢ ∃ i, 1 ∈ S i

tactic: rintro x y ⟨i, hi⟩ ⟨j, hj⟩
state_before: case refine'_2
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
hx : x ∈ closure (⋃ (i : ι), ↑(S i))
⊢ ∀ (x y : K), (∃ i, x ∈ S i) → (∃ i, y ∈ S i) → ∃ i, x + y ∈ S i

tactic: obtain ⟨k, hki, hkj⟩ := hS i j
state_before: case refine'_2.intro.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x y : K
i : ι
hi : x ∈ S i
j : ι
hj : y ∈ S j
⊢ ∃ i, x + y ∈ S i

tactic: exact ⟨k, (S k).add_mem (hki hi) (hkj hj)⟩
state_before: case refine'_2.intro.intro.intro.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x y : K
i : ι
hi : x ∈ S i
j : ι
hj : y ∈ S j
k : ι
hki : S i ≤ S k
hkj : S j ≤ S k
⊢ ∃ i, x + y ∈ S i

tactic: rintro x ⟨i, hi⟩
state_before: case refine'_3
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
hx : x ∈ closure (⋃ (i : ι), ↑(S i))
⊢ ∀ (x : K), (∃ i, x ∈ S i) → ∃ i, -x ∈ S i

tactic: exact ⟨i, (S i).neg_mem hi⟩
state_before: case refine'_3.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x : K
i : ι
hi : x ∈ S i
⊢ ∃ i, -x ∈ S i

tactic: rintro x ⟨i, hi⟩
state_before: case refine'_4
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
hx : x ∈ closure (⋃ (i : ι), ↑(S i))
⊢ ∀ (x : K), (∃ i, x ∈ S i) → ∃ i, x⁻¹ ∈ S i

tactic: exact ⟨i, (S i).inv_mem hi⟩
state_before: case refine'_4.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x : K
i : ι
hi : x ∈ S i
⊢ ∃ i, x⁻¹ ∈ S i

tactic: rintro x y ⟨i, hi⟩ ⟨j, hj⟩
state_before: case refine'_5
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
hx : x ∈ closure (⋃ (i : ι), ↑(S i))
⊢ ∀ (x y : K), (∃ i, x ∈ S i) → (∃ i, y ∈ S i) → ∃ i, x * y ∈ S i

tactic: obtain ⟨k, hki, hkj⟩ := hS i j
state_before: case refine'_5.intro.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x y : K
i : ι
hi : x ∈ S i
j : ι
hj : y ∈ S j
⊢ ∃ i, x * y ∈ S i

tactic: exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
state_before: case refine'_5.intro.intro.intro.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x✝ : K
hx : x✝ ∈ closure (⋃ (i : ι), ↑(S i))
x y : K
i : ι
hi : x ∈ S i
j : ι
hj : y ∈ S j
k : ι
hki : S i ≤ S k
hkj : S j ≤ S k
⊢ ∃ i, x * y ∈ S i