Theorem: exists_isTranscendenceBasis
File: Mathlib/RingTheory/AlgebraicIndependent.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
⊢ ∃ s, IsTranscendenceBasis R Subtype.val
state_after: case intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
⊢ ∃ s, IsTranscendenceBasis R Subtype.val
tactic: cases' exists_maximal_algebraicIndependent (∅ : Set A) Set.univ (Set.subset_univ _)
      ((algebraicIndependent_empty_iff R A).2 h) with
    s hs
state_before: case intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
⊢ ∃ s, IsTranscendenceBasis R Subtype.val
state_after: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
⊢ ∀ (s_1 : Set A), AlgebraicIndependent R Subtype.val → range Subtype.val ≤ s_1 → range Subtype.val = s_1
tactic: use s, hs.1
state_before: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
⊢ ∀ (s_1 : Set A), AlgebraicIndependent R Subtype.val → range Subtype.val ≤ s_1 → range Subtype.val = s_1
state_after: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
t : Set A
ht : AlgebraicIndependent R Subtype.val
hr : range Subtype.val ≤ t
⊢ range Subtype.val = t
tactic: intro t ht hr
state_before: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
t : Set A
ht : AlgebraicIndependent R Subtype.val
hr : range Subtype.val ≤ t
⊢ range Subtype.val = t
state_after: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
t : Set A
ht : AlgebraicIndependent R Subtype.val
hr : s ≤ t
⊢ s = t
tactic: simp only [Subtype.range_coe_subtype, setOf_mem_eq] at *
state_before: case right
ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
h : Injective ⇑(algebraMap R A)
s : Set A
hs :
  AlgebraicIndependent R Subtype.val ∧
    ∅ ⊆ s ∧ s ⊆ univ ∧ ∀ (x : Set A), AlgebraicIndependent R Subtype.val → s ⊆ x → x ⊆ univ → x = s
t : Set A
ht : AlgebraicIndependent R Subtype.val
hr : s ≤ t
⊢ s = t
state_after: no goals
tactic: exact Eq.symm (hs.2.2.2 t ht hr (Set.subset_univ _))