AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_isHomogeneous_of_forall_eval_intCast_mul_eq_pow_mul.P2mPolyLines.mvPolynomial_eq_of_forall_eval_intCast_eq
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_isHomogeneous_of_forall_eval_intCast_mul_eq_pow_mul
open MvPolynomial Finset
namespace P2mPolyLines
variable {R : Type*}Lean source · full declaration
theorem mvPolynomial_eq_of_forall_eval_intCast_eq [CommRing R] [IsDomain R] [CharZero R]
{ι : Type*} {p q : MvPolynomial ι R}
(h : ∀ c : ι → ℤ, eval (fun i => (c i : R)) p = eval (fun i => (c i : R)) q) : p = q := by
refine MvPolynomial.funext_set (fun _ => Set.range (Int.cast : ℤ → R))
(fun _ => Set.infinite_range_of_injective Int.cast_injective) ?_
intro x hx
choose c hc using fun i => hx i (Set.mem_univ i)
have hx' : x = fun i => (c i : R) := funext fun i => (hc i).symm
subst hx'
exact h c