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

tactic: refine'
  @adjoin_induction R A _ _ _ _ (fun a => f a ∈ adjoin R (f '' (s ∪ {1}))) x h
    (fun a ha => subset_adjoin ⟨a, ⟨Set.subset_union_left _ _ ha, rfl⟩⟩) (fun r => _)
    (fun y z hy hz => by simpa [hy, hz] using Subalgebra.add_mem _ hy hz) fun y z hy hz => by
    simpa [hy, hz, hf y z] using Subalgebra.mul_mem _ hy hz
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
⊢ ↑f x ∈ adjoin R (↑f '' (s ∪ {1}))

tactic: have : f 1 ∈ adjoin R (f '' (s ∪ {1})) :=
  subset_adjoin ⟨1, ⟨Set.subset_union_right _ _ <| Set.mem_singleton 1, rfl⟩⟩
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
r : R
⊢ (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) (↑(algebraMap R A) r)

tactic: convert Subalgebra.smul_mem (adjoin R (f '' (s ∪ {1}))) this r
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
r : R
this : ↑f 1 ∈ adjoin R (↑f '' (s ∪ {1}))
⊢ (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) (↑(algebraMap R A) r)

tactic: rw [algebraMap_eq_smul_one]
state_before: case h.e'_4
R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
r : R
this : ↑f 1 ∈ adjoin R (↑f '' (s ∪ {1}))
⊢ ↑f (↑(algebraMap R A) r) = r • ↑f 1

tactic: exact f.map_smul _ _
state_before: case h.e'_4
R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
r : R
this : ↑f 1 ∈ adjoin R (↑f '' (s ∪ {1}))
⊢ ↑f (r • 1) = r • ↑f 1

tactic: simpa [hy, hz] using Subalgebra.add_mem _ hy hz
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
y z : A
hy : (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) y
hz : (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) z
⊢ (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) (y + z)

tactic: simpa [hy, hz, hf y z] using Subalgebra.mul_mem _ hy hz
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
s✝ t s : Set A
x : A
f : A →ₗ[R] B
hf : ∀ (a₁ a₂ : A), ↑f (a₁ * a₂) = ↑f a₁ * ↑f a₂
h : x ∈ adjoin R s
y z : A
hy : (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) y
hz : (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) z
⊢ (fun a => ↑f a ∈ adjoin R (↑f '' (s ∪ {1}))) (y * z)