PX0071

prime_field_polynomial_convolution_both_left_paddings_exists

For actual leading-zero paddings over a prime field, construct a genuine proper-length product and prove its formal equivalence to the original product; no output certificate or identity is supplied.

Alpha v34 checked-use · first admitted v33 · 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.

Coefficients are highest-degree-first. The divisor has a nonzero decoded head; primality supplies its actual inverse. Empty quotients and remainders are included. Functionality compares the constructed execution lengths and decoded coefficients, never arbitrary beta codes. Formal polynomial equivalence compares every coefficient, not evaluations on a finite field. The formal identity and remainder-degree bound are proved separately, not assumed by the execution graph. Arbitrary quotient/remainder-pair uniqueness from a formal identity, multiplication associativity, gcd/Bezout, irreducible-polynomial existence, and the full G091 prime-power-field goal remain open. The seven displayed new names are conservative first-order notation, not new kernel primitives.

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ bb. ∀ bc. ∀ M. ∀ cb. ∀ cc. ∀ N. ∀ AB. ∀ AC. ∀ t. ∀ BB. ∀ BC. ∀ s. Prime(p)PolynomialLeftPad(ab,ac,L,t,AB,AC)PolynomialLeftPad(bb,bc,M,s,BB,BC)FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N) → ∃ x. ∃ y. ∃ z. FpPolyProduct(p,AB,AC,t + L,BB,BC,s + M,y,z,x)PolynomialEquivalent(cb,cc,N,y,z,x)

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 cb cc N AB AC t BB BC s. (~((p) = 1) /\ forall pfa_factor_left_both_exists_prime pfa_factor_right_both_exists_prime. (p) = pfa_factor_left_both_exists_prime * pfa_factor_right_both_exists_prime -> pfa_factor_left_both_exists_prime = 1 \/ pfa_factor_right_both_exists_prime = 1) -> (((forall pfp_repeat_index_both_left_paddingzeros. (exists pfa_gap_both_left_paddingzerosindex. pfa_gap_both_left_paddingzerosindex + S (pfp_repeat_index_both_left_paddingzeros) = (t)) -> (((exists ff_h_pfp_both_left_paddingzerosentry. ff_h_pfp_both_left_paddingzerosentry + S (0) = S ((S (pfp_repeat_index_both_left_paddingzeros)) * AC)) /\ exists ff_q_pfp_both_left_paddingzerosentry. AB = ff_q_pfp_both_left_paddingzerosentry * S ((S (pfp_repeat_index_both_left_paddingzeros)) * AC) + (0)))) /\ ((forall pfrep_index_both_left_padding pfrep_value_both_left_padding. (exists pfa_gap_both_left_paddingbound. pfa_gap_both_left_paddingbound + S (pfrep_index_both_left_padding) = (L)) -> (((exists ff_h_pfp_both_left_paddinginput. ff_h_pfp_both_left_paddinginput + S (pfrep_value_both_left_padding) = S ((S (pfrep_index_both_left_padding)) * ac)) /\ exists ff_q_pfp_both_left_paddinginput. ab = ff_q_pfp_both_left_paddinginput * S ((S (pfrep_index_both_left_padding)) * ac) + (pfrep_value_both_left_padding))) -> (((exists ff_h_pfp_both_left_paddingoutput. ff_h_pfp_both_left_paddingoutput + S (pfrep_value_both_left_padding) = S ((S ((t)+pfrep_index_both_left_padding)) * AC)) /\ exists ff_q_pfp_both_left_paddingoutput. AB = ff_q_pfp_both_left_paddingoutput * S ((S ((t)+pfrep_index_both_left_padding)) * AC) + (pfrep_value_both_left_padding))))))) -> (((forall pfp_repeat_index_both_right_paddingzeros. (exists pfa_gap_both_right_paddingzerosindex. pfa_gap_both_right_paddingzerosindex + S (pfp_repeat_index_both_right_paddingzeros) = (s)) -> (((exists ff_h_pfp_both_right_paddingzerosentry. ff_h_pfp_both_right_paddingzerosentry + S (0) = S ((S (pfp_repeat_index_both_right_paddingzeros)) * BC)) /\ exists ff_q_pfp_both_right_paddingzerosentry. BB = ff_q_pfp_both_right_paddingzerosentry * S ((S (pfp_repeat_index_both_right_paddingzeros)) * BC) + (0)))) /\ ((forall pfrep_index_both_right_padding pfrep_value_both_right_padding. (exists pfa_gap_both_right_paddingbound. pfa_gap_both_right_paddingbound + S (pfrep_index_both_right_padding) = (M)) -> (((exists ff_h_pfp_both_right_paddinginput. ff_h_pfp_both_right_paddinginput + S (pfrep_value_both_right_padding) = S ((S (pfrep_index_both_right_padding)) * bc)) /\ exists ff_q_pfp_both_right_paddinginput. bb = ff_q_pfp_both_right_paddinginput * S ((S (pfrep_index_both_right_padding)) * bc) + (pfrep_value_both_right_padding))) -> (((exists ff_h_pfp_both_right_paddingoutput. ff_h_pfp_both_right_paddingoutput + S (pfrep_value_both_right_padding) = S ((S ((s)+pfrep_index_both_right_padding)) * BC)) /\ exists ff_q_pfp_both_right_paddingoutput. BB = ff_q_pfp_both_right_paddingoutput * S ((S ((s)+pfrep_index_both_right_padding)) * BC) + (pfrep_value_both_right_padding))))))) -> (((forall fom_index_pfp_both_original_productleft. (exists fom_gap_pfp_both_original_productleft_index_bound. fom_gap_pfp_both_original_productleft_index_bound + S (fom_index_pfp_both_original_productleft) = L) -> exists fom_value_pfp_both_original_productleft. ((((exists fom_beta_height_pfp_both_original_productleft_entry. fom_beta_height_pfp_both_original_productleft_entry + S (fom_value_pfp_both_original_productleft) = S ((S (fom_index_pfp_both_original_productleft)) * ac)) /\ exists fom_beta_quotient_pfp_both_original_productleft_entry. ab = fom_beta_quotient_pfp_both_original_productleft_entry * S ((S (fom_index_pfp_both_original_productleft)) * ac) + (fom_value_pfp_both_original_productleft))) /\ (exists fom_gap_pfp_both_original_productleft_value_bound. fom_gap_pfp_both_original_productleft_value_bound + S (fom_value_pfp_both_original_productleft) = p))) /\ (((forall fom_index_pfp_both_original_productright. (exists fom_gap_pfp_both_original_productright_index_bound. fom_gap_pfp_both_original_productright_index_bound + S (fom_index_pfp_both_original_productright) = M) -> exists fom_value_pfp_both_original_productright. ((((exists fom_beta_height_pfp_both_original_productright_entry. fom_beta_height_pfp_both_original_productright_entry + S (fom_value_pfp_both_original_productright) = S ((S (fom_index_pfp_both_original_productright)) * bc)) /\ exists fom_beta_quotient_pfp_both_original_productright_entry. bb = fom_beta_quotient_pfp_both_original_productright_entry * S ((S (fom_index_pfp_both_original_productright)) * bc) + (fom_value_pfp_both_original_productright))) /\ (exists fom_gap_pfp_both_original_productright_value_bound. fom_gap_pfp_both_original_productright_value_bound + S (fom_value_pfp_both_original_productright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_both_original_productcoefficients. (exists pfa_gap_both_original_productcoefficientsbound. pfa_gap_both_original_productcoefficientsbound + S (pfc_index_both_original_productcoefficients) = (N)) -> exists pfc_value_both_original_productcoefficients. ((((exists ff_h_pfp_both_original_productcoefficientsentry. ff_h_pfp_both_original_productcoefficientsentry + S (pfc_value_both_original_productcoefficients) = S ((S (pfc_index_both_original_productcoefficients)) * cc)) /\ exists ff_q_pfp_both_original_productcoefficientsentry. cb = ff_q_pfp_both_original_productcoefficientsentry * S ((S (pfc_index_both_original_productcoefficients)) * cc) + (pfc_value_both_original_productcoefficients))) /\ ((exists pfc_terms_code_both_original_productcoefficientscoefficient pfc_terms_scale_both_original_productcoefficientscoefficient pfc_natural_sum_both_original_productcoefficientscoefficient. ((forall pfc_index_both_original_productcoefficientscoefficientdiagonal. (exists pfa_gap_both_original_productcoefficientscoefficientdiagonalbound. pfa_gap_both_original_productcoefficientscoefficientdiagonalbound + S (pfc_index_both_original_productcoefficientscoefficientdiagonal) = (S (pfc_index_both_original_productcoefficients))) -> exists pfc_value_both_original_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_both_original_productcoefficientscoefficientdiagonalentry. ff_h_pfp_both_original_productcoefficientscoefficientdiagonalentry + S (pfc_value_both_original_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_both_original_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_both_original_productcoefficientscoefficient)) /\ exists ff_q_pfp_both_original_productcoefficientscoefficientdiagonalentry. pfc_terms_code_both_original_productcoefficientscoefficient = ff_q_pfp_both_original_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_both_original_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_both_original_productcoefficientscoefficient) + (pfc_value_both_original_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_both_original_productcoefficientscoefficientdiagonalterm pfc_left_both_original_productcoefficientscoefficientdiagonalterm pfc_right_both_original_productcoefficientscoefficientdiagonalterm. (((pfc_index_both_original_productcoefficientscoefficientdiagonal)+pfc_complement_both_original_productcoefficientscoefficientdiagonalterm=(pfc_index_both_original_productcoefficients)) /\ ((((((exists pfa_gap_both_original_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_both_original_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_both_original_productcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_both_original_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_both_original_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_both_original_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_both_original_productcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_both_original_productcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_both_original_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_both_original_productcoefficientscoefficientdiagonal)) * ac) + (pfc_left_both_original_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_both_original_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_both_original_productcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_both_original_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_both_original_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_both_original_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_both_original_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_both_original_productcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_both_original_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_both_original_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_both_original_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_both_original_productcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_both_original_productcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_both_original_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_both_original_productcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_both_original_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_both_original_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_both_original_productcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_both_original_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_both_original_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_both_original_productcoefficientscoefficientdiagonal)=pfc_left_both_original_productcoefficientscoefficientdiagonalterm*pfc_right_both_original_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_both_original_productcoefficientscoefficientsum fs_v_pfc_both_original_productcoefficientscoefficientsum. ((((exists fs_h_pfc_both_original_productcoefficientscoefficientsum_body_start. fs_h_pfc_both_original_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_both_original_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_original_productcoefficientscoefficientsum_body_start. fs_u_pfc_both_original_productcoefficientscoefficientsum = fs_q_pfc_both_original_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_both_original_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_both_original_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_both_original_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_both_original_productcoefficientscoefficient) = S ((S (S (pfc_index_both_original_productcoefficients))) * fs_v_pfc_both_original_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_original_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_both_original_productcoefficientscoefficientsum = fs_q_pfc_both_original_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_both_original_productcoefficients))) * fs_v_pfc_both_original_productcoefficientscoefficientsum) + (pfc_natural_sum_both_original_productcoefficientscoefficient))) /\ forall fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_both_original_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_both_original_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps = S (pfc_index_both_original_productcoefficients)) -> exists fs_a_pfc_both_original_productcoefficientscoefficientsum_body_steps fs_r_pfc_both_original_productcoefficientscoefficientsum_body_steps fs_s_pfc_both_original_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_both_original_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_both_original_productcoefficientscoefficient)) /\ exists fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_both_original_productcoefficientscoefficient = fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_both_original_productcoefficientscoefficient) + (fs_a_pfc_both_original_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_both_original_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_original_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_both_original_productcoefficientscoefficientsum = fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_original_productcoefficientscoefficientsum) + (fs_r_pfc_both_original_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_both_original_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_both_original_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_original_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_both_original_productcoefficientscoefficientsum = fs_q_pfc_both_original_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_both_original_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_original_productcoefficientscoefficientsum) + (fs_s_pfc_both_original_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_both_original_productcoefficientscoefficientsum_body_steps = fs_r_pfc_both_original_productcoefficientscoefficientsum_body_steps + fs_a_pfc_both_original_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_both_original_productcoefficientscoefficientresiduebound. pfa_gap_both_original_productcoefficientscoefficientresiduebound + S (pfc_value_both_original_productcoefficients) = (p)) /\ ((exists pfa_offset_left_both_original_productcoefficientscoefficientresiduecongruence pfa_offset_right_both_original_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_both_original_productcoefficientscoefficient) + (p) * pfa_offset_left_both_original_productcoefficientscoefficientresiduecongruence = (pfc_value_both_original_productcoefficients) + (p) * pfa_offset_right_both_original_productcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (exists K CB CC. ((((forall fom_index_pfp_both_padded_productleft. (exists fom_gap_pfp_both_padded_productleft_index_bound. fom_gap_pfp_both_padded_productleft_index_bound + S (fom_index_pfp_both_padded_productleft) = t+L) -> exists fom_value_pfp_both_padded_productleft. ((((exists fom_beta_height_pfp_both_padded_productleft_entry. fom_beta_height_pfp_both_padded_productleft_entry + S (fom_value_pfp_both_padded_productleft) = S ((S (fom_index_pfp_both_padded_productleft)) * AC)) /\ exists fom_beta_quotient_pfp_both_padded_productleft_entry. AB = fom_beta_quotient_pfp_both_padded_productleft_entry * S ((S (fom_index_pfp_both_padded_productleft)) * AC) + (fom_value_pfp_both_padded_productleft))) /\ (exists fom_gap_pfp_both_padded_productleft_value_bound. fom_gap_pfp_both_padded_productleft_value_bound + S (fom_value_pfp_both_padded_productleft) = p))) /\ (((forall fom_index_pfp_both_padded_productright. (exists fom_gap_pfp_both_padded_productright_index_bound. fom_gap_pfp_both_padded_productright_index_bound + S (fom_index_pfp_both_padded_productright) = s+M) -> exists fom_value_pfp_both_padded_productright. ((((exists fom_beta_height_pfp_both_padded_productright_entry. fom_beta_height_pfp_both_padded_productright_entry + S (fom_value_pfp_both_padded_productright) = S ((S (fom_index_pfp_both_padded_productright)) * BC)) /\ exists fom_beta_quotient_pfp_both_padded_productright_entry. BB = fom_beta_quotient_pfp_both_padded_productright_entry * S ((S (fom_index_pfp_both_padded_productright)) * BC) + (fom_value_pfp_both_padded_productright))) /\ (exists fom_gap_pfp_both_padded_productright_value_bound. fom_gap_pfp_both_padded_productright_value_bound + S (fom_value_pfp_both_padded_productright) = p))) /\ (((((((t+L)=0 \/ (s+M)=0) /\ (((K)=0)))) \/ (((~((t+L)=0)) /\ (((~((s+M)=0)) /\ (((t+L)+(s+M)=S (K)))))))) /\ ((forall pfc_index_both_padded_productcoefficients. (exists pfa_gap_both_padded_productcoefficientsbound. pfa_gap_both_padded_productcoefficientsbound + S (pfc_index_both_padded_productcoefficients) = (K)) -> exists pfc_value_both_padded_productcoefficients. ((((exists ff_h_pfp_both_padded_productcoefficientsentry. ff_h_pfp_both_padded_productcoefficientsentry + S (pfc_value_both_padded_productcoefficients) = S ((S (pfc_index_both_padded_productcoefficients)) * CC)) /\ exists ff_q_pfp_both_padded_productcoefficientsentry. CB = ff_q_pfp_both_padded_productcoefficientsentry * S ((S (pfc_index_both_padded_productcoefficients)) * CC) + (pfc_value_both_padded_productcoefficients))) /\ ((exists pfc_terms_code_both_padded_productcoefficientscoefficient pfc_terms_scale_both_padded_productcoefficientscoefficient pfc_natural_sum_both_padded_productcoefficientscoefficient. ((forall pfc_index_both_padded_productcoefficientscoefficientdiagonal. (exists pfa_gap_both_padded_productcoefficientscoefficientdiagonalbound. pfa_gap_both_padded_productcoefficientscoefficientdiagonalbound + S (pfc_index_both_padded_productcoefficientscoefficientdiagonal) = (S (pfc_index_both_padded_productcoefficients))) -> exists pfc_value_both_padded_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_both_padded_productcoefficientscoefficientdiagonalentry. ff_h_pfp_both_padded_productcoefficientscoefficientdiagonalentry + S (pfc_value_both_padded_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_both_padded_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_both_padded_productcoefficientscoefficient)) /\ exists ff_q_pfp_both_padded_productcoefficientscoefficientdiagonalentry. pfc_terms_code_both_padded_productcoefficientscoefficient = ff_q_pfp_both_padded_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_both_padded_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_both_padded_productcoefficientscoefficient) + (pfc_value_both_padded_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm pfc_left_both_padded_productcoefficientscoefficientdiagonalterm pfc_right_both_padded_productcoefficientscoefficientdiagonalterm. (((pfc_index_both_padded_productcoefficientscoefficientdiagonal)+pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm=(pfc_index_both_padded_productcoefficients)) /\ ((((((exists pfa_gap_both_padded_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_both_padded_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_both_padded_productcoefficientscoefficientdiagonal) = (t+L)) /\ ((((exists ff_h_pfp_both_padded_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_both_padded_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_both_padded_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_both_padded_productcoefficientscoefficientdiagonal)) * AC)) /\ exists ff_q_pfp_both_padded_productcoefficientscoefficientdiagonaltermleftentry. AB = ff_q_pfp_both_padded_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_both_padded_productcoefficientscoefficientdiagonal)) * AC) + (pfc_left_both_padded_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_both_padded_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_both_padded_productcoefficientscoefficientdiagonaltermleftoutside+(t+L)=(pfc_index_both_padded_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_both_padded_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_both_padded_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_both_padded_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm) = (s+M)) /\ ((((exists ff_h_pfp_both_padded_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_both_padded_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_both_padded_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm)) * BC)) /\ exists ff_q_pfp_both_padded_productcoefficientscoefficientdiagonaltermrightentry. BB = ff_q_pfp_both_padded_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm)) * BC) + (pfc_right_both_padded_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_both_padded_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_both_padded_productcoefficientscoefficientdiagonaltermrightoutside+(s+M)=(pfc_complement_both_padded_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_both_padded_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_both_padded_productcoefficientscoefficientdiagonal)=pfc_left_both_padded_productcoefficientscoefficientdiagonalterm*pfc_right_both_padded_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_both_padded_productcoefficientscoefficientsum fs_v_pfc_both_padded_productcoefficientscoefficientsum. ((((exists fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_start. fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_start. fs_u_pfc_both_padded_productcoefficientscoefficientsum = fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_both_padded_productcoefficientscoefficient) = S ((S (S (pfc_index_both_padded_productcoefficients))) * fs_v_pfc_both_padded_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_both_padded_productcoefficientscoefficientsum = fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_both_padded_productcoefficients))) * fs_v_pfc_both_padded_productcoefficientscoefficientsum) + (pfc_natural_sum_both_padded_productcoefficientscoefficient))) /\ forall fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_both_padded_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_both_padded_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps = S (pfc_index_both_padded_productcoefficients)) -> exists fs_a_pfc_both_padded_productcoefficientscoefficientsum_body_steps fs_r_pfc_both_padded_productcoefficientscoefficientsum_body_steps fs_s_pfc_both_padded_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_both_padded_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_both_padded_productcoefficientscoefficient)) /\ exists fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_both_padded_productcoefficientscoefficient = fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_both_padded_productcoefficientscoefficient) + (fs_a_pfc_both_padded_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_both_padded_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_both_padded_productcoefficientscoefficientsum = fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum) + (fs_r_pfc_both_padded_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_both_padded_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_both_padded_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_both_padded_productcoefficientscoefficientsum = fs_q_pfc_both_padded_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_both_padded_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_both_padded_productcoefficientscoefficientsum) + (fs_s_pfc_both_padded_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_both_padded_productcoefficientscoefficientsum_body_steps = fs_r_pfc_both_padded_productcoefficientscoefficientsum_body_steps + fs_a_pfc_both_padded_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_both_padded_productcoefficientscoefficientresiduebound. pfa_gap_both_padded_productcoefficientscoefficientresiduebound + S (pfc_value_both_padded_productcoefficients) = (p)) /\ ((exists pfa_offset_left_both_padded_productcoefficientscoefficientresiduecongruence pfa_offset_right_both_padded_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_both_padded_productcoefficientscoefficient) + (p) * pfa_offset_left_both_padded_productcoefficientscoefficientresiduecongruence = (pfc_value_both_padded_productcoefficients) + (p) * pfa_offset_right_both_padded_productcoefficientscoefficientresiduecongruence))))))))))))))))))) /\ ((forall pfrep_power_both_equivalent_result pfrep_left_both_equivalent_result pfrep_right_both_equivalent_result. ((exists pfrep_position_both_equivalent_resultfirst. ((pfrep_position_both_equivalent_resultfirst+S (pfrep_power_both_equivalent_result)=(N)) /\ ((((exists ff_h_pfp_both_equivalent_resultfirstentry. ff_h_pfp_both_equivalent_resultfirstentry + S (pfrep_left_both_equivalent_result) = S ((S (pfrep_position_both_equivalent_resultfirst)) * cc)) /\ exists ff_q_pfp_both_equivalent_resultfirstentry. cb = ff_q_pfp_both_equivalent_resultfirstentry * S ((S (pfrep_position_both_equivalent_resultfirst)) * cc) + (pfrep_left_both_equivalent_result)))))) \/ (((exists pfrep_gap_both_equivalent_resultfirstoutside. pfrep_gap_both_equivalent_resultfirstoutside+(N)=(pfrep_power_both_equivalent_result)) /\ (((pfrep_left_both_equivalent_result)=0))))) -> ((exists pfrep_position_both_equivalent_resultsecond. ((pfrep_position_both_equivalent_resultsecond+S (pfrep_power_both_equivalent_result)=(K)) /\ ((((exists ff_h_pfp_both_equivalent_resultsecondentry. ff_h_pfp_both_equivalent_resultsecondentry + S (pfrep_right_both_equivalent_result) = S ((S (pfrep_position_both_equivalent_resultsecond)) * CC)) /\ exists ff_q_pfp_both_equivalent_resultsecondentry. CB = ff_q_pfp_both_equivalent_resultsecondentry * S ((S (pfrep_position_both_equivalent_resultsecond)) * CC) + (pfrep_right_both_equivalent_result)))))) \/ (((exists pfrep_gap_both_equivalent_resultsecondoutside. pfrep_gap_both_equivalent_resultsecondoutside+(K)=(pfrep_power_both_equivalent_result)) /\ (((pfrep_right_both_equivalent_result)=0))))) -> pfrep_left_both_equivalent_result=pfrep_right_both_equivalent_result))))

Complete tactic proof in conservative notation

All 102 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

102 script commands · 17 reading checkpoints · 4 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 (2)
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 cb
  9. L9
    intro cc
  10. L10
    intro N
02Fix variables and assumptionsL11–20

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

  1. L11
    intro AB
  2. L12
    intro AC
  3. L13
    intro t
  4. L14
    intro BB
  5. L15
    intro BC
  6. L16
    intro s
  7. L17
    intro hprime
  8. L18
    intro hA
  9. L19
    intro hB
  10. L20
    intro hc
03Establish hcopyL21–22

Establish this local claim before using it. It is not an additional assumption.

  1. L21
    have hcopy : FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N)Definitions: FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N)Original native command in the exact edition
  2. L22
    exact hc
04Separate the logical casesL23–25

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L23
    cases hcopy
  2. L24
    cases hcopy_right
  3. L25
    cases hcopy_right_right
05Establish hpL26–31

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime nonzero.

  1. L26
    have hp : ~(p=0)
  2. L27
    intro hz
  3. L28
    specialize prime_nonzero (p)
  4. L29
    apply prime_nonzero
  5. L30
    exact hprime
  6. L31
    exact hz
06Establish hlengthL32–35

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply polynomial product length exists.

  1. L32
    have hlength : ∃ K. PolynomialProductLength(t + L,s + M,K)Definitions: PolynomialProductLength(t + L,s + M,K)Original native command in the exact edition
  2. L33
    specialize polynomial_product_length_exists (t+L)
  3. L34
    specialize polynomial_product_length_exists (s+M)
  4. L35
    apply polynomial_product_length_exists
07Separate the logical casesL36–36

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L36
    cases hlength
08Establish hnewL37–46

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial convolution at length exists.

  1. L37
    have hnew : ∃ CB. ∃ CC. FpPolyProduct(p,AB,AC,t + L,BB,BC,s + M,CB,CC,x)Definitions: FpPolyProduct(p,AB,AC,t + L,BB,BC,s + M,CB,CC,x)Original native command in the exact edition
  2. L38
    specialize prime_field_polynomial_convolution_at_length_exists (p)
  3. L39
    specialize prime_field_polynomial_convolution_at_length_exists (AB)
  4. L40
    specialize prime_field_polynomial_convolution_at_length_exists (AC)
  5. L41
    specialize prime_field_polynomial_convolution_at_length_exists (t+L)
  6. L42
    specialize prime_field_polynomial_convolution_at_length_exists (BB)
  7. L43
    specialize prime_field_polynomial_convolution_at_length_exists (BC)
  8. L44
    specialize prime_field_polynomial_convolution_at_length_exists (s+M)
  9. L45
    specialize prime_field_polynomial_convolution_at_length_exists (x)
  10. L46
    apply prime_field_polynomial_convolution_at_length_exists
09Use earlier factsL47–56

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

  1. L47
    exact hp
  2. L48
    specialize prime_field_polynomial_left_pad_bounded (p)
  3. L49
    specialize prime_field_polynomial_left_pad_bounded (ab)
  4. L50
    specialize prime_field_polynomial_left_pad_bounded (ac)
  5. L51
    specialize prime_field_polynomial_left_pad_bounded (L)
  6. L52
    specialize prime_field_polynomial_left_pad_bounded (t)
  7. L53
    specialize prime_field_polynomial_left_pad_bounded (AB)
  8. L54
    specialize prime_field_polynomial_left_pad_bounded (AC)
  9. L55
    apply prime_field_polynomial_left_pad_bounded
  10. L56
    exact hprime
10Use earlier factsL57–66

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

  1. L57
    exact hcopy_left
  2. L58
    exact hA
  3. L59
    specialize prime_field_polynomial_left_pad_bounded (p)
  4. L60
    specialize prime_field_polynomial_left_pad_bounded (bb)
  5. L61
    specialize prime_field_polynomial_left_pad_bounded (bc)
  6. L62
    specialize prime_field_polynomial_left_pad_bounded (M)
  7. L63
    specialize prime_field_polynomial_left_pad_bounded (s)
  8. L64
    specialize prime_field_polynomial_left_pad_bounded (BB)
  9. L65
    specialize prime_field_polynomial_left_pad_bounded (BC)
  10. L66
    apply prime_field_polynomial_left_pad_bounded
11Use earlier factsL67–70

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

  1. L67
    exact hprime
  2. L68
    exact hcopy_right_left
  3. L69
    exact hB
  4. L70
    exact hlength_witness
12Separate the logical casesL71–72

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L71
    cases hnew
  2. L72
    cases hnew_witness
13Construct an explicit witnessL73–75

Supply the displayed value, then prove that it has the required property.

  1. L73
    exists x
  2. L74
    exists x1
  3. L75
    exists x2
14Separate the logical casesL76–76

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L76
    split
15Use earlier factsL77–86

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

  1. L77
    exact hnew_witness_witness
  2. L78
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (p)
  3. L79
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (ab)
  4. L80
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (ac)
  5. L81
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (L)
  6. L82
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (bb)
  7. L83
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (bc)
  8. L84
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (M)
  9. L85
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (cb)
  10. L86
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (cc)
16Use earlier factsL87–96

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

  1. L87
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (N)
  2. L88
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (AB)
  3. L89
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (AC)
  4. L90
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (t)
  5. L91
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (BB)
  6. L92
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (BC)
  7. L93
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (s)
  8. L94
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x1)
  9. L95
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x2)
  10. L96
    specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x)
17Use earlier factsL97–102

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

  1. L97
    apply prime_field_polynomial_convolution_both_left_paddings_equivalent
  2. L98
    exact hp
  3. L99
    exact hA
  4. L100
    exact hB
  5. L101
    exact hc
  6. L102
    exact hnew_witness_witness

Library-wide reading audit

Original defined command ledger · 102 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro M
  8. 0008intro cb
  9. 0009intro cc
  10. 0010intro N
  11. 0011intro AB
  12. 0012intro AC
  13. 0013intro t
  14. 0014intro BB
  15. 0015intro BC
  16. 0016intro s
  17. 0017intro hprime
  18. 0018intro hA
  19. 0019intro hB
  20. 0020intro hc
  21. 0021have hcopy : FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N)
  22. 0022exact hc
  23. 0023cases hcopy
  24. 0024cases hcopy_right
  25. 0025cases hcopy_right_right
  26. 0026have hp : ~(p=0)
  27. 0027intro hz
  28. 0028specialize prime_nonzero (p)
  29. 0029apply prime_nonzero
  30. 0030exact hprime
  31. 0031exact hz
  32. 0032have hlength : ∃ K. PolynomialProductLength(t + L,s + M,K)
  33. 0033specialize polynomial_product_length_exists (t+L)
  34. 0034specialize polynomial_product_length_exists (s+M)
  35. 0035apply polynomial_product_length_exists
  36. 0036cases hlength
  37. 0037have hnew : ∃ CB. ∃ CC. FpPolyProduct(p,AB,AC,t + L,BB,BC,s + M,CB,CC,x)
  38. 0038specialize prime_field_polynomial_convolution_at_length_exists (p)
  39. 0039specialize prime_field_polynomial_convolution_at_length_exists (AB)
  40. 0040specialize prime_field_polynomial_convolution_at_length_exists (AC)
  41. 0041specialize prime_field_polynomial_convolution_at_length_exists (t+L)
  42. 0042specialize prime_field_polynomial_convolution_at_length_exists (BB)
  43. 0043specialize prime_field_polynomial_convolution_at_length_exists (BC)
  44. 0044specialize prime_field_polynomial_convolution_at_length_exists (s+M)
  45. 0045specialize prime_field_polynomial_convolution_at_length_exists (x)
  46. 0046apply prime_field_polynomial_convolution_at_length_exists
  47. 0047exact hp
  48. 0048specialize prime_field_polynomial_left_pad_bounded (p)
  49. 0049specialize prime_field_polynomial_left_pad_bounded (ab)
  50. 0050specialize prime_field_polynomial_left_pad_bounded (ac)
  51. 0051specialize prime_field_polynomial_left_pad_bounded (L)
  52. 0052specialize prime_field_polynomial_left_pad_bounded (t)
  53. 0053specialize prime_field_polynomial_left_pad_bounded (AB)
  54. 0054specialize prime_field_polynomial_left_pad_bounded (AC)
  55. 0055apply prime_field_polynomial_left_pad_bounded
  56. 0056exact hprime
  57. 0057exact hcopy_left
  58. 0058exact hA
  59. 0059specialize prime_field_polynomial_left_pad_bounded (p)
  60. 0060specialize prime_field_polynomial_left_pad_bounded (bb)
  61. 0061specialize prime_field_polynomial_left_pad_bounded (bc)
  62. 0062specialize prime_field_polynomial_left_pad_bounded (M)
  63. 0063specialize prime_field_polynomial_left_pad_bounded (s)
  64. 0064specialize prime_field_polynomial_left_pad_bounded (BB)
  65. 0065specialize prime_field_polynomial_left_pad_bounded (BC)
  66. 0066apply prime_field_polynomial_left_pad_bounded
  67. 0067exact hprime
  68. 0068exact hcopy_right_left
  69. 0069exact hB
  70. 0070exact hlength_witness
  71. 0071cases hnew
  72. 0072cases hnew_witness
  73. 0073exists x
  74. 0074exists x1
  75. 0075exists x2
  76. 0076split
  77. 0077exact hnew_witness_witness
  78. 0078specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (p)
  79. 0079specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (ab)
  80. 0080specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (ac)
  81. 0081specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (L)
  82. 0082specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (bb)
  83. 0083specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (bc)
  84. 0084specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (M)
  85. 0085specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (cb)
  86. 0086specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (cc)
  87. 0087specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (N)
  88. 0088specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (AB)
  89. 0089specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (AC)
  90. 0090specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (t)
  91. 0091specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (BB)
  92. 0092specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (BC)
  93. 0093specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (s)
  94. 0094specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x1)
  95. 0095specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x2)
  96. 0096specialize prime_field_polynomial_convolution_both_left_paddings_equivalent (x)
  97. 0097apply prime_field_polynomial_convolution_both_left_paddings_equivalent
  98. 0098exact hp
  99. 0099exact hA
  100. 0100exact hB
  101. 0101exact hc
  102. 0102exact hnew_witness_witness