PG0021

prime_field_polynomial_convolution_shift_scale_aligned_equivalent

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

For actual AB and AQ, multiplying an actual leading-pad-aligned sum XQ+cB by A is formally equivalent to every actual aligned sum X(AQ)+c(AB). All four intermediate products are genuinely constructed, scalar and shift outputs remain actual graph witnesses, proper product lengths are independent, and no associativity hypothesis or output equality is assumed.

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 c ab ac L bb bc M pb pc N qb qc K rb rc T ub uc vb vc UPb UPc VPb VPc zb zc sb sc W eb ec fb fc EPb EPc FPb FPc yb yc. (~((p) = 1) /\ forall pfa_factor_left_step_helper_prime pfa_factor_right_step_helper_prime. (p) = pfa_factor_left_step_helper_prime * pfa_factor_right_step_helper_prime -> pfa_factor_left_step_helper_prime = 1 \/ pfa_factor_right_step_helper_prime = 1) -> (((forall fom_index_pfp_step_helper_ABleft. (exists fom_gap_pfp_step_helper_ABleft_index_bound. fom_gap_pfp_step_helper_ABleft_index_bound + S (fom_index_pfp_step_helper_ABleft) = L) -> exists fom_value_pfp_step_helper_ABleft. ((((exists fom_beta_height_pfp_step_helper_ABleft_entry. fom_beta_height_pfp_step_helper_ABleft_entry + S (fom_value_pfp_step_helper_ABleft) = S ((S (fom_index_pfp_step_helper_ABleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_ABleft_entry. ab = fom_beta_quotient_pfp_step_helper_ABleft_entry * S ((S (fom_index_pfp_step_helper_ABleft)) * ac) + (fom_value_pfp_step_helper_ABleft))) /\ (exists fom_gap_pfp_step_helper_ABleft_value_bound. fom_gap_pfp_step_helper_ABleft_value_bound + S (fom_value_pfp_step_helper_ABleft) = p))) /\ (((forall fom_index_pfp_step_helper_ABright. (exists fom_gap_pfp_step_helper_ABright_index_bound. fom_gap_pfp_step_helper_ABright_index_bound + S (fom_index_pfp_step_helper_ABright) = M) -> exists fom_value_pfp_step_helper_ABright. ((((exists fom_beta_height_pfp_step_helper_ABright_entry. fom_beta_height_pfp_step_helper_ABright_entry + S (fom_value_pfp_step_helper_ABright) = S ((S (fom_index_pfp_step_helper_ABright)) * bc)) /\ exists fom_beta_quotient_pfp_step_helper_ABright_entry. bb = fom_beta_quotient_pfp_step_helper_ABright_entry * S ((S (fom_index_pfp_step_helper_ABright)) * bc) + (fom_value_pfp_step_helper_ABright))) /\ (exists fom_gap_pfp_step_helper_ABright_value_bound. fom_gap_pfp_step_helper_ABright_value_bound + S (fom_value_pfp_step_helper_ABright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_step_helper_ABcoefficients. (exists pfa_gap_step_helper_ABcoefficientsbound. pfa_gap_step_helper_ABcoefficientsbound + S (pfc_index_step_helper_ABcoefficients) = (N)) -> exists pfc_value_step_helper_ABcoefficients. ((((exists ff_h_pfp_step_helper_ABcoefficientsentry. ff_h_pfp_step_helper_ABcoefficientsentry + S (pfc_value_step_helper_ABcoefficients) = S ((S (pfc_index_step_helper_ABcoefficients)) * pc)) /\ exists ff_q_pfp_step_helper_ABcoefficientsentry. pb = ff_q_pfp_step_helper_ABcoefficientsentry * S ((S (pfc_index_step_helper_ABcoefficients)) * pc) + (pfc_value_step_helper_ABcoefficients))) /\ ((exists pfc_terms_code_step_helper_ABcoefficientscoefficient pfc_terms_scale_step_helper_ABcoefficientscoefficient pfc_natural_sum_step_helper_ABcoefficientscoefficient. ((forall pfc_index_step_helper_ABcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_ABcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_ABcoefficients))) -> exists pfc_value_step_helper_ABcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_ABcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_ABcoefficientscoefficient = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient) + (pfc_value_step_helper_ABcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_ABcoefficientscoefficientdiagonal)+pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_ABcoefficients)) /\ ((((((exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_ABcoefficientscoefficientdiagonal)=pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm*pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_ABcoefficientscoefficientsum fs_v_pfc_step_helper_ABcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_ABcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_ABcoefficients))) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_ABcoefficients))) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_ABcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_ABcoefficients)) -> exists fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_ABcoefficientscoefficient = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient) + (fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_ABcoefficientscoefficientresiduebound. pfa_gap_step_helper_ABcoefficientscoefficientresiduebound + S (pfc_value_step_helper_ABcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_ABcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_ABcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_ABcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_ABcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_ABcoefficients) + (p) * pfa_offset_right_step_helper_ABcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall fom_index_pfp_step_helper_AQleft. (exists fom_gap_pfp_step_helper_AQleft_index_bound. fom_gap_pfp_step_helper_AQleft_index_bound + S (fom_index_pfp_step_helper_AQleft) = L) -> exists fom_value_pfp_step_helper_AQleft. ((((exists fom_beta_height_pfp_step_helper_AQleft_entry. fom_beta_height_pfp_step_helper_AQleft_entry + S (fom_value_pfp_step_helper_AQleft) = S ((S (fom_index_pfp_step_helper_AQleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_AQleft_entry. ab = fom_beta_quotient_pfp_step_helper_AQleft_entry * S ((S (fom_index_pfp_step_helper_AQleft)) * ac) + (fom_value_pfp_step_helper_AQleft))) /\ (exists fom_gap_pfp_step_helper_AQleft_value_bound. fom_gap_pfp_step_helper_AQleft_value_bound + S (fom_value_pfp_step_helper_AQleft) = p))) /\ (((forall fom_index_pfp_step_helper_AQright. (exists fom_gap_pfp_step_helper_AQright_index_bound. fom_gap_pfp_step_helper_AQright_index_bound + S (fom_index_pfp_step_helper_AQright) = K) -> exists fom_value_pfp_step_helper_AQright. ((((exists fom_beta_height_pfp_step_helper_AQright_entry. fom_beta_height_pfp_step_helper_AQright_entry + S (fom_value_pfp_step_helper_AQright) = S ((S (fom_index_pfp_step_helper_AQright)) * qc)) /\ exists fom_beta_quotient_pfp_step_helper_AQright_entry. qb = fom_beta_quotient_pfp_step_helper_AQright_entry * S ((S (fom_index_pfp_step_helper_AQright)) * qc) + (fom_value_pfp_step_helper_AQright))) /\ (exists fom_gap_pfp_step_helper_AQright_value_bound. fom_gap_pfp_step_helper_AQright_value_bound + S (fom_value_pfp_step_helper_AQright) = p))) /\ (((((((L)=0 \/ (K)=0) /\ (((T)=0)))) \/ (((~((L)=0)) /\ (((~((K)=0)) /\ (((L)+(K)=S (T)))))))) /\ ((forall pfc_index_step_helper_AQcoefficients. (exists pfa_gap_step_helper_AQcoefficientsbound. pfa_gap_step_helper_AQcoefficientsbound + S (pfc_index_step_helper_AQcoefficients) = (T)) -> exists pfc_value_step_helper_AQcoefficients. ((((exists ff_h_pfp_step_helper_AQcoefficientsentry. ff_h_pfp_step_helper_AQcoefficientsentry + S (pfc_value_step_helper_AQcoefficients) = S ((S (pfc_index_step_helper_AQcoefficients)) * rc)) /\ exists ff_q_pfp_step_helper_AQcoefficientsentry. rb = ff_q_pfp_step_helper_AQcoefficientsentry * S ((S (pfc_index_step_helper_AQcoefficients)) * rc) + (pfc_value_step_helper_AQcoefficients))) /\ ((exists pfc_terms_code_step_helper_AQcoefficientscoefficient pfc_terms_scale_step_helper_AQcoefficientscoefficient pfc_natural_sum_step_helper_AQcoefficientscoefficient. ((forall pfc_index_step_helper_AQcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_AQcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_AQcoefficients))) -> exists pfc_value_step_helper_AQcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_AQcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_AQcoefficientscoefficient = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient) + (pfc_value_step_helper_AQcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_AQcoefficientscoefficientdiagonal)+pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_AQcoefficients)) /\ ((((((exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm) = (K)) /\ ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) * qc)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry. qb = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) * qc) + (pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightoutside+(K)=(pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_AQcoefficientscoefficientdiagonal)=pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm*pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_AQcoefficientscoefficientsum fs_v_pfc_step_helper_AQcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_AQcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_AQcoefficients))) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_AQcoefficients))) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_AQcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_AQcoefficients)) -> exists fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_AQcoefficientscoefficient = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient) + (fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_AQcoefficientscoefficientresiduebound. pfa_gap_step_helper_AQcoefficientscoefficientresiduebound + S (pfc_value_step_helper_AQcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_AQcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_AQcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_AQcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_AQcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_AQcoefficients) + (p) * pfa_offset_right_step_helper_AQcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall mdr_i_pfp_step_helper_left_shiftprefix mdr_a_pfp_step_helper_left_shiftprefix. (exists mdr_gap_pfp_step_helper_left_shiftprefixb. mdr_gap_pfp_step_helper_left_shiftprefixb + S (mdr_i_pfp_step_helper_left_shiftprefix) = (K)) -> (((exists ff_h_mdr_pfp_step_helper_left_shiftprefixo. ff_h_mdr_pfp_step_helper_left_shiftprefixo + S (mdr_a_pfp_step_helper_left_shiftprefix) = S ((S (mdr_i_pfp_step_helper_left_shiftprefix)) * qc)) /\ exists ff_q_mdr_pfp_step_helper_left_shiftprefixo. qb = ff_q_mdr_pfp_step_helper_left_shiftprefixo * S ((S (mdr_i_pfp_step_helper_left_shiftprefix)) * qc) + (mdr_a_pfp_step_helper_left_shiftprefix))) -> (((exists ff_h_mdr_pfp_step_helper_left_shiftprefixn. ff_h_mdr_pfp_step_helper_left_shiftprefixn + S (mdr_a_pfp_step_helper_left_shiftprefix) = S ((S (mdr_i_pfp_step_helper_left_shiftprefix)) * uc)) /\ exists ff_q_mdr_pfp_step_helper_left_shiftprefixn. ub = ff_q_mdr_pfp_step_helper_left_shiftprefixn * S ((S (mdr_i_pfp_step_helper_left_shiftprefix)) * uc) + (mdr_a_pfp_step_helper_left_shiftprefix)))) /\ ((((exists ff_h_pfp_step_helper_left_shiftzero. ff_h_pfp_step_helper_left_shiftzero + S (0) = S ((S (K)) * uc)) /\ exists ff_q_pfp_step_helper_left_shiftzero. ub = ff_q_pfp_step_helper_left_shiftzero * S ((S (K)) * uc) + (0)))))) -> (((exists pfa_gap_step_helper_left_scalescalar. pfa_gap_step_helper_left_scalescalar + S (c) = (p)) /\ ((forall pfp_index_step_helper_left_scale. (exists pfa_gap_step_helper_left_scaleindex. pfa_gap_step_helper_left_scaleindex + S (pfp_index_step_helper_left_scale) = (M)) -> exists pfp_source_step_helper_left_scale pfp_value_step_helper_left_scale. ((((exists ff_h_pfp_step_helper_left_scalesource. ff_h_pfp_step_helper_left_scalesource + S (pfp_source_step_helper_left_scale) = S ((S (pfp_index_step_helper_left_scale)) * bc)) /\ exists ff_q_pfp_step_helper_left_scalesource. bb = ff_q_pfp_step_helper_left_scalesource * S ((S (pfp_index_step_helper_left_scale)) * bc) + (pfp_source_step_helper_left_scale))) /\ (((((exists ff_h_pfp_step_helper_left_scaletarget. ff_h_pfp_step_helper_left_scaletarget + S (pfp_value_step_helper_left_scale) = S ((S (pfp_index_step_helper_left_scale)) * vc)) /\ exists ff_q_pfp_step_helper_left_scaletarget. vb = ff_q_pfp_step_helper_left_scaletarget * S ((S (pfp_index_step_helper_left_scale)) * vc) + (pfp_value_step_helper_left_scale))) /\ ((((exists pfa_gap_step_helper_left_scaleoperationleft. pfa_gap_step_helper_left_scaleoperationleft + S (c) = (p)) /\ (((exists pfa_gap_step_helper_left_scaleoperationright. pfa_gap_step_helper_left_scaleoperationright + S (pfp_source_step_helper_left_scale) = (p)) /\ ((((exists pfa_gap_step_helper_left_scaleoperationresultbound. pfa_gap_step_helper_left_scaleoperationresultbound + S (pfp_value_step_helper_left_scale) = (p)) /\ ((exists pfa_offset_left_step_helper_left_scaleoperationresultcongruence pfa_offset_right_step_helper_left_scaleoperationresultcongruence. ((c) * (pfp_source_step_helper_left_scale)) + (p) * pfa_offset_left_step_helper_left_scaleoperationresultcongruence = (pfp_value_step_helper_left_scale) + (p) * pfa_offset_right_step_helper_left_scaleoperationresultcongruence))))))))))))))))) -> (((forall pfp_repeat_index_step_helper_left_leftzeros. (exists pfa_gap_step_helper_left_leftzerosindex. pfa_gap_step_helper_left_leftzerosindex + S (pfp_repeat_index_step_helper_left_leftzeros) = (M)) -> (((exists ff_h_pfp_step_helper_left_leftzerosentry. ff_h_pfp_step_helper_left_leftzerosentry + S (0) = S ((S (pfp_repeat_index_step_helper_left_leftzeros)) * UPc)) /\ exists ff_q_pfp_step_helper_left_leftzerosentry. UPb = ff_q_pfp_step_helper_left_leftzerosentry * S ((S (pfp_repeat_index_step_helper_left_leftzeros)) * UPc) + (0)))) /\ ((forall pfrep_index_step_helper_left_left pfrep_value_step_helper_left_left. (exists pfa_gap_step_helper_left_leftbound. pfa_gap_step_helper_left_leftbound + S (pfrep_index_step_helper_left_left) = (S K)) -> (((exists ff_h_pfp_step_helper_left_leftinput. ff_h_pfp_step_helper_left_leftinput + S (pfrep_value_step_helper_left_left) = S ((S (pfrep_index_step_helper_left_left)) * uc)) /\ exists ff_q_pfp_step_helper_left_leftinput. ub = ff_q_pfp_step_helper_left_leftinput * S ((S (pfrep_index_step_helper_left_left)) * uc) + (pfrep_value_step_helper_left_left))) -> (((exists ff_h_pfp_step_helper_left_leftoutput. ff_h_pfp_step_helper_left_leftoutput + S (pfrep_value_step_helper_left_left) = S ((S ((M)+pfrep_index_step_helper_left_left)) * UPc)) /\ exists ff_q_pfp_step_helper_left_leftoutput. UPb = ff_q_pfp_step_helper_left_leftoutput * S ((S ((M)+pfrep_index_step_helper_left_left)) * UPc) + (pfrep_value_step_helper_left_left))))))) -> (((forall pfp_repeat_index_step_helper_left_rightzeros. (exists pfa_gap_step_helper_left_rightzerosindex. pfa_gap_step_helper_left_rightzerosindex + S (pfp_repeat_index_step_helper_left_rightzeros) = (S K)) -> (((exists ff_h_pfp_step_helper_left_rightzerosentry. ff_h_pfp_step_helper_left_rightzerosentry + S (0) = S ((S (pfp_repeat_index_step_helper_left_rightzeros)) * VPc)) /\ exists ff_q_pfp_step_helper_left_rightzerosentry. VPb = ff_q_pfp_step_helper_left_rightzerosentry * S ((S (pfp_repeat_index_step_helper_left_rightzeros)) * VPc) + (0)))) /\ ((forall pfrep_index_step_helper_left_right pfrep_value_step_helper_left_right. (exists pfa_gap_step_helper_left_rightbound. pfa_gap_step_helper_left_rightbound + S (pfrep_index_step_helper_left_right) = (M)) -> (((exists ff_h_pfp_step_helper_left_rightinput. ff_h_pfp_step_helper_left_rightinput + S (pfrep_value_step_helper_left_right) = S ((S (pfrep_index_step_helper_left_right)) * vc)) /\ exists ff_q_pfp_step_helper_left_rightinput. vb = ff_q_pfp_step_helper_left_rightinput * S ((S (pfrep_index_step_helper_left_right)) * vc) + (pfrep_value_step_helper_left_right))) -> (((exists ff_h_pfp_step_helper_left_rightoutput. ff_h_pfp_step_helper_left_rightoutput + S (pfrep_value_step_helper_left_right) = S ((S ((S K)+pfrep_index_step_helper_left_right)) * VPc)) /\ exists ff_q_pfp_step_helper_left_rightoutput. VPb = ff_q_pfp_step_helper_left_rightoutput * S ((S ((S K)+pfrep_index_step_helper_left_right)) * VPc) + (pfrep_value_step_helper_left_right))))))) -> (forall pfp_index_step_helper_left_sum. (exists pfa_gap_step_helper_left_sumindex. pfa_gap_step_helper_left_sumindex + S (pfp_index_step_helper_left_sum) = (M+S K)) -> exists pfp_left_step_helper_left_sum pfp_right_step_helper_left_sum pfp_value_step_helper_left_sum. ((((exists ff_h_pfp_step_helper_left_sumleft. ff_h_pfp_step_helper_left_sumleft + S (pfp_left_step_helper_left_sum) = S ((S (pfp_index_step_helper_left_sum)) * UPc)) /\ exists ff_q_pfp_step_helper_left_sumleft. UPb = ff_q_pfp_step_helper_left_sumleft * S ((S (pfp_index_step_helper_left_sum)) * UPc) + (pfp_left_step_helper_left_sum))) /\ (((((exists ff_h_pfp_step_helper_left_sumright. ff_h_pfp_step_helper_left_sumright + S (pfp_right_step_helper_left_sum) = S ((S (pfp_index_step_helper_left_sum)) * VPc)) /\ exists ff_q_pfp_step_helper_left_sumright. VPb = ff_q_pfp_step_helper_left_sumright * S ((S (pfp_index_step_helper_left_sum)) * VPc) + (pfp_right_step_helper_left_sum))) /\ (((((exists ff_h_pfp_step_helper_left_sumtarget. ff_h_pfp_step_helper_left_sumtarget + S (pfp_value_step_helper_left_sum) = S ((S (pfp_index_step_helper_left_sum)) * zc)) /\ exists ff_q_pfp_step_helper_left_sumtarget. zb = ff_q_pfp_step_helper_left_sumtarget * S ((S (pfp_index_step_helper_left_sum)) * zc) + (pfp_value_step_helper_left_sum))) /\ ((((exists pfa_gap_step_helper_left_sumoperationleft. pfa_gap_step_helper_left_sumoperationleft + S (pfp_left_step_helper_left_sum) = (p)) /\ (((exists pfa_gap_step_helper_left_sumoperationright. pfa_gap_step_helper_left_sumoperationright + S (pfp_right_step_helper_left_sum) = (p)) /\ ((((exists pfa_gap_step_helper_left_sumoperationresultbound. pfa_gap_step_helper_left_sumoperationresultbound + S (pfp_value_step_helper_left_sum) = (p)) /\ ((exists pfa_offset_left_step_helper_left_sumoperationresultcongruence pfa_offset_right_step_helper_left_sumoperationresultcongruence. ((pfp_left_step_helper_left_sum) + (pfp_right_step_helper_left_sum)) + (p) * pfa_offset_left_step_helper_left_sumoperationresultcongruence = (pfp_value_step_helper_left_sum) + (p) * pfa_offset_right_step_helper_left_sumoperationresultcongruence)))))))))))))))) -> (((forall fom_index_pfp_step_helper_AZleft. (exists fom_gap_pfp_step_helper_AZleft_index_bound. fom_gap_pfp_step_helper_AZleft_index_bound + S (fom_index_pfp_step_helper_AZleft) = L) -> exists fom_value_pfp_step_helper_AZleft. ((((exists fom_beta_height_pfp_step_helper_AZleft_entry. fom_beta_height_pfp_step_helper_AZleft_entry + S (fom_value_pfp_step_helper_AZleft) = S ((S (fom_index_pfp_step_helper_AZleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_AZleft_entry. ab = fom_beta_quotient_pfp_step_helper_AZleft_entry * S ((S (fom_index_pfp_step_helper_AZleft)) * ac) + (fom_value_pfp_step_helper_AZleft))) /\ (exists fom_gap_pfp_step_helper_AZleft_value_bound. fom_gap_pfp_step_helper_AZleft_value_bound + S (fom_value_pfp_step_helper_AZleft) = p))) /\ (((forall fom_index_pfp_step_helper_AZright. (exists fom_gap_pfp_step_helper_AZright_index_bound. fom_gap_pfp_step_helper_AZright_index_bound + S (fom_index_pfp_step_helper_AZright) = M+S K) -> exists fom_value_pfp_step_helper_AZright. ((((exists fom_beta_height_pfp_step_helper_AZright_entry. fom_beta_height_pfp_step_helper_AZright_entry + S (fom_value_pfp_step_helper_AZright) = S ((S (fom_index_pfp_step_helper_AZright)) * zc)) /\ exists fom_beta_quotient_pfp_step_helper_AZright_entry. zb = fom_beta_quotient_pfp_step_helper_AZright_entry * S ((S (fom_index_pfp_step_helper_AZright)) * zc) + (fom_value_pfp_step_helper_AZright))) /\ (exists fom_gap_pfp_step_helper_AZright_value_bound. fom_gap_pfp_step_helper_AZright_value_bound + S (fom_value_pfp_step_helper_AZright) = p))) /\ (((((((L)=0 \/ (M+S K)=0) /\ (((W)=0)))) \/ (((~((L)=0)) /\ (((~((M+S K)=0)) /\ (((L)+(M+S K)=S (W)))))))) /\ ((forall pfc_index_step_helper_AZcoefficients. (exists pfa_gap_step_helper_AZcoefficientsbound. pfa_gap_step_helper_AZcoefficientsbound + S (pfc_index_step_helper_AZcoefficients) = (W)) -> exists pfc_value_step_helper_AZcoefficients. ((((exists ff_h_pfp_step_helper_AZcoefficientsentry. ff_h_pfp_step_helper_AZcoefficientsentry + S (pfc_value_step_helper_AZcoefficients) = S ((S (pfc_index_step_helper_AZcoefficients)) * sc)) /\ exists ff_q_pfp_step_helper_AZcoefficientsentry. sb = ff_q_pfp_step_helper_AZcoefficientsentry * S ((S (pfc_index_step_helper_AZcoefficients)) * sc) + (pfc_value_step_helper_AZcoefficients))) /\ ((exists pfc_terms_code_step_helper_AZcoefficientscoefficient pfc_terms_scale_step_helper_AZcoefficientscoefficient pfc_natural_sum_step_helper_AZcoefficientscoefficient. ((forall pfc_index_step_helper_AZcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_AZcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_AZcoefficients))) -> exists pfc_value_step_helper_AZcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_AZcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_AZcoefficientscoefficient = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient) + (pfc_value_step_helper_AZcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_AZcoefficientscoefficientdiagonal)+pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_AZcoefficients)) /\ ((((((exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm) = (M+S K)) /\ ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) * zc)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry. zb = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) * zc) + (pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightoutside+(M+S K)=(pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_AZcoefficientscoefficientdiagonal)=pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm*pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_AZcoefficientscoefficientsum fs_v_pfc_step_helper_AZcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_AZcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_AZcoefficients))) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_AZcoefficients))) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_AZcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_AZcoefficients)) -> exists fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_AZcoefficientscoefficient = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient) + (fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_AZcoefficientscoefficientresiduebound. pfa_gap_step_helper_AZcoefficientscoefficientresiduebound + S (pfc_value_step_helper_AZcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_AZcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_AZcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_AZcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_AZcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_AZcoefficients) + (p) * pfa_offset_right_step_helper_AZcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall mdr_i_pfp_step_helper_right_shiftprefix mdr_a_pfp_step_helper_right_shiftprefix. (exists mdr_gap_pfp_step_helper_right_shiftprefixb. mdr_gap_pfp_step_helper_right_shiftprefixb + S (mdr_i_pfp_step_helper_right_shiftprefix) = (T)) -> (((exists ff_h_mdr_pfp_step_helper_right_shiftprefixo. ff_h_mdr_pfp_step_helper_right_shiftprefixo + S (mdr_a_pfp_step_helper_right_shiftprefix) = S ((S (mdr_i_pfp_step_helper_right_shiftprefix)) * rc)) /\ exists ff_q_mdr_pfp_step_helper_right_shiftprefixo. rb = ff_q_mdr_pfp_step_helper_right_shiftprefixo * S ((S (mdr_i_pfp_step_helper_right_shiftprefix)) * rc) + (mdr_a_pfp_step_helper_right_shiftprefix))) -> (((exists ff_h_mdr_pfp_step_helper_right_shiftprefixn. ff_h_mdr_pfp_step_helper_right_shiftprefixn + S (mdr_a_pfp_step_helper_right_shiftprefix) = S ((S (mdr_i_pfp_step_helper_right_shiftprefix)) * ec)) /\ exists ff_q_mdr_pfp_step_helper_right_shiftprefixn. eb = ff_q_mdr_pfp_step_helper_right_shiftprefixn * S ((S (mdr_i_pfp_step_helper_right_shiftprefix)) * ec) + (mdr_a_pfp_step_helper_right_shiftprefix)))) /\ ((((exists ff_h_pfp_step_helper_right_shiftzero. ff_h_pfp_step_helper_right_shiftzero + S (0) = S ((S (T)) * ec)) /\ exists ff_q_pfp_step_helper_right_shiftzero. eb = ff_q_pfp_step_helper_right_shiftzero * S ((S (T)) * ec) + (0)))))) -> (((exists pfa_gap_step_helper_right_scalescalar. pfa_gap_step_helper_right_scalescalar + S (c) = (p)) /\ ((forall pfp_index_step_helper_right_scale. (exists pfa_gap_step_helper_right_scaleindex. pfa_gap_step_helper_right_scaleindex + S (pfp_index_step_helper_right_scale) = (N)) -> exists pfp_source_step_helper_right_scale pfp_value_step_helper_right_scale. ((((exists ff_h_pfp_step_helper_right_scalesource. ff_h_pfp_step_helper_right_scalesource + S (pfp_source_step_helper_right_scale) = S ((S (pfp_index_step_helper_right_scale)) * pc)) /\ exists ff_q_pfp_step_helper_right_scalesource. pb = ff_q_pfp_step_helper_right_scalesource * S ((S (pfp_index_step_helper_right_scale)) * pc) + (pfp_source_step_helper_right_scale))) /\ (((((exists ff_h_pfp_step_helper_right_scaletarget. ff_h_pfp_step_helper_right_scaletarget + S (pfp_value_step_helper_right_scale) = S ((S (pfp_index_step_helper_right_scale)) * fc)) /\ exists ff_q_pfp_step_helper_right_scaletarget. fb = ff_q_pfp_step_helper_right_scaletarget * S ((S (pfp_index_step_helper_right_scale)) * fc) + (pfp_value_step_helper_right_scale))) /\ ((((exists pfa_gap_step_helper_right_scaleoperationleft. pfa_gap_step_helper_right_scaleoperationleft + S (c) = (p)) /\ (((exists pfa_gap_step_helper_right_scaleoperationright. pfa_gap_step_helper_right_scaleoperationright + S (pfp_source_step_helper_right_scale) = (p)) /\ ((((exists pfa_gap_step_helper_right_scaleoperationresultbound. pfa_gap_step_helper_right_scaleoperationresultbound + S (pfp_value_step_helper_right_scale) = (p)) /\ ((exists pfa_offset_left_step_helper_right_scaleoperationresultcongruence pfa_offset_right_step_helper_right_scaleoperationresultcongruence. ((c) * (pfp_source_step_helper_right_scale)) + (p) * pfa_offset_left_step_helper_right_scaleoperationresultcongruence = (pfp_value_step_helper_right_scale) + (p) * pfa_offset_right_step_helper_right_scaleoperationresultcongruence))))))))))))))))) -> (((forall pfp_repeat_index_step_helper_right_leftzeros. (exists pfa_gap_step_helper_right_leftzerosindex. pfa_gap_step_helper_right_leftzerosindex + S (pfp_repeat_index_step_helper_right_leftzeros) = (N)) -> (((exists ff_h_pfp_step_helper_right_leftzerosentry. ff_h_pfp_step_helper_right_leftzerosentry + S (0) = S ((S (pfp_repeat_index_step_helper_right_leftzeros)) * EPc)) /\ exists ff_q_pfp_step_helper_right_leftzerosentry. EPb = ff_q_pfp_step_helper_right_leftzerosentry * S ((S (pfp_repeat_index_step_helper_right_leftzeros)) * EPc) + (0)))) /\ ((forall pfrep_index_step_helper_right_left pfrep_value_step_helper_right_left. (exists pfa_gap_step_helper_right_leftbound. pfa_gap_step_helper_right_leftbound + S (pfrep_index_step_helper_right_left) = (S T)) -> (((exists ff_h_pfp_step_helper_right_leftinput. ff_h_pfp_step_helper_right_leftinput + S (pfrep_value_step_helper_right_left) = S ((S (pfrep_index_step_helper_right_left)) * ec)) /\ exists ff_q_pfp_step_helper_right_leftinput. eb = ff_q_pfp_step_helper_right_leftinput * S ((S (pfrep_index_step_helper_right_left)) * ec) + (pfrep_value_step_helper_right_left))) -> (((exists ff_h_pfp_step_helper_right_leftoutput. ff_h_pfp_step_helper_right_leftoutput + S (pfrep_value_step_helper_right_left) = S ((S ((N)+pfrep_index_step_helper_right_left)) * EPc)) /\ exists ff_q_pfp_step_helper_right_leftoutput. EPb = ff_q_pfp_step_helper_right_leftoutput * S ((S ((N)+pfrep_index_step_helper_right_left)) * EPc) + (pfrep_value_step_helper_right_left))))))) -> (((forall pfp_repeat_index_step_helper_right_rightzeros. (exists pfa_gap_step_helper_right_rightzerosindex. pfa_gap_step_helper_right_rightzerosindex + S (pfp_repeat_index_step_helper_right_rightzeros) = (S T)) -> (((exists ff_h_pfp_step_helper_right_rightzerosentry. ff_h_pfp_step_helper_right_rightzerosentry + S (0) = S ((S (pfp_repeat_index_step_helper_right_rightzeros)) * FPc)) /\ exists ff_q_pfp_step_helper_right_rightzerosentry. FPb = ff_q_pfp_step_helper_right_rightzerosentry * S ((S (pfp_repeat_index_step_helper_right_rightzeros)) * FPc) + (0)))) /\ ((forall pfrep_index_step_helper_right_right pfrep_value_step_helper_right_right. (exists pfa_gap_step_helper_right_rightbound. pfa_gap_step_helper_right_rightbound + S (pfrep_index_step_helper_right_right) = (N)) -> (((exists ff_h_pfp_step_helper_right_rightinput. ff_h_pfp_step_helper_right_rightinput + S (pfrep_value_step_helper_right_right) = S ((S (pfrep_index_step_helper_right_right)) * fc)) /\ exists ff_q_pfp_step_helper_right_rightinput. fb = ff_q_pfp_step_helper_right_rightinput * S ((S (pfrep_index_step_helper_right_right)) * fc) + (pfrep_value_step_helper_right_right))) -> (((exists ff_h_pfp_step_helper_right_rightoutput. ff_h_pfp_step_helper_right_rightoutput + S (pfrep_value_step_helper_right_right) = S ((S ((S T)+pfrep_index_step_helper_right_right)) * FPc)) /\ exists ff_q_pfp_step_helper_right_rightoutput. FPb = ff_q_pfp_step_helper_right_rightoutput * S ((S ((S T)+pfrep_index_step_helper_right_right)) * FPc) + (pfrep_value_step_helper_right_right))))))) -> (forall pfp_index_step_helper_right_sum. (exists pfa_gap_step_helper_right_sumindex. pfa_gap_step_helper_right_sumindex + S (pfp_index_step_helper_right_sum) = (N+S T)) -> exists pfp_left_step_helper_right_sum pfp_right_step_helper_right_sum pfp_value_step_helper_right_sum. ((((exists ff_h_pfp_step_helper_right_sumleft. ff_h_pfp_step_helper_right_sumleft + S (pfp_left_step_helper_right_sum) = S ((S (pfp_index_step_helper_right_sum)) * EPc)) /\ exists ff_q_pfp_step_helper_right_sumleft. EPb = ff_q_pfp_step_helper_right_sumleft * S ((S (pfp_index_step_helper_right_sum)) * EPc) + (pfp_left_step_helper_right_sum))) /\ (((((exists ff_h_pfp_step_helper_right_sumright. ff_h_pfp_step_helper_right_sumright + S (pfp_right_step_helper_right_sum) = S ((S (pfp_index_step_helper_right_sum)) * FPc)) /\ exists ff_q_pfp_step_helper_right_sumright. FPb = ff_q_pfp_step_helper_right_sumright * S ((S (pfp_index_step_helper_right_sum)) * FPc) + (pfp_right_step_helper_right_sum))) /\ (((((exists ff_h_pfp_step_helper_right_sumtarget. ff_h_pfp_step_helper_right_sumtarget + S (pfp_value_step_helper_right_sum) = S ((S (pfp_index_step_helper_right_sum)) * yc)) /\ exists ff_q_pfp_step_helper_right_sumtarget. yb = ff_q_pfp_step_helper_right_sumtarget * S ((S (pfp_index_step_helper_right_sum)) * yc) + (pfp_value_step_helper_right_sum))) /\ ((((exists pfa_gap_step_helper_right_sumoperationleft. pfa_gap_step_helper_right_sumoperationleft + S (pfp_left_step_helper_right_sum) = (p)) /\ (((exists pfa_gap_step_helper_right_sumoperationright. pfa_gap_step_helper_right_sumoperationright + S (pfp_right_step_helper_right_sum) = (p)) /\ ((((exists pfa_gap_step_helper_right_sumoperationresultbound. pfa_gap_step_helper_right_sumoperationresultbound + S (pfp_value_step_helper_right_sum) = (p)) /\ ((exists pfa_offset_left_step_helper_right_sumoperationresultcongruence pfa_offset_right_step_helper_right_sumoperationresultcongruence. ((pfp_left_step_helper_right_sum) + (pfp_right_step_helper_right_sum)) + (p) * pfa_offset_left_step_helper_right_sumoperationresultcongruence = (pfp_value_step_helper_right_sum) + (p) * pfa_offset_right_step_helper_right_sumoperationresultcongruence)))))))))))))))) -> (forall pfrep_power_step_helper_result pfrep_left_step_helper_result pfrep_right_step_helper_result. ((exists pfrep_position_step_helper_resultfirst. ((pfrep_position_step_helper_resultfirst+S (pfrep_power_step_helper_result)=(W)) /\ ((((exists ff_h_pfp_step_helper_resultfirstentry. ff_h_pfp_step_helper_resultfirstentry + S (pfrep_left_step_helper_result) = S ((S (pfrep_position_step_helper_resultfirst)) * sc)) /\ exists ff_q_pfp_step_helper_resultfirstentry. sb = ff_q_pfp_step_helper_resultfirstentry * S ((S (pfrep_position_step_helper_resultfirst)) * sc) + (pfrep_left_step_helper_result)))))) \/ (((exists pfrep_gap_step_helper_resultfirstoutside. pfrep_gap_step_helper_resultfirstoutside+(W)=(pfrep_power_step_helper_result)) /\ (((pfrep_left_step_helper_result)=0))))) -> ((exists pfrep_position_step_helper_resultsecond. ((pfrep_position_step_helper_resultsecond+S (pfrep_power_step_helper_result)=(N+S T)) /\ ((((exists ff_h_pfp_step_helper_resultsecondentry. ff_h_pfp_step_helper_resultsecondentry + S (pfrep_right_step_helper_result) = S ((S (pfrep_position_step_helper_resultsecond)) * yc)) /\ exists ff_q_pfp_step_helper_resultsecondentry. yb = ff_q_pfp_step_helper_resultsecondentry * S ((S (pfrep_position_step_helper_resultsecond)) * yc) + (pfrep_right_step_helper_result)))))) \/ (((exists pfrep_gap_step_helper_resultsecondoutside. pfrep_gap_step_helper_resultsecondoutside+(N+S T)=(pfrep_power_step_helper_result)) /\ (((pfrep_right_step_helper_result)=0))))) -> pfrep_left_step_helper_result=pfrep_right_step_helper_result)

Constructive proof overview

Generated structural guide

For actual AB and AQ, multiplying an actual leading-pad-aligned sum XQ+cB by A is formally equivalent to every actual aligned sum X(AQ)+c(AB). All four intermediate products are genuinely constructed, scalar and shift outputs remain actual graph witnesses, proper product lengths are independent, and no associativity hypothesis or output equality is assumed.

The unchanged tactic script uses 16 declared prerequisites and contains 421 exact native proof lines.

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

Proof neighborhood

Direct dependencies

prime_nonzero Alpha theorem; checked-use authorized prime_field_polynomial_scale_bounded Alpha theorem; checked-use authorized prime_field_polynomial_add_bounded Alpha theorem; checked-use authorized polynomial_product_length_exists Alpha theorem; checked-use authorized prime_field_polynomial_convolution_at_length_exists Alpha theorem; checked-use authorized PG0002 prime_field_polynomial_shift_bounded prime_field_polynomial_convolution_left_add Alpha theorem; checked-use authorized PG000C prime_field_polynomial_convolution_shift_right_equivalent prime_field_polynomial_convolution_left_padding_equivalent_right Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_transitive Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_symmetric Alpha theorem; checked-use authorized prime_field_polynomial_left_pad_equivalent Alpha theorem; checked-use authorized PG0016 prime_field_polynomial_convolution_right_scale_equal prime_field_polynomial_equal_implies_equivalent Alpha theorem; checked-use authorized add_comm Alpha theorem; checked-use authorized prime_field_polynomial_add_equivalent_congruent Alpha theorem; checked-use authorized

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

421 script commands · 64 reading checkpoints · 24 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 c
  3. L3
    intro ab
  4. L4
    intro ac
  5. L5
    intro L
  6. L6
    intro bb
  7. L7
    intro bc
  8. L8
    intro M
  9. L9
    intro pb
  10. L10
    intro pc
02Fix variables and assumptionsL11–20

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

  1. L11
    intro N
  2. L12
    intro qb
  3. L13
    intro qc
  4. L14
    intro K
  5. L15
    intro rb
  6. L16
    intro rc
  7. L17
    intro T
  8. L18
    intro ub
  9. L19
    intro uc
  10. L20
    intro vb
03Fix variables and assumptionsL21–30

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

  1. L21
    intro vc
  2. L22
    intro UPb
  3. L23
    intro UPc
  4. L24
    intro VPb
  5. L25
    intro VPc
  6. L26
    intro zb
  7. L27
    intro zc
  8. L28
    intro sb
  9. L29
    intro sc
  10. L30
    intro W
04Fix variables and assumptionsL31–40

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

  1. L31
    intro eb
  2. L32
    intro ec
  3. L33
    intro fb
  4. L34
    intro fc
  5. L35
    intro EPb
  6. L36
    intro EPc
  7. L37
    intro FPb
  8. L38
    intro FPc
  9. L39
    intro yb
  10. L40
    intro yc
05Fix variables and assumptionsL41–50

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

  1. L41
    intro hp
  2. L42
    intro hAB
  3. L43
    intro hAQ
  4. L44
    intro hU
  5. L45
    intro hV
  6. L46
    intro hUP
  7. L47
    intro hVP
  8. L48
    intro hZ
  9. L49
    intro hAZ
  10. L50
    intro hE
06Fix variables and assumptionsL51–54

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

  1. L51
    intro hF
  2. L52
    intro hEP
  3. L53
    intro hFP
  4. L54
    intro hY
07Establish hp0L55–60

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

  1. L55
    have hp0 : ~(p=0)
  2. L56
    intro hz
  3. L57
    specialize prime_nonzero (p)
  4. L58
    apply prime_nonzero
  5. L59
    exact hp
  6. L60
    exact hz
08Establish hABcopyL61–62

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

  1. L61
    have hABcopy : FpPolyProduct(p,ab,ac,L,bb,bc,M,pb,pc,N)Definitions: FpPolyProduct
  2. L62
    exact hAB
09Separate the logical casesL63–65

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

  1. L63
    cases hABcopy
  2. L64
    cases hABcopy_right
  3. L65
    cases hABcopy_right_right
10Establish hAQcopyL66–67

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

  1. L66
    have hAQcopy : FpPolyProduct(p,ab,ac,L,qb,qc,K,rb,rc,T)Definitions: FpPolyProduct
  2. L67
    exact hAQ
11Separate the logical casesL68–70

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

  1. L68
    cases hAQcopy
  2. L69
    cases hAQcopy_right
  3. L70
    cases hAQcopy_right_right
12Establish hAZcopyL71–72

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

  1. L71
    have hAZcopy : FpPolyProduct(p,ab,ac,L,zb,zc,M + S K,sb,sc,W)Definitions: FpPolyProduct
  2. L72
    exact hAZ
13Separate the logical casesL73–75

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

  1. L73
    cases hAZcopy
  2. L74
    cases hAZcopy_right
  3. L75
    cases hAZcopy_right_right
14Establish hscale_boundsL76–85

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

  1. L76
    have hscale_bounds : BetaPrefixInto(bb,bc,M,p) ∧ BetaPrefixInto(vb,vc,M,p)Definitions: BetaPrefixInto
  2. L77
    specialize prime_field_polynomial_scale_bounded (p)
  3. L78
    specialize prime_field_polynomial_scale_bounded (c)
  4. L79
    specialize prime_field_polynomial_scale_bounded (bb)
  5. L80
    specialize prime_field_polynomial_scale_bounded (bc)
  6. L81
    specialize prime_field_polynomial_scale_bounded (vb)
  7. L82
    specialize prime_field_polynomial_scale_bounded (vc)
  8. L83
    specialize prime_field_polynomial_scale_bounded (M)
  9. L84
    apply prime_field_polynomial_scale_bounded
  10. L85
    exact hV
15Separate the logical casesL86–86

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

  1. L86
    cases hscale_bounds
16Establish hadd_boundsL87–96

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

  1. L87
    have hadd_bounds : BetaPrefixInto(UPb,UPc,M + S K,p) ∧ (BetaPrefixInto(VPb,VPc,M + S K,p) ∧ BetaPrefixInto(zb,zc,M + S K,p))Definitions: BetaPrefixInto
  2. L88
    specialize prime_field_polynomial_add_bounded (p)
  3. L89
    specialize prime_field_polynomial_add_bounded (UPb)
  4. L90
    specialize prime_field_polynomial_add_bounded (UPc)
  5. L91
    specialize prime_field_polynomial_add_bounded (VPb)
  6. L92
    specialize prime_field_polynomial_add_bounded (VPc)
  7. L93
    specialize prime_field_polynomial_add_bounded (zb)
  8. L94
    specialize prime_field_polynomial_add_bounded (zc)
  9. L95
    specialize prime_field_polynomial_add_bounded (M+S K)
  10. L96
    apply prime_field_polynomial_add_bounded
17Use earlier factsL97–97

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

  1. L97
    exact hZ
18Separate the logical casesL98–99

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

  1. L98
    cases hadd_bounds
  2. L99
    cases hadd_bounds_right
19Establish hlengthL100–103

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

  1. L100
    have hlength : exists J. (((((L)=0 \/ (S K)=0) /\ (((J)=0)))) \/ (((~((L)=0)) /\ (((~((S K)=0)) /\ (((L)+(S K)=S (J))))))))
  2. L101
    specialize polynomial_product_length_exists (L)
  3. L102
    specialize polynomial_product_length_exists (S K)
  4. L103
    apply polynomial_product_length_exists
20Separate the logical casesL104–104

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

  1. L104
    cases hlength
21Establish hshifted_productL105–114

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

  1. L105
    have hshifted_product : ∃ mb. ∃ mc. FpPolyProduct(p,ab,ac,L,ub,uc,S K,mb,mc,x)Definitions: FpPolyProduct
  2. L106
    specialize prime_field_polynomial_convolution_at_length_exists (p)
  3. L107
    specialize prime_field_polynomial_convolution_at_length_exists (ab)
  4. L108
    specialize prime_field_polynomial_convolution_at_length_exists (ac)
  5. L109
    specialize prime_field_polynomial_convolution_at_length_exists (L)
  6. L110
    specialize prime_field_polynomial_convolution_at_length_exists (ub)
  7. L111
    specialize prime_field_polynomial_convolution_at_length_exists (uc)
  8. L112
    specialize prime_field_polynomial_convolution_at_length_exists (S K)
  9. L113
    specialize prime_field_polynomial_convolution_at_length_exists (x)
  10. L114
    apply prime_field_polynomial_convolution_at_length_exists
22Use earlier factsL115–124

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

  1. L115
    exact hp0
  2. L116
    exact hABcopy_left
  3. L117
    specialize prime_field_polynomial_shift_bounded (p)
  4. L118
    specialize prime_field_polynomial_shift_bounded (qb)
  5. L119
    specialize prime_field_polynomial_shift_bounded (qc)
  6. L120
    specialize prime_field_polynomial_shift_bounded (K)
  7. L121
    specialize prime_field_polynomial_shift_bounded (ub)
  8. L122
    specialize prime_field_polynomial_shift_bounded (uc)
  9. L123
    apply prime_field_polynomial_shift_bounded
  10. L124
    exact hp
23Use earlier factsL125–127

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

  1. L125
    exact hAQcopy_right_left
  2. L126
    exact hU
  3. L127
    exact hlength_witness
24Separate the logical casesL128–129

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

  1. L128
    cases hshifted_product
  2. L129
    cases hshifted_product_witness
25Establish hscaled_productL130–139

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

  1. L130
    have hscaled_product : ∃ mb. ∃ mc. FpPolyProduct(p,ab,ac,L,vb,vc,M,mb,mc,N)Definitions: FpPolyProduct
  2. L131
    specialize prime_field_polynomial_convolution_at_length_exists (p)
  3. L132
    specialize prime_field_polynomial_convolution_at_length_exists (ab)
  4. L133
    specialize prime_field_polynomial_convolution_at_length_exists (ac)
  5. L134
    specialize prime_field_polynomial_convolution_at_length_exists (L)
  6. L135
    specialize prime_field_polynomial_convolution_at_length_exists (vb)
  7. L136
    specialize prime_field_polynomial_convolution_at_length_exists (vc)
  8. L137
    specialize prime_field_polynomial_convolution_at_length_exists (M)
  9. L138
    specialize prime_field_polynomial_convolution_at_length_exists (N)
  10. L139
    apply prime_field_polynomial_convolution_at_length_exists
26Use earlier factsL140–143

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

  1. L140
    exact hp0
  2. L141
    exact hABcopy_left
  3. L142
    exact hscale_bounds_right
  4. L143
    exact hABcopy_right_right_left
27Separate the logical casesL144–145

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

  1. L144
    cases hscaled_product
  2. L145
    cases hscaled_product_witness
28Establish hfirstL146–155

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

  1. L146
    have hfirst : ∃ mb. ∃ mc. FpPolyProduct(p,ab,ac,L,UPb,UPc,M + S K,mb,mc,W)Definitions: FpPolyProduct
  2. L147
    specialize prime_field_polynomial_convolution_at_length_exists (p)
  3. L148
    specialize prime_field_polynomial_convolution_at_length_exists (ab)
  4. L149
    specialize prime_field_polynomial_convolution_at_length_exists (ac)
  5. L150
    specialize prime_field_polynomial_convolution_at_length_exists (L)
  6. L151
    specialize prime_field_polynomial_convolution_at_length_exists (UPb)
  7. L152
    specialize prime_field_polynomial_convolution_at_length_exists (UPc)
  8. L153
    specialize prime_field_polynomial_convolution_at_length_exists (M+S K)
  9. L154
    specialize prime_field_polynomial_convolution_at_length_exists (W)
  10. L155
    apply prime_field_polynomial_convolution_at_length_exists
29Use earlier factsL156–159

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

  1. L156
    exact hp0
  2. L157
    exact hABcopy_left
  3. L158
    exact hadd_bounds_left
  4. L159
    exact hAZcopy_right_right_left
30Separate the logical casesL160–161

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

  1. L160
    cases hfirst
  2. L161
    cases hfirst_witness
31Establish hsecondL162–171

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

  1. L162
    have hsecond : ∃ mb. ∃ mc. FpPolyProduct(p,ab,ac,L,VPb,VPc,M + S K,mb,mc,W)Definitions: FpPolyProduct
  2. L163
    specialize prime_field_polynomial_convolution_at_length_exists (p)
  3. L164
    specialize prime_field_polynomial_convolution_at_length_exists (ab)
  4. L165
    specialize prime_field_polynomial_convolution_at_length_exists (ac)
  5. L166
    specialize prime_field_polynomial_convolution_at_length_exists (L)
  6. L167
    specialize prime_field_polynomial_convolution_at_length_exists (VPb)
  7. L168
    specialize prime_field_polynomial_convolution_at_length_exists (VPc)
  8. L169
    specialize prime_field_polynomial_convolution_at_length_exists (M+S K)
  9. L170
    specialize prime_field_polynomial_convolution_at_length_exists (W)
  10. L171
    apply prime_field_polynomial_convolution_at_length_exists
32Use earlier factsL172–175

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

  1. L172
    exact hp0
  2. L173
    exact hABcopy_left
  3. L174
    exact hadd_bounds_right_left
  4. L175
    exact hAZcopy_right_right_left
33Separate the logical casesL176–177

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

  1. L176
    cases hsecond
  2. L177
    cases hsecond_witness
34Establish hdistributedL178–187

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

  1. L178
    have hdistributed : FpPolyAdd(p,x5,x6,x7,x8,sb,sc,W)Definitions: FpPolyAdd
  2. L179
    specialize prime_field_polynomial_convolution_left_add (p)
  3. L180
    specialize prime_field_polynomial_convolution_left_add (UPb)
  4. L181
    specialize prime_field_polynomial_convolution_left_add (UPc)
  5. L182
    specialize prime_field_polynomial_convolution_left_add (VPb)
  6. L183
    specialize prime_field_polynomial_convolution_left_add (VPc)
  7. L184
    specialize prime_field_polynomial_convolution_left_add (zb)
  8. L185
    specialize prime_field_polynomial_convolution_left_add (zc)
  9. L186
    specialize prime_field_polynomial_convolution_left_add (M+S K)
  10. L187
    specialize prime_field_polynomial_convolution_left_add (ab)
35Use earlier factsL188–197

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

  1. L188
    specialize prime_field_polynomial_convolution_left_add (ac)
  2. L189
    specialize prime_field_polynomial_convolution_left_add (L)
  3. L190
    specialize prime_field_polynomial_convolution_left_add (x5)
  4. L191
    specialize prime_field_polynomial_convolution_left_add (x6)
  5. L192
    specialize prime_field_polynomial_convolution_left_add (x7)
  6. L193
    specialize prime_field_polynomial_convolution_left_add (x8)
  7. L194
    specialize prime_field_polynomial_convolution_left_add (sb)
  8. L195
    specialize prime_field_polynomial_convolution_left_add (sc)
  9. L196
    specialize prime_field_polynomial_convolution_left_add (W)
  10. L197
    apply prime_field_polynomial_convolution_left_add
36Use earlier factsL198–201

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

  1. L198
    exact hZ
  2. L199
    exact hfirst_witness_witness
  3. L200
    exact hsecond_witness_witness
  4. L201
    exact hAZ
37Establish hshift_equalL202–211

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

  1. L202
    have hshift_equal : PolynomialEquivalent(x1,x2,x,eb,ec,S T)Definitions: PolynomialEquivalent
  2. L203
    specialize prime_field_polynomial_convolution_shift_right_equivalent (p)
  3. L204
    specialize prime_field_polynomial_convolution_shift_right_equivalent (ab)
  4. L205
    specialize prime_field_polynomial_convolution_shift_right_equivalent (ac)
  5. L206
    specialize prime_field_polynomial_convolution_shift_right_equivalent (L)
  6. L207
    specialize prime_field_polynomial_convolution_shift_right_equivalent (qb)
  7. L208
    specialize prime_field_polynomial_convolution_shift_right_equivalent (qc)
  8. L209
    specialize prime_field_polynomial_convolution_shift_right_equivalent (K)
  9. L210
    specialize prime_field_polynomial_convolution_shift_right_equivalent (rb)
  10. L211
    specialize prime_field_polynomial_convolution_shift_right_equivalent (rc)
38Use earlier factsL212–221

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

  1. L212
    specialize prime_field_polynomial_convolution_shift_right_equivalent (T)
  2. L213
    specialize prime_field_polynomial_convolution_shift_right_equivalent (ub)
  3. L214
    specialize prime_field_polynomial_convolution_shift_right_equivalent (uc)
  4. L215
    specialize prime_field_polynomial_convolution_shift_right_equivalent (x1)
  5. L216
    specialize prime_field_polynomial_convolution_shift_right_equivalent (x2)
  6. L217
    specialize prime_field_polynomial_convolution_shift_right_equivalent (x)
  7. L218
    specialize prime_field_polynomial_convolution_shift_right_equivalent (eb)
  8. L219
    specialize prime_field_polynomial_convolution_shift_right_equivalent (ec)
  9. L220
    apply prime_field_polynomial_convolution_shift_right_equivalent
  10. L221
    exact hp0
39Use earlier factsL222–225

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

  1. L222
    exact hU
  2. L223
    exact hAQ
  3. L224
    exact hshifted_product_witness_witness
  4. L225
    exact hE
40Establish hfirst_padL226–235

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

  1. L226
    have hfirst_pad : PolynomialEquivalent(x1,x2,x,x5,x6,W)Definitions: PolynomialEquivalent
  2. L227
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  3. L228
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  4. L229
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  5. L230
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  6. L231
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ub)
  7. L232
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (uc)
  8. L233
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (S K)
  9. L234
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x1)
  10. L235
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x2)
41Use earlier factsL236–245

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

  1. L236
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  2. L237
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (UPb)
  3. L238
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (UPc)
  4. L239
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  5. L240
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x5)
  6. L241
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x6)
  7. L242
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (W)
  8. L243
    apply prime_field_polynomial_convolution_left_padding_equivalent_right
  9. L244
    exact hp0
  10. L245
    exact hUP
42Use earlier factsL246–247

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

  1. L246
    exact hshifted_product_witness_witness
  2. L247
    exact hfirst_witness_witness
43Establish hfirst_baseL248–257

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

  1. L248
    have hfirst_base : PolynomialEquivalent(x5,x6,W,eb,ec,S T)Definitions: PolynomialEquivalent
  2. L249
    specialize prime_field_polynomial_equivalent_transitive (x5)
  3. L250
    specialize prime_field_polynomial_equivalent_transitive (x6)
  4. L251
    specialize prime_field_polynomial_equivalent_transitive (W)
  5. L252
    specialize prime_field_polynomial_equivalent_transitive (x1)
  6. L253
    specialize prime_field_polynomial_equivalent_transitive (x2)
  7. L254
    specialize prime_field_polynomial_equivalent_transitive (x)
  8. L255
    specialize prime_field_polynomial_equivalent_transitive (eb)
  9. L256
    specialize prime_field_polynomial_equivalent_transitive (ec)
  10. L257
    specialize prime_field_polynomial_equivalent_transitive (S T)
44Use earlier factsL258–267

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

  1. L258
    apply prime_field_polynomial_equivalent_transitive
  2. L259
    specialize prime_field_polynomial_equivalent_symmetric (x1)
  3. L260
    specialize prime_field_polynomial_equivalent_symmetric (x2)
  4. L261
    specialize prime_field_polynomial_equivalent_symmetric (x)
  5. L262
    specialize prime_field_polynomial_equivalent_symmetric (x5)
  6. L263
    specialize prime_field_polynomial_equivalent_symmetric (x6)
  7. L264
    specialize prime_field_polynomial_equivalent_symmetric (W)
  8. L265
    apply prime_field_polynomial_equivalent_symmetric
  9. L266
    exact hfirst_pad
  10. L267
    exact hshift_equal
45Establish hfirst_equalL268–277

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

  1. L268
    have hfirst_equal : PolynomialEquivalent(x5,x6,W,EPb,EPc,N + S T)Definitions: PolynomialEquivalent
  2. L269
    specialize prime_field_polynomial_equivalent_transitive (x5)
  3. L270
    specialize prime_field_polynomial_equivalent_transitive (x6)
  4. L271
    specialize prime_field_polynomial_equivalent_transitive (W)
  5. L272
    specialize prime_field_polynomial_equivalent_transitive (eb)
  6. L273
    specialize prime_field_polynomial_equivalent_transitive (ec)
  7. L274
    specialize prime_field_polynomial_equivalent_transitive (S T)
  8. L275
    specialize prime_field_polynomial_equivalent_transitive (EPb)
  9. L276
    specialize prime_field_polynomial_equivalent_transitive (EPc)
  10. L277
    specialize prime_field_polynomial_equivalent_transitive (N+S T)
46Use earlier factsL278–287

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

  1. L278
    apply prime_field_polynomial_equivalent_transitive
  2. L279
    exact hfirst_base
  3. L280
    specialize prime_field_polynomial_left_pad_equivalent (eb)
  4. L281
    specialize prime_field_polynomial_left_pad_equivalent (ec)
  5. L282
    specialize prime_field_polynomial_left_pad_equivalent (S T)
  6. L283
    specialize prime_field_polynomial_left_pad_equivalent (N)
  7. L284
    specialize prime_field_polynomial_left_pad_equivalent (EPb)
  8. L285
    specialize prime_field_polynomial_left_pad_equivalent (EPc)
  9. L286
    apply prime_field_polynomial_left_pad_equivalent
  10. L287
    exact hEP
47Establish hscaled_equalL288–297

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

  1. L288
    have hscaled_equal : N = N ∧ BetaPrefixEqual(x3,x4,fb,fc,N)Definitions: BetaPrefixEqual
  2. L289
    specialize prime_field_polynomial_convolution_right_scale_equal (p)
  3. L290
    specialize prime_field_polynomial_convolution_right_scale_equal (c)
  4. L291
    specialize prime_field_polynomial_convolution_right_scale_equal (ab)
  5. L292
    specialize prime_field_polynomial_convolution_right_scale_equal (ac)
  6. L293
    specialize prime_field_polynomial_convolution_right_scale_equal (L)
  7. L294
    specialize prime_field_polynomial_convolution_right_scale_equal (bb)
  8. L295
    specialize prime_field_polynomial_convolution_right_scale_equal (bc)
  9. L296
    specialize prime_field_polynomial_convolution_right_scale_equal (M)
  10. L297
    specialize prime_field_polynomial_convolution_right_scale_equal (vb)
48Use earlier factsL298–307

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

  1. L298
    specialize prime_field_polynomial_convolution_right_scale_equal (vc)
  2. L299
    specialize prime_field_polynomial_convolution_right_scale_equal (pb)
  3. L300
    specialize prime_field_polynomial_convolution_right_scale_equal (pc)
  4. L301
    specialize prime_field_polynomial_convolution_right_scale_equal (N)
  5. L302
    specialize prime_field_polynomial_convolution_right_scale_equal (x3)
  6. L303
    specialize prime_field_polynomial_convolution_right_scale_equal (x4)
  7. L304
    specialize prime_field_polynomial_convolution_right_scale_equal (N)
  8. L305
    specialize prime_field_polynomial_convolution_right_scale_equal (fb)
  9. L306
    specialize prime_field_polynomial_convolution_right_scale_equal (fc)
  10. L307
    apply prime_field_polynomial_convolution_right_scale_equal
49Use earlier factsL308–311

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

  1. L308
    exact hV
  2. L309
    exact hAB
  3. L310
    exact hscaled_product_witness_witness
  4. L311
    exact hF
50Separate the logical casesL312–312

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

  1. L312
    cases hscaled_equal
51Establish hscalar_baseL313–320

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial equal implies equivalent.

  1. L313
    have hscalar_base : PolynomialEquivalent(x3,x4,N,fb,fc,N)Definitions: PolynomialEquivalent
  2. L314
    specialize prime_field_polynomial_equal_implies_equivalent (x3)
  3. L315
    specialize prime_field_polynomial_equal_implies_equivalent (x4)
  4. L316
    specialize prime_field_polynomial_equal_implies_equivalent (fb)
  5. L317
    specialize prime_field_polynomial_equal_implies_equivalent (fc)
  6. L318
    specialize prime_field_polynomial_equal_implies_equivalent (N)
  7. L319
    apply prime_field_polynomial_equal_implies_equivalent
  8. L320
    exact hscaled_equal_right
52Establish hsecond_padL321–330

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

  1. L321
    have hsecond_pad : PolynomialEquivalent(x3,x4,N,x7,x8,W)Definitions: PolynomialEquivalent
  2. L322
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  3. L323
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  4. L324
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  5. L325
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  6. L326
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (vb)
  7. L327
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (vc)
  8. L328
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  9. L329
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x3)
  10. L330
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x4)
53Use earlier factsL331–340

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

  1. L331
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  2. L332
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (VPb)
  3. L333
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (VPc)
  4. L334
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (S K)
  5. L335
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x7)
  6. L336
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x8)
  7. L337
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (W)
  8. L338
    apply prime_field_polynomial_convolution_left_padding_equivalent_right
  9. L339
    exact hp0
  10. L340
    exact hVP
54Use earlier factsL341–341

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

  1. L341
    exact hscaled_product_witness_witness
55Establish hcomm_inputL342–351

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

  1. L342
    have hcomm_input : S K+M=M+S K
  2. L343
    specialize add_comm (S K)
  3. L344
    specialize add_comm (M)
  4. L345
    apply add_comm
  5. L346
    rewrite hcomm_input
  6. L347
    rewrite hcomm_input
  7. L348
    rewrite hcomm_input
  8. L349
    rewrite hcomm_input
  9. L350
    rewrite hcomm_input
  10. L351
    rewrite hcomm_input
56Use earlier factsL352–352

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

  1. L352
    exact hsecond_witness_witness
57Establish hsecond_baseL353–362

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

  1. L353
    have hsecond_base : PolynomialEquivalent(x7,x8,W,fb,fc,N)Definitions: PolynomialEquivalent
  2. L354
    specialize prime_field_polynomial_equivalent_transitive (x7)
  3. L355
    specialize prime_field_polynomial_equivalent_transitive (x8)
  4. L356
    specialize prime_field_polynomial_equivalent_transitive (W)
  5. L357
    specialize prime_field_polynomial_equivalent_transitive (x3)
  6. L358
    specialize prime_field_polynomial_equivalent_transitive (x4)
  7. L359
    specialize prime_field_polynomial_equivalent_transitive (N)
  8. L360
    specialize prime_field_polynomial_equivalent_transitive (fb)
  9. L361
    specialize prime_field_polynomial_equivalent_transitive (fc)
  10. L362
    specialize prime_field_polynomial_equivalent_transitive (N)
58Use earlier factsL363–372

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

  1. L363
    apply prime_field_polynomial_equivalent_transitive
  2. L364
    specialize prime_field_polynomial_equivalent_symmetric (x3)
  3. L365
    specialize prime_field_polynomial_equivalent_symmetric (x4)
  4. L366
    specialize prime_field_polynomial_equivalent_symmetric (N)
  5. L367
    specialize prime_field_polynomial_equivalent_symmetric (x7)
  6. L368
    specialize prime_field_polynomial_equivalent_symmetric (x8)
  7. L369
    specialize prime_field_polynomial_equivalent_symmetric (W)
  8. L370
    apply prime_field_polynomial_equivalent_symmetric
  9. L371
    exact hsecond_pad
  10. L372
    exact hscalar_base
59Establish hsecond_equalL373–382

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

  1. L373
    have hsecond_equal : PolynomialEquivalent(x7,x8,W,FPb,FPc,N + S T)Definitions: PolynomialEquivalent
  2. L374
    specialize prime_field_polynomial_equivalent_transitive (x7)
  3. L375
    specialize prime_field_polynomial_equivalent_transitive (x8)
  4. L376
    specialize prime_field_polynomial_equivalent_transitive (W)
  5. L377
    specialize prime_field_polynomial_equivalent_transitive (fb)
  6. L378
    specialize prime_field_polynomial_equivalent_transitive (fc)
  7. L379
    specialize prime_field_polynomial_equivalent_transitive (N)
  8. L380
    specialize prime_field_polynomial_equivalent_transitive (FPb)
  9. L381
    specialize prime_field_polynomial_equivalent_transitive (FPc)
  10. L382
    specialize prime_field_polynomial_equivalent_transitive (N+S T)
60Use earlier factsL383–384

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

  1. L383
    apply prime_field_polynomial_equivalent_transitive
  2. L384
    exact hsecond_base
61Establish houtput_padL385–393

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial left pad equivalent.

  1. L385
    have houtput_pad : PolynomialEquivalent(fb,fc,N,FPb,FPc,S T + N)Definitions: PolynomialEquivalent
  2. L386
    specialize prime_field_polynomial_left_pad_equivalent (fb)
  3. L387
    specialize prime_field_polynomial_left_pad_equivalent (fc)
  4. L388
    specialize prime_field_polynomial_left_pad_equivalent (N)
  5. L389
    specialize prime_field_polynomial_left_pad_equivalent (S T)
  6. L390
    specialize prime_field_polynomial_left_pad_equivalent (FPb)
  7. L391
    specialize prime_field_polynomial_left_pad_equivalent (FPc)
  8. L392
    apply prime_field_polynomial_left_pad_equivalent
  9. L393
    exact hFP
62Establish hcomm_outputL394–403

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

  1. L394
    have hcomm_output : S T+N=N+S T
  2. L395
    specialize add_comm (S T)
  3. L396
    specialize add_comm (N)
  4. L397
    apply add_comm
  5. L398
    rewrite hcomm_output at houtput_pad
  6. L399
    rewrite hcomm_output at houtput_pad
  7. L400
    exact houtput_pad
  8. L401
    specialize prime_field_polynomial_add_equivalent_congruent (p)
  9. L402
    specialize prime_field_polynomial_add_equivalent_congruent (x5)
  10. L403
    specialize prime_field_polynomial_add_equivalent_congruent (x6)
63Use earlier factsL404–413

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

  1. L404
    specialize prime_field_polynomial_add_equivalent_congruent (x7)
  2. L405
    specialize prime_field_polynomial_add_equivalent_congruent (x8)
  3. L406
    specialize prime_field_polynomial_add_equivalent_congruent (sb)
  4. L407
    specialize prime_field_polynomial_add_equivalent_congruent (sc)
  5. L408
    specialize prime_field_polynomial_add_equivalent_congruent (W)
  6. L409
    specialize prime_field_polynomial_add_equivalent_congruent (EPb)
  7. L410
    specialize prime_field_polynomial_add_equivalent_congruent (EPc)
  8. L411
    specialize prime_field_polynomial_add_equivalent_congruent (FPb)
  9. L412
    specialize prime_field_polynomial_add_equivalent_congruent (FPc)
  10. L413
    specialize prime_field_polynomial_add_equivalent_congruent (yb)
64Use earlier factsL414–421

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

  1. L414
    specialize prime_field_polynomial_add_equivalent_congruent (yc)
  2. L415
    specialize prime_field_polynomial_add_equivalent_congruent (N+S T)
  3. L416
    apply prime_field_polynomial_add_equivalent_congruent
  4. L417
    exact hp
  5. L418
    exact hfirst_equal
  6. L419
    exact hsecond_equal
  7. L420
    exact hdistributed
  8. L421
    exact hY

Library-wide reading audit

Original exact command ledger · 421 lines
  1. 0001intro p
  2. 0002intro c
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro L
  6. 0006intro bb
  7. 0007intro bc
  8. 0008intro M
  9. 0009intro pb
  10. 0010intro pc
  11. 0011intro N
  12. 0012intro qb
  13. 0013intro qc
  14. 0014intro K
  15. 0015intro rb
  16. 0016intro rc
  17. 0017intro T
  18. 0018intro ub
  19. 0019intro uc
  20. 0020intro vb
  21. 0021intro vc
  22. 0022intro UPb
  23. 0023intro UPc
  24. 0024intro VPb
  25. 0025intro VPc
  26. 0026intro zb
  27. 0027intro zc
  28. 0028intro sb
  29. 0029intro sc
  30. 0030intro W
  31. 0031intro eb
  32. 0032intro ec
  33. 0033intro fb
  34. 0034intro fc
  35. 0035intro EPb
  36. 0036intro EPc
  37. 0037intro FPb
  38. 0038intro FPc
  39. 0039intro yb
  40. 0040intro yc
  41. 0041intro hp
  42. 0042intro hAB
  43. 0043intro hAQ
  44. 0044intro hU
  45. 0045intro hV
  46. 0046intro hUP
  47. 0047intro hVP
  48. 0048intro hZ
  49. 0049intro hAZ
  50. 0050intro hE
  51. 0051intro hF
  52. 0052intro hEP
  53. 0053intro hFP
  54. 0054intro hY
  55. 0055have hp0 : ~(p=0)
  56. 0056intro hz
  57. 0057specialize prime_nonzero (p)
  58. 0058apply prime_nonzero
  59. 0059exact hp
  60. 0060exact hz
  61. 0061have hABcopy : ((forall fom_index_pfp_step_helper_ABleft. (exists fom_gap_pfp_step_helper_ABleft_index_bound. fom_gap_pfp_step_helper_ABleft_index_bound + S (fom_index_pfp_step_helper_ABleft) = L) -> exists fom_value_pfp_step_helper_ABleft. ((((exists fom_beta_height_pfp_step_helper_ABleft_entry. fom_beta_height_pfp_step_helper_ABleft_entry + S (fom_value_pfp_step_helper_ABleft) = S ((S (fom_index_pfp_step_helper_ABleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_ABleft_entry. ab = fom_beta_quotient_pfp_step_helper_ABleft_entry * S ((S (fom_index_pfp_step_helper_ABleft)) * ac) + (fom_value_pfp_step_helper_ABleft))) /\ (exists fom_gap_pfp_step_helper_ABleft_value_bound. fom_gap_pfp_step_helper_ABleft_value_bound + S (fom_value_pfp_step_helper_ABleft) = p))) /\ (((forall fom_index_pfp_step_helper_ABright. (exists fom_gap_pfp_step_helper_ABright_index_bound. fom_gap_pfp_step_helper_ABright_index_bound + S (fom_index_pfp_step_helper_ABright) = M) -> exists fom_value_pfp_step_helper_ABright. ((((exists fom_beta_height_pfp_step_helper_ABright_entry. fom_beta_height_pfp_step_helper_ABright_entry + S (fom_value_pfp_step_helper_ABright) = S ((S (fom_index_pfp_step_helper_ABright)) * bc)) /\ exists fom_beta_quotient_pfp_step_helper_ABright_entry. bb = fom_beta_quotient_pfp_step_helper_ABright_entry * S ((S (fom_index_pfp_step_helper_ABright)) * bc) + (fom_value_pfp_step_helper_ABright))) /\ (exists fom_gap_pfp_step_helper_ABright_value_bound. fom_gap_pfp_step_helper_ABright_value_bound + S (fom_value_pfp_step_helper_ABright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_step_helper_ABcoefficients. (exists pfa_gap_step_helper_ABcoefficientsbound. pfa_gap_step_helper_ABcoefficientsbound + S (pfc_index_step_helper_ABcoefficients) = (N)) -> exists pfc_value_step_helper_ABcoefficients. ((((exists ff_h_pfp_step_helper_ABcoefficientsentry. ff_h_pfp_step_helper_ABcoefficientsentry + S (pfc_value_step_helper_ABcoefficients) = S ((S (pfc_index_step_helper_ABcoefficients)) * pc)) /\ exists ff_q_pfp_step_helper_ABcoefficientsentry. pb = ff_q_pfp_step_helper_ABcoefficientsentry * S ((S (pfc_index_step_helper_ABcoefficients)) * pc) + (pfc_value_step_helper_ABcoefficients))) /\ ((exists pfc_terms_code_step_helper_ABcoefficientscoefficient pfc_terms_scale_step_helper_ABcoefficientscoefficient pfc_natural_sum_step_helper_ABcoefficientscoefficient. ((forall pfc_index_step_helper_ABcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_ABcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_ABcoefficients))) -> exists pfc_value_step_helper_ABcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_ABcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_ABcoefficientscoefficient = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient) + (pfc_value_step_helper_ABcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_ABcoefficientscoefficientdiagonal)+pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_ABcoefficients)) /\ ((((((exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_ABcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_step_helper_ABcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_ABcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_step_helper_ABcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_ABcoefficientscoefficientdiagonal)=pfc_left_step_helper_ABcoefficientscoefficientdiagonalterm*pfc_right_step_helper_ABcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_ABcoefficientscoefficientsum fs_v_pfc_step_helper_ABcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_ABcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_ABcoefficients))) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_ABcoefficients))) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_ABcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_ABcoefficients)) -> exists fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_ABcoefficientscoefficient = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_ABcoefficientscoefficient) + (fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_ABcoefficientscoefficientsum = fs_q_pfc_step_helper_ABcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_ABcoefficientscoefficientsum) + (fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_ABcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_ABcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_ABcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_ABcoefficientscoefficientresiduebound. pfa_gap_step_helper_ABcoefficientscoefficientresiduebound + S (pfc_value_step_helper_ABcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_ABcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_ABcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_ABcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_ABcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_ABcoefficients) + (p) * pfa_offset_right_step_helper_ABcoefficientscoefficientresiduecongruence))))))))))))))))))
  62. 0062exact hAB
  63. 0063cases hABcopy
  64. 0064cases hABcopy_right
  65. 0065cases hABcopy_right_right
  66. 0066have hAQcopy : ((forall fom_index_pfp_step_helper_AQleft. (exists fom_gap_pfp_step_helper_AQleft_index_bound. fom_gap_pfp_step_helper_AQleft_index_bound + S (fom_index_pfp_step_helper_AQleft) = L) -> exists fom_value_pfp_step_helper_AQleft. ((((exists fom_beta_height_pfp_step_helper_AQleft_entry. fom_beta_height_pfp_step_helper_AQleft_entry + S (fom_value_pfp_step_helper_AQleft) = S ((S (fom_index_pfp_step_helper_AQleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_AQleft_entry. ab = fom_beta_quotient_pfp_step_helper_AQleft_entry * S ((S (fom_index_pfp_step_helper_AQleft)) * ac) + (fom_value_pfp_step_helper_AQleft))) /\ (exists fom_gap_pfp_step_helper_AQleft_value_bound. fom_gap_pfp_step_helper_AQleft_value_bound + S (fom_value_pfp_step_helper_AQleft) = p))) /\ (((forall fom_index_pfp_step_helper_AQright. (exists fom_gap_pfp_step_helper_AQright_index_bound. fom_gap_pfp_step_helper_AQright_index_bound + S (fom_index_pfp_step_helper_AQright) = K) -> exists fom_value_pfp_step_helper_AQright. ((((exists fom_beta_height_pfp_step_helper_AQright_entry. fom_beta_height_pfp_step_helper_AQright_entry + S (fom_value_pfp_step_helper_AQright) = S ((S (fom_index_pfp_step_helper_AQright)) * qc)) /\ exists fom_beta_quotient_pfp_step_helper_AQright_entry. qb = fom_beta_quotient_pfp_step_helper_AQright_entry * S ((S (fom_index_pfp_step_helper_AQright)) * qc) + (fom_value_pfp_step_helper_AQright))) /\ (exists fom_gap_pfp_step_helper_AQright_value_bound. fom_gap_pfp_step_helper_AQright_value_bound + S (fom_value_pfp_step_helper_AQright) = p))) /\ (((((((L)=0 \/ (K)=0) /\ (((T)=0)))) \/ (((~((L)=0)) /\ (((~((K)=0)) /\ (((L)+(K)=S (T)))))))) /\ ((forall pfc_index_step_helper_AQcoefficients. (exists pfa_gap_step_helper_AQcoefficientsbound. pfa_gap_step_helper_AQcoefficientsbound + S (pfc_index_step_helper_AQcoefficients) = (T)) -> exists pfc_value_step_helper_AQcoefficients. ((((exists ff_h_pfp_step_helper_AQcoefficientsentry. ff_h_pfp_step_helper_AQcoefficientsentry + S (pfc_value_step_helper_AQcoefficients) = S ((S (pfc_index_step_helper_AQcoefficients)) * rc)) /\ exists ff_q_pfp_step_helper_AQcoefficientsentry. rb = ff_q_pfp_step_helper_AQcoefficientsentry * S ((S (pfc_index_step_helper_AQcoefficients)) * rc) + (pfc_value_step_helper_AQcoefficients))) /\ ((exists pfc_terms_code_step_helper_AQcoefficientscoefficient pfc_terms_scale_step_helper_AQcoefficientscoefficient pfc_natural_sum_step_helper_AQcoefficientscoefficient. ((forall pfc_index_step_helper_AQcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_AQcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_AQcoefficients))) -> exists pfc_value_step_helper_AQcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_AQcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_AQcoefficientscoefficient = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient) + (pfc_value_step_helper_AQcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_AQcoefficientscoefficientdiagonal)+pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_AQcoefficients)) /\ ((((((exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_AQcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm) = (K)) /\ ((((exists ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) * qc)) /\ exists ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry. qb = ff_q_pfp_step_helper_AQcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) * qc) + (pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_AQcoefficientscoefficientdiagonaltermrightoutside+(K)=(pfc_complement_step_helper_AQcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_AQcoefficientscoefficientdiagonal)=pfc_left_step_helper_AQcoefficientscoefficientdiagonalterm*pfc_right_step_helper_AQcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_AQcoefficientscoefficientsum fs_v_pfc_step_helper_AQcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_AQcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_AQcoefficients))) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_AQcoefficients))) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_AQcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_AQcoefficients)) -> exists fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_AQcoefficientscoefficient = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AQcoefficientscoefficient) + (fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_AQcoefficientscoefficientsum = fs_q_pfc_step_helper_AQcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AQcoefficientscoefficientsum) + (fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_AQcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_AQcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_AQcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_AQcoefficientscoefficientresiduebound. pfa_gap_step_helper_AQcoefficientscoefficientresiduebound + S (pfc_value_step_helper_AQcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_AQcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_AQcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_AQcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_AQcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_AQcoefficients) + (p) * pfa_offset_right_step_helper_AQcoefficientscoefficientresiduecongruence))))))))))))))))))
  67. 0067exact hAQ
  68. 0068cases hAQcopy
  69. 0069cases hAQcopy_right
  70. 0070cases hAQcopy_right_right
  71. 0071have hAZcopy : ((forall fom_index_pfp_step_helper_AZleft. (exists fom_gap_pfp_step_helper_AZleft_index_bound. fom_gap_pfp_step_helper_AZleft_index_bound + S (fom_index_pfp_step_helper_AZleft) = L) -> exists fom_value_pfp_step_helper_AZleft. ((((exists fom_beta_height_pfp_step_helper_AZleft_entry. fom_beta_height_pfp_step_helper_AZleft_entry + S (fom_value_pfp_step_helper_AZleft) = S ((S (fom_index_pfp_step_helper_AZleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_AZleft_entry. ab = fom_beta_quotient_pfp_step_helper_AZleft_entry * S ((S (fom_index_pfp_step_helper_AZleft)) * ac) + (fom_value_pfp_step_helper_AZleft))) /\ (exists fom_gap_pfp_step_helper_AZleft_value_bound. fom_gap_pfp_step_helper_AZleft_value_bound + S (fom_value_pfp_step_helper_AZleft) = p))) /\ (((forall fom_index_pfp_step_helper_AZright. (exists fom_gap_pfp_step_helper_AZright_index_bound. fom_gap_pfp_step_helper_AZright_index_bound + S (fom_index_pfp_step_helper_AZright) = M+S K) -> exists fom_value_pfp_step_helper_AZright. ((((exists fom_beta_height_pfp_step_helper_AZright_entry. fom_beta_height_pfp_step_helper_AZright_entry + S (fom_value_pfp_step_helper_AZright) = S ((S (fom_index_pfp_step_helper_AZright)) * zc)) /\ exists fom_beta_quotient_pfp_step_helper_AZright_entry. zb = fom_beta_quotient_pfp_step_helper_AZright_entry * S ((S (fom_index_pfp_step_helper_AZright)) * zc) + (fom_value_pfp_step_helper_AZright))) /\ (exists fom_gap_pfp_step_helper_AZright_value_bound. fom_gap_pfp_step_helper_AZright_value_bound + S (fom_value_pfp_step_helper_AZright) = p))) /\ (((((((L)=0 \/ (M+S K)=0) /\ (((W)=0)))) \/ (((~((L)=0)) /\ (((~((M+S K)=0)) /\ (((L)+(M+S K)=S (W)))))))) /\ ((forall pfc_index_step_helper_AZcoefficients. (exists pfa_gap_step_helper_AZcoefficientsbound. pfa_gap_step_helper_AZcoefficientsbound + S (pfc_index_step_helper_AZcoefficients) = (W)) -> exists pfc_value_step_helper_AZcoefficients. ((((exists ff_h_pfp_step_helper_AZcoefficientsentry. ff_h_pfp_step_helper_AZcoefficientsentry + S (pfc_value_step_helper_AZcoefficients) = S ((S (pfc_index_step_helper_AZcoefficients)) * sc)) /\ exists ff_q_pfp_step_helper_AZcoefficientsentry. sb = ff_q_pfp_step_helper_AZcoefficientsentry * S ((S (pfc_index_step_helper_AZcoefficients)) * sc) + (pfc_value_step_helper_AZcoefficients))) /\ ((exists pfc_terms_code_step_helper_AZcoefficientscoefficient pfc_terms_scale_step_helper_AZcoefficientscoefficient pfc_natural_sum_step_helper_AZcoefficientscoefficient. ((forall pfc_index_step_helper_AZcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_AZcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_AZcoefficients))) -> exists pfc_value_step_helper_AZcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_AZcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_AZcoefficientscoefficient = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient) + (pfc_value_step_helper_AZcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_AZcoefficientscoefficientdiagonal)+pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_AZcoefficients)) /\ ((((((exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_AZcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm) = (M+S K)) /\ ((((exists ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) * zc)) /\ exists ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry. zb = ff_q_pfp_step_helper_AZcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) * zc) + (pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_AZcoefficientscoefficientdiagonaltermrightoutside+(M+S K)=(pfc_complement_step_helper_AZcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_AZcoefficientscoefficientdiagonal)=pfc_left_step_helper_AZcoefficientscoefficientdiagonalterm*pfc_right_step_helper_AZcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_AZcoefficientscoefficientsum fs_v_pfc_step_helper_AZcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_AZcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_AZcoefficients))) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_AZcoefficients))) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_AZcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_AZcoefficients)) -> exists fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_AZcoefficientscoefficient = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_AZcoefficientscoefficient) + (fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_AZcoefficientscoefficientsum = fs_q_pfc_step_helper_AZcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_AZcoefficientscoefficientsum) + (fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_AZcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_AZcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_AZcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_AZcoefficientscoefficientresiduebound. pfa_gap_step_helper_AZcoefficientscoefficientresiduebound + S (pfc_value_step_helper_AZcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_AZcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_AZcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_AZcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_AZcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_AZcoefficients) + (p) * pfa_offset_right_step_helper_AZcoefficientscoefficientresiduecongruence))))))))))))))))))
  72. 0072exact hAZ
  73. 0073cases hAZcopy
  74. 0074cases hAZcopy_right
  75. 0075cases hAZcopy_right_right
  76. 0076have hscale_bounds : ((forall fom_index_pfp_step_helper_B_bound. (exists fom_gap_pfp_step_helper_B_bound_index_bound. fom_gap_pfp_step_helper_B_bound_index_bound + S (fom_index_pfp_step_helper_B_bound) = M) -> exists fom_value_pfp_step_helper_B_bound. ((((exists fom_beta_height_pfp_step_helper_B_bound_entry. fom_beta_height_pfp_step_helper_B_bound_entry + S (fom_value_pfp_step_helper_B_bound) = S ((S (fom_index_pfp_step_helper_B_bound)) * bc)) /\ exists fom_beta_quotient_pfp_step_helper_B_bound_entry. bb = fom_beta_quotient_pfp_step_helper_B_bound_entry * S ((S (fom_index_pfp_step_helper_B_bound)) * bc) + (fom_value_pfp_step_helper_B_bound))) /\ (exists fom_gap_pfp_step_helper_B_bound_value_bound. fom_gap_pfp_step_helper_B_bound_value_bound + S (fom_value_pfp_step_helper_B_bound) = p))) /\ ((forall fom_index_pfp_step_helper_scaled_B_bound. (exists fom_gap_pfp_step_helper_scaled_B_bound_index_bound. fom_gap_pfp_step_helper_scaled_B_bound_index_bound + S (fom_index_pfp_step_helper_scaled_B_bound) = M) -> exists fom_value_pfp_step_helper_scaled_B_bound. ((((exists fom_beta_height_pfp_step_helper_scaled_B_bound_entry. fom_beta_height_pfp_step_helper_scaled_B_bound_entry + S (fom_value_pfp_step_helper_scaled_B_bound) = S ((S (fom_index_pfp_step_helper_scaled_B_bound)) * vc)) /\ exists fom_beta_quotient_pfp_step_helper_scaled_B_bound_entry. vb = fom_beta_quotient_pfp_step_helper_scaled_B_bound_entry * S ((S (fom_index_pfp_step_helper_scaled_B_bound)) * vc) + (fom_value_pfp_step_helper_scaled_B_bound))) /\ (exists fom_gap_pfp_step_helper_scaled_B_bound_value_bound. fom_gap_pfp_step_helper_scaled_B_bound_value_bound + S (fom_value_pfp_step_helper_scaled_B_bound) = p)))))
  77. 0077specialize prime_field_polynomial_scale_bounded (p)
  78. 0078specialize prime_field_polynomial_scale_bounded (c)
  79. 0079specialize prime_field_polynomial_scale_bounded (bb)
  80. 0080specialize prime_field_polynomial_scale_bounded (bc)
  81. 0081specialize prime_field_polynomial_scale_bounded (vb)
  82. 0082specialize prime_field_polynomial_scale_bounded (vc)
  83. 0083specialize prime_field_polynomial_scale_bounded (M)
  84. 0084apply prime_field_polynomial_scale_bounded
  85. 0085exact hV
  86. 0086cases hscale_bounds
  87. 0087have hadd_bounds : ((forall fom_index_pfp_step_helper_input_left_bound. (exists fom_gap_pfp_step_helper_input_left_bound_index_bound. fom_gap_pfp_step_helper_input_left_bound_index_bound + S (fom_index_pfp_step_helper_input_left_bound) = M+S K) -> exists fom_value_pfp_step_helper_input_left_bound. ((((exists fom_beta_height_pfp_step_helper_input_left_bound_entry. fom_beta_height_pfp_step_helper_input_left_bound_entry + S (fom_value_pfp_step_helper_input_left_bound) = S ((S (fom_index_pfp_step_helper_input_left_bound)) * UPc)) /\ exists fom_beta_quotient_pfp_step_helper_input_left_bound_entry. UPb = fom_beta_quotient_pfp_step_helper_input_left_bound_entry * S ((S (fom_index_pfp_step_helper_input_left_bound)) * UPc) + (fom_value_pfp_step_helper_input_left_bound))) /\ (exists fom_gap_pfp_step_helper_input_left_bound_value_bound. fom_gap_pfp_step_helper_input_left_bound_value_bound + S (fom_value_pfp_step_helper_input_left_bound) = p))) /\ (((forall fom_index_pfp_step_helper_input_right_bound. (exists fom_gap_pfp_step_helper_input_right_bound_index_bound. fom_gap_pfp_step_helper_input_right_bound_index_bound + S (fom_index_pfp_step_helper_input_right_bound) = M+S K) -> exists fom_value_pfp_step_helper_input_right_bound. ((((exists fom_beta_height_pfp_step_helper_input_right_bound_entry. fom_beta_height_pfp_step_helper_input_right_bound_entry + S (fom_value_pfp_step_helper_input_right_bound) = S ((S (fom_index_pfp_step_helper_input_right_bound)) * VPc)) /\ exists fom_beta_quotient_pfp_step_helper_input_right_bound_entry. VPb = fom_beta_quotient_pfp_step_helper_input_right_bound_entry * S ((S (fom_index_pfp_step_helper_input_right_bound)) * VPc) + (fom_value_pfp_step_helper_input_right_bound))) /\ (exists fom_gap_pfp_step_helper_input_right_bound_value_bound. fom_gap_pfp_step_helper_input_right_bound_value_bound + S (fom_value_pfp_step_helper_input_right_bound) = p))) /\ ((forall fom_index_pfp_step_helper_input_sum_bound. (exists fom_gap_pfp_step_helper_input_sum_bound_index_bound. fom_gap_pfp_step_helper_input_sum_bound_index_bound + S (fom_index_pfp_step_helper_input_sum_bound) = M+S K) -> exists fom_value_pfp_step_helper_input_sum_bound. ((((exists fom_beta_height_pfp_step_helper_input_sum_bound_entry. fom_beta_height_pfp_step_helper_input_sum_bound_entry + S (fom_value_pfp_step_helper_input_sum_bound) = S ((S (fom_index_pfp_step_helper_input_sum_bound)) * zc)) /\ exists fom_beta_quotient_pfp_step_helper_input_sum_bound_entry. zb = fom_beta_quotient_pfp_step_helper_input_sum_bound_entry * S ((S (fom_index_pfp_step_helper_input_sum_bound)) * zc) + (fom_value_pfp_step_helper_input_sum_bound))) /\ (exists fom_gap_pfp_step_helper_input_sum_bound_value_bound. fom_gap_pfp_step_helper_input_sum_bound_value_bound + S (fom_value_pfp_step_helper_input_sum_bound) = p)))))))
  88. 0088specialize prime_field_polynomial_add_bounded (p)
  89. 0089specialize prime_field_polynomial_add_bounded (UPb)
  90. 0090specialize prime_field_polynomial_add_bounded (UPc)
  91. 0091specialize prime_field_polynomial_add_bounded (VPb)
  92. 0092specialize prime_field_polynomial_add_bounded (VPc)
  93. 0093specialize prime_field_polynomial_add_bounded (zb)
  94. 0094specialize prime_field_polynomial_add_bounded (zc)
  95. 0095specialize prime_field_polynomial_add_bounded (M+S K)
  96. 0096apply prime_field_polynomial_add_bounded
  97. 0097exact hZ
  98. 0098cases hadd_bounds
  99. 0099cases hadd_bounds_right
  100. 0100have hlength : exists J. (((((L)=0 \/ (S K)=0) /\ (((J)=0)))) \/ (((~((L)=0)) /\ (((~((S K)=0)) /\ (((L)+(S K)=S (J))))))))
  101. 0101specialize polynomial_product_length_exists (L)
  102. 0102specialize polynomial_product_length_exists (S K)
  103. 0103apply polynomial_product_length_exists
  104. 0104cases hlength
  105. 0105have hshifted_product : exists mb mc. ((forall fom_index_pfp_step_helper_shifted_productleft. (exists fom_gap_pfp_step_helper_shifted_productleft_index_bound. fom_gap_pfp_step_helper_shifted_productleft_index_bound + S (fom_index_pfp_step_helper_shifted_productleft) = L) -> exists fom_value_pfp_step_helper_shifted_productleft. ((((exists fom_beta_height_pfp_step_helper_shifted_productleft_entry. fom_beta_height_pfp_step_helper_shifted_productleft_entry + S (fom_value_pfp_step_helper_shifted_productleft) = S ((S (fom_index_pfp_step_helper_shifted_productleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_shifted_productleft_entry. ab = fom_beta_quotient_pfp_step_helper_shifted_productleft_entry * S ((S (fom_index_pfp_step_helper_shifted_productleft)) * ac) + (fom_value_pfp_step_helper_shifted_productleft))) /\ (exists fom_gap_pfp_step_helper_shifted_productleft_value_bound. fom_gap_pfp_step_helper_shifted_productleft_value_bound + S (fom_value_pfp_step_helper_shifted_productleft) = p))) /\ (((forall fom_index_pfp_step_helper_shifted_productright. (exists fom_gap_pfp_step_helper_shifted_productright_index_bound. fom_gap_pfp_step_helper_shifted_productright_index_bound + S (fom_index_pfp_step_helper_shifted_productright) = S K) -> exists fom_value_pfp_step_helper_shifted_productright. ((((exists fom_beta_height_pfp_step_helper_shifted_productright_entry. fom_beta_height_pfp_step_helper_shifted_productright_entry + S (fom_value_pfp_step_helper_shifted_productright) = S ((S (fom_index_pfp_step_helper_shifted_productright)) * uc)) /\ exists fom_beta_quotient_pfp_step_helper_shifted_productright_entry. ub = fom_beta_quotient_pfp_step_helper_shifted_productright_entry * S ((S (fom_index_pfp_step_helper_shifted_productright)) * uc) + (fom_value_pfp_step_helper_shifted_productright))) /\ (exists fom_gap_pfp_step_helper_shifted_productright_value_bound. fom_gap_pfp_step_helper_shifted_productright_value_bound + S (fom_value_pfp_step_helper_shifted_productright) = p))) /\ (((((((L)=0 \/ (S K)=0) /\ (((x)=0)))) \/ (((~((L)=0)) /\ (((~((S K)=0)) /\ (((L)+(S K)=S (x)))))))) /\ ((forall pfc_index_step_helper_shifted_productcoefficients. (exists pfa_gap_step_helper_shifted_productcoefficientsbound. pfa_gap_step_helper_shifted_productcoefficientsbound + S (pfc_index_step_helper_shifted_productcoefficients) = (x)) -> exists pfc_value_step_helper_shifted_productcoefficients. ((((exists ff_h_pfp_step_helper_shifted_productcoefficientsentry. ff_h_pfp_step_helper_shifted_productcoefficientsentry + S (pfc_value_step_helper_shifted_productcoefficients) = S ((S (pfc_index_step_helper_shifted_productcoefficients)) * mc)) /\ exists ff_q_pfp_step_helper_shifted_productcoefficientsentry. mb = ff_q_pfp_step_helper_shifted_productcoefficientsentry * S ((S (pfc_index_step_helper_shifted_productcoefficients)) * mc) + (pfc_value_step_helper_shifted_productcoefficients))) /\ ((exists pfc_terms_code_step_helper_shifted_productcoefficientscoefficient pfc_terms_scale_step_helper_shifted_productcoefficientscoefficient pfc_natural_sum_step_helper_shifted_productcoefficientscoefficient. ((forall pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_shifted_productcoefficients))) -> exists pfc_value_step_helper_shifted_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_shifted_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_shifted_productcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_shifted_productcoefficientscoefficient = ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_shifted_productcoefficientscoefficient) + (pfc_value_step_helper_shifted_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm pfc_left_step_helper_shifted_productcoefficientscoefficientdiagonalterm pfc_right_step_helper_shifted_productcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)+pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_shifted_productcoefficients)) /\ ((((((exists pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_shifted_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_shifted_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_shifted_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_shifted_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm) = (S K)) /\ ((((exists ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_shifted_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm)) * uc)) /\ exists ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightentry. ub = ff_q_pfp_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm)) * uc) + (pfc_right_step_helper_shifted_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_shifted_productcoefficientscoefficientdiagonaltermrightoutside+(S K)=(pfc_complement_step_helper_shifted_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_shifted_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_shifted_productcoefficientscoefficientdiagonal)=pfc_left_step_helper_shifted_productcoefficientscoefficientdiagonalterm*pfc_right_step_helper_shifted_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_shifted_productcoefficientscoefficientsum fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_shifted_productcoefficientscoefficientsum = fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_shifted_productcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_shifted_productcoefficients))) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_shifted_productcoefficientscoefficientsum = fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_shifted_productcoefficients))) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_shifted_productcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_shifted_productcoefficients)) -> exists fs_a_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_shifted_productcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_shifted_productcoefficientscoefficient = fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_shifted_productcoefficientscoefficient) + (fs_a_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_shifted_productcoefficientscoefficientsum = fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum) + (fs_r_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_shifted_productcoefficientscoefficientsum = fs_q_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_shifted_productcoefficientscoefficientsum) + (fs_s_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_shifted_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_shifted_productcoefficientscoefficientresiduebound. pfa_gap_step_helper_shifted_productcoefficientscoefficientresiduebound + S (pfc_value_step_helper_shifted_productcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_shifted_productcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_shifted_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_shifted_productcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_shifted_productcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_shifted_productcoefficients) + (p) * pfa_offset_right_step_helper_shifted_productcoefficientscoefficientresiduecongruence))))))))))))))))))
  106. 0106specialize prime_field_polynomial_convolution_at_length_exists (p)
  107. 0107specialize prime_field_polynomial_convolution_at_length_exists (ab)
  108. 0108specialize prime_field_polynomial_convolution_at_length_exists (ac)
  109. 0109specialize prime_field_polynomial_convolution_at_length_exists (L)
  110. 0110specialize prime_field_polynomial_convolution_at_length_exists (ub)
  111. 0111specialize prime_field_polynomial_convolution_at_length_exists (uc)
  112. 0112specialize prime_field_polynomial_convolution_at_length_exists (S K)
  113. 0113specialize prime_field_polynomial_convolution_at_length_exists (x)
  114. 0114apply prime_field_polynomial_convolution_at_length_exists
  115. 0115exact hp0
  116. 0116exact hABcopy_left
  117. 0117specialize prime_field_polynomial_shift_bounded (p)
  118. 0118specialize prime_field_polynomial_shift_bounded (qb)
  119. 0119specialize prime_field_polynomial_shift_bounded (qc)
  120. 0120specialize prime_field_polynomial_shift_bounded (K)
  121. 0121specialize prime_field_polynomial_shift_bounded (ub)
  122. 0122specialize prime_field_polynomial_shift_bounded (uc)
  123. 0123apply prime_field_polynomial_shift_bounded
  124. 0124exact hp
  125. 0125exact hAQcopy_right_left
  126. 0126exact hU
  127. 0127exact hlength_witness
  128. 0128cases hshifted_product
  129. 0129cases hshifted_product_witness
  130. 0130have hscaled_product : exists mb mc. ((forall fom_index_pfp_step_helper_scaled_productleft. (exists fom_gap_pfp_step_helper_scaled_productleft_index_bound. fom_gap_pfp_step_helper_scaled_productleft_index_bound + S (fom_index_pfp_step_helper_scaled_productleft) = L) -> exists fom_value_pfp_step_helper_scaled_productleft. ((((exists fom_beta_height_pfp_step_helper_scaled_productleft_entry. fom_beta_height_pfp_step_helper_scaled_productleft_entry + S (fom_value_pfp_step_helper_scaled_productleft) = S ((S (fom_index_pfp_step_helper_scaled_productleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_scaled_productleft_entry. ab = fom_beta_quotient_pfp_step_helper_scaled_productleft_entry * S ((S (fom_index_pfp_step_helper_scaled_productleft)) * ac) + (fom_value_pfp_step_helper_scaled_productleft))) /\ (exists fom_gap_pfp_step_helper_scaled_productleft_value_bound. fom_gap_pfp_step_helper_scaled_productleft_value_bound + S (fom_value_pfp_step_helper_scaled_productleft) = p))) /\ (((forall fom_index_pfp_step_helper_scaled_productright. (exists fom_gap_pfp_step_helper_scaled_productright_index_bound. fom_gap_pfp_step_helper_scaled_productright_index_bound + S (fom_index_pfp_step_helper_scaled_productright) = M) -> exists fom_value_pfp_step_helper_scaled_productright. ((((exists fom_beta_height_pfp_step_helper_scaled_productright_entry. fom_beta_height_pfp_step_helper_scaled_productright_entry + S (fom_value_pfp_step_helper_scaled_productright) = S ((S (fom_index_pfp_step_helper_scaled_productright)) * vc)) /\ exists fom_beta_quotient_pfp_step_helper_scaled_productright_entry. vb = fom_beta_quotient_pfp_step_helper_scaled_productright_entry * S ((S (fom_index_pfp_step_helper_scaled_productright)) * vc) + (fom_value_pfp_step_helper_scaled_productright))) /\ (exists fom_gap_pfp_step_helper_scaled_productright_value_bound. fom_gap_pfp_step_helper_scaled_productright_value_bound + S (fom_value_pfp_step_helper_scaled_productright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_step_helper_scaled_productcoefficients. (exists pfa_gap_step_helper_scaled_productcoefficientsbound. pfa_gap_step_helper_scaled_productcoefficientsbound + S (pfc_index_step_helper_scaled_productcoefficients) = (N)) -> exists pfc_value_step_helper_scaled_productcoefficients. ((((exists ff_h_pfp_step_helper_scaled_productcoefficientsentry. ff_h_pfp_step_helper_scaled_productcoefficientsentry + S (pfc_value_step_helper_scaled_productcoefficients) = S ((S (pfc_index_step_helper_scaled_productcoefficients)) * mc)) /\ exists ff_q_pfp_step_helper_scaled_productcoefficientsentry. mb = ff_q_pfp_step_helper_scaled_productcoefficientsentry * S ((S (pfc_index_step_helper_scaled_productcoefficients)) * mc) + (pfc_value_step_helper_scaled_productcoefficients))) /\ ((exists pfc_terms_code_step_helper_scaled_productcoefficientscoefficient pfc_terms_scale_step_helper_scaled_productcoefficientscoefficient pfc_natural_sum_step_helper_scaled_productcoefficientscoefficient. ((forall pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_scaled_productcoefficients))) -> exists pfc_value_step_helper_scaled_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_scaled_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_scaled_productcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_scaled_productcoefficientscoefficient = ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_scaled_productcoefficientscoefficient) + (pfc_value_step_helper_scaled_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm pfc_left_step_helper_scaled_productcoefficientscoefficientdiagonalterm pfc_right_step_helper_scaled_productcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)+pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_scaled_productcoefficients)) /\ ((((((exists pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_scaled_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_scaled_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_scaled_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_scaled_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_scaled_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm)) * vc)) /\ exists ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightentry. vb = ff_q_pfp_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm)) * vc) + (pfc_right_step_helper_scaled_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_scaled_productcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_step_helper_scaled_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_scaled_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_scaled_productcoefficientscoefficientdiagonal)=pfc_left_step_helper_scaled_productcoefficientscoefficientdiagonalterm*pfc_right_step_helper_scaled_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_scaled_productcoefficientscoefficientsum fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_scaled_productcoefficientscoefficientsum = fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_scaled_productcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_scaled_productcoefficients))) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_scaled_productcoefficientscoefficientsum = fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_scaled_productcoefficients))) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_scaled_productcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_scaled_productcoefficients)) -> exists fs_a_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_scaled_productcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_scaled_productcoefficientscoefficient = fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_scaled_productcoefficientscoefficient) + (fs_a_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_scaled_productcoefficientscoefficientsum = fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum) + (fs_r_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_scaled_productcoefficientscoefficientsum = fs_q_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_scaled_productcoefficientscoefficientsum) + (fs_s_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_scaled_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_scaled_productcoefficientscoefficientresiduebound. pfa_gap_step_helper_scaled_productcoefficientscoefficientresiduebound + S (pfc_value_step_helper_scaled_productcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_scaled_productcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_scaled_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_scaled_productcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_scaled_productcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_scaled_productcoefficients) + (p) * pfa_offset_right_step_helper_scaled_productcoefficientscoefficientresiduecongruence))))))))))))))))))
  131. 0131specialize prime_field_polynomial_convolution_at_length_exists (p)
  132. 0132specialize prime_field_polynomial_convolution_at_length_exists (ab)
  133. 0133specialize prime_field_polynomial_convolution_at_length_exists (ac)
  134. 0134specialize prime_field_polynomial_convolution_at_length_exists (L)
  135. 0135specialize prime_field_polynomial_convolution_at_length_exists (vb)
  136. 0136specialize prime_field_polynomial_convolution_at_length_exists (vc)
  137. 0137specialize prime_field_polynomial_convolution_at_length_exists (M)
  138. 0138specialize prime_field_polynomial_convolution_at_length_exists (N)
  139. 0139apply prime_field_polynomial_convolution_at_length_exists
  140. 0140exact hp0
  141. 0141exact hABcopy_left
  142. 0142exact hscale_bounds_right
  143. 0143exact hABcopy_right_right_left
  144. 0144cases hscaled_product
  145. 0145cases hscaled_product_witness
  146. 0146have hfirst : exists mb mc. ((forall fom_index_pfp_step_helper_hfirstleft. (exists fom_gap_pfp_step_helper_hfirstleft_index_bound. fom_gap_pfp_step_helper_hfirstleft_index_bound + S (fom_index_pfp_step_helper_hfirstleft) = L) -> exists fom_value_pfp_step_helper_hfirstleft. ((((exists fom_beta_height_pfp_step_helper_hfirstleft_entry. fom_beta_height_pfp_step_helper_hfirstleft_entry + S (fom_value_pfp_step_helper_hfirstleft) = S ((S (fom_index_pfp_step_helper_hfirstleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_hfirstleft_entry. ab = fom_beta_quotient_pfp_step_helper_hfirstleft_entry * S ((S (fom_index_pfp_step_helper_hfirstleft)) * ac) + (fom_value_pfp_step_helper_hfirstleft))) /\ (exists fom_gap_pfp_step_helper_hfirstleft_value_bound. fom_gap_pfp_step_helper_hfirstleft_value_bound + S (fom_value_pfp_step_helper_hfirstleft) = p))) /\ (((forall fom_index_pfp_step_helper_hfirstright. (exists fom_gap_pfp_step_helper_hfirstright_index_bound. fom_gap_pfp_step_helper_hfirstright_index_bound + S (fom_index_pfp_step_helper_hfirstright) = M+S K) -> exists fom_value_pfp_step_helper_hfirstright. ((((exists fom_beta_height_pfp_step_helper_hfirstright_entry. fom_beta_height_pfp_step_helper_hfirstright_entry + S (fom_value_pfp_step_helper_hfirstright) = S ((S (fom_index_pfp_step_helper_hfirstright)) * UPc)) /\ exists fom_beta_quotient_pfp_step_helper_hfirstright_entry. UPb = fom_beta_quotient_pfp_step_helper_hfirstright_entry * S ((S (fom_index_pfp_step_helper_hfirstright)) * UPc) + (fom_value_pfp_step_helper_hfirstright))) /\ (exists fom_gap_pfp_step_helper_hfirstright_value_bound. fom_gap_pfp_step_helper_hfirstright_value_bound + S (fom_value_pfp_step_helper_hfirstright) = p))) /\ (((((((L)=0 \/ (M+S K)=0) /\ (((W)=0)))) \/ (((~((L)=0)) /\ (((~((M+S K)=0)) /\ (((L)+(M+S K)=S (W)))))))) /\ ((forall pfc_index_step_helper_hfirstcoefficients. (exists pfa_gap_step_helper_hfirstcoefficientsbound. pfa_gap_step_helper_hfirstcoefficientsbound + S (pfc_index_step_helper_hfirstcoefficients) = (W)) -> exists pfc_value_step_helper_hfirstcoefficients. ((((exists ff_h_pfp_step_helper_hfirstcoefficientsentry. ff_h_pfp_step_helper_hfirstcoefficientsentry + S (pfc_value_step_helper_hfirstcoefficients) = S ((S (pfc_index_step_helper_hfirstcoefficients)) * mc)) /\ exists ff_q_pfp_step_helper_hfirstcoefficientsentry. mb = ff_q_pfp_step_helper_hfirstcoefficientsentry * S ((S (pfc_index_step_helper_hfirstcoefficients)) * mc) + (pfc_value_step_helper_hfirstcoefficients))) /\ ((exists pfc_terms_code_step_helper_hfirstcoefficientscoefficient pfc_terms_scale_step_helper_hfirstcoefficientscoefficient pfc_natural_sum_step_helper_hfirstcoefficientscoefficient. ((forall pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_hfirstcoefficients))) -> exists pfc_value_step_helper_hfirstcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_hfirstcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_hfirstcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_hfirstcoefficientscoefficient = ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_hfirstcoefficientscoefficient) + (pfc_value_step_helper_hfirstcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm pfc_left_step_helper_hfirstcoefficientscoefficientdiagonalterm pfc_right_step_helper_hfirstcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)+pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_hfirstcoefficients)) /\ ((((((exists pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_hfirstcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_hfirstcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_hfirstcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_hfirstcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm) = (M+S K)) /\ ((((exists ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_hfirstcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm)) * UPc)) /\ exists ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermrightentry. UPb = ff_q_pfp_step_helper_hfirstcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm)) * UPc) + (pfc_right_step_helper_hfirstcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_hfirstcoefficientscoefficientdiagonaltermrightoutside+(M+S K)=(pfc_complement_step_helper_hfirstcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_hfirstcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_hfirstcoefficientscoefficientdiagonal)=pfc_left_step_helper_hfirstcoefficientscoefficientdiagonalterm*pfc_right_step_helper_hfirstcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_hfirstcoefficientscoefficientsum fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_hfirstcoefficientscoefficientsum = fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_hfirstcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_hfirstcoefficients))) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_hfirstcoefficientscoefficientsum = fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_hfirstcoefficients))) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_hfirstcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_hfirstcoefficients)) -> exists fs_a_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_hfirstcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_hfirstcoefficientscoefficient = fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_hfirstcoefficientscoefficient) + (fs_a_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_hfirstcoefficientscoefficientsum = fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum) + (fs_r_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_hfirstcoefficientscoefficientsum = fs_q_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hfirstcoefficientscoefficientsum) + (fs_s_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_hfirstcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_hfirstcoefficientscoefficientresiduebound. pfa_gap_step_helper_hfirstcoefficientscoefficientresiduebound + S (pfc_value_step_helper_hfirstcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_hfirstcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_hfirstcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_hfirstcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_hfirstcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_hfirstcoefficients) + (p) * pfa_offset_right_step_helper_hfirstcoefficientscoefficientresiduecongruence))))))))))))))))))
  147. 0147specialize prime_field_polynomial_convolution_at_length_exists (p)
  148. 0148specialize prime_field_polynomial_convolution_at_length_exists (ab)
  149. 0149specialize prime_field_polynomial_convolution_at_length_exists (ac)
  150. 0150specialize prime_field_polynomial_convolution_at_length_exists (L)
  151. 0151specialize prime_field_polynomial_convolution_at_length_exists (UPb)
  152. 0152specialize prime_field_polynomial_convolution_at_length_exists (UPc)
  153. 0153specialize prime_field_polynomial_convolution_at_length_exists (M+S K)
  154. 0154specialize prime_field_polynomial_convolution_at_length_exists (W)
  155. 0155apply prime_field_polynomial_convolution_at_length_exists
  156. 0156exact hp0
  157. 0157exact hABcopy_left
  158. 0158exact hadd_bounds_left
  159. 0159exact hAZcopy_right_right_left
  160. 0160cases hfirst
  161. 0161cases hfirst_witness
  162. 0162have hsecond : exists mb mc. ((forall fom_index_pfp_step_helper_hsecondleft. (exists fom_gap_pfp_step_helper_hsecondleft_index_bound. fom_gap_pfp_step_helper_hsecondleft_index_bound + S (fom_index_pfp_step_helper_hsecondleft) = L) -> exists fom_value_pfp_step_helper_hsecondleft. ((((exists fom_beta_height_pfp_step_helper_hsecondleft_entry. fom_beta_height_pfp_step_helper_hsecondleft_entry + S (fom_value_pfp_step_helper_hsecondleft) = S ((S (fom_index_pfp_step_helper_hsecondleft)) * ac)) /\ exists fom_beta_quotient_pfp_step_helper_hsecondleft_entry. ab = fom_beta_quotient_pfp_step_helper_hsecondleft_entry * S ((S (fom_index_pfp_step_helper_hsecondleft)) * ac) + (fom_value_pfp_step_helper_hsecondleft))) /\ (exists fom_gap_pfp_step_helper_hsecondleft_value_bound. fom_gap_pfp_step_helper_hsecondleft_value_bound + S (fom_value_pfp_step_helper_hsecondleft) = p))) /\ (((forall fom_index_pfp_step_helper_hsecondright. (exists fom_gap_pfp_step_helper_hsecondright_index_bound. fom_gap_pfp_step_helper_hsecondright_index_bound + S (fom_index_pfp_step_helper_hsecondright) = M+S K) -> exists fom_value_pfp_step_helper_hsecondright. ((((exists fom_beta_height_pfp_step_helper_hsecondright_entry. fom_beta_height_pfp_step_helper_hsecondright_entry + S (fom_value_pfp_step_helper_hsecondright) = S ((S (fom_index_pfp_step_helper_hsecondright)) * VPc)) /\ exists fom_beta_quotient_pfp_step_helper_hsecondright_entry. VPb = fom_beta_quotient_pfp_step_helper_hsecondright_entry * S ((S (fom_index_pfp_step_helper_hsecondright)) * VPc) + (fom_value_pfp_step_helper_hsecondright))) /\ (exists fom_gap_pfp_step_helper_hsecondright_value_bound. fom_gap_pfp_step_helper_hsecondright_value_bound + S (fom_value_pfp_step_helper_hsecondright) = p))) /\ (((((((L)=0 \/ (M+S K)=0) /\ (((W)=0)))) \/ (((~((L)=0)) /\ (((~((M+S K)=0)) /\ (((L)+(M+S K)=S (W)))))))) /\ ((forall pfc_index_step_helper_hsecondcoefficients. (exists pfa_gap_step_helper_hsecondcoefficientsbound. pfa_gap_step_helper_hsecondcoefficientsbound + S (pfc_index_step_helper_hsecondcoefficients) = (W)) -> exists pfc_value_step_helper_hsecondcoefficients. ((((exists ff_h_pfp_step_helper_hsecondcoefficientsentry. ff_h_pfp_step_helper_hsecondcoefficientsentry + S (pfc_value_step_helper_hsecondcoefficients) = S ((S (pfc_index_step_helper_hsecondcoefficients)) * mc)) /\ exists ff_q_pfp_step_helper_hsecondcoefficientsentry. mb = ff_q_pfp_step_helper_hsecondcoefficientsentry * S ((S (pfc_index_step_helper_hsecondcoefficients)) * mc) + (pfc_value_step_helper_hsecondcoefficients))) /\ ((exists pfc_terms_code_step_helper_hsecondcoefficientscoefficient pfc_terms_scale_step_helper_hsecondcoefficientscoefficient pfc_natural_sum_step_helper_hsecondcoefficientscoefficient. ((forall pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal. (exists pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonalbound. pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonalbound + S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal) = (S (pfc_index_step_helper_hsecondcoefficients))) -> exists pfc_value_step_helper_hsecondcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonalentry. ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonalentry + S (pfc_value_step_helper_hsecondcoefficientscoefficientdiagonal) = S ((S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_hsecondcoefficientscoefficient)) /\ exists ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonalentry. pfc_terms_code_step_helper_hsecondcoefficientscoefficient = ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonalentry * S ((S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)) * pfc_terms_scale_step_helper_hsecondcoefficientscoefficient) + (pfc_value_step_helper_hsecondcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm pfc_left_step_helper_hsecondcoefficientscoefficientdiagonalterm pfc_right_step_helper_hsecondcoefficientscoefficientdiagonalterm. (((pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)+pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm=(pfc_index_step_helper_hsecondcoefficients)) /\ ((((((exists pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermleftinside. pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_step_helper_hsecondcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)) * ac) + (pfc_left_step_helper_hsecondcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_step_helper_hsecondcoefficientscoefficientdiagonal)) /\ (((pfc_left_step_helper_hsecondcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermrightinside. pfa_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm) = (M+S K)) /\ ((((exists ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_step_helper_hsecondcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm)) * VPc)) /\ exists ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermrightentry. VPb = ff_q_pfp_step_helper_hsecondcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm)) * VPc) + (pfc_right_step_helper_hsecondcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_step_helper_hsecondcoefficientscoefficientdiagonaltermrightoutside+(M+S K)=(pfc_complement_step_helper_hsecondcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_step_helper_hsecondcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_step_helper_hsecondcoefficientscoefficientdiagonal)=pfc_left_step_helper_hsecondcoefficientscoefficientdiagonalterm*pfc_right_step_helper_hsecondcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_step_helper_hsecondcoefficientscoefficientsum fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum. ((((exists fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_start. fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_start. fs_u_pfc_step_helper_hsecondcoefficientscoefficientsum = fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_terminal. fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_step_helper_hsecondcoefficientscoefficient) = S ((S (S (pfc_index_step_helper_hsecondcoefficients))) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_terminal. fs_u_pfc_step_helper_hsecondcoefficientscoefficientsum = fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_step_helper_hsecondcoefficients))) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum) + (pfc_natural_sum_step_helper_hsecondcoefficientscoefficient))) /\ forall fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps = S (pfc_index_step_helper_hsecondcoefficients)) -> exists fs_a_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps fs_r_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps fs_s_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_hsecondcoefficientscoefficient)) /\ exists fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_step_helper_hsecondcoefficientscoefficient = fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_step_helper_hsecondcoefficientscoefficient) + (fs_a_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_step_helper_hsecondcoefficientscoefficientsum = fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum) + (fs_r_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum)) /\ exists fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_step_helper_hsecondcoefficientscoefficientsum = fs_q_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)) * fs_v_pfc_step_helper_hsecondcoefficientscoefficientsum) + (fs_s_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps = fs_r_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps + fs_a_pfc_step_helper_hsecondcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_step_helper_hsecondcoefficientscoefficientresiduebound. pfa_gap_step_helper_hsecondcoefficientscoefficientresiduebound + S (pfc_value_step_helper_hsecondcoefficients) = (p)) /\ ((exists pfa_offset_left_step_helper_hsecondcoefficientscoefficientresiduecongruence pfa_offset_right_step_helper_hsecondcoefficientscoefficientresiduecongruence. (pfc_natural_sum_step_helper_hsecondcoefficientscoefficient) + (p) * pfa_offset_left_step_helper_hsecondcoefficientscoefficientresiduecongruence = (pfc_value_step_helper_hsecondcoefficients) + (p) * pfa_offset_right_step_helper_hsecondcoefficientscoefficientresiduecongruence))))))))))))))))))
  163. 0163specialize prime_field_polynomial_convolution_at_length_exists (p)
  164. 0164specialize prime_field_polynomial_convolution_at_length_exists (ab)
  165. 0165specialize prime_field_polynomial_convolution_at_length_exists (ac)
  166. 0166specialize prime_field_polynomial_convolution_at_length_exists (L)
  167. 0167specialize prime_field_polynomial_convolution_at_length_exists (VPb)
  168. 0168specialize prime_field_polynomial_convolution_at_length_exists (VPc)
  169. 0169specialize prime_field_polynomial_convolution_at_length_exists (M+S K)
  170. 0170specialize prime_field_polynomial_convolution_at_length_exists (W)
  171. 0171apply prime_field_polynomial_convolution_at_length_exists
  172. 0172exact hp0
  173. 0173exact hABcopy_left
  174. 0174exact hadd_bounds_right_left
  175. 0175exact hAZcopy_right_right_left
  176. 0176cases hsecond
  177. 0177cases hsecond_witness
  178. 0178have hdistributed : forall pfp_index_step_helper_distributed. (exists pfa_gap_step_helper_distributedindex. pfa_gap_step_helper_distributedindex + S (pfp_index_step_helper_distributed) = (W)) -> exists pfp_left_step_helper_distributed pfp_right_step_helper_distributed pfp_value_step_helper_distributed. ((((exists ff_h_pfp_step_helper_distributedleft. ff_h_pfp_step_helper_distributedleft + S (pfp_left_step_helper_distributed) = S ((S (pfp_index_step_helper_distributed)) * x6)) /\ exists ff_q_pfp_step_helper_distributedleft. x5 = ff_q_pfp_step_helper_distributedleft * S ((S (pfp_index_step_helper_distributed)) * x6) + (pfp_left_step_helper_distributed))) /\ (((((exists ff_h_pfp_step_helper_distributedright. ff_h_pfp_step_helper_distributedright + S (pfp_right_step_helper_distributed) = S ((S (pfp_index_step_helper_distributed)) * x8)) /\ exists ff_q_pfp_step_helper_distributedright. x7 = ff_q_pfp_step_helper_distributedright * S ((S (pfp_index_step_helper_distributed)) * x8) + (pfp_right_step_helper_distributed))) /\ (((((exists ff_h_pfp_step_helper_distributedtarget. ff_h_pfp_step_helper_distributedtarget + S (pfp_value_step_helper_distributed) = S ((S (pfp_index_step_helper_distributed)) * sc)) /\ exists ff_q_pfp_step_helper_distributedtarget. sb = ff_q_pfp_step_helper_distributedtarget * S ((S (pfp_index_step_helper_distributed)) * sc) + (pfp_value_step_helper_distributed))) /\ ((((exists pfa_gap_step_helper_distributedoperationleft. pfa_gap_step_helper_distributedoperationleft + S (pfp_left_step_helper_distributed) = (p)) /\ (((exists pfa_gap_step_helper_distributedoperationright. pfa_gap_step_helper_distributedoperationright + S (pfp_right_step_helper_distributed) = (p)) /\ ((((exists pfa_gap_step_helper_distributedoperationresultbound. pfa_gap_step_helper_distributedoperationresultbound + S (pfp_value_step_helper_distributed) = (p)) /\ ((exists pfa_offset_left_step_helper_distributedoperationresultcongruence pfa_offset_right_step_helper_distributedoperationresultcongruence. ((pfp_left_step_helper_distributed) + (pfp_right_step_helper_distributed)) + (p) * pfa_offset_left_step_helper_distributedoperationresultcongruence = (pfp_value_step_helper_distributed) + (p) * pfa_offset_right_step_helper_distributedoperationresultcongruence)))))))))))))))
  179. 0179specialize prime_field_polynomial_convolution_left_add (p)
  180. 0180specialize prime_field_polynomial_convolution_left_add (UPb)
  181. 0181specialize prime_field_polynomial_convolution_left_add (UPc)
  182. 0182specialize prime_field_polynomial_convolution_left_add (VPb)
  183. 0183specialize prime_field_polynomial_convolution_left_add (VPc)
  184. 0184specialize prime_field_polynomial_convolution_left_add (zb)
  185. 0185specialize prime_field_polynomial_convolution_left_add (zc)
  186. 0186specialize prime_field_polynomial_convolution_left_add (M+S K)
  187. 0187specialize prime_field_polynomial_convolution_left_add (ab)
  188. 0188specialize prime_field_polynomial_convolution_left_add (ac)
  189. 0189specialize prime_field_polynomial_convolution_left_add (L)
  190. 0190specialize prime_field_polynomial_convolution_left_add (x5)
  191. 0191specialize prime_field_polynomial_convolution_left_add (x6)
  192. 0192specialize prime_field_polynomial_convolution_left_add (x7)
  193. 0193specialize prime_field_polynomial_convolution_left_add (x8)
  194. 0194specialize prime_field_polynomial_convolution_left_add (sb)
  195. 0195specialize prime_field_polynomial_convolution_left_add (sc)
  196. 0196specialize prime_field_polynomial_convolution_left_add (W)
  197. 0197apply prime_field_polynomial_convolution_left_add
  198. 0198exact hZ
  199. 0199exact hfirst_witness_witness
  200. 0200exact hsecond_witness_witness
  201. 0201exact hAZ
  202. 0202have hshift_equal : forall pfrep_power_step_helper_shift_equal pfrep_left_step_helper_shift_equal pfrep_right_step_helper_shift_equal. ((exists pfrep_position_step_helper_shift_equalfirst. ((pfrep_position_step_helper_shift_equalfirst+S (pfrep_power_step_helper_shift_equal)=(x)) /\ ((((exists ff_h_pfp_step_helper_shift_equalfirstentry. ff_h_pfp_step_helper_shift_equalfirstentry + S (pfrep_left_step_helper_shift_equal) = S ((S (pfrep_position_step_helper_shift_equalfirst)) * x2)) /\ exists ff_q_pfp_step_helper_shift_equalfirstentry. x1 = ff_q_pfp_step_helper_shift_equalfirstentry * S ((S (pfrep_position_step_helper_shift_equalfirst)) * x2) + (pfrep_left_step_helper_shift_equal)))))) \/ (((exists pfrep_gap_step_helper_shift_equalfirstoutside. pfrep_gap_step_helper_shift_equalfirstoutside+(x)=(pfrep_power_step_helper_shift_equal)) /\ (((pfrep_left_step_helper_shift_equal)=0))))) -> ((exists pfrep_position_step_helper_shift_equalsecond. ((pfrep_position_step_helper_shift_equalsecond+S (pfrep_power_step_helper_shift_equal)=(S T)) /\ ((((exists ff_h_pfp_step_helper_shift_equalsecondentry. ff_h_pfp_step_helper_shift_equalsecondentry + S (pfrep_right_step_helper_shift_equal) = S ((S (pfrep_position_step_helper_shift_equalsecond)) * ec)) /\ exists ff_q_pfp_step_helper_shift_equalsecondentry. eb = ff_q_pfp_step_helper_shift_equalsecondentry * S ((S (pfrep_position_step_helper_shift_equalsecond)) * ec) + (pfrep_right_step_helper_shift_equal)))))) \/ (((exists pfrep_gap_step_helper_shift_equalsecondoutside. pfrep_gap_step_helper_shift_equalsecondoutside+(S T)=(pfrep_power_step_helper_shift_equal)) /\ (((pfrep_right_step_helper_shift_equal)=0))))) -> pfrep_left_step_helper_shift_equal=pfrep_right_step_helper_shift_equal
  203. 0203specialize prime_field_polynomial_convolution_shift_right_equivalent (p)
  204. 0204specialize prime_field_polynomial_convolution_shift_right_equivalent (ab)
  205. 0205specialize prime_field_polynomial_convolution_shift_right_equivalent (ac)
  206. 0206specialize prime_field_polynomial_convolution_shift_right_equivalent (L)
  207. 0207specialize prime_field_polynomial_convolution_shift_right_equivalent (qb)
  208. 0208specialize prime_field_polynomial_convolution_shift_right_equivalent (qc)
  209. 0209specialize prime_field_polynomial_convolution_shift_right_equivalent (K)
  210. 0210specialize prime_field_polynomial_convolution_shift_right_equivalent (rb)
  211. 0211specialize prime_field_polynomial_convolution_shift_right_equivalent (rc)
  212. 0212specialize prime_field_polynomial_convolution_shift_right_equivalent (T)
  213. 0213specialize prime_field_polynomial_convolution_shift_right_equivalent (ub)
  214. 0214specialize prime_field_polynomial_convolution_shift_right_equivalent (uc)
  215. 0215specialize prime_field_polynomial_convolution_shift_right_equivalent (x1)
  216. 0216specialize prime_field_polynomial_convolution_shift_right_equivalent (x2)
  217. 0217specialize prime_field_polynomial_convolution_shift_right_equivalent (x)
  218. 0218specialize prime_field_polynomial_convolution_shift_right_equivalent (eb)
  219. 0219specialize prime_field_polynomial_convolution_shift_right_equivalent (ec)
  220. 0220apply prime_field_polynomial_convolution_shift_right_equivalent
  221. 0221exact hp0
  222. 0222exact hU
  223. 0223exact hAQ
  224. 0224exact hshifted_product_witness_witness
  225. 0225exact hE
  226. 0226have hfirst_pad : forall pfrep_power_step_helper_first_pad pfrep_left_step_helper_first_pad pfrep_right_step_helper_first_pad. ((exists pfrep_position_step_helper_first_padfirst. ((pfrep_position_step_helper_first_padfirst+S (pfrep_power_step_helper_first_pad)=(x)) /\ ((((exists ff_h_pfp_step_helper_first_padfirstentry. ff_h_pfp_step_helper_first_padfirstentry + S (pfrep_left_step_helper_first_pad) = S ((S (pfrep_position_step_helper_first_padfirst)) * x2)) /\ exists ff_q_pfp_step_helper_first_padfirstentry. x1 = ff_q_pfp_step_helper_first_padfirstentry * S ((S (pfrep_position_step_helper_first_padfirst)) * x2) + (pfrep_left_step_helper_first_pad)))))) \/ (((exists pfrep_gap_step_helper_first_padfirstoutside. pfrep_gap_step_helper_first_padfirstoutside+(x)=(pfrep_power_step_helper_first_pad)) /\ (((pfrep_left_step_helper_first_pad)=0))))) -> ((exists pfrep_position_step_helper_first_padsecond. ((pfrep_position_step_helper_first_padsecond+S (pfrep_power_step_helper_first_pad)=(W)) /\ ((((exists ff_h_pfp_step_helper_first_padsecondentry. ff_h_pfp_step_helper_first_padsecondentry + S (pfrep_right_step_helper_first_pad) = S ((S (pfrep_position_step_helper_first_padsecond)) * x6)) /\ exists ff_q_pfp_step_helper_first_padsecondentry. x5 = ff_q_pfp_step_helper_first_padsecondentry * S ((S (pfrep_position_step_helper_first_padsecond)) * x6) + (pfrep_right_step_helper_first_pad)))))) \/ (((exists pfrep_gap_step_helper_first_padsecondoutside. pfrep_gap_step_helper_first_padsecondoutside+(W)=(pfrep_power_step_helper_first_pad)) /\ (((pfrep_right_step_helper_first_pad)=0))))) -> pfrep_left_step_helper_first_pad=pfrep_right_step_helper_first_pad
  227. 0227specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  228. 0228specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  229. 0229specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  230. 0230specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  231. 0231specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ub)
  232. 0232specialize prime_field_polynomial_convolution_left_padding_equivalent_right (uc)
  233. 0233specialize prime_field_polynomial_convolution_left_padding_equivalent_right (S K)
  234. 0234specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x1)
  235. 0235specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x2)
  236. 0236specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  237. 0237specialize prime_field_polynomial_convolution_left_padding_equivalent_right (UPb)
  238. 0238specialize prime_field_polynomial_convolution_left_padding_equivalent_right (UPc)
  239. 0239specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  240. 0240specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x5)
  241. 0241specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x6)
  242. 0242specialize prime_field_polynomial_convolution_left_padding_equivalent_right (W)
  243. 0243apply prime_field_polynomial_convolution_left_padding_equivalent_right
  244. 0244exact hp0
  245. 0245exact hUP
  246. 0246exact hshifted_product_witness_witness
  247. 0247exact hfirst_witness_witness
  248. 0248have hfirst_base : forall pfrep_power_step_helper_first_base pfrep_left_step_helper_first_base pfrep_right_step_helper_first_base. ((exists pfrep_position_step_helper_first_basefirst. ((pfrep_position_step_helper_first_basefirst+S (pfrep_power_step_helper_first_base)=(W)) /\ ((((exists ff_h_pfp_step_helper_first_basefirstentry. ff_h_pfp_step_helper_first_basefirstentry + S (pfrep_left_step_helper_first_base) = S ((S (pfrep_position_step_helper_first_basefirst)) * x6)) /\ exists ff_q_pfp_step_helper_first_basefirstentry. x5 = ff_q_pfp_step_helper_first_basefirstentry * S ((S (pfrep_position_step_helper_first_basefirst)) * x6) + (pfrep_left_step_helper_first_base)))))) \/ (((exists pfrep_gap_step_helper_first_basefirstoutside. pfrep_gap_step_helper_first_basefirstoutside+(W)=(pfrep_power_step_helper_first_base)) /\ (((pfrep_left_step_helper_first_base)=0))))) -> ((exists pfrep_position_step_helper_first_basesecond. ((pfrep_position_step_helper_first_basesecond+S (pfrep_power_step_helper_first_base)=(S T)) /\ ((((exists ff_h_pfp_step_helper_first_basesecondentry. ff_h_pfp_step_helper_first_basesecondentry + S (pfrep_right_step_helper_first_base) = S ((S (pfrep_position_step_helper_first_basesecond)) * ec)) /\ exists ff_q_pfp_step_helper_first_basesecondentry. eb = ff_q_pfp_step_helper_first_basesecondentry * S ((S (pfrep_position_step_helper_first_basesecond)) * ec) + (pfrep_right_step_helper_first_base)))))) \/ (((exists pfrep_gap_step_helper_first_basesecondoutside. pfrep_gap_step_helper_first_basesecondoutside+(S T)=(pfrep_power_step_helper_first_base)) /\ (((pfrep_right_step_helper_first_base)=0))))) -> pfrep_left_step_helper_first_base=pfrep_right_step_helper_first_base
  249. 0249specialize prime_field_polynomial_equivalent_transitive (x5)
  250. 0250specialize prime_field_polynomial_equivalent_transitive (x6)
  251. 0251specialize prime_field_polynomial_equivalent_transitive (W)
  252. 0252specialize prime_field_polynomial_equivalent_transitive (x1)
  253. 0253specialize prime_field_polynomial_equivalent_transitive (x2)
  254. 0254specialize prime_field_polynomial_equivalent_transitive (x)
  255. 0255specialize prime_field_polynomial_equivalent_transitive (eb)
  256. 0256specialize prime_field_polynomial_equivalent_transitive (ec)
  257. 0257specialize prime_field_polynomial_equivalent_transitive (S T)
  258. 0258apply prime_field_polynomial_equivalent_transitive
  259. 0259specialize prime_field_polynomial_equivalent_symmetric (x1)
  260. 0260specialize prime_field_polynomial_equivalent_symmetric (x2)
  261. 0261specialize prime_field_polynomial_equivalent_symmetric (x)
  262. 0262specialize prime_field_polynomial_equivalent_symmetric (x5)
  263. 0263specialize prime_field_polynomial_equivalent_symmetric (x6)
  264. 0264specialize prime_field_polynomial_equivalent_symmetric (W)
  265. 0265apply prime_field_polynomial_equivalent_symmetric
  266. 0266exact hfirst_pad
  267. 0267exact hshift_equal
  268. 0268have hfirst_equal : forall pfrep_power_step_helper_first_equal pfrep_left_step_helper_first_equal pfrep_right_step_helper_first_equal. ((exists pfrep_position_step_helper_first_equalfirst. ((pfrep_position_step_helper_first_equalfirst+S (pfrep_power_step_helper_first_equal)=(W)) /\ ((((exists ff_h_pfp_step_helper_first_equalfirstentry. ff_h_pfp_step_helper_first_equalfirstentry + S (pfrep_left_step_helper_first_equal) = S ((S (pfrep_position_step_helper_first_equalfirst)) * x6)) /\ exists ff_q_pfp_step_helper_first_equalfirstentry. x5 = ff_q_pfp_step_helper_first_equalfirstentry * S ((S (pfrep_position_step_helper_first_equalfirst)) * x6) + (pfrep_left_step_helper_first_equal)))))) \/ (((exists pfrep_gap_step_helper_first_equalfirstoutside. pfrep_gap_step_helper_first_equalfirstoutside+(W)=(pfrep_power_step_helper_first_equal)) /\ (((pfrep_left_step_helper_first_equal)=0))))) -> ((exists pfrep_position_step_helper_first_equalsecond. ((pfrep_position_step_helper_first_equalsecond+S (pfrep_power_step_helper_first_equal)=(N+S T)) /\ ((((exists ff_h_pfp_step_helper_first_equalsecondentry. ff_h_pfp_step_helper_first_equalsecondentry + S (pfrep_right_step_helper_first_equal) = S ((S (pfrep_position_step_helper_first_equalsecond)) * EPc)) /\ exists ff_q_pfp_step_helper_first_equalsecondentry. EPb = ff_q_pfp_step_helper_first_equalsecondentry * S ((S (pfrep_position_step_helper_first_equalsecond)) * EPc) + (pfrep_right_step_helper_first_equal)))))) \/ (((exists pfrep_gap_step_helper_first_equalsecondoutside. pfrep_gap_step_helper_first_equalsecondoutside+(N+S T)=(pfrep_power_step_helper_first_equal)) /\ (((pfrep_right_step_helper_first_equal)=0))))) -> pfrep_left_step_helper_first_equal=pfrep_right_step_helper_first_equal
  269. 0269specialize prime_field_polynomial_equivalent_transitive (x5)
  270. 0270specialize prime_field_polynomial_equivalent_transitive (x6)
  271. 0271specialize prime_field_polynomial_equivalent_transitive (W)
  272. 0272specialize prime_field_polynomial_equivalent_transitive (eb)
  273. 0273specialize prime_field_polynomial_equivalent_transitive (ec)
  274. 0274specialize prime_field_polynomial_equivalent_transitive (S T)
  275. 0275specialize prime_field_polynomial_equivalent_transitive (EPb)
  276. 0276specialize prime_field_polynomial_equivalent_transitive (EPc)
  277. 0277specialize prime_field_polynomial_equivalent_transitive (N+S T)
  278. 0278apply prime_field_polynomial_equivalent_transitive
  279. 0279exact hfirst_base
  280. 0280specialize prime_field_polynomial_left_pad_equivalent (eb)
  281. 0281specialize prime_field_polynomial_left_pad_equivalent (ec)
  282. 0282specialize prime_field_polynomial_left_pad_equivalent (S T)
  283. 0283specialize prime_field_polynomial_left_pad_equivalent (N)
  284. 0284specialize prime_field_polynomial_left_pad_equivalent (EPb)
  285. 0285specialize prime_field_polynomial_left_pad_equivalent (EPc)
  286. 0286apply prime_field_polynomial_left_pad_equivalent
  287. 0287exact hEP
  288. 0288have hscaled_equal : ((N=N) /\ ((forall mdr_i_pfp_step_helper_scalar_equal mdr_a_pfp_step_helper_scalar_equal. (exists mdr_gap_pfp_step_helper_scalar_equalb. mdr_gap_pfp_step_helper_scalar_equalb + S (mdr_i_pfp_step_helper_scalar_equal) = (N)) -> (((exists ff_h_mdr_pfp_step_helper_scalar_equalo. ff_h_mdr_pfp_step_helper_scalar_equalo + S (mdr_a_pfp_step_helper_scalar_equal) = S ((S (mdr_i_pfp_step_helper_scalar_equal)) * x4)) /\ exists ff_q_mdr_pfp_step_helper_scalar_equalo. x3 = ff_q_mdr_pfp_step_helper_scalar_equalo * S ((S (mdr_i_pfp_step_helper_scalar_equal)) * x4) + (mdr_a_pfp_step_helper_scalar_equal))) -> (((exists ff_h_mdr_pfp_step_helper_scalar_equaln. ff_h_mdr_pfp_step_helper_scalar_equaln + S (mdr_a_pfp_step_helper_scalar_equal) = S ((S (mdr_i_pfp_step_helper_scalar_equal)) * fc)) /\ exists ff_q_mdr_pfp_step_helper_scalar_equaln. fb = ff_q_mdr_pfp_step_helper_scalar_equaln * S ((S (mdr_i_pfp_step_helper_scalar_equal)) * fc) + (mdr_a_pfp_step_helper_scalar_equal))))))
  289. 0289specialize prime_field_polynomial_convolution_right_scale_equal (p)
  290. 0290specialize prime_field_polynomial_convolution_right_scale_equal (c)
  291. 0291specialize prime_field_polynomial_convolution_right_scale_equal (ab)
  292. 0292specialize prime_field_polynomial_convolution_right_scale_equal (ac)
  293. 0293specialize prime_field_polynomial_convolution_right_scale_equal (L)
  294. 0294specialize prime_field_polynomial_convolution_right_scale_equal (bb)
  295. 0295specialize prime_field_polynomial_convolution_right_scale_equal (bc)
  296. 0296specialize prime_field_polynomial_convolution_right_scale_equal (M)
  297. 0297specialize prime_field_polynomial_convolution_right_scale_equal (vb)
  298. 0298specialize prime_field_polynomial_convolution_right_scale_equal (vc)
  299. 0299specialize prime_field_polynomial_convolution_right_scale_equal (pb)
  300. 0300specialize prime_field_polynomial_convolution_right_scale_equal (pc)
  301. 0301specialize prime_field_polynomial_convolution_right_scale_equal (N)
  302. 0302specialize prime_field_polynomial_convolution_right_scale_equal (x3)
  303. 0303specialize prime_field_polynomial_convolution_right_scale_equal (x4)
  304. 0304specialize prime_field_polynomial_convolution_right_scale_equal (N)
  305. 0305specialize prime_field_polynomial_convolution_right_scale_equal (fb)
  306. 0306specialize prime_field_polynomial_convolution_right_scale_equal (fc)
  307. 0307apply prime_field_polynomial_convolution_right_scale_equal
  308. 0308exact hV
  309. 0309exact hAB
  310. 0310exact hscaled_product_witness_witness
  311. 0311exact hF
  312. 0312cases hscaled_equal
  313. 0313have hscalar_base : forall pfrep_power_step_helper_scalar_base pfrep_left_step_helper_scalar_base pfrep_right_step_helper_scalar_base. ((exists pfrep_position_step_helper_scalar_basefirst. ((pfrep_position_step_helper_scalar_basefirst+S (pfrep_power_step_helper_scalar_base)=(N)) /\ ((((exists ff_h_pfp_step_helper_scalar_basefirstentry. ff_h_pfp_step_helper_scalar_basefirstentry + S (pfrep_left_step_helper_scalar_base) = S ((S (pfrep_position_step_helper_scalar_basefirst)) * x4)) /\ exists ff_q_pfp_step_helper_scalar_basefirstentry. x3 = ff_q_pfp_step_helper_scalar_basefirstentry * S ((S (pfrep_position_step_helper_scalar_basefirst)) * x4) + (pfrep_left_step_helper_scalar_base)))))) \/ (((exists pfrep_gap_step_helper_scalar_basefirstoutside. pfrep_gap_step_helper_scalar_basefirstoutside+(N)=(pfrep_power_step_helper_scalar_base)) /\ (((pfrep_left_step_helper_scalar_base)=0))))) -> ((exists pfrep_position_step_helper_scalar_basesecond. ((pfrep_position_step_helper_scalar_basesecond+S (pfrep_power_step_helper_scalar_base)=(N)) /\ ((((exists ff_h_pfp_step_helper_scalar_basesecondentry. ff_h_pfp_step_helper_scalar_basesecondentry + S (pfrep_right_step_helper_scalar_base) = S ((S (pfrep_position_step_helper_scalar_basesecond)) * fc)) /\ exists ff_q_pfp_step_helper_scalar_basesecondentry. fb = ff_q_pfp_step_helper_scalar_basesecondentry * S ((S (pfrep_position_step_helper_scalar_basesecond)) * fc) + (pfrep_right_step_helper_scalar_base)))))) \/ (((exists pfrep_gap_step_helper_scalar_basesecondoutside. pfrep_gap_step_helper_scalar_basesecondoutside+(N)=(pfrep_power_step_helper_scalar_base)) /\ (((pfrep_right_step_helper_scalar_base)=0))))) -> pfrep_left_step_helper_scalar_base=pfrep_right_step_helper_scalar_base
  314. 0314specialize prime_field_polynomial_equal_implies_equivalent (x3)
  315. 0315specialize prime_field_polynomial_equal_implies_equivalent (x4)
  316. 0316specialize prime_field_polynomial_equal_implies_equivalent (fb)
  317. 0317specialize prime_field_polynomial_equal_implies_equivalent (fc)
  318. 0318specialize prime_field_polynomial_equal_implies_equivalent (N)
  319. 0319apply prime_field_polynomial_equal_implies_equivalent
  320. 0320exact hscaled_equal_right
  321. 0321have hsecond_pad : forall pfrep_power_step_helper_second_pad pfrep_left_step_helper_second_pad pfrep_right_step_helper_second_pad. ((exists pfrep_position_step_helper_second_padfirst. ((pfrep_position_step_helper_second_padfirst+S (pfrep_power_step_helper_second_pad)=(N)) /\ ((((exists ff_h_pfp_step_helper_second_padfirstentry. ff_h_pfp_step_helper_second_padfirstentry + S (pfrep_left_step_helper_second_pad) = S ((S (pfrep_position_step_helper_second_padfirst)) * x4)) /\ exists ff_q_pfp_step_helper_second_padfirstentry. x3 = ff_q_pfp_step_helper_second_padfirstentry * S ((S (pfrep_position_step_helper_second_padfirst)) * x4) + (pfrep_left_step_helper_second_pad)))))) \/ (((exists pfrep_gap_step_helper_second_padfirstoutside. pfrep_gap_step_helper_second_padfirstoutside+(N)=(pfrep_power_step_helper_second_pad)) /\ (((pfrep_left_step_helper_second_pad)=0))))) -> ((exists pfrep_position_step_helper_second_padsecond. ((pfrep_position_step_helper_second_padsecond+S (pfrep_power_step_helper_second_pad)=(W)) /\ ((((exists ff_h_pfp_step_helper_second_padsecondentry. ff_h_pfp_step_helper_second_padsecondentry + S (pfrep_right_step_helper_second_pad) = S ((S (pfrep_position_step_helper_second_padsecond)) * x8)) /\ exists ff_q_pfp_step_helper_second_padsecondentry. x7 = ff_q_pfp_step_helper_second_padsecondentry * S ((S (pfrep_position_step_helper_second_padsecond)) * x8) + (pfrep_right_step_helper_second_pad)))))) \/ (((exists pfrep_gap_step_helper_second_padsecondoutside. pfrep_gap_step_helper_second_padsecondoutside+(W)=(pfrep_power_step_helper_second_pad)) /\ (((pfrep_right_step_helper_second_pad)=0))))) -> pfrep_left_step_helper_second_pad=pfrep_right_step_helper_second_pad
  322. 0322specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  323. 0323specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  324. 0324specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  325. 0325specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  326. 0326specialize prime_field_polynomial_convolution_left_padding_equivalent_right (vb)
  327. 0327specialize prime_field_polynomial_convolution_left_padding_equivalent_right (vc)
  328. 0328specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  329. 0329specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x3)
  330. 0330specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x4)
  331. 0331specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  332. 0332specialize prime_field_polynomial_convolution_left_padding_equivalent_right (VPb)
  333. 0333specialize prime_field_polynomial_convolution_left_padding_equivalent_right (VPc)
  334. 0334specialize prime_field_polynomial_convolution_left_padding_equivalent_right (S K)
  335. 0335specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x7)
  336. 0336specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x8)
  337. 0337specialize prime_field_polynomial_convolution_left_padding_equivalent_right (W)
  338. 0338apply prime_field_polynomial_convolution_left_padding_equivalent_right
  339. 0339exact hp0
  340. 0340exact hVP
  341. 0341exact hscaled_product_witness_witness
  342. 0342have hcomm_input : S K+M=M+S K
  343. 0343specialize add_comm (S K)
  344. 0344specialize add_comm (M)
  345. 0345apply add_comm
  346. 0346rewrite hcomm_input
  347. 0347rewrite hcomm_input
  348. 0348rewrite hcomm_input
  349. 0349rewrite hcomm_input
  350. 0350rewrite hcomm_input
  351. 0351rewrite hcomm_input
  352. 0352exact hsecond_witness_witness
  353. 0353have hsecond_base : forall pfrep_power_step_helper_second_base pfrep_left_step_helper_second_base pfrep_right_step_helper_second_base. ((exists pfrep_position_step_helper_second_basefirst. ((pfrep_position_step_helper_second_basefirst+S (pfrep_power_step_helper_second_base)=(W)) /\ ((((exists ff_h_pfp_step_helper_second_basefirstentry. ff_h_pfp_step_helper_second_basefirstentry + S (pfrep_left_step_helper_second_base) = S ((S (pfrep_position_step_helper_second_basefirst)) * x8)) /\ exists ff_q_pfp_step_helper_second_basefirstentry. x7 = ff_q_pfp_step_helper_second_basefirstentry * S ((S (pfrep_position_step_helper_second_basefirst)) * x8) + (pfrep_left_step_helper_second_base)))))) \/ (((exists pfrep_gap_step_helper_second_basefirstoutside. pfrep_gap_step_helper_second_basefirstoutside+(W)=(pfrep_power_step_helper_second_base)) /\ (((pfrep_left_step_helper_second_base)=0))))) -> ((exists pfrep_position_step_helper_second_basesecond. ((pfrep_position_step_helper_second_basesecond+S (pfrep_power_step_helper_second_base)=(N)) /\ ((((exists ff_h_pfp_step_helper_second_basesecondentry. ff_h_pfp_step_helper_second_basesecondentry + S (pfrep_right_step_helper_second_base) = S ((S (pfrep_position_step_helper_second_basesecond)) * fc)) /\ exists ff_q_pfp_step_helper_second_basesecondentry. fb = ff_q_pfp_step_helper_second_basesecondentry * S ((S (pfrep_position_step_helper_second_basesecond)) * fc) + (pfrep_right_step_helper_second_base)))))) \/ (((exists pfrep_gap_step_helper_second_basesecondoutside. pfrep_gap_step_helper_second_basesecondoutside+(N)=(pfrep_power_step_helper_second_base)) /\ (((pfrep_right_step_helper_second_base)=0))))) -> pfrep_left_step_helper_second_base=pfrep_right_step_helper_second_base
  354. 0354specialize prime_field_polynomial_equivalent_transitive (x7)
  355. 0355specialize prime_field_polynomial_equivalent_transitive (x8)
  356. 0356specialize prime_field_polynomial_equivalent_transitive (W)
  357. 0357specialize prime_field_polynomial_equivalent_transitive (x3)
  358. 0358specialize prime_field_polynomial_equivalent_transitive (x4)
  359. 0359specialize prime_field_polynomial_equivalent_transitive (N)
  360. 0360specialize prime_field_polynomial_equivalent_transitive (fb)
  361. 0361specialize prime_field_polynomial_equivalent_transitive (fc)
  362. 0362specialize prime_field_polynomial_equivalent_transitive (N)
  363. 0363apply prime_field_polynomial_equivalent_transitive
  364. 0364specialize prime_field_polynomial_equivalent_symmetric (x3)
  365. 0365specialize prime_field_polynomial_equivalent_symmetric (x4)
  366. 0366specialize prime_field_polynomial_equivalent_symmetric (N)
  367. 0367specialize prime_field_polynomial_equivalent_symmetric (x7)
  368. 0368specialize prime_field_polynomial_equivalent_symmetric (x8)
  369. 0369specialize prime_field_polynomial_equivalent_symmetric (W)
  370. 0370apply prime_field_polynomial_equivalent_symmetric
  371. 0371exact hsecond_pad
  372. 0372exact hscalar_base
  373. 0373have hsecond_equal : forall pfrep_power_step_helper_second_equal pfrep_left_step_helper_second_equal pfrep_right_step_helper_second_equal. ((exists pfrep_position_step_helper_second_equalfirst. ((pfrep_position_step_helper_second_equalfirst+S (pfrep_power_step_helper_second_equal)=(W)) /\ ((((exists ff_h_pfp_step_helper_second_equalfirstentry. ff_h_pfp_step_helper_second_equalfirstentry + S (pfrep_left_step_helper_second_equal) = S ((S (pfrep_position_step_helper_second_equalfirst)) * x8)) /\ exists ff_q_pfp_step_helper_second_equalfirstentry. x7 = ff_q_pfp_step_helper_second_equalfirstentry * S ((S (pfrep_position_step_helper_second_equalfirst)) * x8) + (pfrep_left_step_helper_second_equal)))))) \/ (((exists pfrep_gap_step_helper_second_equalfirstoutside. pfrep_gap_step_helper_second_equalfirstoutside+(W)=(pfrep_power_step_helper_second_equal)) /\ (((pfrep_left_step_helper_second_equal)=0))))) -> ((exists pfrep_position_step_helper_second_equalsecond. ((pfrep_position_step_helper_second_equalsecond+S (pfrep_power_step_helper_second_equal)=(N+S T)) /\ ((((exists ff_h_pfp_step_helper_second_equalsecondentry. ff_h_pfp_step_helper_second_equalsecondentry + S (pfrep_right_step_helper_second_equal) = S ((S (pfrep_position_step_helper_second_equalsecond)) * FPc)) /\ exists ff_q_pfp_step_helper_second_equalsecondentry. FPb = ff_q_pfp_step_helper_second_equalsecondentry * S ((S (pfrep_position_step_helper_second_equalsecond)) * FPc) + (pfrep_right_step_helper_second_equal)))))) \/ (((exists pfrep_gap_step_helper_second_equalsecondoutside. pfrep_gap_step_helper_second_equalsecondoutside+(N+S T)=(pfrep_power_step_helper_second_equal)) /\ (((pfrep_right_step_helper_second_equal)=0))))) -> pfrep_left_step_helper_second_equal=pfrep_right_step_helper_second_equal
  374. 0374specialize prime_field_polynomial_equivalent_transitive (x7)
  375. 0375specialize prime_field_polynomial_equivalent_transitive (x8)
  376. 0376specialize prime_field_polynomial_equivalent_transitive (W)
  377. 0377specialize prime_field_polynomial_equivalent_transitive (fb)
  378. 0378specialize prime_field_polynomial_equivalent_transitive (fc)
  379. 0379specialize prime_field_polynomial_equivalent_transitive (N)
  380. 0380specialize prime_field_polynomial_equivalent_transitive (FPb)
  381. 0381specialize prime_field_polynomial_equivalent_transitive (FPc)
  382. 0382specialize prime_field_polynomial_equivalent_transitive (N+S T)
  383. 0383apply prime_field_polynomial_equivalent_transitive
  384. 0384exact hsecond_base
  385. 0385have houtput_pad : forall pfrep_power_step_helper_output_commute pfrep_left_step_helper_output_commute pfrep_right_step_helper_output_commute. ((exists pfrep_position_step_helper_output_commutefirst. ((pfrep_position_step_helper_output_commutefirst+S (pfrep_power_step_helper_output_commute)=(N)) /\ ((((exists ff_h_pfp_step_helper_output_commutefirstentry. ff_h_pfp_step_helper_output_commutefirstentry + S (pfrep_left_step_helper_output_commute) = S ((S (pfrep_position_step_helper_output_commutefirst)) * fc)) /\ exists ff_q_pfp_step_helper_output_commutefirstentry. fb = ff_q_pfp_step_helper_output_commutefirstentry * S ((S (pfrep_position_step_helper_output_commutefirst)) * fc) + (pfrep_left_step_helper_output_commute)))))) \/ (((exists pfrep_gap_step_helper_output_commutefirstoutside. pfrep_gap_step_helper_output_commutefirstoutside+(N)=(pfrep_power_step_helper_output_commute)) /\ (((pfrep_left_step_helper_output_commute)=0))))) -> ((exists pfrep_position_step_helper_output_commutesecond. ((pfrep_position_step_helper_output_commutesecond+S (pfrep_power_step_helper_output_commute)=(S T+N)) /\ ((((exists ff_h_pfp_step_helper_output_commutesecondentry. ff_h_pfp_step_helper_output_commutesecondentry + S (pfrep_right_step_helper_output_commute) = S ((S (pfrep_position_step_helper_output_commutesecond)) * FPc)) /\ exists ff_q_pfp_step_helper_output_commutesecondentry. FPb = ff_q_pfp_step_helper_output_commutesecondentry * S ((S (pfrep_position_step_helper_output_commutesecond)) * FPc) + (pfrep_right_step_helper_output_commute)))))) \/ (((exists pfrep_gap_step_helper_output_commutesecondoutside. pfrep_gap_step_helper_output_commutesecondoutside+(S T+N)=(pfrep_power_step_helper_output_commute)) /\ (((pfrep_right_step_helper_output_commute)=0))))) -> pfrep_left_step_helper_output_commute=pfrep_right_step_helper_output_commute
  386. 0386specialize prime_field_polynomial_left_pad_equivalent (fb)
  387. 0387specialize prime_field_polynomial_left_pad_equivalent (fc)
  388. 0388specialize prime_field_polynomial_left_pad_equivalent (N)
  389. 0389specialize prime_field_polynomial_left_pad_equivalent (S T)
  390. 0390specialize prime_field_polynomial_left_pad_equivalent (FPb)
  391. 0391specialize prime_field_polynomial_left_pad_equivalent (FPc)
  392. 0392apply prime_field_polynomial_left_pad_equivalent
  393. 0393exact hFP
  394. 0394have hcomm_output : S T+N=N+S T
  395. 0395specialize add_comm (S T)
  396. 0396specialize add_comm (N)
  397. 0397apply add_comm
  398. 0398rewrite hcomm_output at houtput_pad
  399. 0399rewrite hcomm_output at houtput_pad
  400. 0400exact houtput_pad
  401. 0401specialize prime_field_polynomial_add_equivalent_congruent (p)
  402. 0402specialize prime_field_polynomial_add_equivalent_congruent (x5)
  403. 0403specialize prime_field_polynomial_add_equivalent_congruent (x6)
  404. 0404specialize prime_field_polynomial_add_equivalent_congruent (x7)
  405. 0405specialize prime_field_polynomial_add_equivalent_congruent (x8)
  406. 0406specialize prime_field_polynomial_add_equivalent_congruent (sb)
  407. 0407specialize prime_field_polynomial_add_equivalent_congruent (sc)
  408. 0408specialize prime_field_polynomial_add_equivalent_congruent (W)
  409. 0409specialize prime_field_polynomial_add_equivalent_congruent (EPb)
  410. 0410specialize prime_field_polynomial_add_equivalent_congruent (EPc)
  411. 0411specialize prime_field_polynomial_add_equivalent_congruent (FPb)
  412. 0412specialize prime_field_polynomial_add_equivalent_congruent (FPc)
  413. 0413specialize prime_field_polynomial_add_equivalent_congruent (yb)
  414. 0414specialize prime_field_polynomial_add_equivalent_congruent (yc)
  415. 0415specialize prime_field_polynomial_add_equivalent_congruent (N+S T)
  416. 0416apply prime_field_polynomial_add_equivalent_congruent
  417. 0417exact hp
  418. 0418exact hfirst_equal
  419. 0419exact hsecond_equal
  420. 0420exact hdistributed
  421. 0421exact hY