ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- MvPolynomial.eval₂Hom_C
@[simp]
theorem eval₂Hom_C (f : R →+* S₁) (g : σ → S₁) (r : R) : eval₂Hom f g (C r) = f r 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (r : R)
Goal: (MvPolynomial.eval₂Hom f g) (MvPolynomial.C r) = f r
-- MvPolynomial.eval₂Hom_X'
@[simp]
theorem eval₂Hom_X' (f : R →+* S₁) (g : σ → S₁) (i : σ) : eval₂Hom f g (X i) = g i 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (i : σ)
Goal: (MvPolynomial.eval₂Hom f g) (MvPolynomial.X i) = g i
-- MvPolynomial.comp_eval₂Hom
@[simp]
theorem comp_eval₂Hom [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₁) (φ : S₁ →+* S₂) :
    φ.comp (eval₂Hom f g) = eval₂Hom (φ.comp f) fun i => φ (g i) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₁) (φ : S₁ →+* S₂)
Goal: φ.comp (MvPolynomial.eval₂Hom f g) = MvPolynomial.eval₂Hom (φ.comp f) fun i => φ (g i)
-- MvPolynomial.map_eval₂Hom
theorem map_eval₂Hom [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₁) (φ : S₁ →+* S₂)
    (p : MvPolynomial σ R) : φ (eval₂Hom f g p) = eval₂Hom (φ.comp f) (fun i => φ (g i)) p 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₁) (φ : S₁ →+* S₂) (p : MvPolynomial σ R)
Goal: φ ((MvPolynomial.eval₂Hom f g) p) = (MvPolynomial.eval₂Hom (φ.comp f) fun i => φ (g i)) p
-- MvPolynomial.eval₂Hom_monomial
theorem eval₂Hom_monomial (f : R →+* S₁) (g : σ → S₁) (d : σ →₀ ℕ) (r : R) :
    eval₂Hom f g (monomial d r) = f r * d.prod fun i k => g i ^ k 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (d : σ →₀ ℕ) (r : R)
Goal: (MvPolynomial.eval₂Hom f g) ((MvPolynomial.monomial d) r) = f r * d.prod fun i k => g i ^ k
-- MvPolynomial.eval₂_comp_left
theorem eval₂_comp_left {S₂} [CommSemiring S₂] (k : S₁ →+* S₂) (f : R →+* S₁) (g : σ → S₁) (p) :
    k (eval₂ f g p) = eval₂ (k.comp f) (k ∘ g) p 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] {S₂ : Type u_2} [CommSemiring S₂] (k : S₁ →+* S₂) (f : R →+* S₁) (g : σ → S₁) (p : MvPolynomial σ R)
Goal: k (MvPolynomial.eval₂ f g p) = MvPolynomial.eval₂ (k.comp f) (⇑k ∘ g) p
-- MvPolynomial.eval₂_eta
@[simp]
theorem eval₂_eta (p : MvPolynomial σ R) : eval₂ C X p = p 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ MvPolynomial.C MvPolynomial.X p = p
-- MvPolynomial.eval₂_congr
theorem eval₂_congr (g₁ g₂ : σ → S₁)
    (h : ∀ {i : σ} {c : σ →₀ ℕ}, i ∈ c.support → coeff c p ≠ 0 → g₁ i = g₂ i) :
    p.eval₂ f g₁ = p.eval₂ f g₂ 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] {p : MvPolynomial σ R} (f : R →+* S₁) (g₁ g₂ : σ → S₁) (h : ∀ {i : σ} {c : σ →₀ ℕ}, i ∈ c.support → MvPolynomial.coeff c p ≠ 0 → g₁ i = g₂ i)
Goal: MvPolynomial.eval₂ f g₁ p = MvPolynomial.eval₂ f g₂ p
-- MvPolynomial.eval₂_sum
theorem eval₂_sum (s : Finset S₂) (p : S₂ → MvPolynomial σ R) :
    eval₂ f g (∑ x ∈ s, p x) = ∑ x ∈ s, eval₂ f g (p x) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (s : Finset S₂) (p : S₂ → MvPolynomial σ R)
Goal: MvPolynomial.eval₂ f g (∑ x ∈ s, p x) = ∑ x ∈ s, MvPolynomial.eval₂ f g (p x)
-- MvPolynomial.eval₂_prod
@[to_additive existing (attr := simp)]
theorem eval₂_prod (s : Finset S₂) (p : S₂ → MvPolynomial σ R) :
    eval₂ f g (∏ x ∈ s, p x) = ∏ x ∈ s, eval₂ f g (p x) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (s : Finset S₂) (p : S₂ → MvPolynomial σ R)
Goal: MvPolynomial.eval₂ f g (∏ x ∈ s, p x) = ∏ x ∈ s, MvPolynomial.eval₂ f g (p x)
-- MvPolynomial.eval₂_assoc
theorem eval₂_assoc (q : S₂ → MvPolynomial σ R) (p : MvPolynomial S₂ R) :
    eval₂ f (fun t => eval₂ f g (q t)) p = eval₂ f g (eval₂ C q p) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (q : S₂ → MvPolynomial σ R) (p : MvPolynomial S₂ R)
Goal: MvPolynomial.eval₂ f (fun t => MvPolynomial.eval₂ f g (q t)) p =
  MvPolynomial.eval₂ f g (MvPolynomial.eval₂ MvPolynomial.C q p)
-- MvPolynomial.eval_eq
theorem eval_eq (X : σ → R) (f : MvPolynomial σ R) :
    eval X f = ∑ d ∈ f.support, f.coeff d * ∏ i ∈ d.support, X i ^ d i 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] (X : σ → R) (f : MvPolynomial σ R)
Goal: (MvPolynomial.eval X) f = ∑ d ∈ f.support, MvPolynomial.coeff d f * ∏ i ∈ d.support, X i ^ d i
-- MvPolynomial.eval_eq'
theorem eval_eq' [Fintype σ] (X : σ → R) (f : MvPolynomial σ R) :
    eval X f = ∑ d ∈ f.support, f.coeff d * ∏ i, X i ^ d i 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] [Fintype σ] (X : σ → R) (f : MvPolynomial σ R)
Goal: (MvPolynomial.eval X) f = ∑ d ∈ f.support, MvPolynomial.coeff d f * ∏ i : σ, X i ^ d i
-- MvPolynomial.eval_monomial
theorem eval_monomial : eval f (monomial s a) = a * s.prod fun n e => f n ^ e 
Arguments: {R : Type u} {σ : Type u_1} {a : R} {s : σ →₀ ℕ} [CommSemiring R] {f : σ → R}
Goal: (MvPolynomial.eval f) ((MvPolynomial.monomial s) a) = a * s.prod fun n e => f n ^ e
-- MvPolynomial.eval_C
@[simp]
theorem eval_C : ∀ a, eval f (C a) = a 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {f : σ → R} (a : R)
Goal: (MvPolynomial.eval f) (MvPolynomial.C a) = a
-- MvPolynomial.eval_X
@[simp]
theorem eval_X : ∀ n, eval f (X n) = f n 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {f : σ → R} (n : σ)
Goal: (MvPolynomial.eval f) (MvPolynomial.X n) = f n
-- MvPolynomial.smul_eval
@[simp]
theorem smul_eval (x) (p : MvPolynomial σ R) (s) : eval x (s • p) = s * eval x p 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] (x : σ → R) (p : MvPolynomial σ R) (s : R)
Goal: (MvPolynomial.eval x) (s • p) = s * (MvPolynomial.eval x) p
-- MvPolynomial.eval_add
theorem eval_add : eval f (p + q) = eval f p + eval f q 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {p q : MvPolynomial σ R} {f : σ → R}
Goal: (MvPolynomial.eval f) (p + q) = (MvPolynomial.eval f) p + (MvPolynomial.eval f) q
-- MvPolynomial.eval_mul
theorem eval_mul : eval f (p * q) = eval f p * eval f q 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {p q : MvPolynomial σ R} {f : σ → R}
Goal: (MvPolynomial.eval f) (p * q) = (MvPolynomial.eval f) p * (MvPolynomial.eval f) q
-- MvPolynomial.eval_pow
theorem eval_pow : ∀ n, eval f (p ^ n) = eval f p ^ n 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {p : MvPolynomial σ R} {f : σ → R} (n : ℕ)
Goal: (MvPolynomial.eval f) (p ^ n) = (MvPolynomial.eval f) p ^ n
-- MvPolynomial.eval_sum
theorem eval_sum {ι : Type*} (s : Finset ι) (f : ι → MvPolynomial σ R) (g : σ → R) :
    eval g (∑ i ∈ s, f i) = ∑ i ∈ s, eval g (f i) 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (f : ι → MvPolynomial σ R) (g : σ → R)
Goal: (MvPolynomial.eval g) (∑ i ∈ s, f i) = ∑ i ∈ s, (MvPolynomial.eval g) (f i)
-- MvPolynomial.eval_prod
@[to_additive existing]
theorem eval_prod {ι : Type*} (s : Finset ι) (f : ι → MvPolynomial σ R) (g : σ → R) :
    eval g (∏ i ∈ s, f i) = ∏ i ∈ s, eval g (f i) 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (f : ι → MvPolynomial σ R) (g : σ → R)
Goal: (MvPolynomial.eval g) (∏ i ∈ s, f i) = ∏ i ∈ s, (MvPolynomial.eval g) (f i)
-- MvPolynomial.eval_assoc
theorem eval_assoc {τ} (f : σ → MvPolynomial τ R) (g : τ → R) (p : MvPolynomial σ R) :
    eval (eval g ∘ f) p = eval g (eval₂ C f p) 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {τ : Type u_2} (f : σ → MvPolynomial τ R) (g : τ → R) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval (⇑(MvPolynomial.eval g) ∘ f)) p = (MvPolynomial.eval g) (MvPolynomial.eval₂ MvPolynomial.C f p)
-- MvPolynomial.eval₂_id
@[simp]
theorem eval₂_id {g : σ → R} (p : MvPolynomial σ R) : eval₂ (RingHom.id _) g p = eval g p 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] {g : σ → R} (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ (RingHom.id R) g p = (MvPolynomial.eval g) p
-- MvPolynomial.eval_eval₂
theorem eval_eval₂ {S τ : Type*} {x : τ → S} [CommSemiring R] [CommSemiring S]
    (f : R →+* MvPolynomial τ S) (g : σ → MvPolynomial τ S) (p : MvPolynomial σ R) :
    eval x (eval₂ f g p) = eval₂ ((eval x).comp f) (fun s => eval x (g s)) p 
Arguments: {R : Type u} {σ : Type u_1} {S : Type u_2} {τ : Type u_3} {x : τ → S} [CommSemiring R] [CommSemiring S] (f : R →+* MvPolynomial τ S) (g : σ → MvPolynomial τ S) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval x) (MvPolynomial.eval₂ f g p) =
  MvPolynomial.eval₂ ((MvPolynomial.eval x).comp f) (fun s => (MvPolynomial.eval x) (g s)) p
-- MvPolynomial.map_monomial
@[simp]
theorem map_monomial (s : σ →₀ ℕ) (a : R) : map f (monomial s a) = monomial s (f a) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (s : σ →₀ ℕ) (a : R)
Goal: (MvPolynomial.map f) ((MvPolynomial.monomial s) a) = (MvPolynomial.monomial s) (f a)
-- MvPolynomial.map_C
@[simp]
theorem map_C : ∀ a : R, map f (C a : MvPolynomial σ R) = C (f a) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (a : R)
Goal: (MvPolynomial.map f) (MvPolynomial.C a) = MvPolynomial.C (f a)
-- MvPolynomial.map_X
@[simp]
theorem map_X : ∀ n : σ, map f (X n : MvPolynomial σ R) = X n 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (n : σ)
Goal: (MvPolynomial.map f) (MvPolynomial.X n) = MvPolynomial.X n
-- MvPolynomial.map_id
theorem map_id : ∀ p : MvPolynomial σ R, map (RingHom.id R) p = p 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] (p : MvPolynomial σ R)
Goal: (MvPolynomial.map (RingHom.id R)) p = p
-- MvPolynomial.map_map
theorem map_map [CommSemiring S₂] (g : S₁ →+* S₂) (p : MvPolynomial σ R) :
    map g (map f p) = map (g.comp f) p 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) [CommSemiring S₂] (g : S₁ →+* S₂) (p : MvPolynomial σ R)
Goal: (MvPolynomial.map g) ((MvPolynomial.map f) p) = (MvPolynomial.map (g.comp f)) p
-- MvPolynomial.eval₂_eq_eval_map
theorem eval₂_eq_eval_map (g : σ → S₁) (p : MvPolynomial σ R) : p.eval₂ f g = eval g (map f p) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ f g p = (MvPolynomial.eval g) ((MvPolynomial.map f) p)
-- MvPolynomial.eval₂_comp_right
theorem eval₂_comp_right {S₂} [CommSemiring S₂] (k : S₁ →+* S₂) (f : R →+* S₁) (g : σ → S₁) (p) :
    k (eval₂ f g p) = eval₂ k (k ∘ g) (map f p) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] {S₂ : Type u_2} [CommSemiring S₂] (k : S₁ →+* S₂) (f : R →+* S₁) (g : σ → S₁) (p : MvPolynomial σ R)
Goal: k (MvPolynomial.eval₂ f g p) = MvPolynomial.eval₂ k (⇑k ∘ g) ((MvPolynomial.map f) p)
-- MvPolynomial.map_eval₂
theorem map_eval₂ (f : R →+* S₁) (g : S₂ → MvPolynomial S₃ R) (p : MvPolynomial S₂ R) :
    map f (eval₂ C g p) = eval₂ C (map f ∘ g) (map f p) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {S₃ : Type x} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : S₂ → MvPolynomial S₃ R) (p : MvPolynomial S₂ R)
Goal: (MvPolynomial.map f) (MvPolynomial.eval₂ MvPolynomial.C g p) =
  MvPolynomial.eval₂ MvPolynomial.C (⇑(MvPolynomial.map f) ∘ g) ((MvPolynomial.map f) p)
-- MvPolynomial.coeff_map
theorem coeff_map (p : MvPolynomial σ R) : ∀ m : σ →₀ ℕ, coeff m (map f p) = f (coeff m p) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (p : MvPolynomial σ R) (m : σ →₀ ℕ)
Goal: MvPolynomial.coeff m ((MvPolynomial.map f) p) = f (MvPolynomial.coeff m p)
-- MvPolynomial.map_injective
theorem map_injective (hf : Function.Injective f) :
    Function.Injective (map f : MvPolynomial σ R → MvPolynomial σ S₁) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (hf : Function.Injective ⇑f)
Goal: Function.Injective ⇑(MvPolynomial.map f)
-- MvPolynomial.map_surjective
theorem map_surjective (hf : Function.Surjective f) :
    Function.Surjective (map f : MvPolynomial σ R → MvPolynomial σ S₁) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (hf : Function.Surjective ⇑f)
Goal: Function.Surjective ⇑(MvPolynomial.map f)
-- MvPolynomial.map_leftInverse
theorem map_leftInverse {f : R →+* S₁} {g : S₁ →+* R} (hf : Function.LeftInverse f g) :
    Function.LeftInverse (map f : MvPolynomial σ R → MvPolynomial σ S₁) (map g) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] {f : R →+* S₁} {g : S₁ →+* R} (hf : Function.LeftInverse ⇑f ⇑g)
Goal: Function.LeftInverse ⇑(MvPolynomial.map f) ⇑(MvPolynomial.map g)
-- MvPolynomial.map_rightInverse
theorem map_rightInverse {f : R →+* S₁} {g : S₁ →+* R} (hf : Function.RightInverse f g) :
    Function.RightInverse (map f : MvPolynomial σ R → MvPolynomial σ S₁) (map g) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] {f : R →+* S₁} {g : S₁ →+* R} (hf : Function.RightInverse ⇑f ⇑g)
Goal: Function.RightInverse ⇑(MvPolynomial.map f) ⇑(MvPolynomial.map g)
-- MvPolynomial.eval_map
@[simp]
theorem eval_map (f : R →+* S₁) (g : σ → S₁) (p : MvPolynomial σ R) :
    eval g (map f p) = eval₂ f g p 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : σ → S₁) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval g) ((MvPolynomial.map f) p) = MvPolynomial.eval₂ f g p
-- MvPolynomial.eval₂_map
@[simp]
theorem eval₂_map [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₂) (φ : S₁ →+* S₂)
    (p : MvPolynomial σ R) : eval₂ φ g (map f p) = eval₂ (φ.comp f) g p 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₂) (φ : S₁ →+* S₂) (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ φ g ((MvPolynomial.map f) p) = MvPolynomial.eval₂ (φ.comp f) g p
-- MvPolynomial.eval₂Hom_map_hom
@[simp]
theorem eval₂Hom_map_hom [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₂) (φ : S₁ →+* S₂)
    (p : MvPolynomial σ R) : eval₂Hom φ g (map f p) = eval₂Hom (φ.comp f) g p 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] (f : R →+* S₁) (g : σ → S₂) (φ : S₁ →+* S₂) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval₂Hom φ g) ((MvPolynomial.map f) p) = (MvPolynomial.eval₂Hom (φ.comp f) g) p
-- MvPolynomial.constantCoeff_map
@[simp]
theorem constantCoeff_map (f : R →+* S₁) (φ : MvPolynomial σ R) :
    constantCoeff (MvPolynomial.map f φ) = f (constantCoeff φ) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (φ : MvPolynomial σ R)
Goal: MvPolynomial.constantCoeff ((MvPolynomial.map f) φ) = f (MvPolynomial.constantCoeff φ)
-- MvPolynomial.constantCoeff_comp_map
theorem constantCoeff_comp_map (f : R →+* S₁) :
    (constantCoeff : MvPolynomial σ S₁ →+* S₁).comp (MvPolynomial.map f) = f.comp constantCoeff 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁)
Goal: MvPolynomial.constantCoeff.comp (MvPolynomial.map f) = f.comp MvPolynomial.constantCoeff
-- MvPolynomial.support_map_subset
theorem support_map_subset (p : MvPolynomial σ R) : (map f p).support ⊆ p.support 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (p : MvPolynomial σ R)
Goal: ((MvPolynomial.map f) p).support ⊆ p.support
-- MvPolynomial.support_map_of_injective
theorem support_map_of_injective (p : MvPolynomial σ R) {f : R →+* S₁} (hf : Injective f) :
    (map f p).support = p.support 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (p : MvPolynomial σ R) {f : R →+* S₁} (hf : Function.Injective ⇑f)
Goal: ((MvPolynomial.map f) p).support = p.support
-- MvPolynomial.C_dvd_iff_map_hom_eq_zero
theorem C_dvd_iff_map_hom_eq_zero (q : R →+* S₁) (r : R) (hr : ∀ r' : R, q r' = 0 ↔ r ∣ r')
    (φ : MvPolynomial σ R) : C r ∣ φ ↔ map q φ = 0 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (q : R →+* S₁) (r : R) (hr : ∀ (r' : R), q r' = 0 ↔ r ∣ r') (φ : MvPolynomial σ R)
Goal: MvPolynomial.C r ∣ φ ↔ (MvPolynomial.map q) φ = 0
-- MvPolynomial.map_mapRange_eq_iff
theorem map_mapRange_eq_iff (f : R →+* S₁) (g : S₁ → R) (hg : g 0 = 0) (φ : MvPolynomial σ S₁) :
    map f (Finsupp.mapRange g hg φ) = φ ↔ ∀ d, f (g (coeff d φ)) = coeff d φ 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] (f : R →+* S₁) (g : S₁ → R) (hg : g 0 = 0) (φ : MvPolynomial σ S₁)
Goal: (MvPolynomial.map f) (Finsupp.mapRange g hg φ) = φ ↔
  ∀ (d : σ →₀ ℕ), f (g (MvPolynomial.coeff d φ)) = MvPolynomial.coeff d φ
-- MvPolynomial.mapAlgHom_apply
@[simps!]
def mapAlgHom [CommSemiring S₂] [Algebra R S₁] [Algebra R S₂] (f : S₁ →ₐ[R] S₂) :
    MvPolynomial σ S₁ →ₐ[R] MvPolynomial σ S₂ 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] [Algebra R S₁] [Algebra R S₂] (f : S₁ →ₐ[R] S₂) (p : MvPolynomial σ S₁)
Goal: (MvPolynomial.mapAlgHom f) p = MvPolynomial.eval₂ (MvPolynomial.C.comp ↑f) MvPolynomial.X p
-- MvPolynomial.mapAlgHom_id
@[simp]
theorem mapAlgHom_id [Algebra R S₁] :
    mapAlgHom (AlgHom.id R S₁) = AlgHom.id R (MvPolynomial σ S₁) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁]
Goal: MvPolynomial.mapAlgHom (AlgHom.id R S₁) = AlgHom.id R (MvPolynomial σ S₁)
-- MvPolynomial.mapAlgHom_coe_ringHom
@[simp]
theorem mapAlgHom_coe_ringHom [CommSemiring S₂] [Algebra R S₁] [Algebra R S₂] (f : S₁ →ₐ[R] S₂) :
    ↑(mapAlgHom f : _ →ₐ[R] MvPolynomial σ S₂) =
      (map ↑f : MvPolynomial σ S₁ →+* MvPolynomial σ S₂) 
Arguments: {R : Type u} {S₁ : Type v} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [CommSemiring S₂] [Algebra R S₁] [Algebra R S₂] (f : S₁ →ₐ[R] S₂)
Goal: ↑(MvPolynomial.mapAlgHom f) = MvPolynomial.map ↑f
-- MvPolynomial.algebraMap_apply
@[simp]
theorem algebraMap_apply (r : R) : algebraMap R (MvPolynomial σ S₁) r = C (algebraMap R S₁ r) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (r : R)
Goal: (algebraMap R (MvPolynomial σ S₁)) r = MvPolynomial.C ((algebraMap R S₁) r)
-- MvPolynomial.aeval_def
theorem aeval_def (p : MvPolynomial σ R) : aeval f p = eval₂ (algebraMap R S₁) f p 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (f : σ → S₁) (p : MvPolynomial σ R)
Goal: (MvPolynomial.aeval f) p = MvPolynomial.eval₂ (algebraMap R S₁) f p
-- MvPolynomial.aeval_eq_eval₂Hom
theorem aeval_eq_eval₂Hom (p : MvPolynomial σ R) : aeval f p = eval₂Hom (algebraMap R S₁) f p 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (f : σ → S₁) (p : MvPolynomial σ R)
Goal: (MvPolynomial.aeval f) p = (MvPolynomial.eval₂Hom (algebraMap R S₁) f) p
-- MvPolynomial.coe_aeval_eq_eval
@[simp]
lemma coe_aeval_eq_eval : RingHomClass.toRingHom (MvPolynomial.aeval f) = MvPolynomial.eval f 
Arguments: {S₁ : Type v} {σ : Type u_1} [CommSemiring S₁] (f : σ → S₁)
Goal: ↑(MvPolynomial.aeval f) = MvPolynomial.eval f
-- MvPolynomial.aeval_X
@[simp]
theorem aeval_X (s : σ) : aeval f (X s : MvPolynomial _ R) = f s 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (f : σ → S₁) (s : σ)
Goal: (MvPolynomial.aeval f) (MvPolynomial.X s) = f s
-- MvPolynomial.aeval_C
theorem aeval_C (r : R) : aeval f (C r) = algebraMap R S₁ r 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (f : σ → S₁) (r : R)
Goal: (MvPolynomial.aeval f) (MvPolynomial.C r) = (algebraMap R S₁) r
-- MvPolynomial.aeval_unique
theorem aeval_unique (φ : MvPolynomial σ R →ₐ[R] S₁) : φ = aeval (φ ∘ X) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (φ : MvPolynomial σ R →ₐ[R] S₁)
Goal: φ = MvPolynomial.aeval (⇑φ ∘ MvPolynomial.X)
-- MvPolynomial.aeval_X_left
theorem aeval_X_left : aeval X = AlgHom.id R (MvPolynomial σ R) 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R]
Goal: MvPolynomial.aeval MvPolynomial.X = AlgHom.id R (MvPolynomial σ R)
-- MvPolynomial.aeval_X_left_apply
theorem aeval_X_left_apply (p : MvPolynomial σ R) : aeval X p = p 
Arguments: {R : Type u} {σ : Type u_1} [CommSemiring R] (p : MvPolynomial σ R)
Goal: (MvPolynomial.aeval MvPolynomial.X) p = p
-- MvPolynomial.comp_aeval
theorem comp_aeval {B : Type*} [CommSemiring B] [Algebra R B] (φ : S₁ →ₐ[R] B) :
    φ.comp (aeval f) = aeval fun i => φ (f i) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (f : σ → S₁) {B : Type u_2} [CommSemiring B] [Algebra R B] (φ : S₁ →ₐ[R] B)
Goal: φ.comp (MvPolynomial.aeval f) = MvPolynomial.aeval fun i => φ (f i)
-- MvPolynomial.map_aeval
@[simp]
theorem map_aeval {B : Type*} [CommSemiring B] (g : σ → S₁) (φ : S₁ →+* B) (p : MvPolynomial σ R) :
    φ (aeval g p) = eval₂Hom (φ.comp (algebraMap R S₁)) (fun i => φ (g i)) p 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] {B : Type u_2} [CommSemiring B] (g : σ → S₁) (φ : S₁ →+* B) (p : MvPolynomial σ R)
Goal: φ ((MvPolynomial.aeval g) p) = (MvPolynomial.eval₂Hom (φ.comp (algebraMap R S₁)) fun i => φ (g i)) p
-- MvPolynomial.eval₂Hom_zero
@[simp]
theorem eval₂Hom_zero (f : R →+* S₂) : eval₂Hom f (0 : σ → S₂) = f.comp constantCoeff 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂)
Goal: MvPolynomial.eval₂Hom f 0 = f.comp MvPolynomial.constantCoeff
-- MvPolynomial.eval₂Hom_zero'
@[simp]
theorem eval₂Hom_zero' (f : R →+* S₂) : eval₂Hom f (fun _ => 0 : σ → S₂) = f.comp constantCoeff 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂)
Goal: (MvPolynomial.eval₂Hom f fun x => 0) = f.comp MvPolynomial.constantCoeff
-- MvPolynomial.eval₂Hom_zero_apply
theorem eval₂Hom_zero_apply (f : R →+* S₂) (p : MvPolynomial σ R) :
    eval₂Hom f (0 : σ → S₂) p = f (constantCoeff p) 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval₂Hom f 0) p = f (MvPolynomial.constantCoeff p)
-- MvPolynomial.eval₂Hom_zero'_apply
theorem eval₂Hom_zero'_apply (f : R →+* S₂) (p : MvPolynomial σ R) :
    eval₂Hom f (fun _ => 0 : σ → S₂) p = f (constantCoeff p) 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂) (p : MvPolynomial σ R)
Goal: (MvPolynomial.eval₂Hom f fun x => 0) p = f (MvPolynomial.constantCoeff p)
-- MvPolynomial.eval₂_zero_apply
@[simp]
theorem eval₂_zero_apply (f : R →+* S₂) (p : MvPolynomial σ R) :
    eval₂ f (0 : σ → S₂) p = f (constantCoeff p) 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂) (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ f 0 p = f (MvPolynomial.constantCoeff p)
-- MvPolynomial.eval₂_zero'_apply
@[simp]
theorem eval₂_zero'_apply (f : R →+* S₂) (p : MvPolynomial σ R) :
    eval₂ f (fun _ => 0 : σ → S₂) p = f (constantCoeff p) 
Arguments: {R : Type u} {S₂ : Type w} {σ : Type u_1} [CommSemiring R] [CommSemiring S₂] (f : R →+* S₂) (p : MvPolynomial σ R)
Goal: MvPolynomial.eval₂ f (fun x => 0) p = f (MvPolynomial.constantCoeff p)
-- MvPolynomial.aeval_zero
@[simp]
theorem aeval_zero (p : MvPolynomial σ R) :
    aeval (0 : σ → S₁) p = algebraMap _ _ (constantCoeff p) 
Arguments: {R : Type u} {S₁ : Type v} {σ : Type u_1} [CommSemiring R] [CommSemiring S₁] [Algebra R S₁] (p : MvPolynomial σ R)
Goal: (MvPolynomial.aeval 0) p = (algebraMap R S₁) (MvPolynomial.constantCoeff p)