@@ -481,12 +481,30 @@ theorem iterate_derivative_interpolate [CommRing ι]
481481 omega
482482 _ = k.factorial * ∑ t ∈ (s.erase i).powerset with #t = #s - (k + 1 ),
483483 ∏ a ∈ t, (X - C (v a)) := by
484- rw [powerset_image]
485- congr 1
486- have := image_injOn_powerset_of_injOn hvs' -- useful
487- -- have := image_surjOn_powerset
488- -- use prod_nbij
489- sorry
484+ rw [powerset_image, sum_nbij (fun (t : Finset ι) => t.image v)]
485+ case hi =>
486+ intro a ha
487+ rw [mem_filter, mem_powerset] at ha
488+ rw [mem_filter, mem_image]
489+ constructor
490+ · use a; simp [ha.1 ]
491+ · rw [card_image_of_injOn (hvs'.mono (coe_subset.mpr ha.1 ))]
492+ exact ha.2
493+ case i_inj =>
494+ refine (image_injOn_powerset_of_injOn hvs').mono (coe_subset.mpr ?_)
495+ simp
496+ case i_surj =>
497+ intro t ht
498+ rw [mem_coe, mem_filter, mem_image] at ht
499+ obtain ⟨a, ha⟩ := ht.1
500+ simp_rw [Set.mem_image, mem_coe, mem_filter]
501+ use a
502+ refine ⟨⟨ha.1 , ?_⟩, ha.2 ⟩
503+ rw [← ht.2 , ← ha.2 , card_image_of_injOn (hvs'.mono (coe_subset.mpr (mem_powerset.mp ha.1 )))]
504+ case h =>
505+ intro a ha
506+ rw [mem_filter, mem_powerset] at ha
507+ rw [prod_image (hvs'.mono (coe_subset.mpr ha.1 ))]
490508
491509omit [DecidableEq ι] in
492510private theorem degree_eq_of_card_eq {P : Polynomial F} (hP : #s = P.degree + 1 ) :
@@ -505,7 +523,7 @@ private theorem natDegree_eq_of_card_eq {P : Polynomial F} (hP : #s = P.degree +
505523
506524omit [DecidableEq ι] in
507525private theorem degree_lt_of_card_eq {P : Polynomial F} (hP : #s = P.degree + 1 ) :
508- P.degree < s.card - 1 := by
526+ P.degree < s.card := by
509527 have := degree_eq_of_card_eq hP
510528 have := natDegree_eq_of_card_eq hP
511529 have s_card : s.card > 0 := by by_contra! h; simp_all
@@ -519,12 +537,12 @@ theorem eval_iterate_derivative_eq_sum [CommRing ι]
519537 ∑ t ∈ (s.erase i).powerset with #t = #s - (k + 1 ),
520538 ∏ a ∈ t, (x - v a) := by
521539 rw (occs := [1 ]) [eq_interpolate hvs (degree_lt_of_card_eq hP)]
522- -- why does rw iterate_derivative_interpolate hvs hk not work?
523540 rw [iterate_derivative_interpolate, ← nsmul_eq_mul, eval_smul, nsmul_eq_mul, eval_finset_sum]
524541 · congr! 2 with i hi
525542 simp_rw [eval_C_mul, eval_finset_sum, eval_prod, eval_sub, eval_X, eval_C]
526- · assumption
527- · grind -- would this work?
543+ · exact hvs
544+ · rw [degree_eq_of_card_eq hP] at hk
545+ exact WithBot.coe_le_coe.mp hk
528546
529547theorem leadingCoeff_eq_sum
530548 (hvs : Set.InjOn v s) {P : Polynomial F} (hP : #s = P.degree + 1 ) :
0 commit comments