PX0049

prime_field_convolution_prefix_right_add

Every requested ambient output prefix of the three actual right 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,ab,ac,L,db,dc,M,ub,uc,N)FpConvolutionPrefix(p,bb,bc,L,db,dc,M,vb,vc,N)FpConvolutionPrefix(p,cb,cc,L,db,dc,M,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_right_source. (exists pfa_gap_prefix_add_right_sourceindex. pfa_gap_prefix_add_right_sourceindex + S (pfp_index_prefix_add_right_source) = (L)) -> exists pfp_left_prefix_add_right_source pfp_right_prefix_add_right_source pfp_value_prefix_add_right_source. ((((exists ff_h_pfp_prefix_add_right_sourceleft. ff_h_pfp_prefix_add_right_sourceleft + S (pfp_left_prefix_add_right_source) = S ((S (pfp_index_prefix_add_right_source)) * ac)) /\ exists ff_q_pfp_prefix_add_right_sourceleft. ab = ff_q_pfp_prefix_add_right_sourceleft * S ((S (pfp_index_prefix_add_right_source)) * ac) + (pfp_left_prefix_add_right_source))) /\ (((((exists ff_h_pfp_prefix_add_right_sourceright. ff_h_pfp_prefix_add_right_sourceright + S (pfp_right_prefix_add_right_source) = S ((S (pfp_index_prefix_add_right_source)) * bc)) /\ exists ff_q_pfp_prefix_add_right_sourceright. bb = ff_q_pfp_prefix_add_right_sourceright * S ((S (pfp_index_prefix_add_right_source)) * bc) + (pfp_right_prefix_add_right_source))) /\ (((((exists ff_h_pfp_prefix_add_right_sourcetarget. ff_h_pfp_prefix_add_right_sourcetarget + S (pfp_value_prefix_add_right_source) = S ((S (pfp_index_prefix_add_right_source)) * cc)) /\ exists ff_q_pfp_prefix_add_right_sourcetarget. cb = ff_q_pfp_prefix_add_right_sourcetarget * S ((S (pfp_index_prefix_add_right_source)) * cc) + (pfp_value_prefix_add_right_source))) /\ ((((exists pfa_gap_prefix_add_right_sourceoperationleft. pfa_gap_prefix_add_right_sourceoperationleft + S (pfp_left_prefix_add_right_source) = (p)) /\ (((exists pfa_gap_prefix_add_right_sourceoperationright. pfa_gap_prefix_add_right_sourceoperationright + S (pfp_right_prefix_add_right_source) = (p)) /\ ((((exists pfa_gap_prefix_add_right_sourceoperationresultbound. pfa_gap_prefix_add_right_sourceoperationresultbound + S (pfp_value_prefix_add_right_source) = (p)) /\ ((exists pfa_offset_left_prefix_add_right_sourceoperationresultcongruence pfa_offset_right_prefix_add_right_sourceoperationresultcongruence. ((pfp_left_prefix_add_right_source) + (pfp_right_prefix_add_right_source)) + (p) * pfa_offset_left_prefix_add_right_sourceoperationresultcongruence = (pfp_value_prefix_add_right_source) + (p) * pfa_offset_right_prefix_add_right_sourceoperationresultcongruence)))))))))))))))) -> (forall pfc_index_prefix_add_right_ub. (exists pfa_gap_prefix_add_right_ubbound. pfa_gap_prefix_add_right_ubbound + S (pfc_index_prefix_add_right_ub) = (N)) -> exists pfc_value_prefix_add_right_ub. ((((exists ff_h_pfp_prefix_add_right_ubentry. ff_h_pfp_prefix_add_right_ubentry + S (pfc_value_prefix_add_right_ub) = S ((S (pfc_index_prefix_add_right_ub)) * uc)) /\ exists ff_q_pfp_prefix_add_right_ubentry. ub = ff_q_pfp_prefix_add_right_ubentry * S ((S (pfc_index_prefix_add_right_ub)) * uc) + (pfc_value_prefix_add_right_ub))) /\ ((exists pfc_terms_code_prefix_add_right_ubcoefficient pfc_terms_scale_prefix_add_right_ubcoefficient pfc_natural_sum_prefix_add_right_ubcoefficient. ((forall pfc_index_prefix_add_right_ubcoefficientdiagonal. (exists pfa_gap_prefix_add_right_ubcoefficientdiagonalbound. pfa_gap_prefix_add_right_ubcoefficientdiagonalbound + S (pfc_index_prefix_add_right_ubcoefficientdiagonal) = (S (pfc_index_prefix_add_right_ub))) -> exists pfc_value_prefix_add_right_ubcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_right_ubcoefficientdiagonalentry. ff_h_pfp_prefix_add_right_ubcoefficientdiagonalentry + S (pfc_value_prefix_add_right_ubcoefficientdiagonal) = S ((S (pfc_index_prefix_add_right_ubcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_ubcoefficient)) /\ exists ff_q_pfp_prefix_add_right_ubcoefficientdiagonalentry. pfc_terms_code_prefix_add_right_ubcoefficient = ff_q_pfp_prefix_add_right_ubcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_right_ubcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_ubcoefficient) + (pfc_value_prefix_add_right_ubcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_right_ubcoefficientdiagonalterm pfc_left_prefix_add_right_ubcoefficientdiagonalterm pfc_right_prefix_add_right_ubcoefficientdiagonalterm. (((pfc_index_prefix_add_right_ubcoefficientdiagonal)+pfc_complement_prefix_add_right_ubcoefficientdiagonalterm=(pfc_index_prefix_add_right_ub)) /\ ((((((exists pfa_gap_prefix_add_right_ubcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_right_ubcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_right_ubcoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_prefix_add_right_ubcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_right_ubcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_right_ubcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_right_ubcoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_prefix_add_right_ubcoefficientdiagonaltermleftentry. ab = ff_q_pfp_prefix_add_right_ubcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_right_ubcoefficientdiagonal)) * ac) + (pfc_left_prefix_add_right_ubcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_ubcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_right_ubcoefficientdiagonaltermleftoutside+(L)=(pfc_index_prefix_add_right_ubcoefficientdiagonal)) /\ (((pfc_left_prefix_add_right_ubcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_right_ubcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_right_ubcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_right_ubcoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_prefix_add_right_ubcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_right_ubcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_right_ubcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_right_ubcoefficientdiagonalterm)) * dc)) /\ exists ff_q_pfp_prefix_add_right_ubcoefficientdiagonaltermrightentry. db = ff_q_pfp_prefix_add_right_ubcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_right_ubcoefficientdiagonalterm)) * dc) + (pfc_right_prefix_add_right_ubcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_ubcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_right_ubcoefficientdiagonaltermrightoutside+(M)=(pfc_complement_prefix_add_right_ubcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_right_ubcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_right_ubcoefficientdiagonal)=pfc_left_prefix_add_right_ubcoefficientdiagonalterm*pfc_right_prefix_add_right_ubcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_right_ubcoefficientsum fs_v_pfc_prefix_add_right_ubcoefficientsum. ((((exists fs_h_pfc_prefix_add_right_ubcoefficientsum_body_start. fs_h_pfc_prefix_add_right_ubcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_right_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_ubcoefficientsum_body_start. fs_u_pfc_prefix_add_right_ubcoefficientsum = fs_q_pfc_prefix_add_right_ubcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_right_ubcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_right_ubcoefficientsum_body_terminal. fs_h_pfc_prefix_add_right_ubcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_right_ubcoefficient) = S ((S (S (pfc_index_prefix_add_right_ub))) * fs_v_pfc_prefix_add_right_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_ubcoefficientsum_body_terminal. fs_u_pfc_prefix_add_right_ubcoefficientsum = fs_q_pfc_prefix_add_right_ubcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_right_ub))) * fs_v_pfc_prefix_add_right_ubcoefficientsum) + (pfc_natural_sum_prefix_add_right_ubcoefficient))) /\ forall fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_right_ubcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_right_ubcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps = S (pfc_index_prefix_add_right_ub)) -> exists fs_a_pfc_prefix_add_right_ubcoefficientsum_body_steps fs_r_pfc_prefix_add_right_ubcoefficientsum_body_steps fs_s_pfc_prefix_add_right_ubcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_right_ubcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_ubcoefficient)) /\ exists fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_right_ubcoefficient = fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_ubcoefficient) + (fs_a_pfc_prefix_add_right_ubcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_right_ubcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_right_ubcoefficientsum = fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_ubcoefficientsum) + (fs_r_pfc_prefix_add_right_ubcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_right_ubcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_right_ubcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_ubcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_right_ubcoefficientsum = fs_q_pfc_prefix_add_right_ubcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_right_ubcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_ubcoefficientsum) + (fs_s_pfc_prefix_add_right_ubcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_right_ubcoefficientsum_body_steps = fs_r_pfc_prefix_add_right_ubcoefficientsum_body_steps + fs_a_pfc_prefix_add_right_ubcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_right_ubcoefficientresiduebound. pfa_gap_prefix_add_right_ubcoefficientresiduebound + S (pfc_value_prefix_add_right_ub) = (p)) /\ ((exists pfa_offset_left_prefix_add_right_ubcoefficientresiduecongruence pfa_offset_right_prefix_add_right_ubcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_right_ubcoefficient) + (p) * pfa_offset_left_prefix_add_right_ubcoefficientresiduecongruence = (pfc_value_prefix_add_right_ub) + (p) * pfa_offset_right_prefix_add_right_ubcoefficientresiduecongruence)))))))))))) -> (forall pfc_index_prefix_add_right_vb. (exists pfa_gap_prefix_add_right_vbbound. pfa_gap_prefix_add_right_vbbound + S (pfc_index_prefix_add_right_vb) = (N)) -> exists pfc_value_prefix_add_right_vb. ((((exists ff_h_pfp_prefix_add_right_vbentry. ff_h_pfp_prefix_add_right_vbentry + S (pfc_value_prefix_add_right_vb) = S ((S (pfc_index_prefix_add_right_vb)) * vc)) /\ exists ff_q_pfp_prefix_add_right_vbentry. vb = ff_q_pfp_prefix_add_right_vbentry * S ((S (pfc_index_prefix_add_right_vb)) * vc) + (pfc_value_prefix_add_right_vb))) /\ ((exists pfc_terms_code_prefix_add_right_vbcoefficient pfc_terms_scale_prefix_add_right_vbcoefficient pfc_natural_sum_prefix_add_right_vbcoefficient. ((forall pfc_index_prefix_add_right_vbcoefficientdiagonal. (exists pfa_gap_prefix_add_right_vbcoefficientdiagonalbound. pfa_gap_prefix_add_right_vbcoefficientdiagonalbound + S (pfc_index_prefix_add_right_vbcoefficientdiagonal) = (S (pfc_index_prefix_add_right_vb))) -> exists pfc_value_prefix_add_right_vbcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_right_vbcoefficientdiagonalentry. ff_h_pfp_prefix_add_right_vbcoefficientdiagonalentry + S (pfc_value_prefix_add_right_vbcoefficientdiagonal) = S ((S (pfc_index_prefix_add_right_vbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_vbcoefficient)) /\ exists ff_q_pfp_prefix_add_right_vbcoefficientdiagonalentry. pfc_terms_code_prefix_add_right_vbcoefficient = ff_q_pfp_prefix_add_right_vbcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_right_vbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_vbcoefficient) + (pfc_value_prefix_add_right_vbcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_right_vbcoefficientdiagonalterm pfc_left_prefix_add_right_vbcoefficientdiagonalterm pfc_right_prefix_add_right_vbcoefficientdiagonalterm. (((pfc_index_prefix_add_right_vbcoefficientdiagonal)+pfc_complement_prefix_add_right_vbcoefficientdiagonalterm=(pfc_index_prefix_add_right_vb)) /\ ((((((exists pfa_gap_prefix_add_right_vbcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_right_vbcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_right_vbcoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_prefix_add_right_vbcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_right_vbcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_right_vbcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_right_vbcoefficientdiagonal)) * bc)) /\ exists ff_q_pfp_prefix_add_right_vbcoefficientdiagonaltermleftentry. bb = ff_q_pfp_prefix_add_right_vbcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_right_vbcoefficientdiagonal)) * bc) + (pfc_left_prefix_add_right_vbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_vbcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_right_vbcoefficientdiagonaltermleftoutside+(L)=(pfc_index_prefix_add_right_vbcoefficientdiagonal)) /\ (((pfc_left_prefix_add_right_vbcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_right_vbcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_right_vbcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_right_vbcoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_prefix_add_right_vbcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_right_vbcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_right_vbcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_right_vbcoefficientdiagonalterm)) * dc)) /\ exists ff_q_pfp_prefix_add_right_vbcoefficientdiagonaltermrightentry. db = ff_q_pfp_prefix_add_right_vbcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_right_vbcoefficientdiagonalterm)) * dc) + (pfc_right_prefix_add_right_vbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_vbcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_right_vbcoefficientdiagonaltermrightoutside+(M)=(pfc_complement_prefix_add_right_vbcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_right_vbcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_right_vbcoefficientdiagonal)=pfc_left_prefix_add_right_vbcoefficientdiagonalterm*pfc_right_prefix_add_right_vbcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_right_vbcoefficientsum fs_v_pfc_prefix_add_right_vbcoefficientsum. ((((exists fs_h_pfc_prefix_add_right_vbcoefficientsum_body_start. fs_h_pfc_prefix_add_right_vbcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_right_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_vbcoefficientsum_body_start. fs_u_pfc_prefix_add_right_vbcoefficientsum = fs_q_pfc_prefix_add_right_vbcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_right_vbcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_right_vbcoefficientsum_body_terminal. fs_h_pfc_prefix_add_right_vbcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_right_vbcoefficient) = S ((S (S (pfc_index_prefix_add_right_vb))) * fs_v_pfc_prefix_add_right_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_vbcoefficientsum_body_terminal. fs_u_pfc_prefix_add_right_vbcoefficientsum = fs_q_pfc_prefix_add_right_vbcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_right_vb))) * fs_v_pfc_prefix_add_right_vbcoefficientsum) + (pfc_natural_sum_prefix_add_right_vbcoefficient))) /\ forall fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_right_vbcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_right_vbcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps = S (pfc_index_prefix_add_right_vb)) -> exists fs_a_pfc_prefix_add_right_vbcoefficientsum_body_steps fs_r_pfc_prefix_add_right_vbcoefficientsum_body_steps fs_s_pfc_prefix_add_right_vbcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_right_vbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_vbcoefficient)) /\ exists fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_right_vbcoefficient = fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_vbcoefficient) + (fs_a_pfc_prefix_add_right_vbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_right_vbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_right_vbcoefficientsum = fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_vbcoefficientsum) + (fs_r_pfc_prefix_add_right_vbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_right_vbcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_right_vbcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_vbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_right_vbcoefficientsum = fs_q_pfc_prefix_add_right_vbcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_right_vbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_vbcoefficientsum) + (fs_s_pfc_prefix_add_right_vbcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_right_vbcoefficientsum_body_steps = fs_r_pfc_prefix_add_right_vbcoefficientsum_body_steps + fs_a_pfc_prefix_add_right_vbcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_right_vbcoefficientresiduebound. pfa_gap_prefix_add_right_vbcoefficientresiduebound + S (pfc_value_prefix_add_right_vb) = (p)) /\ ((exists pfa_offset_left_prefix_add_right_vbcoefficientresiduecongruence pfa_offset_right_prefix_add_right_vbcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_right_vbcoefficient) + (p) * pfa_offset_left_prefix_add_right_vbcoefficientresiduecongruence = (pfc_value_prefix_add_right_vb) + (p) * pfa_offset_right_prefix_add_right_vbcoefficientresiduecongruence)))))))))))) -> (forall pfc_index_prefix_add_right_wb. (exists pfa_gap_prefix_add_right_wbbound. pfa_gap_prefix_add_right_wbbound + S (pfc_index_prefix_add_right_wb) = (N)) -> exists pfc_value_prefix_add_right_wb. ((((exists ff_h_pfp_prefix_add_right_wbentry. ff_h_pfp_prefix_add_right_wbentry + S (pfc_value_prefix_add_right_wb) = S ((S (pfc_index_prefix_add_right_wb)) * wc)) /\ exists ff_q_pfp_prefix_add_right_wbentry. wb = ff_q_pfp_prefix_add_right_wbentry * S ((S (pfc_index_prefix_add_right_wb)) * wc) + (pfc_value_prefix_add_right_wb))) /\ ((exists pfc_terms_code_prefix_add_right_wbcoefficient pfc_terms_scale_prefix_add_right_wbcoefficient pfc_natural_sum_prefix_add_right_wbcoefficient. ((forall pfc_index_prefix_add_right_wbcoefficientdiagonal. (exists pfa_gap_prefix_add_right_wbcoefficientdiagonalbound. pfa_gap_prefix_add_right_wbcoefficientdiagonalbound + S (pfc_index_prefix_add_right_wbcoefficientdiagonal) = (S (pfc_index_prefix_add_right_wb))) -> exists pfc_value_prefix_add_right_wbcoefficientdiagonal. ((((exists ff_h_pfp_prefix_add_right_wbcoefficientdiagonalentry. ff_h_pfp_prefix_add_right_wbcoefficientdiagonalentry + S (pfc_value_prefix_add_right_wbcoefficientdiagonal) = S ((S (pfc_index_prefix_add_right_wbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_wbcoefficient)) /\ exists ff_q_pfp_prefix_add_right_wbcoefficientdiagonalentry. pfc_terms_code_prefix_add_right_wbcoefficient = ff_q_pfp_prefix_add_right_wbcoefficientdiagonalentry * S ((S (pfc_index_prefix_add_right_wbcoefficientdiagonal)) * pfc_terms_scale_prefix_add_right_wbcoefficient) + (pfc_value_prefix_add_right_wbcoefficientdiagonal))) /\ ((exists pfc_complement_prefix_add_right_wbcoefficientdiagonalterm pfc_left_prefix_add_right_wbcoefficientdiagonalterm pfc_right_prefix_add_right_wbcoefficientdiagonalterm. (((pfc_index_prefix_add_right_wbcoefficientdiagonal)+pfc_complement_prefix_add_right_wbcoefficientdiagonalterm=(pfc_index_prefix_add_right_wb)) /\ ((((((exists pfa_gap_prefix_add_right_wbcoefficientdiagonaltermleftinside. pfa_gap_prefix_add_right_wbcoefficientdiagonaltermleftinside + S (pfc_index_prefix_add_right_wbcoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_prefix_add_right_wbcoefficientdiagonaltermleftentry. ff_h_pfp_prefix_add_right_wbcoefficientdiagonaltermleftentry + S (pfc_left_prefix_add_right_wbcoefficientdiagonalterm) = S ((S (pfc_index_prefix_add_right_wbcoefficientdiagonal)) * cc)) /\ exists ff_q_pfp_prefix_add_right_wbcoefficientdiagonaltermleftentry. cb = ff_q_pfp_prefix_add_right_wbcoefficientdiagonaltermleftentry * S ((S (pfc_index_prefix_add_right_wbcoefficientdiagonal)) * cc) + (pfc_left_prefix_add_right_wbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_wbcoefficientdiagonaltermleftoutside. pfc_gap_prefix_add_right_wbcoefficientdiagonaltermleftoutside+(L)=(pfc_index_prefix_add_right_wbcoefficientdiagonal)) /\ (((pfc_left_prefix_add_right_wbcoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_prefix_add_right_wbcoefficientdiagonaltermrightinside. pfa_gap_prefix_add_right_wbcoefficientdiagonaltermrightinside + S (pfc_complement_prefix_add_right_wbcoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_prefix_add_right_wbcoefficientdiagonaltermrightentry. ff_h_pfp_prefix_add_right_wbcoefficientdiagonaltermrightentry + S (pfc_right_prefix_add_right_wbcoefficientdiagonalterm) = S ((S (pfc_complement_prefix_add_right_wbcoefficientdiagonalterm)) * dc)) /\ exists ff_q_pfp_prefix_add_right_wbcoefficientdiagonaltermrightentry. db = ff_q_pfp_prefix_add_right_wbcoefficientdiagonaltermrightentry * S ((S (pfc_complement_prefix_add_right_wbcoefficientdiagonalterm)) * dc) + (pfc_right_prefix_add_right_wbcoefficientdiagonalterm)))))) \/ (((exists pfc_gap_prefix_add_right_wbcoefficientdiagonaltermrightoutside. pfc_gap_prefix_add_right_wbcoefficientdiagonaltermrightoutside+(M)=(pfc_complement_prefix_add_right_wbcoefficientdiagonalterm)) /\ (((pfc_right_prefix_add_right_wbcoefficientdiagonalterm)=0))))) /\ (((pfc_value_prefix_add_right_wbcoefficientdiagonal)=pfc_left_prefix_add_right_wbcoefficientdiagonalterm*pfc_right_prefix_add_right_wbcoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_prefix_add_right_wbcoefficientsum fs_v_pfc_prefix_add_right_wbcoefficientsum. ((((exists fs_h_pfc_prefix_add_right_wbcoefficientsum_body_start. fs_h_pfc_prefix_add_right_wbcoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_prefix_add_right_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_wbcoefficientsum_body_start. fs_u_pfc_prefix_add_right_wbcoefficientsum = fs_q_pfc_prefix_add_right_wbcoefficientsum_body_start * S ((S (0)) * fs_v_pfc_prefix_add_right_wbcoefficientsum) + (0))) /\ ((((exists fs_h_pfc_prefix_add_right_wbcoefficientsum_body_terminal. fs_h_pfc_prefix_add_right_wbcoefficientsum_body_terminal + S (pfc_natural_sum_prefix_add_right_wbcoefficient) = S ((S (S (pfc_index_prefix_add_right_wb))) * fs_v_pfc_prefix_add_right_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_wbcoefficientsum_body_terminal. fs_u_pfc_prefix_add_right_wbcoefficientsum = fs_q_pfc_prefix_add_right_wbcoefficientsum_body_terminal * S ((S (S (pfc_index_prefix_add_right_wb))) * fs_v_pfc_prefix_add_right_wbcoefficientsum) + (pfc_natural_sum_prefix_add_right_wbcoefficient))) /\ forall fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps. (exists fs_lt_pfc_prefix_add_right_wbcoefficientsum_body_steps_bound. fs_lt_pfc_prefix_add_right_wbcoefficientsum_body_steps_bound + S fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps = S (pfc_index_prefix_add_right_wb)) -> exists fs_a_pfc_prefix_add_right_wbcoefficientsum_body_steps fs_r_pfc_prefix_add_right_wbcoefficientsum_body_steps fs_s_pfc_prefix_add_right_wbcoefficientsum_body_steps. ((((exists fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_summand. fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_summand + S (fs_a_pfc_prefix_add_right_wbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_wbcoefficient)) /\ exists fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_summand. pfc_terms_code_prefix_add_right_wbcoefficient = fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_summand * S ((S (fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * pfc_terms_scale_prefix_add_right_wbcoefficient) + (fs_a_pfc_prefix_add_right_wbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_partial. fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_partial + S (fs_r_pfc_prefix_add_right_wbcoefficientsum_body_steps) = S ((S (fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_partial. fs_u_pfc_prefix_add_right_wbcoefficientsum = fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_partial * S ((S (fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_wbcoefficientsum) + (fs_r_pfc_prefix_add_right_wbcoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_successor. fs_h_pfc_prefix_add_right_wbcoefficientsum_body_steps_successor + S (fs_s_pfc_prefix_add_right_wbcoefficientsum_body_steps) = S ((S (S fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_wbcoefficientsum)) /\ exists fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_successor. fs_u_pfc_prefix_add_right_wbcoefficientsum = fs_q_pfc_prefix_add_right_wbcoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_prefix_add_right_wbcoefficientsum_body_steps)) * fs_v_pfc_prefix_add_right_wbcoefficientsum) + (fs_s_pfc_prefix_add_right_wbcoefficientsum_body_steps))) /\ fs_s_pfc_prefix_add_right_wbcoefficientsum_body_steps = fs_r_pfc_prefix_add_right_wbcoefficientsum_body_steps + fs_a_pfc_prefix_add_right_wbcoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_prefix_add_right_wbcoefficientresiduebound. pfa_gap_prefix_add_right_wbcoefficientresiduebound + S (pfc_value_prefix_add_right_wb) = (p)) /\ ((exists pfa_offset_left_prefix_add_right_wbcoefficientresiduecongruence pfa_offset_right_prefix_add_right_wbcoefficientresiduecongruence. (pfc_natural_sum_prefix_add_right_wbcoefficient) + (p) * pfa_offset_left_prefix_add_right_wbcoefficientresiduecongruence = (pfc_value_prefix_add_right_wb) + (p) * pfa_offset_right_prefix_add_right_wbcoefficientresiduecongruence)))))))))))) -> (forall pfp_index_prefix_add_right_result. (exists pfa_gap_prefix_add_right_resultindex. pfa_gap_prefix_add_right_resultindex + S (pfp_index_prefix_add_right_result) = (N)) -> exists pfp_left_prefix_add_right_result pfp_right_prefix_add_right_result pfp_value_prefix_add_right_result. ((((exists ff_h_pfp_prefix_add_right_resultleft. ff_h_pfp_prefix_add_right_resultleft + S (pfp_left_prefix_add_right_result) = S ((S (pfp_index_prefix_add_right_result)) * uc)) /\ exists ff_q_pfp_prefix_add_right_resultleft. ub = ff_q_pfp_prefix_add_right_resultleft * S ((S (pfp_index_prefix_add_right_result)) * uc) + (pfp_left_prefix_add_right_result))) /\ (((((exists ff_h_pfp_prefix_add_right_resultright. ff_h_pfp_prefix_add_right_resultright + S (pfp_right_prefix_add_right_result) = S ((S (pfp_index_prefix_add_right_result)) * vc)) /\ exists ff_q_pfp_prefix_add_right_resultright. vb = ff_q_pfp_prefix_add_right_resultright * S ((S (pfp_index_prefix_add_right_result)) * vc) + (pfp_right_prefix_add_right_result))) /\ (((((exists ff_h_pfp_prefix_add_right_resulttarget. ff_h_pfp_prefix_add_right_resulttarget + S (pfp_value_prefix_add_right_result) = S ((S (pfp_index_prefix_add_right_result)) * wc)) /\ exists ff_q_pfp_prefix_add_right_resulttarget. wb = ff_q_pfp_prefix_add_right_resulttarget * S ((S (pfp_index_prefix_add_right_result)) * wc) + (pfp_value_prefix_add_right_result))) /\ ((((exists pfa_gap_prefix_add_right_resultoperationleft. pfa_gap_prefix_add_right_resultoperationleft + S (pfp_left_prefix_add_right_result) = (p)) /\ (((exists pfa_gap_prefix_add_right_resultoperationright. pfa_gap_prefix_add_right_resultoperationright + S (pfp_right_prefix_add_right_result) = (p)) /\ ((((exists pfa_gap_prefix_add_right_resultoperationresultbound. pfa_gap_prefix_add_right_resultoperationresultbound + S (pfp_value_prefix_add_right_result) = (p)) /\ ((exists pfa_offset_left_prefix_add_right_resultoperationresultcongruence pfa_offset_right_prefix_add_right_resultoperationresultcongruence. ((pfp_left_prefix_add_right_result) + (pfp_right_prefix_add_right_result)) + (p) * pfa_offset_left_prefix_add_right_resultoperationresultcongruence = (pfp_value_prefix_add_right_result) + (p) * pfa_offset_right_prefix_add_right_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,ab,ac,L,db,dc,M,i,r)Definitions: BetaAt(ub,uc,i,r)FpConvolutionCoefficient(p,ab,ac,L,db,dc,M,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,bb,bc,L,db,dc,M,i,r)Definitions: BetaAt(vb,vc,i,r)FpConvolutionCoefficient(p,bb,bc,L,db,dc,M,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,cb,cc,L,db,dc,M,i,r)Definitions: BetaAt(wb,wc,i,r)FpConvolutionCoefficient(p,cb,cc,L,db,dc,M,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_right_add (p)
  3. L53
    specialize prime_field_convolution_coefficient_right_add (ab)
  4. L54
    specialize prime_field_convolution_coefficient_right_add (ac)
  5. L55
    specialize prime_field_convolution_coefficient_right_add (bb)
  6. L56
    specialize prime_field_convolution_coefficient_right_add (bc)
  7. L57
    specialize prime_field_convolution_coefficient_right_add (cb)
  8. L58
    specialize prime_field_convolution_coefficient_right_add (cc)
  9. L59
    specialize prime_field_convolution_coefficient_right_add (L)
  10. L60
    specialize prime_field_convolution_coefficient_right_add (db)
17Use earlier factsL61–70

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

  1. L61
    specialize prime_field_convolution_coefficient_right_add (dc)
  2. L62
    specialize prime_field_convolution_coefficient_right_add (M)
  3. L63
    specialize prime_field_convolution_coefficient_right_add (i)
  4. L64
    specialize prime_field_convolution_coefficient_right_add (x)
  5. L65
    specialize prime_field_convolution_coefficient_right_add (x1)
  6. L66
    specialize prime_field_convolution_coefficient_right_add (x2)
  7. L67
    apply prime_field_convolution_coefficient_right_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,ab,ac,L,db,dc,M,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,bb,bc,L,db,dc,M,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,cb,cc,L,db,dc,M,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_right_add (p)
  53. 0053specialize prime_field_convolution_coefficient_right_add (ab)
  54. 0054specialize prime_field_convolution_coefficient_right_add (ac)
  55. 0055specialize prime_field_convolution_coefficient_right_add (bb)
  56. 0056specialize prime_field_convolution_coefficient_right_add (bc)
  57. 0057specialize prime_field_convolution_coefficient_right_add (cb)
  58. 0058specialize prime_field_convolution_coefficient_right_add (cc)
  59. 0059specialize prime_field_convolution_coefficient_right_add (L)
  60. 0060specialize prime_field_convolution_coefficient_right_add (db)
  61. 0061specialize prime_field_convolution_coefficient_right_add (dc)
  62. 0062specialize prime_field_convolution_coefficient_right_add (M)
  63. 0063specialize prime_field_convolution_coefficient_right_add (i)
  64. 0064specialize prime_field_convolution_coefficient_right_add (x)
  65. 0065specialize prime_field_convolution_coefficient_right_add (x1)
  66. 0066specialize prime_field_convolution_coefficient_right_add (x2)
  67. 0067apply prime_field_convolution_coefficient_right_add
  68. 0068exact hs
  69. 0069exact hcu_witness_right
  70. 0070exact hcv_witness_right
  71. 0071exact hcw_witness_right