ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
⊢ AlgebraicIndependent R Subtype.val
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
⊢ AlgebraicIndependent R Subtype.val
let f : t.map (Embedding.subtype s) → s := fun x =>
  ⟨x.1, by
    obtain ⟨x, h⟩ := x
    rw [Finset.mem_map] at h
    obtain ⟨a, _, rfl⟩ := h
    simp only [Subtype.coe_prop, Embedding.coe_subtype]⟩
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
⊢ Injective f
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
⊢ AlgebraicIndependent R Subtype.val
convert AlgebraicIndependent.comp li f _
case mk.mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
x : A
hx : x ∈ Finset.map (Embedding.subtype s) t
y : A
hy : y ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := x, property := hx } = f { val := y, property := hy } →
    { val := x, property := hx } = { val := y, property := hy }
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
⊢ Injective f
rintro ⟨x, hx⟩ ⟨y, hy⟩
case mk.mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
x : A
hx✝ : x ∈ Finset.map (Embedding.subtype s) t
hx : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = x
y : A
hy✝ : y ∈ Finset.map (Embedding.subtype s) t
hy : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = y
⊢ f { val := x, property := hx✝ } = f { val := y, property := hy✝ } →
    { val := x, property := hx✝ } = { val := y, property := hy✝ }
case mk.mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
x : A
hx : x ∈ Finset.map (Embedding.subtype s) t
y : A
hy : y ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := x, property := hx } = f { val := y, property := hy } →
    { val := x, property := hx } = { val := y, property := hy }
rw [Finset.mem_map] at hx hy
case mk.mk.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
y : A
hy✝ : y ∈ Finset.map (Embedding.subtype s) t
hy : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = y
a : Subtype s
left✝ : a ∈ t
hx : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := ↑(Embedding.subtype s) a, property := hx } = f { val := y, property := hy✝ } →
    { val := ↑(Embedding.subtype s) a, property := hx } = { val := y, property := hy✝ }
case mk.mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
x : A
hx✝ : x ∈ Finset.map (Embedding.subtype s) t
hx : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = x
y : A
hy✝ : y ∈ Finset.map (Embedding.subtype s) t
hy : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = y
⊢ f { val := x, property := hx✝ } = f { val := y, property := hy✝ } →
    { val := x, property := hx✝ } = { val := y, property := hy✝ }
obtain ⟨a, _, rfl⟩ := hx
case mk.mk.intro.intro.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
a : Subtype s
left✝¹ : a ∈ t
hx : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
b : Subtype s
left✝ : b ∈ t
hy : ↑(Embedding.subtype s) b ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := ↑(Embedding.subtype s) a, property := hx } = f { val := ↑(Embedding.subtype s) b, property := hy } →
    { val := ↑(Embedding.subtype s) a, property := hx } = { val := ↑(Embedding.subtype s) b, property := hy }
case mk.mk.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
y : A
hy✝ : y ∈ Finset.map (Embedding.subtype s) t
hy : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = y
a : Subtype s
left✝ : a ∈ t
hx : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := ↑(Embedding.subtype s) a, property := hx } = f { val := y, property := hy✝ } →
    { val := ↑(Embedding.subtype s) a, property := hx } = { val := y, property := hy✝ }
obtain ⟨b, _, rfl⟩ := hy
no goals
case mk.mk.intro.intro.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
f : { x // x ∈ Finset.map (Embedding.subtype s) t } → ↑s := fun x => { val := ↑x, property := (_ : ↑x ∈ s) }
a : Subtype s
left✝¹ : a ∈ t
hx : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
b : Subtype s
left✝ : b ∈ t
hy : ↑(Embedding.subtype s) b ∈ Finset.map (Embedding.subtype s) t
⊢ f { val := ↑(Embedding.subtype s) a, property := hx } = f { val := ↑(Embedding.subtype s) b, property := hy } →
    { val := ↑(Embedding.subtype s) a, property := hx } = { val := ↑(Embedding.subtype s) b, property := hy }
simp only [imp_self, Subtype.mk_eq_mk]
case mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
x : A
h : x ∈ Finset.map (Embedding.subtype s) t
⊢ ↑{ val := x, property := h } ∈ s
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
x : { x // x ∈ Finset.map (Embedding.subtype s) t }
⊢ ↑x ∈ s
obtain ⟨x, h⟩ := x
case mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
x : A
h✝ : x ∈ Finset.map (Embedding.subtype s) t
h : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = x
⊢ ↑{ val := x, property := h✝ } ∈ s
case mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
x : A
h : x ∈ Finset.map (Embedding.subtype s) t
⊢ ↑{ val := x, property := h } ∈ s
rw [Finset.mem_map] at h
case mk.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
a : Subtype s
left✝ : a ∈ t
h : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
⊢ ↑{ val := ↑(Embedding.subtype s) a, property := h } ∈ s
case mk
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
x : A
h✝ : x ∈ Finset.map (Embedding.subtype s) t
h : ∃ a, a ∈ t ∧ ↑(Embedding.subtype s) a = x
⊢ ↑{ val := x, property := h✝ } ∈ s
obtain ⟨a, _, rfl⟩ := h
no goals
case mk.intro.intro
ι : Type ?u.490158
ι' : Type ?u.490161
R : Type u_2
K : Type ?u.490167
A : Type u_1
A' : Type ?u.490173
A'' : Type ?u.490176
V : Type u
V' : Type ?u.490181
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
s : Set A
li : AlgebraicIndependent R Subtype.val
t : Finset ↑s
a : Subtype s
left✝ : a ∈ t
h : ↑(Embedding.subtype s) a ∈ Finset.map (Embedding.subtype s) t
⊢ ↑{ val := ↑(Embedding.subtype s) a, property := h } ∈ s
simp only [Subtype.coe_prop, Embedding.coe_subtype]