ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- homothety_invOf_two
theorem homothety_invOf_two {R : Type*} {V P : Type*} [CommRing R] [Invertible (2 : R)]
    [AddCommGroup V] [Module R V] [AddTorsor V P] (a b : P) :
    homothety a (⅟ 2 : R) b = midpoint R a b 
Arguments: {R : Type u_1} {V : Type u_2} {P : Type u_3} [CommRing R] [Invertible 2] [AddCommGroup V] [Module R V] [AddTorsor V P] (a b : P)
Goal: (AffineMap.homothety a ⅟2) b = midpoint R a b
-- homothety_inv_two
theorem homothety_inv_two {k : Type*} {V P : Type*} [Field k] [CharZero k] [AddCommGroup V]
    [Module k V] [AddTorsor V P] (a b : P) : homothety a (2⁻¹ : k) b = midpoint k a b 
Arguments: {k : Type u_1} {V : Type u_2} {P : Type u_3} [Field k] [CharZero k] [AddCommGroup V] [Module k V] [AddTorsor V P] (a b : P)
Goal: (AffineMap.homothety a 2⁻¹) b = midpoint k a b
-- homothety_one_half
theorem homothety_one_half {k : Type*} {V P : Type*} [Field k] [CharZero k] [AddCommGroup V]
    [Module k V] [AddTorsor V P] (a b : P) : homothety a (1 / 2 : k) b = midpoint k a b 
Arguments: {k : Type u_1} {V : Type u_2} {P : Type u_3} [Field k] [CharZero k] [AddCommGroup V] [Module k V] [AddTorsor V P] (a b : P)
Goal: (AffineMap.homothety a (1 / 2)) b = midpoint k a b
-- pi_midpoint_apply
@[simp]
theorem pi_midpoint_apply {k ι : Type*} {V : ι → Type*} {P : ι → Type*} [Field k]
    [Invertible (2 : k)] [∀ i, AddCommGroup (V i)] [∀ i, Module k (V i)]
    [∀ i, AddTorsor (V i) (P i)] (f g : ∀ i, P i) (i : ι) :
    midpoint k f g i = midpoint k (f i) (g i) 
Arguments: {k : Type u_1} {ι : Type u_2} {V : ι → Type u_3} {P : ι → Type u_4} [Field k] [Invertible 2] [(i : ι) → AddCommGroup (V i)] [(i : ι) → Module k (V i)] [(i : ι) → AddTorsor (V i) (P i)] (f g : (i : ι) → P i) (i : ι)
Goal: midpoint k f g i = midpoint k (f i) (g i)
-- slope_fun_def
theorem slope_fun_def (f : k → PE) : slope f = fun a b => (b - a)⁻¹ • (f b -ᵥ f a) 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE)
Goal: slope f = fun a b => (b - a)⁻¹ • (f b -ᵥ f a)
-- slope_def_field
theorem slope_def_field (f : k → k) (a b : k) : slope f a b = (f b - f a) / (b - a) 
Arguments: {k : Type u_1} [Field k] (f : k → k) (a b : k)
Goal: slope f a b = (f b - f a) / (b - a)
-- slope_fun_def_field
theorem slope_fun_def_field (f : k → k) (a : k) : slope f a = fun b => (f b - f a) / (b - a) 
Arguments: {k : Type u_1} [Field k] (f : k → k) (a : k)
Goal: slope f a = fun b => (f b - f a) / (b - a)
-- slope_same
@[simp]
theorem slope_same (f : k → PE) (a : k) : (slope f a a : E) = 0 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a : k)
Goal: slope f a a = 0
-- slope_def_module
theorem slope_def_module (f : k → E) (a b : k) : slope f a b = (b - a)⁻¹ • (f b - f a) 
Arguments: {k : Type u_1} {E : Type u_2} [Field k] [AddCommGroup E] [Module k E] (f : k → E) (a b : k)
Goal: slope f a b = (b - a)⁻¹ • (f b - f a)
-- sub_smul_slope
@[simp]
theorem sub_smul_slope (f : k → PE) (a b : k) : (b - a) • slope f a b = f b -ᵥ f a 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b : k)
Goal: (b - a) • slope f a b = f b -ᵥ f a
-- sub_smul_slope_vadd
theorem sub_smul_slope_vadd (f : k → PE) (a b : k) : (b - a) • slope f a b +ᵥ f a = f b 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b : k)
Goal: (b - a) • slope f a b +ᵥ f a = f b
-- slope_vadd_const
@[simp]
theorem slope_vadd_const (f : k → E) (c : PE) : (slope fun x => f x +ᵥ c) = slope f 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → E) (c : PE)
Goal: (slope fun x => f x +ᵥ c) = slope f
-- slope_sub_smul
@[simp]
theorem slope_sub_smul (f : k → E) {a b : k} (h : a ≠ b) :
    slope (fun x => (x - a) • f x) a b = f b 
Arguments: {k : Type u_1} {E : Type u_2} [Field k] [AddCommGroup E] [Module k E] (f : k → E) {a b : k} (h : a ≠ b)
Goal: slope (fun x => (x - a) • f x) a b = f b
-- eq_of_slope_eq_zero
theorem eq_of_slope_eq_zero {f : k → PE} {a b : k} (h : slope f a b = (0 : E)) : f a = f b 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] {f : k → PE} {a b : k} (h : slope f a b = 0)
Goal: f a = f b
-- AffineMap.slope_comp
theorem AffineMap.slope_comp {F PF : Type*} [AddCommGroup F] [Module k F] [AddTorsor F PF]
    (f : PE →ᵃ[k] PF) (g : k → PE) (a b : k) : slope (f ∘ g) a b = f.linear (slope g a b) 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] {F : Type u_4} {PF : Type u_5} [AddCommGroup F] [Module k F] [AddTorsor F PF] (f : PE →ᵃ[k] PF) (g : k → PE) (a b : k)
Goal: slope (⇑f ∘ g) a b = f.linear (slope g a b)
-- LinearMap.slope_comp
theorem LinearMap.slope_comp {F : Type*} [AddCommGroup F] [Module k F] (f : E →ₗ[k] F) (g : k → E)
    (a b : k) : slope (f ∘ g) a b = f (slope g a b) 
Arguments: {k : Type u_1} {E : Type u_2} [Field k] [AddCommGroup E] [Module k E] {F : Type u_4} [AddCommGroup F] [Module k F] (f : E →ₗ[k] F) (g : k → E) (a b : k)
Goal: slope (⇑f ∘ g) a b = f (slope g a b)
-- slope_comm
theorem slope_comm (f : k → PE) (a b : k) : slope f a b = slope f b a 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b : k)
Goal: slope f a b = slope f b a
-- slope_neg
@[simp] lemma slope_neg (f : k → E) (x y : k) : slope (fun t ↦ -f t) x y = -slope f x y 
Arguments: {k : Type u_1} {E : Type u_2} [Field k] [AddCommGroup E] [Module k E] (f : k → E) (x y : k)
Goal: slope (fun t => -f t) x y = -slope f x y
-- slope_neg_fun
@[simp] lemma slope_neg_fun (f : k → E) : slope (-f) = -slope f 
Arguments: {k : Type u_1} {E : Type u_2} [Field k] [AddCommGroup E] [Module k E] (f : k → E)
Goal: slope (-f) = -slope f
-- sub_div_sub_smul_slope_add_sub_div_sub_smul_slope
theorem sub_div_sub_smul_slope_add_sub_div_sub_smul_slope (f : k → PE) (a b c : k) :
    ((b - a) / (c - a)) • slope f a b + ((c - b) / (c - a)) • slope f b c = slope f a c 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b c : k)
Goal: ((b - a) / (c - a)) • slope f a b + ((c - b) / (c - a)) • slope f b c = slope f a c
-- lineMap_slope_slope_sub_div_sub
theorem lineMap_slope_slope_sub_div_sub (f : k → PE) (a b c : k) (h : a ≠ c) :
    lineMap (slope f a b) (slope f b c) ((c - b) / (c - a)) = slope f a c 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b c : k) (h : a ≠ c)
Goal: (AffineMap.lineMap (slope f a b) (slope f b c)) ((c - b) / (c - a)) = slope f a c
-- lineMap_slope_lineMap_slope_lineMap
theorem lineMap_slope_lineMap_slope_lineMap (f : k → PE) (a b r : k) :
    lineMap (slope f (lineMap a b r) b) (slope f a (lineMap a b r)) r = slope f a b 
Arguments: {k : Type u_1} {E : Type u_2} {PE : Type u_3} [Field k] [AddCommGroup E] [Module k E] [AddTorsor E PE] (f : k → PE) (a b r : k)
Goal: (AffineMap.lineMap (slope f ((AffineMap.lineMap a b) r) b) (slope f a ((AffineMap.lineMap a b) r))) r = slope f a b
-- Polynomial.eq_zero_of_degree_lt_of_eval_finset_eq_zero
theorem eq_zero_of_degree_lt_of_eval_finset_eq_zero (degree_f_lt : f.degree < s.card)
    (eval_f : ∀ x ∈ s, f.eval x = 0) : f = 0 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f : R[X]} (s : Finset R) (degree_f_lt : f.degree < ↑s.card) (eval_f : ∀ x ∈ s, Polynomial.eval x f = 0)
Goal: f = 0
-- Polynomial.eq_of_degree_sub_lt_of_eval_finset_eq
theorem eq_of_degree_sub_lt_of_eval_finset_eq (degree_fg_lt : (f - g).degree < s.card)
    (eval_fg : ∀ x ∈ s, f.eval x = g.eval x) : f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} (s : Finset R) (degree_fg_lt : (f - g).degree < ↑s.card) (eval_fg : ∀ x ∈ s, Polynomial.eval x f = Polynomial.eval x g)
Goal: f = g
-- Polynomial.eq_of_degrees_lt_of_eval_finset_eq
theorem eq_of_degrees_lt_of_eval_finset_eq (degree_f_lt : f.degree < s.card)
    (degree_g_lt : g.degree < s.card) (eval_fg : ∀ x ∈ s, f.eval x = g.eval x) : f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} (s : Finset R) (degree_f_lt : f.degree < ↑s.card) (degree_g_lt : g.degree < ↑s.card) (eval_fg : ∀ x ∈ s, Polynomial.eval x f = Polynomial.eval x g)
Goal: f = g
-- Polynomial.eq_of_degree_le_of_eval_finset_eq
theorem eq_of_degree_le_of_eval_finset_eq
    (h_deg_le : f.degree ≤ s.card)
    (h_deg_eq : f.degree = g.degree)
    (hlc : f.leadingCoeff = g.leadingCoeff)
    (h_eval : ∀ x ∈ s, f.eval x = g.eval x) :
    f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} (s : Finset R) (h_deg_le : f.degree ≤ ↑s.card) (h_deg_eq : f.degree = g.degree) (hlc : f.leadingCoeff = g.leadingCoeff) (h_eval : ∀ x ∈ s, Polynomial.eval x f = Polynomial.eval x g)
Goal: f = g
-- Polynomial.eq_zero_of_degree_lt_of_eval_index_eq_zero
theorem eq_zero_of_degree_lt_of_eval_index_eq_zero (hvs : Set.InjOn v s)
    (degree_f_lt : f.degree < s.card) (eval_f : ∀ i ∈ s, f.eval (v i) = 0) : f = 0 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f : R[X]} {ι : Type u_2} {v : ι → R} (s : Finset ι) (hvs : Set.InjOn v ↑s) (degree_f_lt : f.degree < ↑s.card) (eval_f : ∀ i ∈ s, Polynomial.eval (v i) f = 0)
Goal: f = 0
-- Polynomial.eq_of_degree_sub_lt_of_eval_index_eq
theorem eq_of_degree_sub_lt_of_eval_index_eq (hvs : Set.InjOn v s)
    (degree_fg_lt : (f - g).degree < s.card) (eval_fg : ∀ i ∈ s, f.eval (v i) = g.eval (v i)) :
    f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} {ι : Type u_2} {v : ι → R} (s : Finset ι) (hvs : Set.InjOn v ↑s) (degree_fg_lt : (f - g).degree < ↑s.card) (eval_fg : ∀ i ∈ s, Polynomial.eval (v i) f = Polynomial.eval (v i) g)
Goal: f = g
-- Polynomial.eq_of_degrees_lt_of_eval_index_eq
theorem eq_of_degrees_lt_of_eval_index_eq (hvs : Set.InjOn v s) (degree_f_lt : f.degree < s.card)
    (degree_g_lt : g.degree < s.card) (eval_fg : ∀ i ∈ s, f.eval (v i) = g.eval (v i)) : f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} {ι : Type u_2} {v : ι → R} (s : Finset ι) (hvs : Set.InjOn v ↑s) (degree_f_lt : f.degree < ↑s.card) (degree_g_lt : g.degree < ↑s.card) (eval_fg : ∀ i ∈ s, Polynomial.eval (v i) f = Polynomial.eval (v i) g)
Goal: f = g
-- Polynomial.eq_of_degree_le_of_eval_index_eq
theorem eq_of_degree_le_of_eval_index_eq (hvs : Set.InjOn v s)
    (h_deg_le : f.degree ≤ s.card)
    (h_deg_eq : f.degree = g.degree)
    (hlc : f.leadingCoeff = g.leadingCoeff)
    (h_eval : ∀ i ∈ s, f.eval (v i) = g.eval (v i)) : f = g 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {f g : R[X]} {ι : Type u_2} {v : ι → R} (s : Finset ι) (hvs : Set.InjOn v ↑s) (h_deg_le : f.degree ≤ ↑s.card) (h_deg_eq : f.degree = g.degree) (hlc : f.leadingCoeff = g.leadingCoeff) (h_eval : ∀ i ∈ s, Polynomial.eval (v i) f = Polynomial.eval (v i) g)
Goal: f = g
-- Lagrange.basisDivisor_self
theorem basisDivisor_self : basisDivisor x x = 0 
Arguments: {F : Type u_1} [Field F] {x : F}
Goal: Lagrange.basisDivisor x x = 0
-- Lagrange.basisDivisor_inj
theorem basisDivisor_inj (hxy : basisDivisor x y = 0) : x = y 
Arguments: {F : Type u_1} [Field F] {x y : F} (hxy : Lagrange.basisDivisor x y = 0)
Goal: x = y
-- Lagrange.basisDivisor_eq_zero_iff
@[simp]
theorem basisDivisor_eq_zero_iff : basisDivisor x y = 0 ↔ x = y 
Arguments: {F : Type u_1} [Field F] {x y : F}
Goal: Lagrange.basisDivisor x y = 0 ↔ x = y
-- Lagrange.basisDivisor_ne_zero_iff
theorem basisDivisor_ne_zero_iff : basisDivisor x y ≠ 0 ↔ x ≠ y 
Arguments: {F : Type u_1} [Field F] {x y : F}
Goal: Lagrange.basisDivisor x y ≠ 0 ↔ x ≠ y
-- Lagrange.degree_basisDivisor_of_ne
theorem degree_basisDivisor_of_ne (hxy : x ≠ y) : (basisDivisor x y).degree = 1 
Arguments: {F : Type u_1} [Field F] {x y : F} (hxy : x ≠ y)
Goal: (Lagrange.basisDivisor x y).degree = 1
-- Lagrange.degree_basisDivisor_self
@[simp]
theorem degree_basisDivisor_self : (basisDivisor x x).degree = ⊥ 
Arguments: {F : Type u_1} [Field F] {x : F}
Goal: (Lagrange.basisDivisor x x).degree = ⊥
-- Lagrange.natDegree_basisDivisor_self
theorem natDegree_basisDivisor_self : (basisDivisor x x).natDegree = 0 
Arguments: {F : Type u_1} [Field F] {x : F}
Goal: (Lagrange.basisDivisor x x).natDegree = 0
-- Lagrange.natDegree_basisDivisor_of_ne
theorem natDegree_basisDivisor_of_ne (hxy : x ≠ y) : (basisDivisor x y).natDegree = 1 
Arguments: {F : Type u_1} [Field F] {x y : F} (hxy : x ≠ y)
Goal: (Lagrange.basisDivisor x y).natDegree = 1
-- Lagrange.eval_basisDivisor_right
@[simp]
theorem eval_basisDivisor_right : eval y (basisDivisor x y) = 0 
Arguments: {F : Type u_1} [Field F] {x y : F}
Goal: Polynomial.eval y (Lagrange.basisDivisor x y) = 0
-- Lagrange.eval_basisDivisor_left_of_ne
theorem eval_basisDivisor_left_of_ne (hxy : x ≠ y) : eval x (basisDivisor x y) = 1 
Arguments: {F : Type u_1} [Field F] {x y : F} (hxy : x ≠ y)
Goal: Polynomial.eval x (Lagrange.basisDivisor x y) = 1
-- Lagrange.basis_empty
@[simp]
theorem basis_empty : Lagrange.basis ∅ v i = 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {v : ι → F} {i : ι}
Goal: Lagrange.basis ∅ v i = 1
-- Lagrange.basis_singleton
@[simp]
theorem basis_singleton (i : ι) : Lagrange.basis {i} v i = 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {v : ι → F} (i : ι)
Goal: Lagrange.basis {i} v i = 1
-- Lagrange.basis_pair_left
@[simp]
theorem basis_pair_left (hij : i ≠ j) : Lagrange.basis {i, j} v i = basisDivisor (v i) (v j) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {v : ι → F} {i j : ι} (hij : i ≠ j)
Goal: Lagrange.basis {i, j} v i = Lagrange.basisDivisor (v i) (v j)
-- Lagrange.basis_pair_right
@[simp]
theorem basis_pair_right (hij : i ≠ j) : Lagrange.basis {i, j} v j = basisDivisor (v j) (v i) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {v : ι → F} {i j : ι} (hij : i ≠ j)
Goal: Lagrange.basis {i, j} v j = Lagrange.basisDivisor (v j) (v i)
-- Lagrange.basis_ne_zero
theorem basis_ne_zero (hvs : Set.InjOn v s) (hi : i ∈ s) : Lagrange.basis s v i ≠ 0 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {i : ι} (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: Lagrange.basis s v i ≠ 0
-- Lagrange.eval_basis_self
@[simp]
theorem eval_basis_self (hvs : Set.InjOn v s) (hi : i ∈ s) :
    (Lagrange.basis s v i).eval (v i) = 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {i : ι} (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: Polynomial.eval (v i) (Lagrange.basis s v i) = 1
-- Lagrange.eval_basis_of_ne
@[simp]
theorem eval_basis_of_ne (hij : i ≠ j) (hj : j ∈ s) : (Lagrange.basis s v i).eval (v j) = 0 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {i j : ι} (hij : i ≠ j) (hj : j ∈ s)
Goal: Polynomial.eval (v j) (Lagrange.basis s v i) = 0
-- Lagrange.natDegree_basis
@[simp]
theorem natDegree_basis (hvs : Set.InjOn v s) (hi : i ∈ s) :
    (Lagrange.basis s v i).natDegree = s.card - 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {i : ι} (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: (Lagrange.basis s v i).natDegree = s.card - 1
-- Lagrange.degree_basis
theorem degree_basis (hvs : Set.InjOn v s) (hi : i ∈ s) :
    (Lagrange.basis s v i).degree = ↑(s.card - 1) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {i : ι} (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: (Lagrange.basis s v i).degree = ↑(s.card - 1)
-- Lagrange.sum_basis
theorem sum_basis (hvs : Set.InjOn v s) (hs : s.Nonempty) :
    ∑ j ∈ s, Lagrange.basis s v j = 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (hvs : Set.InjOn v ↑s) (hs : s.Nonempty)
Goal: ∑ j ∈ s, Lagrange.basis s v j = 1
-- Lagrange.basisDivisor_add_symm
theorem basisDivisor_add_symm {x y : F} (hxy : x ≠ y) :
    basisDivisor x y + basisDivisor y x = 1 
Arguments: {F : Type u_1} [Field F] {x y : F} (hxy : x ≠ y)
Goal: Lagrange.basisDivisor x y + Lagrange.basisDivisor y x = 1
-- Lagrange.interpolate_apply
@[simps]
def interpolate (s : Finset ι) (v : ι → F) : (ι → F) →ₗ[F] F[X] 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] (s : Finset ι) (v r : ι → F)
Goal: (Lagrange.interpolate s v) r = ∑ i ∈ s, Polynomial.C (r i) * Lagrange.basis s v i
-- Lagrange.interpolate_empty
theorem interpolate_empty : interpolate ∅ v r = 0 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {v : ι → F} (r : ι → F)
Goal: (Lagrange.interpolate ∅ v) r = 0
-- Lagrange.interpolate_singleton
theorem interpolate_singleton : interpolate {i} v r = C (r i) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {i : ι} {v : ι → F} (r : ι → F)
Goal: (Lagrange.interpolate {i} v) r = Polynomial.C (r i)
-- Lagrange.interpolate_one
theorem interpolate_one (hvs : Set.InjOn v s) (hs : s.Nonempty) : interpolate s v 1 = 1 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (hvs : Set.InjOn v ↑s) (hs : s.Nonempty)
Goal: (Lagrange.interpolate s v) 1 = 1
-- Lagrange.eval_interpolate_at_node
theorem eval_interpolate_at_node (hvs : Set.InjOn v s) (hi : i ∈ s) :
    eval (v i) (interpolate s v r) = r i 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {i : ι} {v : ι → F} (r : ι → F) (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: Polynomial.eval (v i) ((Lagrange.interpolate s v) r) = r i
-- Lagrange.degree_interpolate_le
theorem degree_interpolate_le (hvs : Set.InjOn v s) :
    (interpolate s v r).degree ≤ ↑(s.card - 1) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r : ι → F) (hvs : Set.InjOn v ↑s)
Goal: ((Lagrange.interpolate s v) r).degree ≤ ↑(s.card - 1)
-- Lagrange.degree_interpolate_lt
theorem degree_interpolate_lt (hvs : Set.InjOn v s) : (interpolate s v r).degree < s.card 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r : ι → F) (hvs : Set.InjOn v ↑s)
Goal: ((Lagrange.interpolate s v) r).degree < ↑s.card
-- Lagrange.degree_interpolate_erase_lt
theorem degree_interpolate_erase_lt (hvs : Set.InjOn v s) (hi : i ∈ s) :
    (interpolate (s.erase i) v r).degree < ↑(s.card - 1) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {i : ι} {v : ι → F} (r : ι → F) (hvs : Set.InjOn v ↑s) (hi : i ∈ s)
Goal: ((Lagrange.interpolate (s.erase i) v) r).degree < ↑(s.card - 1)
-- Lagrange.values_eq_on_of_interpolate_eq
theorem values_eq_on_of_interpolate_eq (hvs : Set.InjOn v s)
    (hrr' : interpolate s v r = interpolate s v r') : ∀ i ∈ s, r i = r' i 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r r' : ι → F) (hvs : Set.InjOn v ↑s) (hrr' : (Lagrange.interpolate s v) r = (Lagrange.interpolate s v) r') (i : ι)
Goal: i ∈ s → r i = r' i
-- Lagrange.interpolate_eq_of_values_eq_on
theorem interpolate_eq_of_values_eq_on (hrr' : ∀ i ∈ s, r i = r' i) :
    interpolate s v r = interpolate s v r' 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r r' : ι → F) (hrr' : ∀ i ∈ s, r i = r' i)
Goal: (Lagrange.interpolate s v) r = (Lagrange.interpolate s v) r'
-- Lagrange.interpolate_eq_iff_values_eq_on
theorem interpolate_eq_iff_values_eq_on (hvs : Set.InjOn v s) :
    interpolate s v r = interpolate s v r' ↔ ∀ i ∈ s, r i = r' i 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r r' : ι → F) (hvs : Set.InjOn v ↑s)
Goal: (Lagrange.interpolate s v) r = (Lagrange.interpolate s v) r' ↔ ∀ i ∈ s, r i = r' i
-- Lagrange.eq_interpolate
theorem eq_interpolate {f : F[X]} (hvs : Set.InjOn v s) (degree_f_lt : f.degree < s.card) :
    f = interpolate s v fun i => f.eval (v i) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} {f : F[X]} (hvs : Set.InjOn v ↑s) (degree_f_lt : f.degree < ↑s.card)
Goal: f = (Lagrange.interpolate s v) fun i => Polynomial.eval (v i) f
-- Lagrange.eq_interpolate_of_eval_eq
theorem eq_interpolate_of_eval_eq {f : F[X]} (hvs : Set.InjOn v s) (degree_f_lt : f.degree < s.card)
    (eval_f : ∀ i ∈ s, f.eval (v i) = r i) : f = interpolate s v r 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r : ι → F) {f : F[X]} (hvs : Set.InjOn v ↑s) (degree_f_lt : f.degree < ↑s.card) (eval_f : ∀ i ∈ s, Polynomial.eval (v i) f = r i)
Goal: f = (Lagrange.interpolate s v) r
-- Lagrange.eq_interpolate_iff
theorem eq_interpolate_iff {f : F[X]} (hvs : Set.InjOn v s) :
    (f.degree < s.card ∧ ∀ i ∈ s, eval (v i) f = r i) ↔ f = interpolate s v r 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {v : ι → F} (r : ι → F) {f : F[X]} (hvs : Set.InjOn v ↑s)
Goal: (f.degree < ↑s.card ∧ ∀ i ∈ s, Polynomial.eval (v i) f = r i) ↔ f = (Lagrange.interpolate s v) r
-- Lagrange.interpolate_eq_sum_interpolate_insert_sdiff
theorem interpolate_eq_sum_interpolate_insert_sdiff (hvt : Set.InjOn v t) (hs : s.Nonempty)
    (hst : s ⊆ t) :
    interpolate t v r = ∑ i ∈ s, interpolate (insert i (t \ s)) v r * Lagrange.basis s v i 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s t : Finset ι} {v : ι → F} (r : ι → F) (hvt : Set.InjOn v ↑t) (hs : s.Nonempty) (hst : s ⊆ t)
Goal: (Lagrange.interpolate t v) r = ∑ i ∈ s, (Lagrange.interpolate (insert i (t \ s)) v) r * Lagrange.basis s v i
-- Lagrange.interpolate_eq_add_interpolate_erase
theorem interpolate_eq_add_interpolate_erase (hvs : Set.InjOn v s) (hi : i ∈ s) (hj : j ∈ s)
    (hij : i ≠ j) :
    interpolate s v r =
      interpolate (s.erase j) v r * basisDivisor (v i) (v j) +
        interpolate (s.erase i) v r * basisDivisor (v j) (v i) 
Arguments: {F : Type u_1} [Field F] {ι : Type u_2} [DecidableEq ι] {s : Finset ι} {i j : ι} {v : ι → F} (r : ι → F) (hvs : Set.InjOn v ↑s) (hi : i ∈ s) (hj : j ∈ s) (hij : i ≠ j)
Goal: (Lagrange.interpolate s v) r =
  (Lagrange.interpolate (s.erase j) v) r * Lagrange.basisDivisor (v i) (v j) +
    (Lagrange.interpolate (s.erase i) v) r * Lagrange.basisDivisor (v j) (v i)
-- Lagrange.nodal_eq
theorem nodal_eq (s : Finset ι) (v : ι → R) : nodal s v = ∏ i ∈ s, (X - C (v i)) 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} (s : Finset ι) (v : ι → R)
Goal: Lagrange.nodal s v = ∏ i ∈ s, (Polynomial.X - Polynomial.C (v i))
-- Lagrange.nodal_empty
@[simp]
theorem nodal_empty : nodal ∅ v = 1 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {v : ι → R}
Goal: Lagrange.nodal ∅ v = 1
-- Lagrange.natDegree_nodal
@[simp]
theorem natDegree_nodal [Nontrivial R] : (nodal s v).natDegree = s.card 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R} [Nontrivial R]
Goal: (Lagrange.nodal s v).natDegree = s.card
-- Lagrange.nodal_ne_zero
theorem nodal_ne_zero [Nontrivial R] : nodal s v ≠ 0 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R} [Nontrivial R]
Goal: Lagrange.nodal s v ≠ 0
-- Lagrange.degree_nodal
@[simp]
theorem degree_nodal [Nontrivial R] : (nodal s v).degree = s.card 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R} [Nontrivial R]
Goal: (Lagrange.nodal s v).degree = ↑s.card
-- Lagrange.nodal_monic
theorem nodal_monic : (nodal s v).Monic 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R}
Goal: (Lagrange.nodal s v).Monic
-- Lagrange.eval_nodal
theorem eval_nodal {x : R} : (nodal s v).eval x = ∏ i ∈ s, (x - v i) 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R} {x : R}
Goal: Polynomial.eval x (Lagrange.nodal s v) = ∏ i ∈ s, (x - v i)
-- Lagrange.eval_nodal_at_node
theorem eval_nodal_at_node {i : ι} (hi : i ∈ s) : eval (v i) (nodal s v) = 0 
Arguments: {R : Type u_1} [CommRing R] {ι : Type u_2} {s : Finset ι} {v : ι → R} {i : ι} (hi : i ∈ s)
Goal: Polynomial.eval (v i) (Lagrange.nodal s v) = 0