PG000B

prime_field_polynomial_convolution_shift_right_empty

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

If either original factor is empty, both actual products are zero prefixes; no false successor-length equation is imposed.

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

Exact expanded first-order arithmetic statement

forall p ab ac L bb bc M cb cc N BB BC db dc K. (~(p=0)) -> (((forall mdr_i_pfp_shift_empty_factorprefix mdr_a_pfp_shift_empty_factorprefix. (exists mdr_gap_pfp_shift_empty_factorprefixb. mdr_gap_pfp_shift_empty_factorprefixb + S (mdr_i_pfp_shift_empty_factorprefix) = (M)) -> (((exists ff_h_mdr_pfp_shift_empty_factorprefixo. ff_h_mdr_pfp_shift_empty_factorprefixo + S (mdr_a_pfp_shift_empty_factorprefix) = S ((S (mdr_i_pfp_shift_empty_factorprefix)) * bc)) /\ exists ff_q_mdr_pfp_shift_empty_factorprefixo. bb = ff_q_mdr_pfp_shift_empty_factorprefixo * S ((S (mdr_i_pfp_shift_empty_factorprefix)) * bc) + (mdr_a_pfp_shift_empty_factorprefix))) -> (((exists ff_h_mdr_pfp_shift_empty_factorprefixn. ff_h_mdr_pfp_shift_empty_factorprefixn + S (mdr_a_pfp_shift_empty_factorprefix) = S ((S (mdr_i_pfp_shift_empty_factorprefix)) * BC)) /\ exists ff_q_mdr_pfp_shift_empty_factorprefixn. BB = ff_q_mdr_pfp_shift_empty_factorprefixn * S ((S (mdr_i_pfp_shift_empty_factorprefix)) * BC) + (mdr_a_pfp_shift_empty_factorprefix)))) /\ ((((exists ff_h_pfp_shift_empty_factorlast. ff_h_pfp_shift_empty_factorlast + S (0) = S ((S (M)) * BC)) /\ exists ff_q_pfp_shift_empty_factorlast. BB = ff_q_pfp_shift_empty_factorlast * S ((S (M)) * BC) + (0)))))) -> (((forall fom_index_pfp_shift_empty_oldleft. (exists fom_gap_pfp_shift_empty_oldleft_index_bound. fom_gap_pfp_shift_empty_oldleft_index_bound + S (fom_index_pfp_shift_empty_oldleft) = L) -> exists fom_value_pfp_shift_empty_oldleft. ((((exists fom_beta_height_pfp_shift_empty_oldleft_entry. fom_beta_height_pfp_shift_empty_oldleft_entry + S (fom_value_pfp_shift_empty_oldleft) = S ((S (fom_index_pfp_shift_empty_oldleft)) * ac)) /\ exists fom_beta_quotient_pfp_shift_empty_oldleft_entry. ab = fom_beta_quotient_pfp_shift_empty_oldleft_entry * S ((S (fom_index_pfp_shift_empty_oldleft)) * ac) + (fom_value_pfp_shift_empty_oldleft))) /\ (exists fom_gap_pfp_shift_empty_oldleft_value_bound. fom_gap_pfp_shift_empty_oldleft_value_bound + S (fom_value_pfp_shift_empty_oldleft) = p))) /\ (((forall fom_index_pfp_shift_empty_oldright. (exists fom_gap_pfp_shift_empty_oldright_index_bound. fom_gap_pfp_shift_empty_oldright_index_bound + S (fom_index_pfp_shift_empty_oldright) = M) -> exists fom_value_pfp_shift_empty_oldright. ((((exists fom_beta_height_pfp_shift_empty_oldright_entry. fom_beta_height_pfp_shift_empty_oldright_entry + S (fom_value_pfp_shift_empty_oldright) = S ((S (fom_index_pfp_shift_empty_oldright)) * bc)) /\ exists fom_beta_quotient_pfp_shift_empty_oldright_entry. bb = fom_beta_quotient_pfp_shift_empty_oldright_entry * S ((S (fom_index_pfp_shift_empty_oldright)) * bc) + (fom_value_pfp_shift_empty_oldright))) /\ (exists fom_gap_pfp_shift_empty_oldright_value_bound. fom_gap_pfp_shift_empty_oldright_value_bound + S (fom_value_pfp_shift_empty_oldright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_shift_empty_oldcoefficients. (exists pfa_gap_shift_empty_oldcoefficientsbound. pfa_gap_shift_empty_oldcoefficientsbound + S (pfc_index_shift_empty_oldcoefficients) = (N)) -> exists pfc_value_shift_empty_oldcoefficients. ((((exists ff_h_pfp_shift_empty_oldcoefficientsentry. ff_h_pfp_shift_empty_oldcoefficientsentry + S (pfc_value_shift_empty_oldcoefficients) = S ((S (pfc_index_shift_empty_oldcoefficients)) * cc)) /\ exists ff_q_pfp_shift_empty_oldcoefficientsentry. cb = ff_q_pfp_shift_empty_oldcoefficientsentry * S ((S (pfc_index_shift_empty_oldcoefficients)) * cc) + (pfc_value_shift_empty_oldcoefficients))) /\ ((exists pfc_terms_code_shift_empty_oldcoefficientscoefficient pfc_terms_scale_shift_empty_oldcoefficientscoefficient pfc_natural_sum_shift_empty_oldcoefficientscoefficient. ((forall pfc_index_shift_empty_oldcoefficientscoefficientdiagonal. (exists pfa_gap_shift_empty_oldcoefficientscoefficientdiagonalbound. pfa_gap_shift_empty_oldcoefficientscoefficientdiagonalbound + S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal) = (S (pfc_index_shift_empty_oldcoefficients))) -> exists pfc_value_shift_empty_oldcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonalentry. ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonalentry + S (pfc_value_shift_empty_oldcoefficientscoefficientdiagonal) = S ((S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)) * pfc_terms_scale_shift_empty_oldcoefficientscoefficient)) /\ exists ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonalentry. pfc_terms_code_shift_empty_oldcoefficientscoefficient = ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonalentry * S ((S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)) * pfc_terms_scale_shift_empty_oldcoefficientscoefficient) + (pfc_value_shift_empty_oldcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm pfc_left_shift_empty_oldcoefficientscoefficientdiagonalterm pfc_right_shift_empty_oldcoefficientscoefficientdiagonalterm. (((pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)+pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm=(pfc_index_shift_empty_oldcoefficients)) /\ ((((((exists pfa_gap_shift_empty_oldcoefficientscoefficientdiagonaltermleftinside. pfa_gap_shift_empty_oldcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_shift_empty_oldcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)) * ac) + (pfc_left_shift_empty_oldcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_shift_empty_oldcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_shift_empty_oldcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_shift_empty_oldcoefficientscoefficientdiagonal)) /\ (((pfc_left_shift_empty_oldcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_empty_oldcoefficientscoefficientdiagonaltermrightinside. pfa_gap_shift_empty_oldcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_shift_empty_oldcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_shift_empty_oldcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_shift_empty_oldcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_shift_empty_oldcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_shift_empty_oldcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_shift_empty_oldcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_shift_empty_oldcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_shift_empty_oldcoefficientscoefficientdiagonal)=pfc_left_shift_empty_oldcoefficientscoefficientdiagonalterm*pfc_right_shift_empty_oldcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_empty_oldcoefficientscoefficientsum fs_v_pfc_shift_empty_oldcoefficientscoefficientsum. ((((exists fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_start. fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_start. fs_u_pfc_shift_empty_oldcoefficientscoefficientsum = fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_terminal. fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_shift_empty_oldcoefficientscoefficient) = S ((S (S (pfc_index_shift_empty_oldcoefficients))) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_terminal. fs_u_pfc_shift_empty_oldcoefficientscoefficientsum = fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_shift_empty_oldcoefficients))) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum) + (pfc_natural_sum_shift_empty_oldcoefficientscoefficient))) /\ forall fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps = S (pfc_index_shift_empty_oldcoefficients)) -> exists fs_a_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps fs_r_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps fs_s_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_shift_empty_oldcoefficientscoefficient)) /\ exists fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_shift_empty_oldcoefficientscoefficient = fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_shift_empty_oldcoefficientscoefficient) + (fs_a_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_shift_empty_oldcoefficientscoefficientsum = fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum) + (fs_r_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_shift_empty_oldcoefficientscoefficientsum = fs_q_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_oldcoefficientscoefficientsum) + (fs_s_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps = fs_r_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps + fs_a_pfc_shift_empty_oldcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_shift_empty_oldcoefficientscoefficientresiduebound. pfa_gap_shift_empty_oldcoefficientscoefficientresiduebound + S (pfc_value_shift_empty_oldcoefficients) = (p)) /\ ((exists pfa_offset_left_shift_empty_oldcoefficientscoefficientresiduecongruence pfa_offset_right_shift_empty_oldcoefficientscoefficientresiduecongruence. (pfc_natural_sum_shift_empty_oldcoefficientscoefficient) + (p) * pfa_offset_left_shift_empty_oldcoefficientscoefficientresiduecongruence = (pfc_value_shift_empty_oldcoefficients) + (p) * pfa_offset_right_shift_empty_oldcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall fom_index_pfp_shift_empty_newleft. (exists fom_gap_pfp_shift_empty_newleft_index_bound. fom_gap_pfp_shift_empty_newleft_index_bound + S (fom_index_pfp_shift_empty_newleft) = L) -> exists fom_value_pfp_shift_empty_newleft. ((((exists fom_beta_height_pfp_shift_empty_newleft_entry. fom_beta_height_pfp_shift_empty_newleft_entry + S (fom_value_pfp_shift_empty_newleft) = S ((S (fom_index_pfp_shift_empty_newleft)) * ac)) /\ exists fom_beta_quotient_pfp_shift_empty_newleft_entry. ab = fom_beta_quotient_pfp_shift_empty_newleft_entry * S ((S (fom_index_pfp_shift_empty_newleft)) * ac) + (fom_value_pfp_shift_empty_newleft))) /\ (exists fom_gap_pfp_shift_empty_newleft_value_bound. fom_gap_pfp_shift_empty_newleft_value_bound + S (fom_value_pfp_shift_empty_newleft) = p))) /\ (((forall fom_index_pfp_shift_empty_newright. (exists fom_gap_pfp_shift_empty_newright_index_bound. fom_gap_pfp_shift_empty_newright_index_bound + S (fom_index_pfp_shift_empty_newright) = S M) -> exists fom_value_pfp_shift_empty_newright. ((((exists fom_beta_height_pfp_shift_empty_newright_entry. fom_beta_height_pfp_shift_empty_newright_entry + S (fom_value_pfp_shift_empty_newright) = S ((S (fom_index_pfp_shift_empty_newright)) * BC)) /\ exists fom_beta_quotient_pfp_shift_empty_newright_entry. BB = fom_beta_quotient_pfp_shift_empty_newright_entry * S ((S (fom_index_pfp_shift_empty_newright)) * BC) + (fom_value_pfp_shift_empty_newright))) /\ (exists fom_gap_pfp_shift_empty_newright_value_bound. fom_gap_pfp_shift_empty_newright_value_bound + S (fom_value_pfp_shift_empty_newright) = p))) /\ (((((((L)=0 \/ (S M)=0) /\ (((K)=0)))) \/ (((~((L)=0)) /\ (((~((S M)=0)) /\ (((L)+(S M)=S (K)))))))) /\ ((forall pfc_index_shift_empty_newcoefficients. (exists pfa_gap_shift_empty_newcoefficientsbound. pfa_gap_shift_empty_newcoefficientsbound + S (pfc_index_shift_empty_newcoefficients) = (K)) -> exists pfc_value_shift_empty_newcoefficients. ((((exists ff_h_pfp_shift_empty_newcoefficientsentry. ff_h_pfp_shift_empty_newcoefficientsentry + S (pfc_value_shift_empty_newcoefficients) = S ((S (pfc_index_shift_empty_newcoefficients)) * dc)) /\ exists ff_q_pfp_shift_empty_newcoefficientsentry. db = ff_q_pfp_shift_empty_newcoefficientsentry * S ((S (pfc_index_shift_empty_newcoefficients)) * dc) + (pfc_value_shift_empty_newcoefficients))) /\ ((exists pfc_terms_code_shift_empty_newcoefficientscoefficient pfc_terms_scale_shift_empty_newcoefficientscoefficient pfc_natural_sum_shift_empty_newcoefficientscoefficient. ((forall pfc_index_shift_empty_newcoefficientscoefficientdiagonal. (exists pfa_gap_shift_empty_newcoefficientscoefficientdiagonalbound. pfa_gap_shift_empty_newcoefficientscoefficientdiagonalbound + S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal) = (S (pfc_index_shift_empty_newcoefficients))) -> exists pfc_value_shift_empty_newcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonalentry. ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonalentry + S (pfc_value_shift_empty_newcoefficientscoefficientdiagonal) = S ((S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal)) * pfc_terms_scale_shift_empty_newcoefficientscoefficient)) /\ exists ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonalentry. pfc_terms_code_shift_empty_newcoefficientscoefficient = ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonalentry * S ((S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal)) * pfc_terms_scale_shift_empty_newcoefficientscoefficient) + (pfc_value_shift_empty_newcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm pfc_left_shift_empty_newcoefficientscoefficientdiagonalterm pfc_right_shift_empty_newcoefficientscoefficientdiagonalterm. (((pfc_index_shift_empty_newcoefficientscoefficientdiagonal)+pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm=(pfc_index_shift_empty_newcoefficients)) /\ ((((((exists pfa_gap_shift_empty_newcoefficientscoefficientdiagonaltermleftinside. pfa_gap_shift_empty_newcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_shift_empty_newcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_shift_empty_newcoefficientscoefficientdiagonal)) * ac) + (pfc_left_shift_empty_newcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_shift_empty_newcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_shift_empty_newcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_shift_empty_newcoefficientscoefficientdiagonal)) /\ (((pfc_left_shift_empty_newcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_empty_newcoefficientscoefficientdiagonaltermrightinside. pfa_gap_shift_empty_newcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm) = (S M)) /\ ((((exists ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_shift_empty_newcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_shift_empty_newcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm)) * BC)) /\ exists ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonaltermrightentry. BB = ff_q_pfp_shift_empty_newcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm)) * BC) + (pfc_right_shift_empty_newcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_shift_empty_newcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_shift_empty_newcoefficientscoefficientdiagonaltermrightoutside+(S M)=(pfc_complement_shift_empty_newcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_shift_empty_newcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_shift_empty_newcoefficientscoefficientdiagonal)=pfc_left_shift_empty_newcoefficientscoefficientdiagonalterm*pfc_right_shift_empty_newcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_empty_newcoefficientscoefficientsum fs_v_pfc_shift_empty_newcoefficientscoefficientsum. ((((exists fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_start. fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_start. fs_u_pfc_shift_empty_newcoefficientscoefficientsum = fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_terminal. fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_shift_empty_newcoefficientscoefficient) = S ((S (S (pfc_index_shift_empty_newcoefficients))) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_terminal. fs_u_pfc_shift_empty_newcoefficientscoefficientsum = fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_shift_empty_newcoefficients))) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum) + (pfc_natural_sum_shift_empty_newcoefficientscoefficient))) /\ forall fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps = S (pfc_index_shift_empty_newcoefficients)) -> exists fs_a_pfc_shift_empty_newcoefficientscoefficientsum_body_steps fs_r_pfc_shift_empty_newcoefficientscoefficientsum_body_steps fs_s_pfc_shift_empty_newcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_shift_empty_newcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_shift_empty_newcoefficientscoefficient)) /\ exists fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_shift_empty_newcoefficientscoefficient = fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_shift_empty_newcoefficientscoefficient) + (fs_a_pfc_shift_empty_newcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_shift_empty_newcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_shift_empty_newcoefficientscoefficientsum = fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum) + (fs_r_pfc_shift_empty_newcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_shift_empty_newcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum)) /\ exists fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_shift_empty_newcoefficientscoefficientsum = fs_q_pfc_shift_empty_newcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)) * fs_v_pfc_shift_empty_newcoefficientscoefficientsum) + (fs_s_pfc_shift_empty_newcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_shift_empty_newcoefficientscoefficientsum_body_steps = fs_r_pfc_shift_empty_newcoefficientscoefficientsum_body_steps + fs_a_pfc_shift_empty_newcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_shift_empty_newcoefficientscoefficientresiduebound. pfa_gap_shift_empty_newcoefficientscoefficientresiduebound + S (pfc_value_shift_empty_newcoefficients) = (p)) /\ ((exists pfa_offset_left_shift_empty_newcoefficientscoefficientresiduecongruence pfa_offset_right_shift_empty_newcoefficientscoefficientresiduecongruence. (pfc_natural_sum_shift_empty_newcoefficientscoefficient) + (p) * pfa_offset_left_shift_empty_newcoefficientscoefficientresiduecongruence = (pfc_value_shift_empty_newcoefficients) + (p) * pfa_offset_right_shift_empty_newcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (L=0 \/ M=0) -> (((forall pfp_repeat_index_shift_empty_old_zero. (exists pfa_gap_shift_empty_old_zeroindex. pfa_gap_shift_empty_old_zeroindex + S (pfp_repeat_index_shift_empty_old_zero) = (N)) -> (((exists ff_h_pfp_shift_empty_old_zeroentry. ff_h_pfp_shift_empty_old_zeroentry + S (0) = S ((S (pfp_repeat_index_shift_empty_old_zero)) * cc)) /\ exists ff_q_pfp_shift_empty_old_zeroentry. cb = ff_q_pfp_shift_empty_old_zeroentry * S ((S (pfp_repeat_index_shift_empty_old_zero)) * cc) + (0)))) /\ ((forall pfp_repeat_index_shift_empty_new_zero. (exists pfa_gap_shift_empty_new_zeroindex. pfa_gap_shift_empty_new_zeroindex + S (pfp_repeat_index_shift_empty_new_zero) = (K)) -> (((exists ff_h_pfp_shift_empty_new_zeroentry. ff_h_pfp_shift_empty_new_zeroentry + S (0) = S ((S (pfp_repeat_index_shift_empty_new_zero)) * dc)) /\ exists ff_q_pfp_shift_empty_new_zeroentry. db = ff_q_pfp_shift_empty_new_zeroentry * S ((S (pfp_repeat_index_shift_empty_new_zero)) * dc) + (0)))))))

Constructive proof overview

Generated structural guide

If either original factor is empty, both actual products are zero prefixes; no false successor-length equation is imposed.

The unchanged tactic script uses 5 declared prerequisites and contains 108 exact native proof lines.

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

Proof neighborhood

Direct dependencies

lt_not_le Alpha theorem; checked-use authorized zero_le Alpha theorem; checked-use authorized prime_field_polynomial_convolution_zero_left Alpha theorem; checked-use authorized prime_field_polynomial_convolution_zero_right Alpha theorem; checked-use authorized PG0004 prime_field_polynomial_shift_zero_prefix

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

108 script commands · 18 reading checkpoints · 2 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.

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 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 BB
  2. L12
    intro BC
  3. L13
    intro db
  4. L14
    intro dc
  5. L15
    intro K
  6. L16
    intro hp
  7. L17
    intro hs
  8. L18
    intro hc
  9. L19
    intro hd
  10. L20
    intro hempty
03Separate the logical casesL21–21

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

  1. L21
    cases hempty
04Establish hzL22–25

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

  1. L22
    have hz : forall pfp_repeat_index_shift_empty_source_left. (exists pfa_gap_shift_empty_source_leftindex. pfa_gap_shift_empty_source_leftindex + S (pfp_repeat_index_shift_empty_source_left) = (L)) -> (((exists ff_h_pfp_shift_empty_source_leftentry. ff_h_pfp_shift_empty_source_leftentry + S (0) = S ((S (pfp_repeat_index_shift_empty_source_left)) * ac)) /\ exists ff_q_pfp_shift_empty_source_leftentry. ab = ff_q_pfp_shift_empty_source_leftentry * S ((S (pfp_repeat_index_shift_empty_source_left)) * ac) + (0)))
  2. L23
    intro i
  3. L24
    intro hi
  4. L25
    rewrite hempty_left at hi
05Separate the logical casesL26–26

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

  1. L26
    exfalso
06Use earlier factsL27–32

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

  1. L27
    specialize lt_not_le (i)
  2. L28
    specialize lt_not_le (0)
  3. L29
    apply lt_not_le
  4. L30
    exact hi
  5. L31
    specialize zero_le (i)
  6. L32
    apply zero_le
07Separate the logical casesL33–33

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

  1. L33
    split
08Use earlier factsL34–43

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

  1. L34
    specialize prime_field_polynomial_convolution_zero_left (p)
  2. L35
    specialize prime_field_polynomial_convolution_zero_left (ab)
  3. L36
    specialize prime_field_polynomial_convolution_zero_left (ac)
  4. L37
    specialize prime_field_polynomial_convolution_zero_left (L)
  5. L38
    specialize prime_field_polynomial_convolution_zero_left (bb)
  6. L39
    specialize prime_field_polynomial_convolution_zero_left (bc)
  7. L40
    specialize prime_field_polynomial_convolution_zero_left (M)
  8. L41
    specialize prime_field_polynomial_convolution_zero_left (cb)
  9. L42
    specialize prime_field_polynomial_convolution_zero_left (cc)
  10. L43
    specialize prime_field_polynomial_convolution_zero_left (N)
09Use earlier factsL44–53

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

  1. L44
    apply prime_field_polynomial_convolution_zero_left
  2. L45
    exact hp
  3. L46
    exact hz
  4. L47
    exact hc
  5. L48
    specialize prime_field_polynomial_convolution_zero_left (p)
  6. L49
    specialize prime_field_polynomial_convolution_zero_left (ab)
  7. L50
    specialize prime_field_polynomial_convolution_zero_left (ac)
  8. L51
    specialize prime_field_polynomial_convolution_zero_left (L)
  9. L52
    specialize prime_field_polynomial_convolution_zero_left (BB)
  10. L53
    specialize prime_field_polynomial_convolution_zero_left (BC)
10Use earlier factsL54–61

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

  1. L54
    specialize prime_field_polynomial_convolution_zero_left (S M)
  2. L55
    specialize prime_field_polynomial_convolution_zero_left (db)
  3. L56
    specialize prime_field_polynomial_convolution_zero_left (dc)
  4. L57
    specialize prime_field_polynomial_convolution_zero_left (K)
  5. L58
    apply prime_field_polynomial_convolution_zero_left
  6. L59
    exact hp
  7. L60
    exact hz
  8. L61
    exact hd
11Establish hzL62–65

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

  1. L62
    have hz : forall pfp_repeat_index_shift_empty_source_right. (exists pfa_gap_shift_empty_source_rightindex. pfa_gap_shift_empty_source_rightindex + S (pfp_repeat_index_shift_empty_source_right) = (M)) -> (((exists ff_h_pfp_shift_empty_source_rightentry. ff_h_pfp_shift_empty_source_rightentry + S (0) = S ((S (pfp_repeat_index_shift_empty_source_right)) * bc)) /\ exists ff_q_pfp_shift_empty_source_rightentry. bb = ff_q_pfp_shift_empty_source_rightentry * S ((S (pfp_repeat_index_shift_empty_source_right)) * bc) + (0)))
  2. L63
    intro i
  3. L64
    intro hi
  4. L65
    rewrite hempty_right at hi
12Separate the logical casesL66–66

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

  1. L66
    exfalso
13Use earlier factsL67–72

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

  1. L67
    specialize lt_not_le (i)
  2. L68
    specialize lt_not_le (0)
  3. L69
    apply lt_not_le
  4. L70
    exact hi
  5. L71
    specialize zero_le (i)
  6. L72
    apply zero_le
14Separate the logical casesL73–73

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

  1. L73
    split
15Use earlier factsL74–83

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

  1. L74
    specialize prime_field_polynomial_convolution_zero_right (p)
  2. L75
    specialize prime_field_polynomial_convolution_zero_right (ab)
  3. L76
    specialize prime_field_polynomial_convolution_zero_right (ac)
  4. L77
    specialize prime_field_polynomial_convolution_zero_right (L)
  5. L78
    specialize prime_field_polynomial_convolution_zero_right (bb)
  6. L79
    specialize prime_field_polynomial_convolution_zero_right (bc)
  7. L80
    specialize prime_field_polynomial_convolution_zero_right (M)
  8. L81
    specialize prime_field_polynomial_convolution_zero_right (cb)
  9. L82
    specialize prime_field_polynomial_convolution_zero_right (cc)
  10. L83
    specialize prime_field_polynomial_convolution_zero_right (N)
16Use earlier factsL84–93

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

  1. L84
    apply prime_field_polynomial_convolution_zero_right
  2. L85
    exact hp
  3. L86
    exact hz
  4. L87
    exact hc
  5. L88
    specialize prime_field_polynomial_convolution_zero_right (p)
  6. L89
    specialize prime_field_polynomial_convolution_zero_right (ab)
  7. L90
    specialize prime_field_polynomial_convolution_zero_right (ac)
  8. L91
    specialize prime_field_polynomial_convolution_zero_right (L)
  9. L92
    specialize prime_field_polynomial_convolution_zero_right (BB)
  10. L93
    specialize prime_field_polynomial_convolution_zero_right (BC)
17Use earlier factsL94–103

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

  1. L94
    specialize prime_field_polynomial_convolution_zero_right (S M)
  2. L95
    specialize prime_field_polynomial_convolution_zero_right (db)
  3. L96
    specialize prime_field_polynomial_convolution_zero_right (dc)
  4. L97
    specialize prime_field_polynomial_convolution_zero_right (K)
  5. L98
    apply prime_field_polynomial_convolution_zero_right
  6. L99
    exact hp
  7. L100
    specialize prime_field_polynomial_shift_zero_prefix (bb)
  8. L101
    specialize prime_field_polynomial_shift_zero_prefix (bc)
  9. L102
    specialize prime_field_polynomial_shift_zero_prefix (M)
  10. L103
    specialize prime_field_polynomial_shift_zero_prefix (BB)
18Use earlier factsL104–108

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

  1. L104
    specialize prime_field_polynomial_shift_zero_prefix (BC)
  2. L105
    apply prime_field_polynomial_shift_zero_prefix
  3. L106
    exact hz
  4. L107
    exact hs
  5. L108
    exact hd

Library-wide reading audit

Original exact command ledger · 108 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 BB
  12. 0012intro BC
  13. 0013intro db
  14. 0014intro dc
  15. 0015intro K
  16. 0016intro hp
  17. 0017intro hs
  18. 0018intro hc
  19. 0019intro hd
  20. 0020intro hempty
  21. 0021cases hempty
  22. 0022have hz : forall pfp_repeat_index_shift_empty_source_left. (exists pfa_gap_shift_empty_source_leftindex. pfa_gap_shift_empty_source_leftindex + S (pfp_repeat_index_shift_empty_source_left) = (L)) -> (((exists ff_h_pfp_shift_empty_source_leftentry. ff_h_pfp_shift_empty_source_leftentry + S (0) = S ((S (pfp_repeat_index_shift_empty_source_left)) * ac)) /\ exists ff_q_pfp_shift_empty_source_leftentry. ab = ff_q_pfp_shift_empty_source_leftentry * S ((S (pfp_repeat_index_shift_empty_source_left)) * ac) + (0)))
  23. 0023intro i
  24. 0024intro hi
  25. 0025rewrite hempty_left at hi
  26. 0026exfalso
  27. 0027specialize lt_not_le (i)
  28. 0028specialize lt_not_le (0)
  29. 0029apply lt_not_le
  30. 0030exact hi
  31. 0031specialize zero_le (i)
  32. 0032apply zero_le
  33. 0033split
  34. 0034specialize prime_field_polynomial_convolution_zero_left (p)
  35. 0035specialize prime_field_polynomial_convolution_zero_left (ab)
  36. 0036specialize prime_field_polynomial_convolution_zero_left (ac)
  37. 0037specialize prime_field_polynomial_convolution_zero_left (L)
  38. 0038specialize prime_field_polynomial_convolution_zero_left (bb)
  39. 0039specialize prime_field_polynomial_convolution_zero_left (bc)
  40. 0040specialize prime_field_polynomial_convolution_zero_left (M)
  41. 0041specialize prime_field_polynomial_convolution_zero_left (cb)
  42. 0042specialize prime_field_polynomial_convolution_zero_left (cc)
  43. 0043specialize prime_field_polynomial_convolution_zero_left (N)
  44. 0044apply prime_field_polynomial_convolution_zero_left
  45. 0045exact hp
  46. 0046exact hz
  47. 0047exact hc
  48. 0048specialize prime_field_polynomial_convolution_zero_left (p)
  49. 0049specialize prime_field_polynomial_convolution_zero_left (ab)
  50. 0050specialize prime_field_polynomial_convolution_zero_left (ac)
  51. 0051specialize prime_field_polynomial_convolution_zero_left (L)
  52. 0052specialize prime_field_polynomial_convolution_zero_left (BB)
  53. 0053specialize prime_field_polynomial_convolution_zero_left (BC)
  54. 0054specialize prime_field_polynomial_convolution_zero_left (S M)
  55. 0055specialize prime_field_polynomial_convolution_zero_left (db)
  56. 0056specialize prime_field_polynomial_convolution_zero_left (dc)
  57. 0057specialize prime_field_polynomial_convolution_zero_left (K)
  58. 0058apply prime_field_polynomial_convolution_zero_left
  59. 0059exact hp
  60. 0060exact hz
  61. 0061exact hd
  62. 0062have hz : forall pfp_repeat_index_shift_empty_source_right. (exists pfa_gap_shift_empty_source_rightindex. pfa_gap_shift_empty_source_rightindex + S (pfp_repeat_index_shift_empty_source_right) = (M)) -> (((exists ff_h_pfp_shift_empty_source_rightentry. ff_h_pfp_shift_empty_source_rightentry + S (0) = S ((S (pfp_repeat_index_shift_empty_source_right)) * bc)) /\ exists ff_q_pfp_shift_empty_source_rightentry. bb = ff_q_pfp_shift_empty_source_rightentry * S ((S (pfp_repeat_index_shift_empty_source_right)) * bc) + (0)))
  63. 0063intro i
  64. 0064intro hi
  65. 0065rewrite hempty_right at hi
  66. 0066exfalso
  67. 0067specialize lt_not_le (i)
  68. 0068specialize lt_not_le (0)
  69. 0069apply lt_not_le
  70. 0070exact hi
  71. 0071specialize zero_le (i)
  72. 0072apply zero_le
  73. 0073split
  74. 0074specialize prime_field_polynomial_convolution_zero_right (p)
  75. 0075specialize prime_field_polynomial_convolution_zero_right (ab)
  76. 0076specialize prime_field_polynomial_convolution_zero_right (ac)
  77. 0077specialize prime_field_polynomial_convolution_zero_right (L)
  78. 0078specialize prime_field_polynomial_convolution_zero_right (bb)
  79. 0079specialize prime_field_polynomial_convolution_zero_right (bc)
  80. 0080specialize prime_field_polynomial_convolution_zero_right (M)
  81. 0081specialize prime_field_polynomial_convolution_zero_right (cb)
  82. 0082specialize prime_field_polynomial_convolution_zero_right (cc)
  83. 0083specialize prime_field_polynomial_convolution_zero_right (N)
  84. 0084apply prime_field_polynomial_convolution_zero_right
  85. 0085exact hp
  86. 0086exact hz
  87. 0087exact hc
  88. 0088specialize prime_field_polynomial_convolution_zero_right (p)
  89. 0089specialize prime_field_polynomial_convolution_zero_right (ab)
  90. 0090specialize prime_field_polynomial_convolution_zero_right (ac)
  91. 0091specialize prime_field_polynomial_convolution_zero_right (L)
  92. 0092specialize prime_field_polynomial_convolution_zero_right (BB)
  93. 0093specialize prime_field_polynomial_convolution_zero_right (BC)
  94. 0094specialize prime_field_polynomial_convolution_zero_right (S M)
  95. 0095specialize prime_field_polynomial_convolution_zero_right (db)
  96. 0096specialize prime_field_polynomial_convolution_zero_right (dc)
  97. 0097specialize prime_field_polynomial_convolution_zero_right (K)
  98. 0098apply prime_field_polynomial_convolution_zero_right
  99. 0099exact hp
  100. 0100specialize prime_field_polynomial_shift_zero_prefix (bb)
  101. 0101specialize prime_field_polynomial_shift_zero_prefix (bc)
  102. 0102specialize prime_field_polynomial_shift_zero_prefix (M)
  103. 0103specialize prime_field_polynomial_shift_zero_prefix (BB)
  104. 0104specialize prime_field_polynomial_shift_zero_prefix (BC)
  105. 0105apply prime_field_polynomial_shift_zero_prefix
  106. 0106exact hz
  107. 0107exact hs
  108. 0108exact hd