PX006C

prime_field_polynomial_convolution_left_padding_nonempty_left

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

Two actual nonempty-factor products are related by exact leading-zero output padding and its proved length equation; no raw beta-code equality is asserted.

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 AB AC t CB CC K. (~(p=0)) -> (~(L=0)) -> (~(M=0)) -> (((forall pfp_repeat_index_nonempty_factor_padding_leftzeros. (exists pfa_gap_nonempty_factor_padding_leftzerosindex. pfa_gap_nonempty_factor_padding_leftzerosindex + S (pfp_repeat_index_nonempty_factor_padding_leftzeros) = (t)) -> (((exists ff_h_pfp_nonempty_factor_padding_leftzerosentry. ff_h_pfp_nonempty_factor_padding_leftzerosentry + S (0) = S ((S (pfp_repeat_index_nonempty_factor_padding_leftzeros)) * AC)) /\ exists ff_q_pfp_nonempty_factor_padding_leftzerosentry. AB = ff_q_pfp_nonempty_factor_padding_leftzerosentry * S ((S (pfp_repeat_index_nonempty_factor_padding_leftzeros)) * AC) + (0)))) /\ ((forall pfrep_index_nonempty_factor_padding_left pfrep_value_nonempty_factor_padding_left. (exists pfa_gap_nonempty_factor_padding_leftbound. pfa_gap_nonempty_factor_padding_leftbound + S (pfrep_index_nonempty_factor_padding_left) = (L)) -> (((exists ff_h_pfp_nonempty_factor_padding_leftinput. ff_h_pfp_nonempty_factor_padding_leftinput + S (pfrep_value_nonempty_factor_padding_left) = S ((S (pfrep_index_nonempty_factor_padding_left)) * ac)) /\ exists ff_q_pfp_nonempty_factor_padding_leftinput. ab = ff_q_pfp_nonempty_factor_padding_leftinput * S ((S (pfrep_index_nonempty_factor_padding_left)) * ac) + (pfrep_value_nonempty_factor_padding_left))) -> (((exists ff_h_pfp_nonempty_factor_padding_leftoutput. ff_h_pfp_nonempty_factor_padding_leftoutput + S (pfrep_value_nonempty_factor_padding_left) = S ((S ((t)+pfrep_index_nonempty_factor_padding_left)) * AC)) /\ exists ff_q_pfp_nonempty_factor_padding_leftoutput. AB = ff_q_pfp_nonempty_factor_padding_leftoutput * S ((S ((t)+pfrep_index_nonempty_factor_padding_left)) * AC) + (pfrep_value_nonempty_factor_padding_left))))))) -> (((forall fom_index_pfp_nonempty_old_leftleft. (exists fom_gap_pfp_nonempty_old_leftleft_index_bound. fom_gap_pfp_nonempty_old_leftleft_index_bound + S (fom_index_pfp_nonempty_old_leftleft) = L) -> exists fom_value_pfp_nonempty_old_leftleft. ((((exists fom_beta_height_pfp_nonempty_old_leftleft_entry. fom_beta_height_pfp_nonempty_old_leftleft_entry + S (fom_value_pfp_nonempty_old_leftleft) = S ((S (fom_index_pfp_nonempty_old_leftleft)) * ac)) /\ exists fom_beta_quotient_pfp_nonempty_old_leftleft_entry. ab = fom_beta_quotient_pfp_nonempty_old_leftleft_entry * S ((S (fom_index_pfp_nonempty_old_leftleft)) * ac) + (fom_value_pfp_nonempty_old_leftleft))) /\ (exists fom_gap_pfp_nonempty_old_leftleft_value_bound. fom_gap_pfp_nonempty_old_leftleft_value_bound + S (fom_value_pfp_nonempty_old_leftleft) = p))) /\ (((forall fom_index_pfp_nonempty_old_leftright. (exists fom_gap_pfp_nonempty_old_leftright_index_bound. fom_gap_pfp_nonempty_old_leftright_index_bound + S (fom_index_pfp_nonempty_old_leftright) = M) -> exists fom_value_pfp_nonempty_old_leftright. ((((exists fom_beta_height_pfp_nonempty_old_leftright_entry. fom_beta_height_pfp_nonempty_old_leftright_entry + S (fom_value_pfp_nonempty_old_leftright) = S ((S (fom_index_pfp_nonempty_old_leftright)) * bc)) /\ exists fom_beta_quotient_pfp_nonempty_old_leftright_entry. bb = fom_beta_quotient_pfp_nonempty_old_leftright_entry * S ((S (fom_index_pfp_nonempty_old_leftright)) * bc) + (fom_value_pfp_nonempty_old_leftright))) /\ (exists fom_gap_pfp_nonempty_old_leftright_value_bound. fom_gap_pfp_nonempty_old_leftright_value_bound + S (fom_value_pfp_nonempty_old_leftright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_nonempty_old_leftcoefficients. (exists pfa_gap_nonempty_old_leftcoefficientsbound. pfa_gap_nonempty_old_leftcoefficientsbound + S (pfc_index_nonempty_old_leftcoefficients) = (N)) -> exists pfc_value_nonempty_old_leftcoefficients. ((((exists ff_h_pfp_nonempty_old_leftcoefficientsentry. ff_h_pfp_nonempty_old_leftcoefficientsentry + S (pfc_value_nonempty_old_leftcoefficients) = S ((S (pfc_index_nonempty_old_leftcoefficients)) * cc)) /\ exists ff_q_pfp_nonempty_old_leftcoefficientsentry. cb = ff_q_pfp_nonempty_old_leftcoefficientsentry * S ((S (pfc_index_nonempty_old_leftcoefficients)) * cc) + (pfc_value_nonempty_old_leftcoefficients))) /\ ((exists pfc_terms_code_nonempty_old_leftcoefficientscoefficient pfc_terms_scale_nonempty_old_leftcoefficientscoefficient pfc_natural_sum_nonempty_old_leftcoefficientscoefficient. ((forall pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal. (exists pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonalbound. pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonalbound + S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal) = (S (pfc_index_nonempty_old_leftcoefficients))) -> exists pfc_value_nonempty_old_leftcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonalentry. ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonalentry + S (pfc_value_nonempty_old_leftcoefficientscoefficientdiagonal) = S ((S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)) * pfc_terms_scale_nonempty_old_leftcoefficientscoefficient)) /\ exists ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonalentry. pfc_terms_code_nonempty_old_leftcoefficientscoefficient = ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonalentry * S ((S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)) * pfc_terms_scale_nonempty_old_leftcoefficientscoefficient) + (pfc_value_nonempty_old_leftcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm pfc_left_nonempty_old_leftcoefficientscoefficientdiagonalterm pfc_right_nonempty_old_leftcoefficientscoefficientdiagonalterm. (((pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)+pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm=(pfc_index_nonempty_old_leftcoefficients)) /\ ((((((exists pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermleftinside. pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_nonempty_old_leftcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)) * ac) + (pfc_left_nonempty_old_leftcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_nonempty_old_leftcoefficientscoefficientdiagonal)) /\ (((pfc_left_nonempty_old_leftcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermrightinside. pfa_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_nonempty_old_leftcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_nonempty_old_leftcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_nonempty_old_leftcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_nonempty_old_leftcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_nonempty_old_leftcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_nonempty_old_leftcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_nonempty_old_leftcoefficientscoefficientdiagonal)=pfc_left_nonempty_old_leftcoefficientscoefficientdiagonalterm*pfc_right_nonempty_old_leftcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_nonempty_old_leftcoefficientscoefficientsum fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum. ((((exists fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_start. fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_start. fs_u_pfc_nonempty_old_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_terminal. fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_nonempty_old_leftcoefficientscoefficient) = S ((S (S (pfc_index_nonempty_old_leftcoefficients))) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_terminal. fs_u_pfc_nonempty_old_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_nonempty_old_leftcoefficients))) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum) + (pfc_natural_sum_nonempty_old_leftcoefficientscoefficient))) /\ forall fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps = S (pfc_index_nonempty_old_leftcoefficients)) -> exists fs_a_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps fs_r_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps fs_s_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_nonempty_old_leftcoefficientscoefficient)) /\ exists fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_nonempty_old_leftcoefficientscoefficient = fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_nonempty_old_leftcoefficientscoefficient) + (fs_a_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_nonempty_old_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum) + (fs_r_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_nonempty_old_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_old_leftcoefficientscoefficientsum) + (fs_s_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps = fs_r_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps + fs_a_pfc_nonempty_old_leftcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_nonempty_old_leftcoefficientscoefficientresiduebound. pfa_gap_nonempty_old_leftcoefficientscoefficientresiduebound + S (pfc_value_nonempty_old_leftcoefficients) = (p)) /\ ((exists pfa_offset_left_nonempty_old_leftcoefficientscoefficientresiduecongruence pfa_offset_right_nonempty_old_leftcoefficientscoefficientresiduecongruence. (pfc_natural_sum_nonempty_old_leftcoefficientscoefficient) + (p) * pfa_offset_left_nonempty_old_leftcoefficientscoefficientresiduecongruence = (pfc_value_nonempty_old_leftcoefficients) + (p) * pfa_offset_right_nonempty_old_leftcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall fom_index_pfp_nonempty_new_leftleft. (exists fom_gap_pfp_nonempty_new_leftleft_index_bound. fom_gap_pfp_nonempty_new_leftleft_index_bound + S (fom_index_pfp_nonempty_new_leftleft) = t+L) -> exists fom_value_pfp_nonempty_new_leftleft. ((((exists fom_beta_height_pfp_nonempty_new_leftleft_entry. fom_beta_height_pfp_nonempty_new_leftleft_entry + S (fom_value_pfp_nonempty_new_leftleft) = S ((S (fom_index_pfp_nonempty_new_leftleft)) * AC)) /\ exists fom_beta_quotient_pfp_nonempty_new_leftleft_entry. AB = fom_beta_quotient_pfp_nonempty_new_leftleft_entry * S ((S (fom_index_pfp_nonempty_new_leftleft)) * AC) + (fom_value_pfp_nonempty_new_leftleft))) /\ (exists fom_gap_pfp_nonempty_new_leftleft_value_bound. fom_gap_pfp_nonempty_new_leftleft_value_bound + S (fom_value_pfp_nonempty_new_leftleft) = p))) /\ (((forall fom_index_pfp_nonempty_new_leftright. (exists fom_gap_pfp_nonempty_new_leftright_index_bound. fom_gap_pfp_nonempty_new_leftright_index_bound + S (fom_index_pfp_nonempty_new_leftright) = M) -> exists fom_value_pfp_nonempty_new_leftright. ((((exists fom_beta_height_pfp_nonempty_new_leftright_entry. fom_beta_height_pfp_nonempty_new_leftright_entry + S (fom_value_pfp_nonempty_new_leftright) = S ((S (fom_index_pfp_nonempty_new_leftright)) * bc)) /\ exists fom_beta_quotient_pfp_nonempty_new_leftright_entry. bb = fom_beta_quotient_pfp_nonempty_new_leftright_entry * S ((S (fom_index_pfp_nonempty_new_leftright)) * bc) + (fom_value_pfp_nonempty_new_leftright))) /\ (exists fom_gap_pfp_nonempty_new_leftright_value_bound. fom_gap_pfp_nonempty_new_leftright_value_bound + S (fom_value_pfp_nonempty_new_leftright) = p))) /\ (((((((t+L)=0 \/ (M)=0) /\ (((K)=0)))) \/ (((~((t+L)=0)) /\ (((~((M)=0)) /\ (((t+L)+(M)=S (K)))))))) /\ ((forall pfc_index_nonempty_new_leftcoefficients. (exists pfa_gap_nonempty_new_leftcoefficientsbound. pfa_gap_nonempty_new_leftcoefficientsbound + S (pfc_index_nonempty_new_leftcoefficients) = (K)) -> exists pfc_value_nonempty_new_leftcoefficients. ((((exists ff_h_pfp_nonempty_new_leftcoefficientsentry. ff_h_pfp_nonempty_new_leftcoefficientsentry + S (pfc_value_nonempty_new_leftcoefficients) = S ((S (pfc_index_nonempty_new_leftcoefficients)) * CC)) /\ exists ff_q_pfp_nonempty_new_leftcoefficientsentry. CB = ff_q_pfp_nonempty_new_leftcoefficientsentry * S ((S (pfc_index_nonempty_new_leftcoefficients)) * CC) + (pfc_value_nonempty_new_leftcoefficients))) /\ ((exists pfc_terms_code_nonempty_new_leftcoefficientscoefficient pfc_terms_scale_nonempty_new_leftcoefficientscoefficient pfc_natural_sum_nonempty_new_leftcoefficientscoefficient. ((forall pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal. (exists pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonalbound. pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonalbound + S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal) = (S (pfc_index_nonempty_new_leftcoefficients))) -> exists pfc_value_nonempty_new_leftcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonalentry. ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonalentry + S (pfc_value_nonempty_new_leftcoefficientscoefficientdiagonal) = S ((S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)) * pfc_terms_scale_nonempty_new_leftcoefficientscoefficient)) /\ exists ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonalentry. pfc_terms_code_nonempty_new_leftcoefficientscoefficient = ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonalentry * S ((S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)) * pfc_terms_scale_nonempty_new_leftcoefficientscoefficient) + (pfc_value_nonempty_new_leftcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm pfc_left_nonempty_new_leftcoefficientscoefficientdiagonalterm pfc_right_nonempty_new_leftcoefficientscoefficientdiagonalterm. (((pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)+pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm=(pfc_index_nonempty_new_leftcoefficients)) /\ ((((((exists pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermleftinside. pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal) = (t+L)) /\ ((((exists ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_nonempty_new_leftcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)) * AC)) /\ exists ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermleftentry. AB = ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)) * AC) + (pfc_left_nonempty_new_leftcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermleftoutside+(t+L)=(pfc_index_nonempty_new_leftcoefficientscoefficientdiagonal)) /\ (((pfc_left_nonempty_new_leftcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermrightinside. pfa_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_nonempty_new_leftcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_nonempty_new_leftcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_nonempty_new_leftcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_nonempty_new_leftcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_nonempty_new_leftcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_nonempty_new_leftcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_nonempty_new_leftcoefficientscoefficientdiagonal)=pfc_left_nonempty_new_leftcoefficientscoefficientdiagonalterm*pfc_right_nonempty_new_leftcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_nonempty_new_leftcoefficientscoefficientsum fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum. ((((exists fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_start. fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_start. fs_u_pfc_nonempty_new_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_terminal. fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_nonempty_new_leftcoefficientscoefficient) = S ((S (S (pfc_index_nonempty_new_leftcoefficients))) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_terminal. fs_u_pfc_nonempty_new_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_nonempty_new_leftcoefficients))) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum) + (pfc_natural_sum_nonempty_new_leftcoefficientscoefficient))) /\ forall fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps = S (pfc_index_nonempty_new_leftcoefficients)) -> exists fs_a_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps fs_r_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps fs_s_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_nonempty_new_leftcoefficientscoefficient)) /\ exists fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_nonempty_new_leftcoefficientscoefficient = fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_nonempty_new_leftcoefficientscoefficient) + (fs_a_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_nonempty_new_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum) + (fs_r_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum)) /\ exists fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_nonempty_new_leftcoefficientscoefficientsum = fs_q_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)) * fs_v_pfc_nonempty_new_leftcoefficientscoefficientsum) + (fs_s_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps = fs_r_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps + fs_a_pfc_nonempty_new_leftcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_nonempty_new_leftcoefficientscoefficientresiduebound. pfa_gap_nonempty_new_leftcoefficientscoefficientresiduebound + S (pfc_value_nonempty_new_leftcoefficients) = (p)) /\ ((exists pfa_offset_left_nonempty_new_leftcoefficientscoefficientresiduecongruence pfa_offset_right_nonempty_new_leftcoefficientscoefficientresiduecongruence. (pfc_natural_sum_nonempty_new_leftcoefficientscoefficient) + (p) * pfa_offset_left_nonempty_new_leftcoefficientscoefficientresiduecongruence = (pfc_value_nonempty_new_leftcoefficients) + (p) * pfa_offset_right_nonempty_new_leftcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((K=t+N) /\ ((((forall pfp_repeat_index_nonempty_product_padding_leftzeros. (exists pfa_gap_nonempty_product_padding_leftzerosindex. pfa_gap_nonempty_product_padding_leftzerosindex + S (pfp_repeat_index_nonempty_product_padding_leftzeros) = (t)) -> (((exists ff_h_pfp_nonempty_product_padding_leftzerosentry. ff_h_pfp_nonempty_product_padding_leftzerosentry + S (0) = S ((S (pfp_repeat_index_nonempty_product_padding_leftzeros)) * CC)) /\ exists ff_q_pfp_nonempty_product_padding_leftzerosentry. CB = ff_q_pfp_nonempty_product_padding_leftzerosentry * S ((S (pfp_repeat_index_nonempty_product_padding_leftzeros)) * CC) + (0)))) /\ ((forall pfrep_index_nonempty_product_padding_left pfrep_value_nonempty_product_padding_left. (exists pfa_gap_nonempty_product_padding_leftbound. pfa_gap_nonempty_product_padding_leftbound + S (pfrep_index_nonempty_product_padding_left) = (N)) -> (((exists ff_h_pfp_nonempty_product_padding_leftinput. ff_h_pfp_nonempty_product_padding_leftinput + S (pfrep_value_nonempty_product_padding_left) = S ((S (pfrep_index_nonempty_product_padding_left)) * cc)) /\ exists ff_q_pfp_nonempty_product_padding_leftinput. cb = ff_q_pfp_nonempty_product_padding_leftinput * S ((S (pfrep_index_nonempty_product_padding_left)) * cc) + (pfrep_value_nonempty_product_padding_left))) -> (((exists ff_h_pfp_nonempty_product_padding_leftoutput. ff_h_pfp_nonempty_product_padding_leftoutput + S (pfrep_value_nonempty_product_padding_left) = S ((S ((t)+pfrep_index_nonempty_product_padding_left)) * CC)) /\ exists ff_q_pfp_nonempty_product_padding_leftoutput. CB = ff_q_pfp_nonempty_product_padding_leftoutput * S ((S ((t)+pfrep_index_nonempty_product_padding_left)) * CC) + (pfrep_value_nonempty_product_padding_left))))))))))

Constructive proof overview

Generated structural guide

Two actual nonempty-factor products are related by exact leading-zero output padding and its proved length equation; no raw beta-code equality is asserted.

The unchanged tactic script uses 8 declared prerequisites and contains 142 exact native proof lines.

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

Proof neighborhood

Direct dependencies

PX006A polynomial_product_length_left_padding_left le_trans Alpha theorem; checked-use authorized le_add_right Alpha theorem; checked-use authorized PX0068 prime_field_convolution_coefficient_before_left_padding_left prime_field_convolution_prefix_entry Alpha theorem; checked-use authorized matrix_recursive_lt_add_left Alpha theorem; checked-use authorized prime_field_convolution_coefficient_functional Alpha theorem; checked-use authorized PX0066 prime_field_convolution_coefficient_left_padding_left

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

142 script commands · 27 reading checkpoints · 6 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 (3)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

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 CB
  5. L15
    intro CC
  6. L16
    intro K
  7. L17
    intro hp
  8. L18
    intro hL
  9. L19
    intro hM
  10. L20
    intro hpad
03Fix variables and assumptionsL21–22

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

  1. L21
    intro hc
  2. L22
    intro hn
04Separate the logical casesL23–28

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

  1. L23
    cases hc
  2. L24
    cases hc_right
  3. L25
    cases hc_right_right
  4. L26
    cases hn
  5. L27
    cases hn_right
  6. L28
    cases hn_right_right
05Establish hlengthL29–38

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

  1. L29
    have hlength : K=t+N
  2. L30
    specialize polynomial_product_length_left_padding_left (L)
  3. L31
    specialize polynomial_product_length_left_padding_left (M)
  4. L32
    specialize polynomial_product_length_left_padding_left (N)
  5. L33
    specialize polynomial_product_length_left_padding_left (t)
  6. L34
    specialize polynomial_product_length_left_padding_left (K)
  7. L35
    apply polynomial_product_length_left_padding_left
  8. L36
    exact hc_right_right_left
  9. L37
    exact hL
  10. L38
    exact hM
06Use earlier factsL39–39

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

  1. L39
    exact hn_right_right_left
07Separate the logical casesL40–40

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

  1. L40
    split
08Use earlier factsL41–41

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

  1. L41
    exact hlength
09Separate the logical casesL42–42

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

  1. L42
    split
10Fix variables and assumptionsL43–44

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

  1. L43
    intro i
  2. L44
    intro hi
11Establish hvL45–54

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

  1. L45
    have hv : ∃ r. BetaAt(CB,CC,i,r) ∧ FpConvolutionCoefficient(p,AB,AC,t + L,bb,bc,M,i,r)Definitions: FpConvolutionCoefficientBetaAt
  2. L46
    specialize hn_right_right_right (i)
  3. L47
    apply hn_right_right_right
  4. L48
    specialize le_trans (S i)
  5. L49
    specialize le_trans (t)
  6. L50
    specialize le_trans (K)
  7. L51
    apply le_trans
  8. L52
    exact hi
  9. L53
    rewrite hlength
  10. L54
    specialize le_add_right (t)
12Use earlier factsL55–56

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

  1. L55
    specialize le_add_right (N)
  2. L56
    apply le_add_right
13Separate the logical casesL57–58

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

  1. L57
    cases hv
  2. L58
    cases hv_witness
14Establish hzeroL59–68

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

  1. L59
    have hzero : x=0
  2. L60
    specialize prime_field_convolution_coefficient_before_left_padding_left (p)
  3. L61
    specialize prime_field_convolution_coefficient_before_left_padding_left (ab)
  4. L62
    specialize prime_field_convolution_coefficient_before_left_padding_left (ac)
  5. L63
    specialize prime_field_convolution_coefficient_before_left_padding_left (L)
  6. L64
    specialize prime_field_convolution_coefficient_before_left_padding_left (bb)
  7. L65
    specialize prime_field_convolution_coefficient_before_left_padding_left (bc)
  8. L66
    specialize prime_field_convolution_coefficient_before_left_padding_left (M)
  9. L67
    specialize prime_field_convolution_coefficient_before_left_padding_left (AB)
  10. L68
    specialize prime_field_convolution_coefficient_before_left_padding_left (AC)
15Use earlier factsL69–76

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

  1. L69
    specialize prime_field_convolution_coefficient_before_left_padding_left (t)
  2. L70
    specialize prime_field_convolution_coefficient_before_left_padding_left (i)
  3. L71
    specialize prime_field_convolution_coefficient_before_left_padding_left (x)
  4. L72
    apply prime_field_convolution_coefficient_before_left_padding_left
  5. L73
    exact hp
  6. L74
    exact hpad
  7. L75
    exact hi
  8. L76
    exact hv_witness_right
16Calculate and transport equalitiesL77–78

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L77
    rewrite hzero at hv_witness_left
  2. L78
    rewrite hzero at hv_witness_left
17Use earlier factsL79–79

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

  1. L79
    exact hv_witness_left
18Fix variables and assumptionsL80–83

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

  1. L80
    intro i
  2. L81
    intro a
  3. L82
    intro hi
  4. L83
    intro ha
19Establish hcoefficientL84–93

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

  1. L84
    have hcoefficient : FpConvolutionCoefficient(p,ab,ac,L,bb,bc,M,i,a)Definitions: FpConvolutionCoefficient
  2. L85
    specialize prime_field_convolution_prefix_entry (p)
  3. L86
    specialize prime_field_convolution_prefix_entry (ab)
  4. L87
    specialize prime_field_convolution_prefix_entry (ac)
  5. L88
    specialize prime_field_convolution_prefix_entry (L)
  6. L89
    specialize prime_field_convolution_prefix_entry (bb)
  7. L90
    specialize prime_field_convolution_prefix_entry (bc)
  8. L91
    specialize prime_field_convolution_prefix_entry (M)
  9. L92
    specialize prime_field_convolution_prefix_entry (cb)
  10. L93
    specialize prime_field_convolution_prefix_entry (cc)
20Use earlier factsL94–100

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

  1. L94
    specialize prime_field_convolution_prefix_entry (N)
  2. L95
    specialize prime_field_convolution_prefix_entry (i)
  3. L96
    specialize prime_field_convolution_prefix_entry (a)
  4. L97
    apply prime_field_convolution_prefix_entry
  5. L98
    exact hc_right_right_right
  6. L99
    exact hi
  7. L100
    exact ha
21Establish hvL101–109

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

  1. L101
    have hv : ∃ r. BetaAt(CB,CC,t + i,r) ∧ FpConvolutionCoefficient(p,AB,AC,t + L,bb,bc,M,t + i,r)Definitions: FpConvolutionCoefficientBetaAt
  2. L102
    specialize hn_right_right_right (t+i)
  3. L103
    apply hn_right_right_right
  4. L104
    rewrite hlength
  5. L105
    specialize matrix_recursive_lt_add_left (i)
  6. L106
    specialize matrix_recursive_lt_add_left (N)
  7. L107
    specialize matrix_recursive_lt_add_left (t)
  8. L108
    apply matrix_recursive_lt_add_left
  9. L109
    exact hi
22Separate the logical casesL110–111

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

  1. L110
    cases hv
  2. L111
    cases hv_witness
23Establish heqL112–121

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

  1. L112
    have heq : x=a
  2. L113
    specialize prime_field_convolution_coefficient_functional (p)
  3. L114
    specialize prime_field_convolution_coefficient_functional (AB)
  4. L115
    specialize prime_field_convolution_coefficient_functional (AC)
  5. L116
    specialize prime_field_convolution_coefficient_functional (t+L)
  6. L117
    specialize prime_field_convolution_coefficient_functional (bb)
  7. L118
    specialize prime_field_convolution_coefficient_functional (bc)
  8. L119
    specialize prime_field_convolution_coefficient_functional (M)
  9. L120
    specialize prime_field_convolution_coefficient_functional (t+i)
  10. L121
    specialize prime_field_convolution_coefficient_functional (x)
24Use earlier factsL122–131

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

  1. L122
    specialize prime_field_convolution_coefficient_functional (a)
  2. L123
    apply prime_field_convolution_coefficient_functional
  3. L124
    exact hv_witness_right
  4. L125
    specialize prime_field_convolution_coefficient_left_padding_left (p)
  5. L126
    specialize prime_field_convolution_coefficient_left_padding_left (ab)
  6. L127
    specialize prime_field_convolution_coefficient_left_padding_left (ac)
  7. L128
    specialize prime_field_convolution_coefficient_left_padding_left (L)
  8. L129
    specialize prime_field_convolution_coefficient_left_padding_left (bb)
  9. L130
    specialize prime_field_convolution_coefficient_left_padding_left (bc)
  10. L131
    specialize prime_field_convolution_coefficient_left_padding_left (M)
25Use earlier factsL132–139

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

  1. L132
    specialize prime_field_convolution_coefficient_left_padding_left (AB)
  2. L133
    specialize prime_field_convolution_coefficient_left_padding_left (AC)
  3. L134
    specialize prime_field_convolution_coefficient_left_padding_left (t)
  4. L135
    specialize prime_field_convolution_coefficient_left_padding_left (i)
  5. L136
    specialize prime_field_convolution_coefficient_left_padding_left (a)
  6. L137
    apply prime_field_convolution_coefficient_left_padding_left
  7. L138
    exact hpad
  8. L139
    exact hcoefficient
26Calculate and transport equalitiesL140–141

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L140
    rewrite heq at hv_witness_left
  2. L141
    rewrite heq at hv_witness_left
27Use earlier factsL142–142

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

  1. L142
    exact hv_witness_left

Library-wide reading audit

Original exact command ledger · 142 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 CB
  15. 0015intro CC
  16. 0016intro K
  17. 0017intro hp
  18. 0018intro hL
  19. 0019intro hM
  20. 0020intro hpad
  21. 0021intro hc
  22. 0022intro hn
  23. 0023cases hc
  24. 0024cases hc_right
  25. 0025cases hc_right_right
  26. 0026cases hn
  27. 0027cases hn_right
  28. 0028cases hn_right_right
  29. 0029have hlength : K=t+N
  30. 0030specialize polynomial_product_length_left_padding_left (L)
  31. 0031specialize polynomial_product_length_left_padding_left (M)
  32. 0032specialize polynomial_product_length_left_padding_left (N)
  33. 0033specialize polynomial_product_length_left_padding_left (t)
  34. 0034specialize polynomial_product_length_left_padding_left (K)
  35. 0035apply polynomial_product_length_left_padding_left
  36. 0036exact hc_right_right_left
  37. 0037exact hL
  38. 0038exact hM
  39. 0039exact hn_right_right_left
  40. 0040split
  41. 0041exact hlength
  42. 0042split
  43. 0043intro i
  44. 0044intro hi
  45. 0045have hv : exists r. ((((exists ff_h_pfp_nonempty_zero_entry_left. ff_h_pfp_nonempty_zero_entry_left + S (r) = S ((S (i)) * CC)) /\ exists ff_q_pfp_nonempty_zero_entry_left. CB = ff_q_pfp_nonempty_zero_entry_left * S ((S (i)) * CC) + (r))) /\ ((exists pfc_terms_code_nonempty_zero_coefficient_left pfc_terms_scale_nonempty_zero_coefficient_left pfc_natural_sum_nonempty_zero_coefficient_left. ((forall pfc_index_nonempty_zero_coefficient_leftdiagonal. (exists pfa_gap_nonempty_zero_coefficient_leftdiagonalbound. pfa_gap_nonempty_zero_coefficient_leftdiagonalbound + S (pfc_index_nonempty_zero_coefficient_leftdiagonal) = (S (i))) -> exists pfc_value_nonempty_zero_coefficient_leftdiagonal. ((((exists ff_h_pfp_nonempty_zero_coefficient_leftdiagonalentry. ff_h_pfp_nonempty_zero_coefficient_leftdiagonalentry + S (pfc_value_nonempty_zero_coefficient_leftdiagonal) = S ((S (pfc_index_nonempty_zero_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_zero_coefficient_left)) /\ exists ff_q_pfp_nonempty_zero_coefficient_leftdiagonalentry. pfc_terms_code_nonempty_zero_coefficient_left = ff_q_pfp_nonempty_zero_coefficient_leftdiagonalentry * S ((S (pfc_index_nonempty_zero_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_zero_coefficient_left) + (pfc_value_nonempty_zero_coefficient_leftdiagonal))) /\ ((exists pfc_complement_nonempty_zero_coefficient_leftdiagonalterm pfc_left_nonempty_zero_coefficient_leftdiagonalterm pfc_right_nonempty_zero_coefficient_leftdiagonalterm. (((pfc_index_nonempty_zero_coefficient_leftdiagonal)+pfc_complement_nonempty_zero_coefficient_leftdiagonalterm=(i)) /\ ((((((exists pfa_gap_nonempty_zero_coefficient_leftdiagonaltermleftinside. pfa_gap_nonempty_zero_coefficient_leftdiagonaltermleftinside + S (pfc_index_nonempty_zero_coefficient_leftdiagonal) = (t+L)) /\ ((((exists ff_h_pfp_nonempty_zero_coefficient_leftdiagonaltermleftentry. ff_h_pfp_nonempty_zero_coefficient_leftdiagonaltermleftentry + S (pfc_left_nonempty_zero_coefficient_leftdiagonalterm) = S ((S (pfc_index_nonempty_zero_coefficient_leftdiagonal)) * AC)) /\ exists ff_q_pfp_nonempty_zero_coefficient_leftdiagonaltermleftentry. AB = ff_q_pfp_nonempty_zero_coefficient_leftdiagonaltermleftentry * S ((S (pfc_index_nonempty_zero_coefficient_leftdiagonal)) * AC) + (pfc_left_nonempty_zero_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_zero_coefficient_leftdiagonaltermleftoutside. pfc_gap_nonempty_zero_coefficient_leftdiagonaltermleftoutside+(t+L)=(pfc_index_nonempty_zero_coefficient_leftdiagonal)) /\ (((pfc_left_nonempty_zero_coefficient_leftdiagonalterm)=0))))) /\ ((((((exists pfa_gap_nonempty_zero_coefficient_leftdiagonaltermrightinside. pfa_gap_nonempty_zero_coefficient_leftdiagonaltermrightinside + S (pfc_complement_nonempty_zero_coefficient_leftdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_nonempty_zero_coefficient_leftdiagonaltermrightentry. ff_h_pfp_nonempty_zero_coefficient_leftdiagonaltermrightentry + S (pfc_right_nonempty_zero_coefficient_leftdiagonalterm) = S ((S (pfc_complement_nonempty_zero_coefficient_leftdiagonalterm)) * bc)) /\ exists ff_q_pfp_nonempty_zero_coefficient_leftdiagonaltermrightentry. bb = ff_q_pfp_nonempty_zero_coefficient_leftdiagonaltermrightentry * S ((S (pfc_complement_nonempty_zero_coefficient_leftdiagonalterm)) * bc) + (pfc_right_nonempty_zero_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_zero_coefficient_leftdiagonaltermrightoutside. pfc_gap_nonempty_zero_coefficient_leftdiagonaltermrightoutside+(M)=(pfc_complement_nonempty_zero_coefficient_leftdiagonalterm)) /\ (((pfc_right_nonempty_zero_coefficient_leftdiagonalterm)=0))))) /\ (((pfc_value_nonempty_zero_coefficient_leftdiagonal)=pfc_left_nonempty_zero_coefficient_leftdiagonalterm*pfc_right_nonempty_zero_coefficient_leftdiagonalterm))))))))))) /\ (((exists fs_u_pfc_nonempty_zero_coefficient_leftsum fs_v_pfc_nonempty_zero_coefficient_leftsum. ((((exists fs_h_pfc_nonempty_zero_coefficient_leftsum_body_start. fs_h_pfc_nonempty_zero_coefficient_leftsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_nonempty_zero_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_zero_coefficient_leftsum_body_start. fs_u_pfc_nonempty_zero_coefficient_leftsum = fs_q_pfc_nonempty_zero_coefficient_leftsum_body_start * S ((S (0)) * fs_v_pfc_nonempty_zero_coefficient_leftsum) + (0))) /\ ((((exists fs_h_pfc_nonempty_zero_coefficient_leftsum_body_terminal. fs_h_pfc_nonempty_zero_coefficient_leftsum_body_terminal + S (pfc_natural_sum_nonempty_zero_coefficient_left) = S ((S (S (i))) * fs_v_pfc_nonempty_zero_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_zero_coefficient_leftsum_body_terminal. fs_u_pfc_nonempty_zero_coefficient_leftsum = fs_q_pfc_nonempty_zero_coefficient_leftsum_body_terminal * S ((S (S (i))) * fs_v_pfc_nonempty_zero_coefficient_leftsum) + (pfc_natural_sum_nonempty_zero_coefficient_left))) /\ forall fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps. (exists fs_lt_pfc_nonempty_zero_coefficient_leftsum_body_steps_bound. fs_lt_pfc_nonempty_zero_coefficient_leftsum_body_steps_bound + S fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps = S (i)) -> exists fs_a_pfc_nonempty_zero_coefficient_leftsum_body_steps fs_r_pfc_nonempty_zero_coefficient_leftsum_body_steps fs_s_pfc_nonempty_zero_coefficient_leftsum_body_steps. ((((exists fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_summand. fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_summand + S (fs_a_pfc_nonempty_zero_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_zero_coefficient_left)) /\ exists fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_summand. pfc_terms_code_nonempty_zero_coefficient_left = fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_summand * S ((S (fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_zero_coefficient_left) + (fs_a_pfc_nonempty_zero_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_partial. fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_partial + S (fs_r_pfc_nonempty_zero_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_zero_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_partial. fs_u_pfc_nonempty_zero_coefficient_leftsum = fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_partial * S ((S (fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_zero_coefficient_leftsum) + (fs_r_pfc_nonempty_zero_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_successor. fs_h_pfc_nonempty_zero_coefficient_leftsum_body_steps_successor + S (fs_s_pfc_nonempty_zero_coefficient_leftsum_body_steps) = S ((S (S fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_zero_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_successor. fs_u_pfc_nonempty_zero_coefficient_leftsum = fs_q_pfc_nonempty_zero_coefficient_leftsum_body_steps_successor * S ((S (S fs_i_pfc_nonempty_zero_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_zero_coefficient_leftsum) + (fs_s_pfc_nonempty_zero_coefficient_leftsum_body_steps))) /\ fs_s_pfc_nonempty_zero_coefficient_leftsum_body_steps = fs_r_pfc_nonempty_zero_coefficient_leftsum_body_steps + fs_a_pfc_nonempty_zero_coefficient_leftsum_body_steps)))))) /\ ((((exists pfa_gap_nonempty_zero_coefficient_leftresiduebound. pfa_gap_nonempty_zero_coefficient_leftresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_nonempty_zero_coefficient_leftresiduecongruence pfa_offset_right_nonempty_zero_coefficient_leftresiduecongruence. (pfc_natural_sum_nonempty_zero_coefficient_left) + (p) * pfa_offset_left_nonempty_zero_coefficient_leftresiduecongruence = (r) + (p) * pfa_offset_right_nonempty_zero_coefficient_leftresiduecongruence)))))))))))
  46. 0046specialize hn_right_right_right (i)
  47. 0047apply hn_right_right_right
  48. 0048specialize le_trans (S i)
  49. 0049specialize le_trans (t)
  50. 0050specialize le_trans (K)
  51. 0051apply le_trans
  52. 0052exact hi
  53. 0053rewrite hlength
  54. 0054specialize le_add_right (t)
  55. 0055specialize le_add_right (N)
  56. 0056apply le_add_right
  57. 0057cases hv
  58. 0058cases hv_witness
  59. 0059have hzero : x=0
  60. 0060specialize prime_field_convolution_coefficient_before_left_padding_left (p)
  61. 0061specialize prime_field_convolution_coefficient_before_left_padding_left (ab)
  62. 0062specialize prime_field_convolution_coefficient_before_left_padding_left (ac)
  63. 0063specialize prime_field_convolution_coefficient_before_left_padding_left (L)
  64. 0064specialize prime_field_convolution_coefficient_before_left_padding_left (bb)
  65. 0065specialize prime_field_convolution_coefficient_before_left_padding_left (bc)
  66. 0066specialize prime_field_convolution_coefficient_before_left_padding_left (M)
  67. 0067specialize prime_field_convolution_coefficient_before_left_padding_left (AB)
  68. 0068specialize prime_field_convolution_coefficient_before_left_padding_left (AC)
  69. 0069specialize prime_field_convolution_coefficient_before_left_padding_left (t)
  70. 0070specialize prime_field_convolution_coefficient_before_left_padding_left (i)
  71. 0071specialize prime_field_convolution_coefficient_before_left_padding_left (x)
  72. 0072apply prime_field_convolution_coefficient_before_left_padding_left
  73. 0073exact hp
  74. 0074exact hpad
  75. 0075exact hi
  76. 0076exact hv_witness_right
  77. 0077rewrite hzero at hv_witness_left
  78. 0078rewrite hzero at hv_witness_left
  79. 0079exact hv_witness_left
  80. 0080intro i
  81. 0081intro a
  82. 0082intro hi
  83. 0083intro ha
  84. 0084have hcoefficient : exists pfc_terms_code_nonempty_original_coefficient_left pfc_terms_scale_nonempty_original_coefficient_left pfc_natural_sum_nonempty_original_coefficient_left. ((forall pfc_index_nonempty_original_coefficient_leftdiagonal. (exists pfa_gap_nonempty_original_coefficient_leftdiagonalbound. pfa_gap_nonempty_original_coefficient_leftdiagonalbound + S (pfc_index_nonempty_original_coefficient_leftdiagonal) = (S (i))) -> exists pfc_value_nonempty_original_coefficient_leftdiagonal. ((((exists ff_h_pfp_nonempty_original_coefficient_leftdiagonalentry. ff_h_pfp_nonempty_original_coefficient_leftdiagonalentry + S (pfc_value_nonempty_original_coefficient_leftdiagonal) = S ((S (pfc_index_nonempty_original_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_original_coefficient_left)) /\ exists ff_q_pfp_nonempty_original_coefficient_leftdiagonalentry. pfc_terms_code_nonempty_original_coefficient_left = ff_q_pfp_nonempty_original_coefficient_leftdiagonalentry * S ((S (pfc_index_nonempty_original_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_original_coefficient_left) + (pfc_value_nonempty_original_coefficient_leftdiagonal))) /\ ((exists pfc_complement_nonempty_original_coefficient_leftdiagonalterm pfc_left_nonempty_original_coefficient_leftdiagonalterm pfc_right_nonempty_original_coefficient_leftdiagonalterm. (((pfc_index_nonempty_original_coefficient_leftdiagonal)+pfc_complement_nonempty_original_coefficient_leftdiagonalterm=(i)) /\ ((((((exists pfa_gap_nonempty_original_coefficient_leftdiagonaltermleftinside. pfa_gap_nonempty_original_coefficient_leftdiagonaltermleftinside + S (pfc_index_nonempty_original_coefficient_leftdiagonal) = (L)) /\ ((((exists ff_h_pfp_nonempty_original_coefficient_leftdiagonaltermleftentry. ff_h_pfp_nonempty_original_coefficient_leftdiagonaltermleftentry + S (pfc_left_nonempty_original_coefficient_leftdiagonalterm) = S ((S (pfc_index_nonempty_original_coefficient_leftdiagonal)) * ac)) /\ exists ff_q_pfp_nonempty_original_coefficient_leftdiagonaltermleftentry. ab = ff_q_pfp_nonempty_original_coefficient_leftdiagonaltermleftentry * S ((S (pfc_index_nonempty_original_coefficient_leftdiagonal)) * ac) + (pfc_left_nonempty_original_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_original_coefficient_leftdiagonaltermleftoutside. pfc_gap_nonempty_original_coefficient_leftdiagonaltermleftoutside+(L)=(pfc_index_nonempty_original_coefficient_leftdiagonal)) /\ (((pfc_left_nonempty_original_coefficient_leftdiagonalterm)=0))))) /\ ((((((exists pfa_gap_nonempty_original_coefficient_leftdiagonaltermrightinside. pfa_gap_nonempty_original_coefficient_leftdiagonaltermrightinside + S (pfc_complement_nonempty_original_coefficient_leftdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_nonempty_original_coefficient_leftdiagonaltermrightentry. ff_h_pfp_nonempty_original_coefficient_leftdiagonaltermrightentry + S (pfc_right_nonempty_original_coefficient_leftdiagonalterm) = S ((S (pfc_complement_nonempty_original_coefficient_leftdiagonalterm)) * bc)) /\ exists ff_q_pfp_nonempty_original_coefficient_leftdiagonaltermrightentry. bb = ff_q_pfp_nonempty_original_coefficient_leftdiagonaltermrightentry * S ((S (pfc_complement_nonempty_original_coefficient_leftdiagonalterm)) * bc) + (pfc_right_nonempty_original_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_original_coefficient_leftdiagonaltermrightoutside. pfc_gap_nonempty_original_coefficient_leftdiagonaltermrightoutside+(M)=(pfc_complement_nonempty_original_coefficient_leftdiagonalterm)) /\ (((pfc_right_nonempty_original_coefficient_leftdiagonalterm)=0))))) /\ (((pfc_value_nonempty_original_coefficient_leftdiagonal)=pfc_left_nonempty_original_coefficient_leftdiagonalterm*pfc_right_nonempty_original_coefficient_leftdiagonalterm))))))))))) /\ (((exists fs_u_pfc_nonempty_original_coefficient_leftsum fs_v_pfc_nonempty_original_coefficient_leftsum. ((((exists fs_h_pfc_nonempty_original_coefficient_leftsum_body_start. fs_h_pfc_nonempty_original_coefficient_leftsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_nonempty_original_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_original_coefficient_leftsum_body_start. fs_u_pfc_nonempty_original_coefficient_leftsum = fs_q_pfc_nonempty_original_coefficient_leftsum_body_start * S ((S (0)) * fs_v_pfc_nonempty_original_coefficient_leftsum) + (0))) /\ ((((exists fs_h_pfc_nonempty_original_coefficient_leftsum_body_terminal. fs_h_pfc_nonempty_original_coefficient_leftsum_body_terminal + S (pfc_natural_sum_nonempty_original_coefficient_left) = S ((S (S (i))) * fs_v_pfc_nonempty_original_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_original_coefficient_leftsum_body_terminal. fs_u_pfc_nonempty_original_coefficient_leftsum = fs_q_pfc_nonempty_original_coefficient_leftsum_body_terminal * S ((S (S (i))) * fs_v_pfc_nonempty_original_coefficient_leftsum) + (pfc_natural_sum_nonempty_original_coefficient_left))) /\ forall fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps. (exists fs_lt_pfc_nonempty_original_coefficient_leftsum_body_steps_bound. fs_lt_pfc_nonempty_original_coefficient_leftsum_body_steps_bound + S fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps = S (i)) -> exists fs_a_pfc_nonempty_original_coefficient_leftsum_body_steps fs_r_pfc_nonempty_original_coefficient_leftsum_body_steps fs_s_pfc_nonempty_original_coefficient_leftsum_body_steps. ((((exists fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_summand. fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_summand + S (fs_a_pfc_nonempty_original_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_original_coefficient_left)) /\ exists fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_summand. pfc_terms_code_nonempty_original_coefficient_left = fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_summand * S ((S (fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_original_coefficient_left) + (fs_a_pfc_nonempty_original_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_partial. fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_partial + S (fs_r_pfc_nonempty_original_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_original_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_partial. fs_u_pfc_nonempty_original_coefficient_leftsum = fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_partial * S ((S (fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_original_coefficient_leftsum) + (fs_r_pfc_nonempty_original_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_successor. fs_h_pfc_nonempty_original_coefficient_leftsum_body_steps_successor + S (fs_s_pfc_nonempty_original_coefficient_leftsum_body_steps) = S ((S (S fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_original_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_successor. fs_u_pfc_nonempty_original_coefficient_leftsum = fs_q_pfc_nonempty_original_coefficient_leftsum_body_steps_successor * S ((S (S fs_i_pfc_nonempty_original_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_original_coefficient_leftsum) + (fs_s_pfc_nonempty_original_coefficient_leftsum_body_steps))) /\ fs_s_pfc_nonempty_original_coefficient_leftsum_body_steps = fs_r_pfc_nonempty_original_coefficient_leftsum_body_steps + fs_a_pfc_nonempty_original_coefficient_leftsum_body_steps)))))) /\ ((((exists pfa_gap_nonempty_original_coefficient_leftresiduebound. pfa_gap_nonempty_original_coefficient_leftresiduebound + S (a) = (p)) /\ ((exists pfa_offset_left_nonempty_original_coefficient_leftresiduecongruence pfa_offset_right_nonempty_original_coefficient_leftresiduecongruence. (pfc_natural_sum_nonempty_original_coefficient_left) + (p) * pfa_offset_left_nonempty_original_coefficient_leftresiduecongruence = (a) + (p) * pfa_offset_right_nonempty_original_coefficient_leftresiduecongruence))))))))
  85. 0085specialize prime_field_convolution_prefix_entry (p)
  86. 0086specialize prime_field_convolution_prefix_entry (ab)
  87. 0087specialize prime_field_convolution_prefix_entry (ac)
  88. 0088specialize prime_field_convolution_prefix_entry (L)
  89. 0089specialize prime_field_convolution_prefix_entry (bb)
  90. 0090specialize prime_field_convolution_prefix_entry (bc)
  91. 0091specialize prime_field_convolution_prefix_entry (M)
  92. 0092specialize prime_field_convolution_prefix_entry (cb)
  93. 0093specialize prime_field_convolution_prefix_entry (cc)
  94. 0094specialize prime_field_convolution_prefix_entry (N)
  95. 0095specialize prime_field_convolution_prefix_entry (i)
  96. 0096specialize prime_field_convolution_prefix_entry (a)
  97. 0097apply prime_field_convolution_prefix_entry
  98. 0098exact hc_right_right_right
  99. 0099exact hi
  100. 0100exact ha
  101. 0101have hv : exists r. ((((exists ff_h_pfp_nonempty_shifted_entry_left. ff_h_pfp_nonempty_shifted_entry_left + S (r) = S ((S (t+i)) * CC)) /\ exists ff_q_pfp_nonempty_shifted_entry_left. CB = ff_q_pfp_nonempty_shifted_entry_left * S ((S (t+i)) * CC) + (r))) /\ ((exists pfc_terms_code_nonempty_shifted_coefficient_left pfc_terms_scale_nonempty_shifted_coefficient_left pfc_natural_sum_nonempty_shifted_coefficient_left. ((forall pfc_index_nonempty_shifted_coefficient_leftdiagonal. (exists pfa_gap_nonempty_shifted_coefficient_leftdiagonalbound. pfa_gap_nonempty_shifted_coefficient_leftdiagonalbound + S (pfc_index_nonempty_shifted_coefficient_leftdiagonal) = (S (t+i))) -> exists pfc_value_nonempty_shifted_coefficient_leftdiagonal. ((((exists ff_h_pfp_nonempty_shifted_coefficient_leftdiagonalentry. ff_h_pfp_nonempty_shifted_coefficient_leftdiagonalentry + S (pfc_value_nonempty_shifted_coefficient_leftdiagonal) = S ((S (pfc_index_nonempty_shifted_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_shifted_coefficient_left)) /\ exists ff_q_pfp_nonempty_shifted_coefficient_leftdiagonalentry. pfc_terms_code_nonempty_shifted_coefficient_left = ff_q_pfp_nonempty_shifted_coefficient_leftdiagonalentry * S ((S (pfc_index_nonempty_shifted_coefficient_leftdiagonal)) * pfc_terms_scale_nonempty_shifted_coefficient_left) + (pfc_value_nonempty_shifted_coefficient_leftdiagonal))) /\ ((exists pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm pfc_left_nonempty_shifted_coefficient_leftdiagonalterm pfc_right_nonempty_shifted_coefficient_leftdiagonalterm. (((pfc_index_nonempty_shifted_coefficient_leftdiagonal)+pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm=(t+i)) /\ ((((((exists pfa_gap_nonempty_shifted_coefficient_leftdiagonaltermleftinside. pfa_gap_nonempty_shifted_coefficient_leftdiagonaltermleftinside + S (pfc_index_nonempty_shifted_coefficient_leftdiagonal) = (t+L)) /\ ((((exists ff_h_pfp_nonempty_shifted_coefficient_leftdiagonaltermleftentry. ff_h_pfp_nonempty_shifted_coefficient_leftdiagonaltermleftentry + S (pfc_left_nonempty_shifted_coefficient_leftdiagonalterm) = S ((S (pfc_index_nonempty_shifted_coefficient_leftdiagonal)) * AC)) /\ exists ff_q_pfp_nonempty_shifted_coefficient_leftdiagonaltermleftentry. AB = ff_q_pfp_nonempty_shifted_coefficient_leftdiagonaltermleftentry * S ((S (pfc_index_nonempty_shifted_coefficient_leftdiagonal)) * AC) + (pfc_left_nonempty_shifted_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_shifted_coefficient_leftdiagonaltermleftoutside. pfc_gap_nonempty_shifted_coefficient_leftdiagonaltermleftoutside+(t+L)=(pfc_index_nonempty_shifted_coefficient_leftdiagonal)) /\ (((pfc_left_nonempty_shifted_coefficient_leftdiagonalterm)=0))))) /\ ((((((exists pfa_gap_nonempty_shifted_coefficient_leftdiagonaltermrightinside. pfa_gap_nonempty_shifted_coefficient_leftdiagonaltermrightinside + S (pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_nonempty_shifted_coefficient_leftdiagonaltermrightentry. ff_h_pfp_nonempty_shifted_coefficient_leftdiagonaltermrightentry + S (pfc_right_nonempty_shifted_coefficient_leftdiagonalterm) = S ((S (pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm)) * bc)) /\ exists ff_q_pfp_nonempty_shifted_coefficient_leftdiagonaltermrightentry. bb = ff_q_pfp_nonempty_shifted_coefficient_leftdiagonaltermrightentry * S ((S (pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm)) * bc) + (pfc_right_nonempty_shifted_coefficient_leftdiagonalterm)))))) \/ (((exists pfc_gap_nonempty_shifted_coefficient_leftdiagonaltermrightoutside. pfc_gap_nonempty_shifted_coefficient_leftdiagonaltermrightoutside+(M)=(pfc_complement_nonempty_shifted_coefficient_leftdiagonalterm)) /\ (((pfc_right_nonempty_shifted_coefficient_leftdiagonalterm)=0))))) /\ (((pfc_value_nonempty_shifted_coefficient_leftdiagonal)=pfc_left_nonempty_shifted_coefficient_leftdiagonalterm*pfc_right_nonempty_shifted_coefficient_leftdiagonalterm))))))))))) /\ (((exists fs_u_pfc_nonempty_shifted_coefficient_leftsum fs_v_pfc_nonempty_shifted_coefficient_leftsum. ((((exists fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_start. fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_start. fs_u_pfc_nonempty_shifted_coefficient_leftsum = fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_start * S ((S (0)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum) + (0))) /\ ((((exists fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_terminal. fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_terminal + S (pfc_natural_sum_nonempty_shifted_coefficient_left) = S ((S (S (t+i))) * fs_v_pfc_nonempty_shifted_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_terminal. fs_u_pfc_nonempty_shifted_coefficient_leftsum = fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_terminal * S ((S (S (t+i))) * fs_v_pfc_nonempty_shifted_coefficient_leftsum) + (pfc_natural_sum_nonempty_shifted_coefficient_left))) /\ forall fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps. (exists fs_lt_pfc_nonempty_shifted_coefficient_leftsum_body_steps_bound. fs_lt_pfc_nonempty_shifted_coefficient_leftsum_body_steps_bound + S fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps = S (t+i)) -> exists fs_a_pfc_nonempty_shifted_coefficient_leftsum_body_steps fs_r_pfc_nonempty_shifted_coefficient_leftsum_body_steps fs_s_pfc_nonempty_shifted_coefficient_leftsum_body_steps. ((((exists fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_summand. fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_summand + S (fs_a_pfc_nonempty_shifted_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_shifted_coefficient_left)) /\ exists fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_summand. pfc_terms_code_nonempty_shifted_coefficient_left = fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_summand * S ((S (fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * pfc_terms_scale_nonempty_shifted_coefficient_left) + (fs_a_pfc_nonempty_shifted_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_partial. fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_partial + S (fs_r_pfc_nonempty_shifted_coefficient_leftsum_body_steps) = S ((S (fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_partial. fs_u_pfc_nonempty_shifted_coefficient_leftsum = fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_partial * S ((S (fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum) + (fs_r_pfc_nonempty_shifted_coefficient_leftsum_body_steps))) /\ ((((exists fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_successor. fs_h_pfc_nonempty_shifted_coefficient_leftsum_body_steps_successor + S (fs_s_pfc_nonempty_shifted_coefficient_leftsum_body_steps) = S ((S (S fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum)) /\ exists fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_successor. fs_u_pfc_nonempty_shifted_coefficient_leftsum = fs_q_pfc_nonempty_shifted_coefficient_leftsum_body_steps_successor * S ((S (S fs_i_pfc_nonempty_shifted_coefficient_leftsum_body_steps)) * fs_v_pfc_nonempty_shifted_coefficient_leftsum) + (fs_s_pfc_nonempty_shifted_coefficient_leftsum_body_steps))) /\ fs_s_pfc_nonempty_shifted_coefficient_leftsum_body_steps = fs_r_pfc_nonempty_shifted_coefficient_leftsum_body_steps + fs_a_pfc_nonempty_shifted_coefficient_leftsum_body_steps)))))) /\ ((((exists pfa_gap_nonempty_shifted_coefficient_leftresiduebound. pfa_gap_nonempty_shifted_coefficient_leftresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_nonempty_shifted_coefficient_leftresiduecongruence pfa_offset_right_nonempty_shifted_coefficient_leftresiduecongruence. (pfc_natural_sum_nonempty_shifted_coefficient_left) + (p) * pfa_offset_left_nonempty_shifted_coefficient_leftresiduecongruence = (r) + (p) * pfa_offset_right_nonempty_shifted_coefficient_leftresiduecongruence)))))))))))
  102. 0102specialize hn_right_right_right (t+i)
  103. 0103apply hn_right_right_right
  104. 0104rewrite hlength
  105. 0105specialize matrix_recursive_lt_add_left (i)
  106. 0106specialize matrix_recursive_lt_add_left (N)
  107. 0107specialize matrix_recursive_lt_add_left (t)
  108. 0108apply matrix_recursive_lt_add_left
  109. 0109exact hi
  110. 0110cases hv
  111. 0111cases hv_witness
  112. 0112have heq : x=a
  113. 0113specialize prime_field_convolution_coefficient_functional (p)
  114. 0114specialize prime_field_convolution_coefficient_functional (AB)
  115. 0115specialize prime_field_convolution_coefficient_functional (AC)
  116. 0116specialize prime_field_convolution_coefficient_functional (t+L)
  117. 0117specialize prime_field_convolution_coefficient_functional (bb)
  118. 0118specialize prime_field_convolution_coefficient_functional (bc)
  119. 0119specialize prime_field_convolution_coefficient_functional (M)
  120. 0120specialize prime_field_convolution_coefficient_functional (t+i)
  121. 0121specialize prime_field_convolution_coefficient_functional (x)
  122. 0122specialize prime_field_convolution_coefficient_functional (a)
  123. 0123apply prime_field_convolution_coefficient_functional
  124. 0124exact hv_witness_right
  125. 0125specialize prime_field_convolution_coefficient_left_padding_left (p)
  126. 0126specialize prime_field_convolution_coefficient_left_padding_left (ab)
  127. 0127specialize prime_field_convolution_coefficient_left_padding_left (ac)
  128. 0128specialize prime_field_convolution_coefficient_left_padding_left (L)
  129. 0129specialize prime_field_convolution_coefficient_left_padding_left (bb)
  130. 0130specialize prime_field_convolution_coefficient_left_padding_left (bc)
  131. 0131specialize prime_field_convolution_coefficient_left_padding_left (M)
  132. 0132specialize prime_field_convolution_coefficient_left_padding_left (AB)
  133. 0133specialize prime_field_convolution_coefficient_left_padding_left (AC)
  134. 0134specialize prime_field_convolution_coefficient_left_padding_left (t)
  135. 0135specialize prime_field_convolution_coefficient_left_padding_left (i)
  136. 0136specialize prime_field_convolution_coefficient_left_padding_left (a)
  137. 0137apply prime_field_convolution_coefficient_left_padding_left
  138. 0138exact hpad
  139. 0139exact hcoefficient
  140. 0140rewrite heq at hv_witness_left
  141. 0141rewrite heq at hv_witness_left
  142. 0142exact hv_witness_left