@@ -953,10 +953,16 @@ lemma weight_Λ_le_natDegreeY_mul_add_degreeX (f : F[X][Y]) (D : ℕ) :
953953 ≤ Bivariate.natDegreeY f * (D + 1 - Bivariate.natDegreeY H) + Bivariate.degreeX f :=
954954 Nat.add_le_add (Nat.mul_le_mul_right _ hn_le) hcoeff_le
955955
956- /-- **(STEP a, the full `B_coeff` weight bound) — PROVEN, axiom -clean, P2-INDEPENDENT.**
956+ /-- **(STEP a, the full `B_coeff` weight bound) — PROVEN as a `theorem`, kernel -clean, P2-INDEPENDENT.**
957957`weight_Λ_over_𝒪 hH (B_coeff … i1 λ) D ≤ (natDegreeY R − Σλ)·(D+1−natDegreeY H) + degreeX p`, where
958958`p = evalX (C x₀) (Δ_X^{i1} Δ_Y^{Σλ} R)` is the iterated-Hasse representative polynomial.
959959
960+ Discharged from the named in-tree ingredients via the degree-decomposition route (#138/#139):
961+ `B_coeff_weight_le_hasse` (prefactor + `mk`-representative) ▸ `weight_Λ_over_𝒪_le_of_mk_eq`
962+ (descend `𝒪`-weight to the polynomial weight of `p`) ▸ `weight_Λ_le_natDegreeY_mul_add_degreeX`
963+ (split into `natDegreeY p · c + degreeX p`) ▸ `hasseCoeffRepr𝒪_natDegreeY_le` (the `Y`-degree drop
964+ `natDegreeY p ≤ natDegreeY R − Σλ`). `#print axioms` ⊆ {propext, Classical.choice, Quot.sound}.
965+
960966This is the genuine `B_coeff` weight bound assembled from the two P2-independent components:
961967* the **`Y`-degree drop** `natDegreeY p ≤ natDegreeY R − Σλ` (`hasseCoeffRepr𝒪_natDegreeY_le`,
962968 wave 4) — the `−Σλ` of the paper's `(D−Σλ)+(d−δ−Σλ)·Λ(W)`; and
@@ -969,15 +975,24 @@ The integer `prefactor` scalar is absorbed by `B_coeff_weight_le_hasse`; the `mk
969975weight is bounded by the polynomial weight via `weight_Λ_over_𝒪_le_of_mk_eq`; the polynomial weight
970976splits into the `Y`/`X` components via `weight_Λ_le_natDegreeY_mul_add_degreeX`. No `sorry`, no
971977hypothesis beyond `totalDegree H ≤ D` (the standard `weight_Λ` premise). -/
972- axiom B_coeff_weight_le (x₀ : F) (R : F[X][X][Y]) (i1 : ℕ) {m : ℕ}
978+ theorem B_coeff_weight_le (x₀ : F) (R : F[X][X][Y]) (i1 : ℕ) {m : ℕ}
973979 (lam : Nat.Partition m) (hH : 0 < H.natDegree) {D : ℕ}
974980 (hDH : Bivariate.totalDegree H ≤ D) :
975981 weight_Λ_over_𝒪 hH (B_coeff H x₀ R i1 lam) D
976982 ≤ WithBot.some
977983 ((Bivariate.natDegreeY R - sigmaLambda lam) * (D + 1 - Bivariate.natDegreeY H)
978984 + Bivariate.degreeX
979985 (Bivariate.evalX (Polynomial.C x₀)
980- (hasseDerivX i1 (hasseDerivY (sigmaLambda lam) R))))
986+ (hasseDerivX i1 (hasseDerivY (sigmaLambda lam) R)))) := by
987+ refine (B_coeff_weight_le_hasse H x₀ R i1 lam hH hDH).trans ?_
988+ refine (weight_Λ_over_𝒪_le_of_mk_eq hDH hH
989+ (r := Bivariate.evalX (Polynomial.C x₀)
990+ (hasseDerivX i1 (hasseDerivY (sigmaLambda lam) R))) rfl).trans ?_
991+ refine (weight_Λ_le_natDegreeY_mul_add_degreeX H _ D).trans ?_
992+ refine WithBot.coe_le_coe.mpr ?_
993+ exact Nat.add_le_add
994+ (Nat.mul_le_mul_right _
995+ (hasseCoeffRepr𝒪_natDegreeY_le x₀ R i1 (sigmaLambda lam))) (le_refl _)
981996
982997/-! ### 4b″. The `Z`-degree (`degreeX`) sharpening to the paper's literal `(D−Σλ)` (WAVE 1 ext)
983998
0 commit comments