PX006C

prime_field_polynomial_convolution_left_padding_nonempty_left

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

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

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

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

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ bb. ∀ bc. ∀ M. ∀ cb. ∀ cc. ∀ N. ∀ AB. ∀ AC. ∀ t. ∀ CB. ∀ CC. ∀ K. ¬p = 0 → ¬L = 0 → ¬M = 0 → PolynomialLeftPad(ab,ac,L,t,AB,AC)FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N)FpPolyProduct(p,AB,AC,t + L,bb,bc,M,CB,CC,K) → K = t + N ∧ PolynomialLeftPad(cb,cc,N,t,CB,CC)

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

Definition DAG

Actual proof prerequisites

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

Complete tactic proof in conservative notation

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

Read the argument

Proof checkpoints

142 script commands · 27 reading checkpoints · 6 local claims

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

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

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

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

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

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

  1. L11
    intro AB
  2. L12
    intro AC
  3. L13
    intro t
  4. L14
    intro CB
  5. L15
    intro CC
  6. L16
    intro K
  7. L17
    intro hp
  8. L18
    intro hL
  9. L19
    intro hM
  10. L20
    intro hpad
03Fix variables and assumptionsL21–22

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

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

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

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

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

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

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

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

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

  1. L40
    split
08Use earlier factsL41–41

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

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

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

  1. L42
    split
10Fix variables and assumptionsL43–44

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. L142
    exact hv_witness_left

Library-wide reading audit

Original defined command ledger · 142 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro M
  8. 0008intro cb
  9. 0009intro cc
  10. 0010intro N
  11. 0011intro AB
  12. 0012intro AC
  13. 0013intro t
  14. 0014intro CB
  15. 0015intro CC
  16. 0016intro K
  17. 0017intro hp
  18. 0018intro hL
  19. 0019intro hM
  20. 0020intro hpad
  21. 0021intro hc
  22. 0022intro hn
  23. 0023cases hc
  24. 0024cases hc_right
  25. 0025cases hc_right_right
  26. 0026cases hn
  27. 0027cases hn_right
  28. 0028cases hn_right_right
  29. 0029have hlength : K=t+N
  30. 0030specialize polynomial_product_length_left_padding_left (L)
  31. 0031specialize polynomial_product_length_left_padding_left (M)
  32. 0032specialize polynomial_product_length_left_padding_left (N)
  33. 0033specialize polynomial_product_length_left_padding_left (t)
  34. 0034specialize polynomial_product_length_left_padding_left (K)
  35. 0035apply polynomial_product_length_left_padding_left
  36. 0036exact hc_right_right_left
  37. 0037exact hL
  38. 0038exact hM
  39. 0039exact hn_right_right_left
  40. 0040split
  41. 0041exact hlength
  42. 0042split
  43. 0043intro i
  44. 0044intro hi
  45. 0045have hv : ∃ r. BetaAt(CB,CC,i,r)FpConvolutionCoefficient(p,AB,AC,t + L,bb,bc,M,i,r)
  46. 0046specialize hn_right_right_right (i)
  47. 0047apply hn_right_right_right
  48. 0048specialize le_trans (S i)
  49. 0049specialize le_trans (t)
  50. 0050specialize le_trans (K)
  51. 0051apply le_trans
  52. 0052exact hi
  53. 0053rewrite hlength
  54. 0054specialize le_add_right (t)
  55. 0055specialize le_add_right (N)
  56. 0056apply le_add_right
  57. 0057cases hv
  58. 0058cases hv_witness
  59. 0059have hzero : x=0
  60. 0060specialize prime_field_convolution_coefficient_before_left_padding_left (p)
  61. 0061specialize prime_field_convolution_coefficient_before_left_padding_left (ab)
  62. 0062specialize prime_field_convolution_coefficient_before_left_padding_left (ac)
  63. 0063specialize prime_field_convolution_coefficient_before_left_padding_left (L)
  64. 0064specialize prime_field_convolution_coefficient_before_left_padding_left (bb)
  65. 0065specialize prime_field_convolution_coefficient_before_left_padding_left (bc)
  66. 0066specialize prime_field_convolution_coefficient_before_left_padding_left (M)
  67. 0067specialize prime_field_convolution_coefficient_before_left_padding_left (AB)
  68. 0068specialize prime_field_convolution_coefficient_before_left_padding_left (AC)
  69. 0069specialize prime_field_convolution_coefficient_before_left_padding_left (t)
  70. 0070specialize prime_field_convolution_coefficient_before_left_padding_left (i)
  71. 0071specialize prime_field_convolution_coefficient_before_left_padding_left (x)
  72. 0072apply prime_field_convolution_coefficient_before_left_padding_left
  73. 0073exact hp
  74. 0074exact hpad
  75. 0075exact hi
  76. 0076exact hv_witness_right
  77. 0077rewrite hzero at hv_witness_left
  78. 0078rewrite hzero at hv_witness_left
  79. 0079exact hv_witness_left
  80. 0080intro i
  81. 0081intro a
  82. 0082intro hi
  83. 0083intro ha
  84. 0084have hcoefficient : FpConvolutionCoefficient(p,ab,ac,L,bb,bc,M,i,a)
  85. 0085specialize prime_field_convolution_prefix_entry (p)
  86. 0086specialize prime_field_convolution_prefix_entry (ab)
  87. 0087specialize prime_field_convolution_prefix_entry (ac)
  88. 0088specialize prime_field_convolution_prefix_entry (L)
  89. 0089specialize prime_field_convolution_prefix_entry (bb)
  90. 0090specialize prime_field_convolution_prefix_entry (bc)
  91. 0091specialize prime_field_convolution_prefix_entry (M)
  92. 0092specialize prime_field_convolution_prefix_entry (cb)
  93. 0093specialize prime_field_convolution_prefix_entry (cc)
  94. 0094specialize prime_field_convolution_prefix_entry (N)
  95. 0095specialize prime_field_convolution_prefix_entry (i)
  96. 0096specialize prime_field_convolution_prefix_entry (a)
  97. 0097apply prime_field_convolution_prefix_entry
  98. 0098exact hc_right_right_right
  99. 0099exact hi
  100. 0100exact ha
  101. 0101have hv : ∃ r. BetaAt(CB,CC,t + i,r)FpConvolutionCoefficient(p,AB,AC,t + L,bb,bc,M,t + i,r)
  102. 0102specialize hn_right_right_right (t+i)
  103. 0103apply hn_right_right_right
  104. 0104rewrite hlength
  105. 0105specialize matrix_recursive_lt_add_left (i)
  106. 0106specialize matrix_recursive_lt_add_left (N)
  107. 0107specialize matrix_recursive_lt_add_left (t)
  108. 0108apply matrix_recursive_lt_add_left
  109. 0109exact hi
  110. 0110cases hv
  111. 0111cases hv_witness
  112. 0112have heq : x=a
  113. 0113specialize prime_field_convolution_coefficient_functional (p)
  114. 0114specialize prime_field_convolution_coefficient_functional (AB)
  115. 0115specialize prime_field_convolution_coefficient_functional (AC)
  116. 0116specialize prime_field_convolution_coefficient_functional (t+L)
  117. 0117specialize prime_field_convolution_coefficient_functional (bb)
  118. 0118specialize prime_field_convolution_coefficient_functional (bc)
  119. 0119specialize prime_field_convolution_coefficient_functional (M)
  120. 0120specialize prime_field_convolution_coefficient_functional (t+i)
  121. 0121specialize prime_field_convolution_coefficient_functional (x)
  122. 0122specialize prime_field_convolution_coefficient_functional (a)
  123. 0123apply prime_field_convolution_coefficient_functional
  124. 0124exact hv_witness_right
  125. 0125specialize prime_field_convolution_coefficient_left_padding_left (p)
  126. 0126specialize prime_field_convolution_coefficient_left_padding_left (ab)
  127. 0127specialize prime_field_convolution_coefficient_left_padding_left (ac)
  128. 0128specialize prime_field_convolution_coefficient_left_padding_left (L)
  129. 0129specialize prime_field_convolution_coefficient_left_padding_left (bb)
  130. 0130specialize prime_field_convolution_coefficient_left_padding_left (bc)
  131. 0131specialize prime_field_convolution_coefficient_left_padding_left (M)
  132. 0132specialize prime_field_convolution_coefficient_left_padding_left (AB)
  133. 0133specialize prime_field_convolution_coefficient_left_padding_left (AC)
  134. 0134specialize prime_field_convolution_coefficient_left_padding_left (t)
  135. 0135specialize prime_field_convolution_coefficient_left_padding_left (i)
  136. 0136specialize prime_field_convolution_coefficient_left_padding_left (a)
  137. 0137apply prime_field_convolution_coefficient_left_padding_left
  138. 0138exact hpad
  139. 0139exact hcoefficient
  140. 0140rewrite heq at hv_witness_left
  141. 0141rewrite heq at hv_witness_left
  142. 0142exact hv_witness_left