PX0078

prime_field_polynomial_convolution_equivalent_congruent_right

Formal coefficient equivalence of the right factor preserves two actual products at arbitrary representation lengths, including empty factors; actual leading padding is recovered in the appropriate direction.

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. ∀ BB. ∀ BC. ∀ H. ∀ CB. ∀ CC. ∀ K. ¬p = 0 → PolynomialEquivalent(bb,bc,M,BB,BC,H)FpPolyProduct(p,ab,ac,L,bb,bc,M,cb,cc,N)FpPolyProduct(p,ab,ac,L,BB,BC,H,CB,CC,K)PolynomialEquivalent(cb,cc,N,CB,CC,K)

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 BB BC H CB CC K. (~(p=0)) -> (forall pfrep_power_congruent_factor_right pfrep_left_congruent_factor_right pfrep_right_congruent_factor_right. ((exists pfrep_position_congruent_factor_rightfirst. ((pfrep_position_congruent_factor_rightfirst+S (pfrep_power_congruent_factor_right)=(M)) /\ ((((exists ff_h_pfp_congruent_factor_rightfirstentry. ff_h_pfp_congruent_factor_rightfirstentry + S (pfrep_left_congruent_factor_right) = S ((S (pfrep_position_congruent_factor_rightfirst)) * bc)) /\ exists ff_q_pfp_congruent_factor_rightfirstentry. bb = ff_q_pfp_congruent_factor_rightfirstentry * S ((S (pfrep_position_congruent_factor_rightfirst)) * bc) + (pfrep_left_congruent_factor_right)))))) \/ (((exists pfrep_gap_congruent_factor_rightfirstoutside. pfrep_gap_congruent_factor_rightfirstoutside+(M)=(pfrep_power_congruent_factor_right)) /\ (((pfrep_left_congruent_factor_right)=0))))) -> ((exists pfrep_position_congruent_factor_rightsecond. ((pfrep_position_congruent_factor_rightsecond+S (pfrep_power_congruent_factor_right)=(H)) /\ ((((exists ff_h_pfp_congruent_factor_rightsecondentry. ff_h_pfp_congruent_factor_rightsecondentry + S (pfrep_right_congruent_factor_right) = S ((S (pfrep_position_congruent_factor_rightsecond)) * BC)) /\ exists ff_q_pfp_congruent_factor_rightsecondentry. BB = ff_q_pfp_congruent_factor_rightsecondentry * S ((S (pfrep_position_congruent_factor_rightsecond)) * BC) + (pfrep_right_congruent_factor_right)))))) \/ (((exists pfrep_gap_congruent_factor_rightsecondoutside. pfrep_gap_congruent_factor_rightsecondoutside+(H)=(pfrep_power_congruent_factor_right)) /\ (((pfrep_right_congruent_factor_right)=0))))) -> pfrep_left_congruent_factor_right=pfrep_right_congruent_factor_right) -> (((forall fom_index_pfp_congruent_original_rightleft. (exists fom_gap_pfp_congruent_original_rightleft_index_bound. fom_gap_pfp_congruent_original_rightleft_index_bound + S (fom_index_pfp_congruent_original_rightleft) = L) -> exists fom_value_pfp_congruent_original_rightleft. ((((exists fom_beta_height_pfp_congruent_original_rightleft_entry. fom_beta_height_pfp_congruent_original_rightleft_entry + S (fom_value_pfp_congruent_original_rightleft) = S ((S (fom_index_pfp_congruent_original_rightleft)) * ac)) /\ exists fom_beta_quotient_pfp_congruent_original_rightleft_entry. ab = fom_beta_quotient_pfp_congruent_original_rightleft_entry * S ((S (fom_index_pfp_congruent_original_rightleft)) * ac) + (fom_value_pfp_congruent_original_rightleft))) /\ (exists fom_gap_pfp_congruent_original_rightleft_value_bound. fom_gap_pfp_congruent_original_rightleft_value_bound + S (fom_value_pfp_congruent_original_rightleft) = p))) /\ (((forall fom_index_pfp_congruent_original_rightright. (exists fom_gap_pfp_congruent_original_rightright_index_bound. fom_gap_pfp_congruent_original_rightright_index_bound + S (fom_index_pfp_congruent_original_rightright) = M) -> exists fom_value_pfp_congruent_original_rightright. ((((exists fom_beta_height_pfp_congruent_original_rightright_entry. fom_beta_height_pfp_congruent_original_rightright_entry + S (fom_value_pfp_congruent_original_rightright) = S ((S (fom_index_pfp_congruent_original_rightright)) * bc)) /\ exists fom_beta_quotient_pfp_congruent_original_rightright_entry. bb = fom_beta_quotient_pfp_congruent_original_rightright_entry * S ((S (fom_index_pfp_congruent_original_rightright)) * bc) + (fom_value_pfp_congruent_original_rightright))) /\ (exists fom_gap_pfp_congruent_original_rightright_value_bound. fom_gap_pfp_congruent_original_rightright_value_bound + S (fom_value_pfp_congruent_original_rightright) = p))) /\ (((((((L)=0 \/ (M)=0) /\ (((N)=0)))) \/ (((~((L)=0)) /\ (((~((M)=0)) /\ (((L)+(M)=S (N)))))))) /\ ((forall pfc_index_congruent_original_rightcoefficients. (exists pfa_gap_congruent_original_rightcoefficientsbound. pfa_gap_congruent_original_rightcoefficientsbound + S (pfc_index_congruent_original_rightcoefficients) = (N)) -> exists pfc_value_congruent_original_rightcoefficients. ((((exists ff_h_pfp_congruent_original_rightcoefficientsentry. ff_h_pfp_congruent_original_rightcoefficientsentry + S (pfc_value_congruent_original_rightcoefficients) = S ((S (pfc_index_congruent_original_rightcoefficients)) * cc)) /\ exists ff_q_pfp_congruent_original_rightcoefficientsentry. cb = ff_q_pfp_congruent_original_rightcoefficientsentry * S ((S (pfc_index_congruent_original_rightcoefficients)) * cc) + (pfc_value_congruent_original_rightcoefficients))) /\ ((exists pfc_terms_code_congruent_original_rightcoefficientscoefficient pfc_terms_scale_congruent_original_rightcoefficientscoefficient pfc_natural_sum_congruent_original_rightcoefficientscoefficient. ((forall pfc_index_congruent_original_rightcoefficientscoefficientdiagonal. (exists pfa_gap_congruent_original_rightcoefficientscoefficientdiagonalbound. pfa_gap_congruent_original_rightcoefficientscoefficientdiagonalbound + S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal) = (S (pfc_index_congruent_original_rightcoefficients))) -> exists pfc_value_congruent_original_rightcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonalentry. ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonalentry + S (pfc_value_congruent_original_rightcoefficientscoefficientdiagonal) = S ((S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)) * pfc_terms_scale_congruent_original_rightcoefficientscoefficient)) /\ exists ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonalentry. pfc_terms_code_congruent_original_rightcoefficientscoefficient = ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonalentry * S ((S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)) * pfc_terms_scale_congruent_original_rightcoefficientscoefficient) + (pfc_value_congruent_original_rightcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm pfc_left_congruent_original_rightcoefficientscoefficientdiagonalterm pfc_right_congruent_original_rightcoefficientscoefficientdiagonalterm. (((pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)+pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm=(pfc_index_congruent_original_rightcoefficients)) /\ ((((((exists pfa_gap_congruent_original_rightcoefficientscoefficientdiagonaltermleftinside. pfa_gap_congruent_original_rightcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_congruent_original_rightcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)) * ac) + (pfc_left_congruent_original_rightcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_congruent_original_rightcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_congruent_original_rightcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_congruent_original_rightcoefficientscoefficientdiagonal)) /\ (((pfc_left_congruent_original_rightcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_congruent_original_rightcoefficientscoefficientdiagonaltermrightinside. pfa_gap_congruent_original_rightcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_congruent_original_rightcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_congruent_original_rightcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_congruent_original_rightcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_congruent_original_rightcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_congruent_original_rightcoefficientscoefficientdiagonaltermrightoutside+(M)=(pfc_complement_congruent_original_rightcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_congruent_original_rightcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_congruent_original_rightcoefficientscoefficientdiagonal)=pfc_left_congruent_original_rightcoefficientscoefficientdiagonalterm*pfc_right_congruent_original_rightcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_congruent_original_rightcoefficientscoefficientsum fs_v_pfc_congruent_original_rightcoefficientscoefficientsum. ((((exists fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_start. fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_start. fs_u_pfc_congruent_original_rightcoefficientscoefficientsum = fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_terminal. fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_congruent_original_rightcoefficientscoefficient) = S ((S (S (pfc_index_congruent_original_rightcoefficients))) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_terminal. fs_u_pfc_congruent_original_rightcoefficientscoefficientsum = fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_congruent_original_rightcoefficients))) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum) + (pfc_natural_sum_congruent_original_rightcoefficientscoefficient))) /\ forall fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps = S (pfc_index_congruent_original_rightcoefficients)) -> exists fs_a_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps fs_r_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps fs_s_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_congruent_original_rightcoefficientscoefficient)) /\ exists fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_congruent_original_rightcoefficientscoefficient = fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_congruent_original_rightcoefficientscoefficient) + (fs_a_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_congruent_original_rightcoefficientscoefficientsum = fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum) + (fs_r_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_congruent_original_rightcoefficientscoefficientsum = fs_q_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_original_rightcoefficientscoefficientsum) + (fs_s_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps = fs_r_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps + fs_a_pfc_congruent_original_rightcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_congruent_original_rightcoefficientscoefficientresiduebound. pfa_gap_congruent_original_rightcoefficientscoefficientresiduebound + S (pfc_value_congruent_original_rightcoefficients) = (p)) /\ ((exists pfa_offset_left_congruent_original_rightcoefficientscoefficientresiduecongruence pfa_offset_right_congruent_original_rightcoefficientscoefficientresiduecongruence. (pfc_natural_sum_congruent_original_rightcoefficientscoefficient) + (p) * pfa_offset_left_congruent_original_rightcoefficientscoefficientresiduecongruence = (pfc_value_congruent_original_rightcoefficients) + (p) * pfa_offset_right_congruent_original_rightcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (((forall fom_index_pfp_congruent_other_rightleft. (exists fom_gap_pfp_congruent_other_rightleft_index_bound. fom_gap_pfp_congruent_other_rightleft_index_bound + S (fom_index_pfp_congruent_other_rightleft) = L) -> exists fom_value_pfp_congruent_other_rightleft. ((((exists fom_beta_height_pfp_congruent_other_rightleft_entry. fom_beta_height_pfp_congruent_other_rightleft_entry + S (fom_value_pfp_congruent_other_rightleft) = S ((S (fom_index_pfp_congruent_other_rightleft)) * ac)) /\ exists fom_beta_quotient_pfp_congruent_other_rightleft_entry. ab = fom_beta_quotient_pfp_congruent_other_rightleft_entry * S ((S (fom_index_pfp_congruent_other_rightleft)) * ac) + (fom_value_pfp_congruent_other_rightleft))) /\ (exists fom_gap_pfp_congruent_other_rightleft_value_bound. fom_gap_pfp_congruent_other_rightleft_value_bound + S (fom_value_pfp_congruent_other_rightleft) = p))) /\ (((forall fom_index_pfp_congruent_other_rightright. (exists fom_gap_pfp_congruent_other_rightright_index_bound. fom_gap_pfp_congruent_other_rightright_index_bound + S (fom_index_pfp_congruent_other_rightright) = H) -> exists fom_value_pfp_congruent_other_rightright. ((((exists fom_beta_height_pfp_congruent_other_rightright_entry. fom_beta_height_pfp_congruent_other_rightright_entry + S (fom_value_pfp_congruent_other_rightright) = S ((S (fom_index_pfp_congruent_other_rightright)) * BC)) /\ exists fom_beta_quotient_pfp_congruent_other_rightright_entry. BB = fom_beta_quotient_pfp_congruent_other_rightright_entry * S ((S (fom_index_pfp_congruent_other_rightright)) * BC) + (fom_value_pfp_congruent_other_rightright))) /\ (exists fom_gap_pfp_congruent_other_rightright_value_bound. fom_gap_pfp_congruent_other_rightright_value_bound + S (fom_value_pfp_congruent_other_rightright) = p))) /\ (((((((L)=0 \/ (H)=0) /\ (((K)=0)))) \/ (((~((L)=0)) /\ (((~((H)=0)) /\ (((L)+(H)=S (K)))))))) /\ ((forall pfc_index_congruent_other_rightcoefficients. (exists pfa_gap_congruent_other_rightcoefficientsbound. pfa_gap_congruent_other_rightcoefficientsbound + S (pfc_index_congruent_other_rightcoefficients) = (K)) -> exists pfc_value_congruent_other_rightcoefficients. ((((exists ff_h_pfp_congruent_other_rightcoefficientsentry. ff_h_pfp_congruent_other_rightcoefficientsentry + S (pfc_value_congruent_other_rightcoefficients) = S ((S (pfc_index_congruent_other_rightcoefficients)) * CC)) /\ exists ff_q_pfp_congruent_other_rightcoefficientsentry. CB = ff_q_pfp_congruent_other_rightcoefficientsentry * S ((S (pfc_index_congruent_other_rightcoefficients)) * CC) + (pfc_value_congruent_other_rightcoefficients))) /\ ((exists pfc_terms_code_congruent_other_rightcoefficientscoefficient pfc_terms_scale_congruent_other_rightcoefficientscoefficient pfc_natural_sum_congruent_other_rightcoefficientscoefficient. ((forall pfc_index_congruent_other_rightcoefficientscoefficientdiagonal. (exists pfa_gap_congruent_other_rightcoefficientscoefficientdiagonalbound. pfa_gap_congruent_other_rightcoefficientscoefficientdiagonalbound + S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal) = (S (pfc_index_congruent_other_rightcoefficients))) -> exists pfc_value_congruent_other_rightcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonalentry. ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonalentry + S (pfc_value_congruent_other_rightcoefficientscoefficientdiagonal) = S ((S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)) * pfc_terms_scale_congruent_other_rightcoefficientscoefficient)) /\ exists ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonalentry. pfc_terms_code_congruent_other_rightcoefficientscoefficient = ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonalentry * S ((S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)) * pfc_terms_scale_congruent_other_rightcoefficientscoefficient) + (pfc_value_congruent_other_rightcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm pfc_left_congruent_other_rightcoefficientscoefficientdiagonalterm pfc_right_congruent_other_rightcoefficientscoefficientdiagonalterm. (((pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)+pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm=(pfc_index_congruent_other_rightcoefficients)) /\ ((((((exists pfa_gap_congruent_other_rightcoefficientscoefficientdiagonaltermleftinside. pfa_gap_congruent_other_rightcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_congruent_other_rightcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)) * ac) + (pfc_left_congruent_other_rightcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_congruent_other_rightcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_congruent_other_rightcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_congruent_other_rightcoefficientscoefficientdiagonal)) /\ (((pfc_left_congruent_other_rightcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_congruent_other_rightcoefficientscoefficientdiagonaltermrightinside. pfa_gap_congruent_other_rightcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm) = (H)) /\ ((((exists ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_congruent_other_rightcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm)) * BC)) /\ exists ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermrightentry. BB = ff_q_pfp_congruent_other_rightcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm)) * BC) + (pfc_right_congruent_other_rightcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_congruent_other_rightcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_congruent_other_rightcoefficientscoefficientdiagonaltermrightoutside+(H)=(pfc_complement_congruent_other_rightcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_congruent_other_rightcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_congruent_other_rightcoefficientscoefficientdiagonal)=pfc_left_congruent_other_rightcoefficientscoefficientdiagonalterm*pfc_right_congruent_other_rightcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_congruent_other_rightcoefficientscoefficientsum fs_v_pfc_congruent_other_rightcoefficientscoefficientsum. ((((exists fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_start. fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_start. fs_u_pfc_congruent_other_rightcoefficientscoefficientsum = fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_terminal. fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_congruent_other_rightcoefficientscoefficient) = S ((S (S (pfc_index_congruent_other_rightcoefficients))) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_terminal. fs_u_pfc_congruent_other_rightcoefficientscoefficientsum = fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_congruent_other_rightcoefficients))) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum) + (pfc_natural_sum_congruent_other_rightcoefficientscoefficient))) /\ forall fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps = S (pfc_index_congruent_other_rightcoefficients)) -> exists fs_a_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps fs_r_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps fs_s_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_congruent_other_rightcoefficientscoefficient)) /\ exists fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_congruent_other_rightcoefficientscoefficient = fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_congruent_other_rightcoefficientscoefficient) + (fs_a_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_congruent_other_rightcoefficientscoefficientsum = fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum) + (fs_r_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum)) /\ exists fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_congruent_other_rightcoefficientscoefficientsum = fs_q_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)) * fs_v_pfc_congruent_other_rightcoefficientscoefficientsum) + (fs_s_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps = fs_r_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps + fs_a_pfc_congruent_other_rightcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_congruent_other_rightcoefficientscoefficientresiduebound. pfa_gap_congruent_other_rightcoefficientscoefficientresiduebound + S (pfc_value_congruent_other_rightcoefficients) = (p)) /\ ((exists pfa_offset_left_congruent_other_rightcoefficientscoefficientresiduecongruence pfa_offset_right_congruent_other_rightcoefficientscoefficientresiduecongruence. (pfc_natural_sum_congruent_other_rightcoefficientscoefficient) + (p) * pfa_offset_left_congruent_other_rightcoefficientscoefficientresiduecongruence = (pfc_value_congruent_other_rightcoefficients) + (p) * pfa_offset_right_congruent_other_rightcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (forall pfrep_power_congruent_output_right pfrep_left_congruent_output_right pfrep_right_congruent_output_right. ((exists pfrep_position_congruent_output_rightfirst. ((pfrep_position_congruent_output_rightfirst+S (pfrep_power_congruent_output_right)=(N)) /\ ((((exists ff_h_pfp_congruent_output_rightfirstentry. ff_h_pfp_congruent_output_rightfirstentry + S (pfrep_left_congruent_output_right) = S ((S (pfrep_position_congruent_output_rightfirst)) * cc)) /\ exists ff_q_pfp_congruent_output_rightfirstentry. cb = ff_q_pfp_congruent_output_rightfirstentry * S ((S (pfrep_position_congruent_output_rightfirst)) * cc) + (pfrep_left_congruent_output_right)))))) \/ (((exists pfrep_gap_congruent_output_rightfirstoutside. pfrep_gap_congruent_output_rightfirstoutside+(N)=(pfrep_power_congruent_output_right)) /\ (((pfrep_left_congruent_output_right)=0))))) -> ((exists pfrep_position_congruent_output_rightsecond. ((pfrep_position_congruent_output_rightsecond+S (pfrep_power_congruent_output_right)=(K)) /\ ((((exists ff_h_pfp_congruent_output_rightsecondentry. ff_h_pfp_congruent_output_rightsecondentry + S (pfrep_right_congruent_output_right) = S ((S (pfrep_position_congruent_output_rightsecond)) * CC)) /\ exists ff_q_pfp_congruent_output_rightsecondentry. CB = ff_q_pfp_congruent_output_rightsecondentry * S ((S (pfrep_position_congruent_output_rightsecond)) * CC) + (pfrep_right_congruent_output_right)))))) \/ (((exists pfrep_gap_congruent_output_rightsecondoutside. pfrep_gap_congruent_output_rightsecondoutside+(K)=(pfrep_power_congruent_output_right)) /\ (((pfrep_right_congruent_output_right)=0))))) -> pfrep_left_congruent_output_right=pfrep_right_congruent_output_right)

Complete tactic proof in conservative notation

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

117 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 (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 BB
  2. L12
    intro BC
  3. L13
    intro H
  4. L14
    intro CB
  5. L15
    intro CC
  6. L16
    intro K
  7. L17
    intro hp
  8. L18
    intro he
  9. L19
    intro hc
  10. L20
    intro hd
03Establish horderL21–24

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

  1. L21
    have horder : Le(M,H) ∨ Le(H,M)Definitions: Le(M,H)Le(H,M)Original native command in the exact edition
  2. L22
    specialize le_total (M)
  3. L23
    specialize le_total (H)
  4. L24
    apply le_total
04Separate the logical casesL25–26

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

  1. L25
    cases horder
  2. L26
    cases horder_left
05Establish hpaddingL27–36

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

  1. L27
    have hpadding : PolynomialLeftPad(bb,bc,M,x,BB,BC)Definitions: PolynomialLeftPad(bb,bc,M,x,BB,BC)Original native command in the exact edition
  2. L28
    specialize prime_field_polynomial_equivalent_implies_left_pad (bb)
  3. L29
    specialize prime_field_polynomial_equivalent_implies_left_pad (bc)
  4. L30
    specialize prime_field_polynomial_equivalent_implies_left_pad (M)
  5. L31
    specialize prime_field_polynomial_equivalent_implies_left_pad (x)
  6. L32
    specialize prime_field_polynomial_equivalent_implies_left_pad (BB)
  7. L33
    specialize prime_field_polynomial_equivalent_implies_left_pad (BC)
  8. L34
    apply prime_field_polynomial_equivalent_implies_left_pad
  9. L35
    rewrite horder_left_witness
  10. L36
    rewrite horder_left_witness
06Use earlier factsL37–46

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

  1. L37
    exact he
  2. L38
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  3. L39
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  4. L40
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  5. L41
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  6. L42
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bb)
  7. L43
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bc)
  8. L44
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  9. L45
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cb)
  10. L46
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cc)
07Use earlier factsL47–56

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

  1. L47
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  2. L48
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BB)
  3. L49
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BC)
  4. L50
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  5. L51
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CB)
  6. L52
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CC)
  7. L53
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (K)
  8. L54
    apply prime_field_polynomial_convolution_left_padding_equivalent_right
  9. L55
    exact hp
  10. L56
    exact hpadding
08Use earlier factsL57–57

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

  1. L57
    exact hc
09Calculate and transport equalitiesL58–63

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

  1. L58
    rewrite horder_left_witness
  2. L59
    rewrite horder_left_witness
  3. L60
    rewrite horder_left_witness
  4. L61
    rewrite horder_left_witness
  5. L62
    rewrite horder_left_witness
  6. L63
    rewrite horder_left_witness
10Use earlier factsL64–64

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

  1. L64
    exact hd
11Separate the logical casesL65–65

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

  1. L65
    cases horder_right
12Establish hpaddingL66–75

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

  1. L66
    have hpadding : PolynomialLeftPad(BB,BC,H,x,bb,bc)Definitions: PolynomialLeftPad(BB,BC,H,x,bb,bc)Original native command in the exact edition
  2. L67
    specialize prime_field_polynomial_equivalent_implies_left_pad (BB)
  3. L68
    specialize prime_field_polynomial_equivalent_implies_left_pad (BC)
  4. L69
    specialize prime_field_polynomial_equivalent_implies_left_pad (H)
  5. L70
    specialize prime_field_polynomial_equivalent_implies_left_pad (x)
  6. L71
    specialize prime_field_polynomial_equivalent_implies_left_pad (bb)
  7. L72
    specialize prime_field_polynomial_equivalent_implies_left_pad (bc)
  8. L73
    apply prime_field_polynomial_equivalent_implies_left_pad
  9. L74
    rewrite horder_right_witness
  10. L75
    rewrite horder_right_witness
13Use earlier factsL76–85

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

  1. L76
    specialize prime_field_polynomial_equivalent_symmetric (bb)
  2. L77
    specialize prime_field_polynomial_equivalent_symmetric (bc)
  3. L78
    specialize prime_field_polynomial_equivalent_symmetric (M)
  4. L79
    specialize prime_field_polynomial_equivalent_symmetric (BB)
  5. L80
    specialize prime_field_polynomial_equivalent_symmetric (BC)
  6. L81
    specialize prime_field_polynomial_equivalent_symmetric (H)
  7. L82
    apply prime_field_polynomial_equivalent_symmetric
  8. L83
    exact he
  9. L84
    specialize prime_field_polynomial_equivalent_symmetric (CB)
  10. L85
    specialize prime_field_polynomial_equivalent_symmetric (CC)
14Use earlier factsL86–95

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

  1. L86
    specialize prime_field_polynomial_equivalent_symmetric (K)
  2. L87
    specialize prime_field_polynomial_equivalent_symmetric (cb)
  3. L88
    specialize prime_field_polynomial_equivalent_symmetric (cc)
  4. L89
    specialize prime_field_polynomial_equivalent_symmetric (N)
  5. L90
    apply prime_field_polynomial_equivalent_symmetric
  6. L91
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  7. L92
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  8. L93
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  9. L94
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  10. L95
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BB)
15Use earlier factsL96–105

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

  1. L96
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BC)
  2. L97
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (H)
  3. L98
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CB)
  4. L99
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CC)
  5. L100
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (K)
  6. L101
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bb)
  7. L102
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bc)
  8. L103
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  9. L104
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cb)
  10. L105
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cc)
16Use earlier factsL106–110

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

  1. L106
    specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  2. L107
    apply prime_field_polynomial_convolution_left_padding_equivalent_right
  3. L108
    exact hp
  4. L109
    exact hpadding
  5. L110
    exact hd
17Calculate and transport equalitiesL111–116

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

  1. L111
    rewrite horder_right_witness
  2. L112
    rewrite horder_right_witness
  3. L113
    rewrite horder_right_witness
  4. L114
    rewrite horder_right_witness
  5. L115
    rewrite horder_right_witness
  6. L116
    rewrite horder_right_witness
18Use earlier factsL117–117

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

  1. L117
    exact hc

Library-wide reading audit

Original defined command ledger · 117 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 BB
  12. 0012intro BC
  13. 0013intro H
  14. 0014intro CB
  15. 0015intro CC
  16. 0016intro K
  17. 0017intro hp
  18. 0018intro he
  19. 0019intro hc
  20. 0020intro hd
  21. 0021have horder : Le(M,H)Le(H,M)
  22. 0022specialize le_total (M)
  23. 0023specialize le_total (H)
  24. 0024apply le_total
  25. 0025cases horder
  26. 0026cases horder_left
  27. 0027have hpadding : PolynomialLeftPad(bb,bc,M,x,BB,BC)
  28. 0028specialize prime_field_polynomial_equivalent_implies_left_pad (bb)
  29. 0029specialize prime_field_polynomial_equivalent_implies_left_pad (bc)
  30. 0030specialize prime_field_polynomial_equivalent_implies_left_pad (M)
  31. 0031specialize prime_field_polynomial_equivalent_implies_left_pad (x)
  32. 0032specialize prime_field_polynomial_equivalent_implies_left_pad (BB)
  33. 0033specialize prime_field_polynomial_equivalent_implies_left_pad (BC)
  34. 0034apply prime_field_polynomial_equivalent_implies_left_pad
  35. 0035rewrite horder_left_witness
  36. 0036rewrite horder_left_witness
  37. 0037exact he
  38. 0038specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  39. 0039specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  40. 0040specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  41. 0041specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  42. 0042specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bb)
  43. 0043specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bc)
  44. 0044specialize prime_field_polynomial_convolution_left_padding_equivalent_right (M)
  45. 0045specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cb)
  46. 0046specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cc)
  47. 0047specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  48. 0048specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BB)
  49. 0049specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BC)
  50. 0050specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  51. 0051specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CB)
  52. 0052specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CC)
  53. 0053specialize prime_field_polynomial_convolution_left_padding_equivalent_right (K)
  54. 0054apply prime_field_polynomial_convolution_left_padding_equivalent_right
  55. 0055exact hp
  56. 0056exact hpadding
  57. 0057exact hc
  58. 0058rewrite horder_left_witness
  59. 0059rewrite horder_left_witness
  60. 0060rewrite horder_left_witness
  61. 0061rewrite horder_left_witness
  62. 0062rewrite horder_left_witness
  63. 0063rewrite horder_left_witness
  64. 0064exact hd
  65. 0065cases horder_right
  66. 0066have hpadding : PolynomialLeftPad(BB,BC,H,x,bb,bc)
  67. 0067specialize prime_field_polynomial_equivalent_implies_left_pad (BB)
  68. 0068specialize prime_field_polynomial_equivalent_implies_left_pad (BC)
  69. 0069specialize prime_field_polynomial_equivalent_implies_left_pad (H)
  70. 0070specialize prime_field_polynomial_equivalent_implies_left_pad (x)
  71. 0071specialize prime_field_polynomial_equivalent_implies_left_pad (bb)
  72. 0072specialize prime_field_polynomial_equivalent_implies_left_pad (bc)
  73. 0073apply prime_field_polynomial_equivalent_implies_left_pad
  74. 0074rewrite horder_right_witness
  75. 0075rewrite horder_right_witness
  76. 0076specialize prime_field_polynomial_equivalent_symmetric (bb)
  77. 0077specialize prime_field_polynomial_equivalent_symmetric (bc)
  78. 0078specialize prime_field_polynomial_equivalent_symmetric (M)
  79. 0079specialize prime_field_polynomial_equivalent_symmetric (BB)
  80. 0080specialize prime_field_polynomial_equivalent_symmetric (BC)
  81. 0081specialize prime_field_polynomial_equivalent_symmetric (H)
  82. 0082apply prime_field_polynomial_equivalent_symmetric
  83. 0083exact he
  84. 0084specialize prime_field_polynomial_equivalent_symmetric (CB)
  85. 0085specialize prime_field_polynomial_equivalent_symmetric (CC)
  86. 0086specialize prime_field_polynomial_equivalent_symmetric (K)
  87. 0087specialize prime_field_polynomial_equivalent_symmetric (cb)
  88. 0088specialize prime_field_polynomial_equivalent_symmetric (cc)
  89. 0089specialize prime_field_polynomial_equivalent_symmetric (N)
  90. 0090apply prime_field_polynomial_equivalent_symmetric
  91. 0091specialize prime_field_polynomial_convolution_left_padding_equivalent_right (p)
  92. 0092specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ab)
  93. 0093specialize prime_field_polynomial_convolution_left_padding_equivalent_right (ac)
  94. 0094specialize prime_field_polynomial_convolution_left_padding_equivalent_right (L)
  95. 0095specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BB)
  96. 0096specialize prime_field_polynomial_convolution_left_padding_equivalent_right (BC)
  97. 0097specialize prime_field_polynomial_convolution_left_padding_equivalent_right (H)
  98. 0098specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CB)
  99. 0099specialize prime_field_polynomial_convolution_left_padding_equivalent_right (CC)
  100. 0100specialize prime_field_polynomial_convolution_left_padding_equivalent_right (K)
  101. 0101specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bb)
  102. 0102specialize prime_field_polynomial_convolution_left_padding_equivalent_right (bc)
  103. 0103specialize prime_field_polynomial_convolution_left_padding_equivalent_right (x)
  104. 0104specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cb)
  105. 0105specialize prime_field_polynomial_convolution_left_padding_equivalent_right (cc)
  106. 0106specialize prime_field_polynomial_convolution_left_padding_equivalent_right (N)
  107. 0107apply prime_field_polynomial_convolution_left_padding_equivalent_right
  108. 0108exact hp
  109. 0109exact hpadding
  110. 0110exact hd
  111. 0111rewrite horder_right_witness
  112. 0112rewrite horder_right_witness
  113. 0113rewrite horder_right_witness
  114. 0114rewrite horder_right_witness
  115. 0115rewrite horder_right_witness
  116. 0116rewrite horder_right_witness
  117. 0117exact hc