Theorem: Algebra.adjoin_adjoin_coe_preimage
File: Mathlib/RingTheory/Adjoin/Basic.lean

tactic: refine eq_top_iff.2 fun x ↦
    adjoin_induction' (fun a ha ↦ ?_) (fun r ↦ ?_) (fun _ _ ↦ ?_) (fun _ _ ↦ ?_) x
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
⊢ adjoin R (Subtype.val ⁻¹' s) = ⊤
state_after: case refine_1
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
a : A
ha : a ∈ s
⊢ ⟨a, ⋯⟩ ∈ adjoin R (Subtype.val ⁻¹' s)

case refine_2
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
r : R
⊢ (algebraMap R ↥(adjoin R s)) r ∈ adjoin R (Subtype.val ⁻¹' s)

case refine_3
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
x✝¹ x✝ : ↥(adjoin R s)
⊢ x✝¹ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝¹ + x✝ ∈ adjoin R (Subtype.val ⁻¹' s)

case refine_4
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
x✝¹ x✝ : ↥(adjoin R s)
⊢ x✝¹ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝¹ * x✝ ∈ adjoin R (Subtype.val ⁻¹' s)

tactic: exact subset_adjoin ha
state_before: case refine_1
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
a : A
ha : a ∈ s
⊢ ⟨a, ⋯⟩ ∈ adjoin R (Subtype.val ⁻¹' s)
state_after: no goals

tactic: exact Subalgebra.algebraMap_mem _ r
state_before: case refine_2
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
r : R
⊢ (algebraMap R ↥(adjoin R s)) r ∈ adjoin R (Subtype.val ⁻¹' s)
state_after: no goals

tactic: exact Subalgebra.add_mem _
state_before: case refine_3
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
x✝¹ x✝ : ↥(adjoin R s)
⊢ x✝¹ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝¹ + x✝ ∈ adjoin R (Subtype.val ⁻¹' s)
state_after: no goals

tactic: exact Subalgebra.mul_mem _
state_before: case refine_4
R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t s : Set A
x : { x // x ∈ ↑(adjoin R s) }
x✝¹ x✝ : ↥(adjoin R s)
⊢ x✝¹ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝ ∈ adjoin R (Subtype.val ⁻¹' s) → x✝¹ * x✝ ∈ adjoin R (Subtype.val ⁻¹' s)
state_after: no goals