PG0019

prime_field_polynomial_convolution_right_scale_zero

An actual product with a scalar-zero right input has a genuine zero output prefix at its actual proper length, including empty factors and composite nonzero moduli.

Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

All products and sums use actual beta-coded coefficients; equality is formal coefficient equivalence, not equality of evaluations or raw codes. The zero gcd is included. Uniqueness is up to formal equivalence, not unique Bézout coefficients. This proves the polynomial gcd component, not G091 irreducible-polynomial existence or arbitrary prime-power-field construction.

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ bb. ∀ bc. ∀ M. ∀ sb. ∀ sc. ∀ db. ∀ dc. ∀ N. ¬p = 0 → FpPolyScale(p,0,bb,bc,sb,sc,M)FpPolyProduct(p,ab,ac,L,sb,sc,M,db,dc,N)Repeat(db,dc,0,N)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p ab ac L bb bc M sb sc db dc N. (~(p=0)) -> (((exists pfa_gap_scalar_zero_product_inputscalar. pfa_gap_scalar_zero_product_inputscalar + S (0) = (p)) /\ ((forall pfp_index_scalar_zero_product_input. (exists pfa_gap_scalar_zero_product_inputindex. pfa_gap_scalar_zero_product_inputindex + S (pfp_index_scalar_zero_product_input) = (M)) -> exists pfp_source_scalar_zero_product_input pfp_value_scalar_zero_product_input. ((((exists ff_h_pfp_scalar_zero_product_inputsource. ff_h_pfp_scalar_zero_product_inputsource + S (pfp_source_scalar_zero_product_input) = S ((S (pfp_index_scalar_zero_product_input)) * bc)) /\ exists ff_q_pfp_scalar_zero_product_inputsource. bb = ff_q_pfp_scalar_zero_product_inputsource * S ((S (pfp_index_scalar_zero_product_input)) * bc) + (pfp_source_scalar_zero_product_input))) /\ (((((exists ff_h_pfp_scalar_zero_product_inputtarget. ff_h_pfp_scalar_zero_product_inputtarget + S (pfp_value_scalar_zero_product_input) = S ((S (pfp_index_scalar_zero_product_input)) * sc)) /\ exists ff_q_pfp_scalar_zero_product_inputtarget. sb = ff_q_pfp_scalar_zero_product_inputtarget * S ((S (pfp_index_scalar_zero_product_input)) * sc) + (pfp_value_scalar_zero_product_input))) /\ ((((exists pfa_gap_scalar_zero_product_inputoperationleft. pfa_gap_scalar_zero_product_inputoperationleft + S (0) = (p)) /\ (((exists pfa_gap_scalar_zero_product_inputoperationright. pfa_gap_scalar_zero_product_inputoperationright + S (pfp_source_scalar_zero_product_input) = (p)) /\ ((((exists pfa_gap_scalar_zero_product_inputoperationresultbound. pfa_gap_scalar_zero_product_inputoperationresultbound + S (pfp_value_scalar_zero_product_input) = (p)) /\ ((exists pfa_offset_left_scalar_zero_product_inputoperationresultcongruence pfa_offset_right_scalar_zero_product_inputoperationresultcongruence. ((0) * (pfp_source_scalar_zero_product_input)) + (p) * pfa_offset_left_scalar_zero_product_inputoperationresultcongruence = (pfp_value_scalar_zero_product_input) + (p) * pfa_offset_right_scalar_zero_product_inputoperationresultcongruence))))))))))))))))) -> (((forall fom_index_pfp_scalar_zero_product_actualleft. (exists fom_gap_pfp_scalar_zero_product_actualleft_index_bound. fom_gap_pfp_scalar_zero_product_actualleft_index_bound + S (fom_index_pfp_scalar_zero_product_actualleft) = L) -> exists fom_value_pfp_scalar_zero_product_actualleft. ((((exists fom_beta_height_pfp_scalar_zero_product_actualleft_entry. fom_beta_height_pfp_scalar_zero_product_actualleft_entry + S (fom_value_pfp_scalar_zero_product_actualleft) = S ((S (fom_index_pfp_scalar_zero_product_actualleft)) * ac)) /\ exists fom_beta_quotient_pfp_scalar_zero_product_actualleft_entry. ab = fom_beta_quotient_pfp_scalar_zero_product_actualleft_entry * S ((S (fom_index_pfp_scalar_zero_product_actualleft)) * ac) + (fom_value_pfp_scalar_zero_product_actualleft))) /\ (exists fom_gap_pfp_scalar_zero_product_actualleft_value_bound. fom_gap_pfp_scalar_zero_product_actualleft_value_bound + S (fom_value_pfp_scalar_zero_product_actualleft) = p))) /\ (((forall fom_index_pfp_scalar_zero_product_actualright. (exists fom_gap_pfp_scalar_zero_product_actualright_index_bound. fom_gap_pfp_scalar_zero_product_actualright_index_bound + S (fom_index_pfp_scalar_zero_product_actualright) = M) -> exists fom_value_pfp_scalar_zero_product_actualright. ((((exists fom_beta_height_pfp_scalar_zero_product_actualright_entry. fom_beta_height_pfp_scalar_zero_product_actualright_entry + S (fom_value_pfp_scalar_zero_product_actualright) = S ((S (fom_index_pfp_scalar_zero_product_actualright)) * sc)) /\ exists fom_beta_quotient_pfp_scalar_zero_product_actualright_entry. sb = fom_beta_quotient_pfp_scalar_zero_product_actualright_entry * S ((S (fom_index_pfp_scalar_zero_product_actualright)) * sc) + (fom_value_pfp_scalar_zero_product_actualright))) /\ (exists fom_gap_pfp_scalar_zero_product_actualright_value_bound. fom_gap_pfp_scalar_zero_product_actualright_value_bound + S (fom_value_pfp_scalar_zero_product_actualright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_scalar_zero_product_actualcoefficients. (exists pfa_gap_scalar_zero_product_actualcoefficientsbound. pfa_gap_scalar_zero_product_actualcoefficientsbound + S (pfc_index_scalar_zero_product_actualcoefficients) = (N)) -> exists pfc_value_scalar_zero_product_actualcoefficients. ((((exists ff_h_pfp_scalar_zero_product_actualcoefficientsentry. ff_h_pfp_scalar_zero_product_actualcoefficientsentry + S (pfc_value_scalar_zero_product_actualcoefficients) = S ((S (pfc_index_scalar_zero_product_actualcoefficients)) * dc)) /\ exists ff_q_pfp_scalar_zero_product_actualcoefficientsentry. db = ff_q_pfp_scalar_zero_product_actualcoefficientsentry * S ((S (pfc_index_scalar_zero_product_actualcoefficients)) * dc) + (pfc_value_scalar_zero_product_actualcoefficients))) /\ ((exists pfc_terms_code_scalar_zero_product_actualcoefficientscoefficient pfc_terms_scale_scalar_zero_product_actualcoefficientscoefficient pfc_natural_sum_scalar_zero_product_actualcoefficientscoefficient. ((forall pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal. (exists pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonalbound. pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonalbound + S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal) = (S (pfc_index_scalar_zero_product_actualcoefficients))) -> exists pfc_value_scalar_zero_product_actualcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonalentry. ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonalentry + S (pfc_value_scalar_zero_product_actualcoefficientscoefficientdiagonal) = S ((S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)) * pfc_terms_scale_scalar_zero_product_actualcoefficientscoefficient)) /\ exists ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonalentry. pfc_terms_code_scalar_zero_product_actualcoefficientscoefficient = ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonalentry * S ((S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)) * pfc_terms_scale_scalar_zero_product_actualcoefficientscoefficient) + (pfc_value_scalar_zero_product_actualcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm pfc_left_scalar_zero_product_actualcoefficientscoefficientdiagonalterm pfc_right_scalar_zero_product_actualcoefficientscoefficientdiagonalterm. (((pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)+pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm=(pfc_index_scalar_zero_product_actualcoefficients)) /\ ((((((exists pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftinside. pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_scalar_zero_product_actualcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)) * ac) + (pfc_left_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_scalar_zero_product_actualcoefficientscoefficientdiagonal)) /\ (((pfc_left_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightinside. pfa_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_scalar_zero_product_actualcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)) * sc)) /\ exists ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightentry. sb = ff_q_pfp_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)) * sc) + (pfc_right_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_scalar_zero_product_actualcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_scalar_zero_product_actualcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_scalar_zero_product_actualcoefficientscoefficientdiagonal)=pfc_left_scalar_zero_product_actualcoefficientscoefficientdiagonalterm*pfc_right_scalar_zero_product_actualcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_scalar_zero_product_actualcoefficientscoefficientsum fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum. ((((exists fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_start. fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum)) /\ exists fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_start. fs_u_pfc_scalar_zero_product_actualcoefficientscoefficientsum = fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_terminal. fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_scalar_zero_product_actualcoefficientscoefficient) = S ((S (S (pfc_index_scalar_zero_product_actualcoefficients))) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum)) /\ exists fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_terminal. fs_u_pfc_scalar_zero_product_actualcoefficientscoefficientsum = fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_scalar_zero_product_actualcoefficients))) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum) + (pfc_natural_sum_scalar_zero_product_actualcoefficientscoefficient))) /\ forall fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps = S (pfc_index_scalar_zero_product_actualcoefficients)) -> exists fs_a_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps fs_r_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps fs_s_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_scalar_zero_product_actualcoefficientscoefficient)) /\ exists fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_scalar_zero_product_actualcoefficientscoefficient = fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_scalar_zero_product_actualcoefficientscoefficient) + (fs_a_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum)) /\ exists fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_scalar_zero_product_actualcoefficientscoefficientsum = fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum) + (fs_r_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum)) /\ exists fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_scalar_zero_product_actualcoefficientscoefficientsum = fs_q_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)) * fs_v_pfc_scalar_zero_product_actualcoefficientscoefficientsum) + (fs_s_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps = fs_r_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps + fs_a_pfc_scalar_zero_product_actualcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_scalar_zero_product_actualcoefficientscoefficientresiduebound. pfa_gap_scalar_zero_product_actualcoefficientscoefficientresiduebound + S (pfc_value_scalar_zero_product_actualcoefficients) = (p)) /\ ((exists pfa_offset_left_scalar_zero_product_actualcoefficientscoefficientresiduecongruence pfa_offset_right_scalar_zero_product_actualcoefficientscoefficientresiduecongruence. (pfc_natural_sum_scalar_zero_product_actualcoefficientscoefficient) + (p) * pfa_offset_left_scalar_zero_product_actualcoefficientscoefficientresiduecongruence = (pfc_value_scalar_zero_product_actualcoefficients) + (p) * pfa_offset_right_scalar_zero_product_actualcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (forall pfp_repeat_index_scalar_zero_product_result. (exists pfa_gap_scalar_zero_product_resultindex. pfa_gap_scalar_zero_product_resultindex + S (pfp_repeat_index_scalar_zero_product_result) = (N)) -> (((exists ff_h_pfp_scalar_zero_product_resultentry. ff_h_pfp_scalar_zero_product_resultentry + S (0) = S ((S (pfp_repeat_index_scalar_zero_product_result)) * dc)) /\ exists ff_q_pfp_scalar_zero_product_resultentry. db = ff_q_pfp_scalar_zero_product_resultentry * S ((S (pfp_repeat_index_scalar_zero_product_result)) * dc) + (0))))

Complete tactic proof in conservative notation

All 36 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

36 script commands · 5 reading checkpoints · 0 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (1)
01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro ab
  3. L3
    intro ac
  4. L4
    intro L
  5. L5
    intro bb
  6. L6
    intro bc
  7. L7
    intro M
  8. L8
    intro sb
  9. L9
    intro sc
  10. L10
    intro db
02Fix variables and assumptionsL11–15

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro dc
  2. L12
    intro N
  3. L13
    intro hp
  4. L14
    intro hs
  5. L15
    intro hd
03Use earlier factsL16–25

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L16
    specialize prime_field_polynomial_convolution_zero_right (p)
  2. L17
    specialize prime_field_polynomial_convolution_zero_right (ab)
  3. L18
    specialize prime_field_polynomial_convolution_zero_right (ac)
  4. L19
    specialize prime_field_polynomial_convolution_zero_right (L)
  5. L20
    specialize prime_field_polynomial_convolution_zero_right (sb)
  6. L21
    specialize prime_field_polynomial_convolution_zero_right (sc)
  7. L22
    specialize prime_field_polynomial_convolution_zero_right (M)
  8. L23
    specialize prime_field_polynomial_convolution_zero_right (db)
  9. L24
    specialize prime_field_polynomial_convolution_zero_right (dc)
  10. L25
    specialize prime_field_polynomial_convolution_zero_right (N)
04Use earlier factsL26–35

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L26
    apply prime_field_polynomial_convolution_zero_right
  2. L27
    exact hp
  3. L28
    specialize prime_field_polynomial_scale_zero_value (p)
  4. L29
    specialize prime_field_polynomial_scale_zero_value (bb)
  5. L30
    specialize prime_field_polynomial_scale_zero_value (bc)
  6. L31
    specialize prime_field_polynomial_scale_zero_value (sb)
  7. L32
    specialize prime_field_polynomial_scale_zero_value (sc)
  8. L33
    specialize prime_field_polynomial_scale_zero_value (M)
  9. L34
    apply prime_field_polynomial_scale_zero_value
  10. L35
    exact hs
05Use earlier factsL36–36

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L36
    exact hd

Library-wide reading audit

Original defined command ledger · 36 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro M
  8. 0008intro sb
  9. 0009intro sc
  10. 0010intro db
  11. 0011intro dc
  12. 0012intro N
  13. 0013intro hp
  14. 0014intro hs
  15. 0015intro hd
  16. 0016specialize prime_field_polynomial_convolution_zero_right (p)
  17. 0017specialize prime_field_polynomial_convolution_zero_right (ab)
  18. 0018specialize prime_field_polynomial_convolution_zero_right (ac)
  19. 0019specialize prime_field_polynomial_convolution_zero_right (L)
  20. 0020specialize prime_field_polynomial_convolution_zero_right (sb)
  21. 0021specialize prime_field_polynomial_convolution_zero_right (sc)
  22. 0022specialize prime_field_polynomial_convolution_zero_right (M)
  23. 0023specialize prime_field_polynomial_convolution_zero_right (db)
  24. 0024specialize prime_field_polynomial_convolution_zero_right (dc)
  25. 0025specialize prime_field_polynomial_convolution_zero_right (N)
  26. 0026apply prime_field_polynomial_convolution_zero_right
  27. 0027exact hp
  28. 0028specialize prime_field_polynomial_scale_zero_value (p)
  29. 0029specialize prime_field_polynomial_scale_zero_value (bb)
  30. 0030specialize prime_field_polynomial_scale_zero_value (bc)
  31. 0031specialize prime_field_polynomial_scale_zero_value (sb)
  32. 0032specialize prime_field_polynomial_scale_zero_value (sc)
  33. 0033specialize prime_field_polynomial_scale_zero_value (M)
  34. 0034apply prime_field_polynomial_scale_zero_value
  35. 0035exact hs
  36. 0036exact hd