PX0048

prime_field_convolution_prefix_left_add

Every requested ambient output prefix of the three actual left products satisfies actual coefficientwise addition, including N=0 and prefixes extending past product support.

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. ∀ bb. ∀ bc. ∀ cb. ∀ cc. ∀ L. ∀ db. ∀ dc. ∀ M. ∀ ub. ∀ uc. ∀ vb. ∀ vc. ∀ wb. ∀ wc. ∀ N. FpPolyAdd(p,ab,ac,bb,bc,cb,cc,L)FpConvolutionPrefix(p,db,dc,M,ab,ac,L,ub,uc,N)FpConvolutionPrefix(p,db,dc,M,bb,bc,L,vb,vc,N)FpConvolutionPrefix(p,db,dc,M,cb,cc,L,wb,wc,N)FpPolyAdd(p,ub,uc,vb,vc,wb,wc,N)

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 bb bc cb cc L db dc M ub uc vb vc wb wc N. (forall pfp_index_prefix_add_left_source. (exists pfa_gap_prefix_add_left_sourceindex. pfa_gap_prefix_add_left_sourceindex + S (pfp_index_prefix_add_left_source) = (L)) -> exists pfp_left_prefix_add_left_source pfp_right_prefix_add_left_source pfp_value_prefix_add_left_source. ((((exists ff_h_pfp_prefix_add_left_sourceleft. ff_h_pfp_prefix_add_left_sourceleft + S (pfp_left_prefix_add_left_source) = S ((S (pfp_index_prefix_add_left_source)) * ac)) /\ exists ff_q_pfp_prefix_add_left_sourceleft. ab = ff_q_pfp_prefix_add_left_sourceleft * S ((S (pfp_index_prefix_add_left_source)) * ac) + (pfp_left_prefix_add_left_source))) /\ (((((exists ff_h_pfp_prefix_add_left_sourceright. ff_h_pfp_prefix_add_left_sourceright + S (pfp_right_prefix_add_left_source) = S ((S (pfp_index_prefix_add_left_source)) * bc)) /\ exists ff_q_pfp_prefix_add_left_sourceright. bb = ff_q_pfp_prefix_add_left_sourceright * S ((S (pfp_index_prefix_add_left_source)) * bc) + (pfp_right_prefix_add_left_source))) /\ (((((exists ff_h_pfp_prefix_add_left_sourcetarget. ff_h_pfp_prefix_add_left_sourcetarget + S (pfp_value_prefix_add_left_source) = S ((S (pfp_index_prefix_add_left_source)) * cc)) /\ exists ff_q_pfp_prefix_add_left_sourcetarget. cb = ff_q_pfp_prefix_add_left_sourcetarget * S ((S (pfp_index_prefix_add_left_source)) * cc) + (pfp_value_prefix_add_left_source))) /\ ((((exists pfa_gap_prefix_add_left_sourceoperationleft. pfa_gap_prefix_add_left_sourceoperationleft + S (pfp_left_prefix_add_left_source) = (p)) /\ (((exists pfa_gap_prefix_add_left_sourceoperationright. pfa_gap_prefix_add_left_sourceoperationright + S (pfp_right_prefix_add_left_source) = (p)) /\ ((((exists pfa_gap_prefix_add_left_sourceoperationresultbound. pfa_gap_prefix_add_left_sourceoperationresultbound + S (pfp_value_prefix_add_left_source) = (p)) /\ ((exists pfa_offset_left_prefix_add_left_sourceoperationresultcongruence pfa_offset_right_prefix_add_left_sourceoperationresultcongruence. ((pfp_left_prefix_add_left_source) + (pfp_right_prefix_add_left_source)) + (p) * pfa_offset_left_prefix_add_left_sourceoperationresultcongruence = (pfp_value_prefix_add_left_source) + (p) * pfa_offset_right_prefix_add_left_sourceoperationresultcongruence)))))))))))))))) -> (forall pfc_index_prefix_add_left_ub. (exists pfa_gap_prefix_add_left_ubbound. pfa_gap_prefix_add_left_ubbound + S (pfc_index_prefix_add_left_ub) = (N)) -> exists pfc_value_prefix_add_left_ub. ((((exists ff_h_pfp_prefix_add_left_ubentry. ff_h_pfp_prefix_add_left_ubentry + S (pfc_value_prefix_add_left_ub) = S ((S (pfc_index_prefix_add_left_ub)) * uc)) /\ exists ff_q_pfp_prefix_add_left_ubentry. ub = ff_q_pfp_prefix_add_left_ubentry * S ((S (pfc_index_prefix_add_left_ub)) * uc) + (pfc_value_prefix_add_left_ub))) /\ ((exists pfc_terms_code_prefix_add_left_ubcoefficient pfc_terms_scale_prefix_add_left_ubcoefficient pfc_natural_sum_prefix_add_left_ubcoefficient. ((forall pfc_index_prefix_add_left_ubcoefficientdiagonal. (exists pfa_gap_prefix_add_left_ubcoefficientdiagonalbound. pfa_gap_prefix_add_left_ubcoefficientdiagonalbound + S (pfc_index_prefix_add_left_ubcoefficientdiagonal) = (S (pfc_index_prefix_add_left_ub))) -> exists pfc_value_prefix_add_left_ubcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_left_ubcoefficientdiagonalentry. ff_h_pfp_prefix_add_left_ubcoefficientdiagonalentry + S (pfc_value_prefix_add_left_ubcoefficientdiagonal) = S ((S (pfc_index_prefix_add_left_ubcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_ubcoefficient)) /\ exists ff_q_pfp_prefix_add_left_ubcoefficientdiagonalentry. pfc_terms_code_prefix_add_left_ubcoefficient = ff_q_pfp_prefix_add_left_ubcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_left_ubcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_ubcoefficient) + (pfc_value_prefix_add_left_ubcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_left_ubcoefficientdiagonalterm pfc_left_prefix_add_left_ubcoefficientdiagonalterm pfc_right_prefix_add_left_ubcoefficientdiagonalterm. (((pfc_index_prefix_add_left_ubcoefficientdiagonal)+pfc_complement_prefix_add_left_ubcoefficientdiagonalterm=(pfc_index_prefix_add_left_ub)) /\ ((((((exists pfa_gap_prefix_add_left_ubcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_left_ubcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_left_ubcoefficientdiagonal) = (M)) /\ ((((exists ff_h_pfp_prefix_add_left_ubcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_left_ubcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_left_ubcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_left_ubcoefficientdiagonal)) * dc)) /\ exists ff_q_pfp_prefix_add_left_ubcoefficientdiagonaltermleftentry. db = ff_q_pfp_prefix_add_left_ubcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_left_ubcoefficientdiagonal)) * dc) + (pfc_left_prefix_add_left_ubcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_ubcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_left_ubcoefficientdiagonaltermleftoutside+(M)=(pfc_index_prefix_add_left_ubcoefficientdiagonal)) /\ (((pfc_left_prefix_add_left_ubcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_left_ubcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_left_ubcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_left_ubcoefficientdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_prefix_add_left_ubcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_left_ubcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_left_ubcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_left_ubcoefficientdiagonalterm)) * ac)) /\ exists ff_q_pfp_prefix_add_left_ubcoefficientdiagonaltermrightentry. ab = ff_q_pfp_prefix_add_left_ubcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_left_ubcoefficientdiagonalterm)) * ac) + (pfc_right_prefix_add_left_ubcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_ubcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_left_ubcoefficientdiagonaltermrightoutside+(L)=(pfc_complement_prefix_add_left_ubcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_left_ubcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_left_ubcoefficientdiagonal)=pfc_left_prefix_add_left_ubcoefficientdiagonalterm*pfc_right_prefix_add_left_ubcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_left_ubcoefficientsum fs_v_pfc_prefix_add_left_ubcoefficientsum. ((((exists fs_h_pfc_prefix_add_left_ubcoefficientsum_body_start. fs_h_pfc_prefix_add_left_ubcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_left_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_ubcoefficientsum_body_start. fs_u_pfc_prefix_add_left_ubcoefficientsum = fs_q_pfc_prefix_add_left_ubcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_left_ubcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_left_ubcoefficientsum_body_terminal. fs_h_pfc_prefix_add_left_ubcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_left_ubcoefficient) = S ((S (S (pfc_index_prefix_add_left_ub))) * fs_v_pfc_prefix_add_left_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_ubcoefficientsum_body_terminal. fs_u_pfc_prefix_add_left_ubcoefficientsum = fs_q_pfc_prefix_add_left_ubcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_left_ub))) * fs_v_pfc_prefix_add_left_ubcoefficientsum) + (pfc_natural_sum_prefix_add_left_ubcoefficient))) /\ forall fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_left_ubcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_left_ubcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps = S (pfc_index_prefix_add_left_ub)) -> exists fs_a_pfc_prefix_add_left_ubcoefficientsum_body_steps fs_r_pfc_prefix_add_left_ubcoefficientsum_body_steps fs_s_pfc_prefix_add_left_ubcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_left_ubcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_ubcoefficient)) /\ exists fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_left_ubcoefficient = fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_ubcoefficient) + (fs_a_pfc_prefix_add_left_ubcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_left_ubcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_left_ubcoefficientsum = fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_ubcoefficientsum) + (fs_r_pfc_prefix_add_left_ubcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_left_ubcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_left_ubcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_left_ubcoefficientsum = fs_q_pfc_prefix_add_left_ubcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_left_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_ubcoefficientsum) + (fs_s_pfc_prefix_add_left_ubcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_left_ubcoefficientsum_body_steps = fs_r_pfc_prefix_add_left_ubcoefficientsum_body_steps + fs_a_pfc_prefix_add_left_ubcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_left_ubcoefficientresiduebound. pfa_gap_prefix_add_left_ubcoefficientresiduebound + S (pfc_value_prefix_add_left_ub) = (p)) /\ ((exists pfa_offset_left_prefix_add_left_ubcoefficientresiduecongruence pfa_offset_right_prefix_add_left_ubcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_left_ubcoefficient) + (p) * pfa_offset_left_prefix_add_left_ubcoefficientresiduecongruence = (pfc_value_prefix_add_left_ub) + (p) * pfa_offset_right_prefix_add_left_ubcoefficientresiduecongruence)))))))))))) -> (forall pfc_index_prefix_add_left_vb. (exists pfa_gap_prefix_add_left_vbbound. pfa_gap_prefix_add_left_vbbound + S (pfc_index_prefix_add_left_vb) = (N)) -> exists pfc_value_prefix_add_left_vb. ((((exists ff_h_pfp_prefix_add_left_vbentry. ff_h_pfp_prefix_add_left_vbentry + S (pfc_value_prefix_add_left_vb) = S ((S (pfc_index_prefix_add_left_vb)) * vc)) /\ exists ff_q_pfp_prefix_add_left_vbentry. vb = ff_q_pfp_prefix_add_left_vbentry * S ((S (pfc_index_prefix_add_left_vb)) * vc) + (pfc_value_prefix_add_left_vb))) /\ ((exists pfc_terms_code_prefix_add_left_vbcoefficient pfc_terms_scale_prefix_add_left_vbcoefficient pfc_natural_sum_prefix_add_left_vbcoefficient. ((forall pfc_index_prefix_add_left_vbcoefficientdiagonal. (exists pfa_gap_prefix_add_left_vbcoefficientdiagonalbound. pfa_gap_prefix_add_left_vbcoefficientdiagonalbound + S (pfc_index_prefix_add_left_vbcoefficientdiagonal) = (S (pfc_index_prefix_add_left_vb))) -> exists pfc_value_prefix_add_left_vbcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_left_vbcoefficientdiagonalentry. ff_h_pfp_prefix_add_left_vbcoefficientdiagonalentry + S (pfc_value_prefix_add_left_vbcoefficientdiagonal) = S ((S (pfc_index_prefix_add_left_vbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_vbcoefficient)) /\ exists ff_q_pfp_prefix_add_left_vbcoefficientdiagonalentry. pfc_terms_code_prefix_add_left_vbcoefficient = ff_q_pfp_prefix_add_left_vbcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_left_vbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_vbcoefficient) + (pfc_value_prefix_add_left_vbcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_left_vbcoefficientdiagonalterm pfc_left_prefix_add_left_vbcoefficientdiagonalterm pfc_right_prefix_add_left_vbcoefficientdiagonalterm. (((pfc_index_prefix_add_left_vbcoefficientdiagonal)+pfc_complement_prefix_add_left_vbcoefficientdiagonalterm=(pfc_index_prefix_add_left_vb)) /\ ((((((exists pfa_gap_prefix_add_left_vbcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_left_vbcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_left_vbcoefficientdiagonal) = (M)) /\ ((((exists ff_h_pfp_prefix_add_left_vbcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_left_vbcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_left_vbcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_left_vbcoefficientdiagonal)) * dc)) /\ exists ff_q_pfp_prefix_add_left_vbcoefficientdiagonaltermleftentry. db = ff_q_pfp_prefix_add_left_vbcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_left_vbcoefficientdiagonal)) * dc) + (pfc_left_prefix_add_left_vbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_vbcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_left_vbcoefficientdiagonaltermleftoutside+(M)=(pfc_index_prefix_add_left_vbcoefficientdiagonal)) /\ (((pfc_left_prefix_add_left_vbcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_left_vbcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_left_vbcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_left_vbcoefficientdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_prefix_add_left_vbcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_left_vbcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_left_vbcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_left_vbcoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_prefix_add_left_vbcoefficientdiagonaltermrightentry. bb = ff_q_pfp_prefix_add_left_vbcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_left_vbcoefficientdiagonalterm)) * bc) + (pfc_right_prefix_add_left_vbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_vbcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_left_vbcoefficientdiagonaltermrightoutside+(L)=(pfc_complement_prefix_add_left_vbcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_left_vbcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_left_vbcoefficientdiagonal)=pfc_left_prefix_add_left_vbcoefficientdiagonalterm*pfc_right_prefix_add_left_vbcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_left_vbcoefficientsum fs_v_pfc_prefix_add_left_vbcoefficientsum. ((((exists fs_h_pfc_prefix_add_left_vbcoefficientsum_body_start. fs_h_pfc_prefix_add_left_vbcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_left_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_vbcoefficientsum_body_start. fs_u_pfc_prefix_add_left_vbcoefficientsum = fs_q_pfc_prefix_add_left_vbcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_left_vbcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_left_vbcoefficientsum_body_terminal. fs_h_pfc_prefix_add_left_vbcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_left_vbcoefficient) = S ((S (S (pfc_index_prefix_add_left_vb))) * fs_v_pfc_prefix_add_left_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_vbcoefficientsum_body_terminal. fs_u_pfc_prefix_add_left_vbcoefficientsum = fs_q_pfc_prefix_add_left_vbcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_left_vb))) * fs_v_pfc_prefix_add_left_vbcoefficientsum) + (pfc_natural_sum_prefix_add_left_vbcoefficient))) /\ forall fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_left_vbcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_left_vbcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps = S (pfc_index_prefix_add_left_vb)) -> exists fs_a_pfc_prefix_add_left_vbcoefficientsum_body_steps fs_r_pfc_prefix_add_left_vbcoefficientsum_body_steps fs_s_pfc_prefix_add_left_vbcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_left_vbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_vbcoefficient)) /\ exists fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_left_vbcoefficient = fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_vbcoefficient) + (fs_a_pfc_prefix_add_left_vbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_left_vbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_left_vbcoefficientsum = fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_vbcoefficientsum) + (fs_r_pfc_prefix_add_left_vbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_left_vbcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_left_vbcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_left_vbcoefficientsum = fs_q_pfc_prefix_add_left_vbcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_left_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_vbcoefficientsum) + (fs_s_pfc_prefix_add_left_vbcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_left_vbcoefficientsum_body_steps = fs_r_pfc_prefix_add_left_vbcoefficientsum_body_steps + fs_a_pfc_prefix_add_left_vbcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_left_vbcoefficientresiduebound. pfa_gap_prefix_add_left_vbcoefficientresiduebound + S (pfc_value_prefix_add_left_vb) = (p)) /\ ((exists pfa_offset_left_prefix_add_left_vbcoefficientresiduecongruence pfa_offset_right_prefix_add_left_vbcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_left_vbcoefficient) + (p) * pfa_offset_left_prefix_add_left_vbcoefficientresiduecongruence = (pfc_value_prefix_add_left_vb) + (p) * pfa_offset_right_prefix_add_left_vbcoefficientresiduecongruence)))))))))))) -> (forall pfc_index_prefix_add_left_wb. (exists pfa_gap_prefix_add_left_wbbound. pfa_gap_prefix_add_left_wbbound + S (pfc_index_prefix_add_left_wb) = (N)) -> exists pfc_value_prefix_add_left_wb. ((((exists ff_h_pfp_prefix_add_left_wbentry. ff_h_pfp_prefix_add_left_wbentry + S (pfc_value_prefix_add_left_wb) = S ((S (pfc_index_prefix_add_left_wb)) * wc)) /\ exists ff_q_pfp_prefix_add_left_wbentry. wb = ff_q_pfp_prefix_add_left_wbentry * S ((S (pfc_index_prefix_add_left_wb)) * wc) + (pfc_value_prefix_add_left_wb))) /\ ((exists pfc_terms_code_prefix_add_left_wbcoefficient pfc_terms_scale_prefix_add_left_wbcoefficient pfc_natural_sum_prefix_add_left_wbcoefficient. ((forall pfc_index_prefix_add_left_wbcoefficientdiagonal. (exists pfa_gap_prefix_add_left_wbcoefficientdiagonalbound. pfa_gap_prefix_add_left_wbcoefficientdiagonalbound + S (pfc_index_prefix_add_left_wbcoefficientdiagonal) = (S (pfc_index_prefix_add_left_wb))) -> exists pfc_value_prefix_add_left_wbcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_left_wbcoefficientdiagonalentry. ff_h_pfp_prefix_add_left_wbcoefficientdiagonalentry + S (pfc_value_prefix_add_left_wbcoefficientdiagonal) = S ((S (pfc_index_prefix_add_left_wbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_wbcoefficient)) /\ exists ff_q_pfp_prefix_add_left_wbcoefficientdiagonalentry. pfc_terms_code_prefix_add_left_wbcoefficient = ff_q_pfp_prefix_add_left_wbcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_left_wbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_left_wbcoefficient) + (pfc_value_prefix_add_left_wbcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_left_wbcoefficientdiagonalterm pfc_left_prefix_add_left_wbcoefficientdiagonalterm pfc_right_prefix_add_left_wbcoefficientdiagonalterm. (((pfc_index_prefix_add_left_wbcoefficientdiagonal)+pfc_complement_prefix_add_left_wbcoefficientdiagonalterm=(pfc_index_prefix_add_left_wb)) /\ ((((((exists pfa_gap_prefix_add_left_wbcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_left_wbcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_left_wbcoefficientdiagonal) = (M)) /\ ((((exists ff_h_pfp_prefix_add_left_wbcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_left_wbcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_left_wbcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_left_wbcoefficientdiagonal)) * dc)) /\ exists ff_q_pfp_prefix_add_left_wbcoefficientdiagonaltermleftentry. db = ff_q_pfp_prefix_add_left_wbcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_left_wbcoefficientdiagonal)) * dc) + (pfc_left_prefix_add_left_wbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_wbcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_left_wbcoefficientdiagonaltermleftoutside+(M)=(pfc_index_prefix_add_left_wbcoefficientdiagonal)) /\ (((pfc_left_prefix_add_left_wbcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_left_wbcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_left_wbcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_left_wbcoefficientdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_prefix_add_left_wbcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_left_wbcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_left_wbcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_left_wbcoefficientdiagonalterm)) * cc)) /\ exists ff_q_pfp_prefix_add_left_wbcoefficientdiagonaltermrightentry. cb = ff_q_pfp_prefix_add_left_wbcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_left_wbcoefficientdiagonalterm)) * cc) + (pfc_right_prefix_add_left_wbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_left_wbcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_left_wbcoefficientdiagonaltermrightoutside+(L)=(pfc_complement_prefix_add_left_wbcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_left_wbcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_left_wbcoefficientdiagonal)=pfc_left_prefix_add_left_wbcoefficientdiagonalterm*pfc_right_prefix_add_left_wbcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_left_wbcoefficientsum fs_v_pfc_prefix_add_left_wbcoefficientsum. ((((exists fs_h_pfc_prefix_add_left_wbcoefficientsum_body_start. fs_h_pfc_prefix_add_left_wbcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_left_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_wbcoefficientsum_body_start. fs_u_pfc_prefix_add_left_wbcoefficientsum = fs_q_pfc_prefix_add_left_wbcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_left_wbcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_left_wbcoefficientsum_body_terminal. fs_h_pfc_prefix_add_left_wbcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_left_wbcoefficient) = S ((S (S (pfc_index_prefix_add_left_wb))) * fs_v_pfc_prefix_add_left_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_wbcoefficientsum_body_terminal. fs_u_pfc_prefix_add_left_wbcoefficientsum = fs_q_pfc_prefix_add_left_wbcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_left_wb))) * fs_v_pfc_prefix_add_left_wbcoefficientsum) + (pfc_natural_sum_prefix_add_left_wbcoefficient))) /\ forall fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_left_wbcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_left_wbcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps = S (pfc_index_prefix_add_left_wb)) -> exists fs_a_pfc_prefix_add_left_wbcoefficientsum_body_steps fs_r_pfc_prefix_add_left_wbcoefficientsum_body_steps fs_s_pfc_prefix_add_left_wbcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_left_wbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_wbcoefficient)) /\ exists fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_left_wbcoefficient = fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_left_wbcoefficient) + (fs_a_pfc_prefix_add_left_wbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_left_wbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_left_wbcoefficientsum = fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_wbcoefficientsum) + (fs_r_pfc_prefix_add_left_wbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_left_wbcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_left_wbcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_left_wbcoefficientsum = fs_q_pfc_prefix_add_left_wbcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_left_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_left_wbcoefficientsum) + (fs_s_pfc_prefix_add_left_wbcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_left_wbcoefficientsum_body_steps = fs_r_pfc_prefix_add_left_wbcoefficientsum_body_steps + fs_a_pfc_prefix_add_left_wbcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_left_wbcoefficientresiduebound. pfa_gap_prefix_add_left_wbcoefficientresiduebound + S (pfc_value_prefix_add_left_wb) = (p)) /\ ((exists pfa_offset_left_prefix_add_left_wbcoefficientresiduecongruence pfa_offset_right_prefix_add_left_wbcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_left_wbcoefficient) + (p) * pfa_offset_left_prefix_add_left_wbcoefficientresiduecongruence = (pfc_value_prefix_add_left_wb) + (p) * pfa_offset_right_prefix_add_left_wbcoefficientresiduecongruence)))))))))))) -> (forall pfp_index_prefix_add_left_result. (exists pfa_gap_prefix_add_left_resultindex. pfa_gap_prefix_add_left_resultindex + S (pfp_index_prefix_add_left_result) = (N)) -> exists pfp_left_prefix_add_left_result pfp_right_prefix_add_left_result pfp_value_prefix_add_left_result. ((((exists ff_h_pfp_prefix_add_left_resultleft. ff_h_pfp_prefix_add_left_resultleft + S (pfp_left_prefix_add_left_result) = S ((S (pfp_index_prefix_add_left_result)) * uc)) /\ exists ff_q_pfp_prefix_add_left_resultleft. ub = ff_q_pfp_prefix_add_left_resultleft * S ((S (pfp_index_prefix_add_left_result)) * uc) + (pfp_left_prefix_add_left_result))) /\ (((((exists ff_h_pfp_prefix_add_left_resultright. ff_h_pfp_prefix_add_left_resultright + S (pfp_right_prefix_add_left_result) = S ((S (pfp_index_prefix_add_left_result)) * vc)) /\ exists ff_q_pfp_prefix_add_left_resultright. vb = ff_q_pfp_prefix_add_left_resultright * S ((S (pfp_index_prefix_add_left_result)) * vc) + (pfp_right_prefix_add_left_result))) /\ (((((exists ff_h_pfp_prefix_add_left_resulttarget. ff_h_pfp_prefix_add_left_resulttarget + S (pfp_value_prefix_add_left_result) = S ((S (pfp_index_prefix_add_left_result)) * wc)) /\ exists ff_q_pfp_prefix_add_left_resulttarget. wb = ff_q_pfp_prefix_add_left_resulttarget * S ((S (pfp_index_prefix_add_left_result)) * wc) + (pfp_value_prefix_add_left_result))) /\ ((((exists pfa_gap_prefix_add_left_resultoperationleft. pfa_gap_prefix_add_left_resultoperationleft + S (pfp_left_prefix_add_left_result) = (p)) /\ (((exists pfa_gap_prefix_add_left_resultoperationright. pfa_gap_prefix_add_left_resultoperationright + S (pfp_right_prefix_add_left_result) = (p)) /\ ((((exists pfa_gap_prefix_add_left_resultoperationresultbound. pfa_gap_prefix_add_left_resultoperationresultbound + S (pfp_value_prefix_add_left_result) = (p)) /\ ((exists pfa_offset_left_prefix_add_left_resultoperationresultcongruence pfa_offset_right_prefix_add_left_resultoperationresultcongruence. ((pfp_left_prefix_add_left_result) + (pfp_right_prefix_add_left_result)) + (p) * pfa_offset_left_prefix_add_left_resultoperationresultcongruence = (pfp_value_prefix_add_left_result) + (p) * pfa_offset_right_prefix_add_left_resultoperationresultcongruence))))))))))))))))

Complete tactic proof in conservative notation

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

71 script commands · 18 reading checkpoints · 3 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 (1)
01Fix variables and assumptionsL1–10

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

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

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

  1. L11
    intro M
  2. L12
    intro ub
  3. L13
    intro uc
  4. L14
    intro vb
  5. L15
    intro vc
  6. L16
    intro wb
  7. L17
    intro wc
  8. L18
    intro N
  9. L19
    intro hs
  10. L20
    intro hu
03Fix variables and assumptionsL21–24

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

  1. L21
    intro hv
  2. L22
    intro hw
  3. L23
    intro i
  4. L24
    intro hi
04Establish hcuL25–28

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

  1. L25
    have hcu : ∃ r. BetaAt(ub,uc,i,r) ∧ FpConvolutionCoefficient(p,db,dc,M,ab,ac,L,i,r)Definitions: BetaAt(ub,uc,i,r)FpConvolutionCoefficient(p,db,dc,M,ab,ac,L,i,r)Original native command in the exact edition
  2. L26
    specialize hu (i)
  3. L27
    apply hu
  4. L28
    exact hi
05Separate the logical casesL29–30

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

  1. L29
    cases hcu
  2. L30
    cases hcu_witness
06Establish hcvL31–34

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

  1. L31
    have hcv : ∃ r. BetaAt(vb,vc,i,r) ∧ FpConvolutionCoefficient(p,db,dc,M,bb,bc,L,i,r)Definitions: BetaAt(vb,vc,i,r)FpConvolutionCoefficient(p,db,dc,M,bb,bc,L,i,r)Original native command in the exact edition
  2. L32
    specialize hv (i)
  3. L33
    apply hv
  4. L34
    exact hi
07Separate the logical casesL35–36

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

  1. L35
    cases hcv
  2. L36
    cases hcv_witness
08Establish hcwL37–40

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

  1. L37
    have hcw : ∃ r. BetaAt(wb,wc,i,r) ∧ FpConvolutionCoefficient(p,db,dc,M,cb,cc,L,i,r)Definitions: BetaAt(wb,wc,i,r)FpConvolutionCoefficient(p,db,dc,M,cb,cc,L,i,r)Original native command in the exact edition
  2. L38
    specialize hw (i)
  3. L39
    apply hw
  4. L40
    exact hi
09Separate the logical casesL41–42

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

  1. L41
    cases hcw
  2. L42
    cases hcw_witness
10Construct an explicit witnessL43–45

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

  1. L43
    exists x
  2. L44
    exists x1
  3. L45
    exists x2
11Separate the logical casesL46–46

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

  1. L46
    split
12Use earlier factsL47–47

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

  1. L47
    exact hcu_witness_left
13Separate the logical casesL48–48

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

  1. L48
    split
14Use earlier factsL49–49

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

  1. L49
    exact hcv_witness_left
15Separate the logical casesL50–50

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

  1. L50
    split
16Use earlier factsL51–60

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

  1. L51
    exact hcw_witness_left
  2. L52
    specialize prime_field_convolution_coefficient_left_add (p)
  3. L53
    specialize prime_field_convolution_coefficient_left_add (ab)
  4. L54
    specialize prime_field_convolution_coefficient_left_add (ac)
  5. L55
    specialize prime_field_convolution_coefficient_left_add (bb)
  6. L56
    specialize prime_field_convolution_coefficient_left_add (bc)
  7. L57
    specialize prime_field_convolution_coefficient_left_add (cb)
  8. L58
    specialize prime_field_convolution_coefficient_left_add (cc)
  9. L59
    specialize prime_field_convolution_coefficient_left_add (L)
  10. L60
    specialize prime_field_convolution_coefficient_left_add (db)
17Use earlier factsL61–70

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

  1. L61
    specialize prime_field_convolution_coefficient_left_add (dc)
  2. L62
    specialize prime_field_convolution_coefficient_left_add (M)
  3. L63
    specialize prime_field_convolution_coefficient_left_add (i)
  4. L64
    specialize prime_field_convolution_coefficient_left_add (x)
  5. L65
    specialize prime_field_convolution_coefficient_left_add (x1)
  6. L66
    specialize prime_field_convolution_coefficient_left_add (x2)
  7. L67
    apply prime_field_convolution_coefficient_left_add
  8. L68
    exact hs
  9. L69
    exact hcu_witness_right
  10. L70
    exact hcv_witness_right
18Use earlier factsL71–71

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

  1. L71
    exact hcw_witness_right

Library-wide reading audit

Original defined command ledger · 71 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro bb
  5. 0005intro bc
  6. 0006intro cb
  7. 0007intro cc
  8. 0008intro L
  9. 0009intro db
  10. 0010intro dc
  11. 0011intro M
  12. 0012intro ub
  13. 0013intro uc
  14. 0014intro vb
  15. 0015intro vc
  16. 0016intro wb
  17. 0017intro wc
  18. 0018intro N
  19. 0019intro hs
  20. 0020intro hu
  21. 0021intro hv
  22. 0022intro hw
  23. 0023intro i
  24. 0024intro hi
  25. 0025have hcu : ∃ r. BetaAt(ub,uc,i,r)FpConvolutionCoefficient(p,db,dc,M,ab,ac,L,i,r)
  26. 0026specialize hu (i)
  27. 0027apply hu
  28. 0028exact hi
  29. 0029cases hcu
  30. 0030cases hcu_witness
  31. 0031have hcv : ∃ r. BetaAt(vb,vc,i,r)FpConvolutionCoefficient(p,db,dc,M,bb,bc,L,i,r)
  32. 0032specialize hv (i)
  33. 0033apply hv
  34. 0034exact hi
  35. 0035cases hcv
  36. 0036cases hcv_witness
  37. 0037have hcw : ∃ r. BetaAt(wb,wc,i,r)FpConvolutionCoefficient(p,db,dc,M,cb,cc,L,i,r)
  38. 0038specialize hw (i)
  39. 0039apply hw
  40. 0040exact hi
  41. 0041cases hcw
  42. 0042cases hcw_witness
  43. 0043exists x
  44. 0044exists x1
  45. 0045exists x2
  46. 0046split
  47. 0047exact hcu_witness_left
  48. 0048split
  49. 0049exact hcv_witness_left
  50. 0050split
  51. 0051exact hcw_witness_left
  52. 0052specialize prime_field_convolution_coefficient_left_add (p)
  53. 0053specialize prime_field_convolution_coefficient_left_add (ab)
  54. 0054specialize prime_field_convolution_coefficient_left_add (ac)
  55. 0055specialize prime_field_convolution_coefficient_left_add (bb)
  56. 0056specialize prime_field_convolution_coefficient_left_add (bc)
  57. 0057specialize prime_field_convolution_coefficient_left_add (cb)
  58. 0058specialize prime_field_convolution_coefficient_left_add (cc)
  59. 0059specialize prime_field_convolution_coefficient_left_add (L)
  60. 0060specialize prime_field_convolution_coefficient_left_add (db)
  61. 0061specialize prime_field_convolution_coefficient_left_add (dc)
  62. 0062specialize prime_field_convolution_coefficient_left_add (M)
  63. 0063specialize prime_field_convolution_coefficient_left_add (i)
  64. 0064specialize prime_field_convolution_coefficient_left_add (x)
  65. 0065specialize prime_field_convolution_coefficient_left_add (x1)
  66. 0066specialize prime_field_convolution_coefficient_left_add (x2)
  67. 0067apply prime_field_convolution_coefficient_left_add
  68. 0068exact hs
  69. 0069exact hcu_witness_right
  70. 0070exact hcv_witness_right
  71. 0071exact hcw_witness_right