PG0008

prime_field_convolution_coefficient_shift_right_iff

Every actual convolution coefficient is preserved at every index, with the identical natural sum and residue witnesses; no primality is needed.

Alpha v34 checked-use · first admitted v34 · 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.

All products and sums use actual beta-coded coefficients; equality is formal coefficient equivalence, not equality of evaluations or raw codes. The zero gcd is included. Uniqueness is up to formal equivalence, not unique Bézout coefficients. This proves the polynomial gcd component, not G091 irreducible-polynomial existence or arbitrary prime-power-field construction.

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ bb. ∀ bc. ∀ M. ∀ BB. ∀ BC. ∀ i. ∀ r. PolynomialShift(bb,bc,M,BB,BC) → (FpConvolutionCoefficient(p,ab,ac,L,bb,bc,M,i,r)FpConvolutionCoefficient(p,ab,ac,L,BB,BC,S M,i,r)) ∧ (FpConvolutionCoefficient(p,ab,ac,L,BB,BC,S M,i,r)FpConvolutionCoefficient(p,ab,ac,L,bb,bc,M,i,r))

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 BB BC i r. (((forall mdr_i_pfp_shift_coefficient_relationprefix mdr_a_pfp_shift_coefficient_relationprefix. (exists mdr_gap_pfp_shift_coefficient_relationprefixb. mdr_gap_pfp_shift_coefficient_relationprefixb + S (mdr_i_pfp_shift_coefficient_relationprefix) = (M)) -> (((exists ff_h_mdr_pfp_shift_coefficient_relationprefixo. ff_h_mdr_pfp_shift_coefficient_relationprefixo + S (mdr_a_pfp_shift_coefficient_relationprefix) = S ((S (mdr_i_pfp_shift_coefficient_relationprefix)) * bc)) /\ exists ff_q_mdr_pfp_shift_coefficient_relationprefixo. bb = ff_q_mdr_pfp_shift_coefficient_relationprefixo * S ((S (mdr_i_pfp_shift_coefficient_relationprefix)) * bc) + (mdr_a_pfp_shift_coefficient_relationprefix))) -> (((exists ff_h_mdr_pfp_shift_coefficient_relationprefixn. ff_h_mdr_pfp_shift_coefficient_relationprefixn + S (mdr_a_pfp_shift_coefficient_relationprefix) = S ((S (mdr_i_pfp_shift_coefficient_relationprefix)) * BC)) /\ exists ff_q_mdr_pfp_shift_coefficient_relationprefixn. BB = ff_q_mdr_pfp_shift_coefficient_relationprefixn * S ((S (mdr_i_pfp_shift_coefficient_relationprefix)) * BC) + (mdr_a_pfp_shift_coefficient_relationprefix)))) /\ ((((exists ff_h_pfp_shift_coefficient_relationlast. ff_h_pfp_shift_coefficient_relationlast + S (0) = S ((S (M)) * BC)) /\ exists ff_q_pfp_shift_coefficient_relationlast. BB = ff_q_pfp_shift_coefficient_relationlast * S ((S (M)) * BC) + (0)))))) -> ((((exists pfc_terms_code_shift_coefficient_old pfc_terms_scale_shift_coefficient_old pfc_natural_sum_shift_coefficient_old. ((forall pfc_index_shift_coefficient_olddiagonal. (exists pfa_gap_shift_coefficient_olddiagonalbound. pfa_gap_shift_coefficient_olddiagonalbound + S (pfc_index_shift_coefficient_olddiagonal) = (S (i))) -> exists pfc_value_shift_coefficient_olddiagonal. ((((exists ff_h_pfp_shift_coefficient_olddiagonalentry. ff_h_pfp_shift_coefficient_olddiagonalentry + S (pfc_value_shift_coefficient_olddiagonal) = S ((S (pfc_index_shift_coefficient_olddiagonal)) * pfc_terms_scale_shift_coefficient_old)) /\ exists ff_q_pfp_shift_coefficient_olddiagonalentry. pfc_terms_code_shift_coefficient_old = ff_q_pfp_shift_coefficient_olddiagonalentry * S ((S (pfc_index_shift_coefficient_olddiagonal)) * pfc_terms_scale_shift_coefficient_old) + (pfc_value_shift_coefficient_olddiagonal))) /\ ((exists pfc_complement_shift_coefficient_olddiagonalterm pfc_left_shift_coefficient_olddiagonalterm pfc_right_shift_coefficient_olddiagonalterm. (((pfc_index_shift_coefficient_olddiagonal)+pfc_complement_shift_coefficient_olddiagonalterm=(i)) /\ ((((((exists pfa_gap_shift_coefficient_olddiagonaltermleftinside. pfa_gap_shift_coefficient_olddiagonaltermleftinside + S (pfc_index_shift_coefficient_olddiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_coefficient_olddiagonaltermleftentry. ff_h_pfp_shift_coefficient_olddiagonaltermleftentry + S (pfc_left_shift_coefficient_olddiagonalterm) = S ((S (pfc_index_shift_coefficient_olddiagonal)) * ac)) /\ exists ff_q_pfp_shift_coefficient_olddiagonaltermleftentry. ab = ff_q_pfp_shift_coefficient_olddiagonaltermleftentry * S ((S (pfc_index_shift_coefficient_olddiagonal)) * ac) + (pfc_left_shift_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_olddiagonaltermleftoutside. pfc_gap_shift_coefficient_olddiagonaltermleftoutside+(L)=(pfc_index_shift_coefficient_olddiagonal)) /\ (((pfc_left_shift_coefficient_olddiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_coefficient_olddiagonaltermrightinside. pfa_gap_shift_coefficient_olddiagonaltermrightinside + S (pfc_complement_shift_coefficient_olddiagonalterm) = (M)) /\ ((((exists ff_h_pfp_shift_coefficient_olddiagonaltermrightentry. ff_h_pfp_shift_coefficient_olddiagonaltermrightentry + S (pfc_right_shift_coefficient_olddiagonalterm) = S ((S (pfc_complement_shift_coefficient_olddiagonalterm)) * bc)) /\ exists ff_q_pfp_shift_coefficient_olddiagonaltermrightentry. bb = ff_q_pfp_shift_coefficient_olddiagonaltermrightentry * S ((S (pfc_complement_shift_coefficient_olddiagonalterm)) * bc) + (pfc_right_shift_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_olddiagonaltermrightoutside. pfc_gap_shift_coefficient_olddiagonaltermrightoutside+(M)=(pfc_complement_shift_coefficient_olddiagonalterm)) /\ (((pfc_right_shift_coefficient_olddiagonalterm)=0))))) /\ (((pfc_value_shift_coefficient_olddiagonal)=pfc_left_shift_coefficient_olddiagonalterm*pfc_right_shift_coefficient_olddiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_coefficient_oldsum fs_v_pfc_shift_coefficient_oldsum. ((((exists fs_h_pfc_shift_coefficient_oldsum_body_start. fs_h_pfc_shift_coefficient_oldsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_start. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_start * S ((S (0)) * fs_v_pfc_shift_coefficient_oldsum) + (0))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_terminal. fs_h_pfc_shift_coefficient_oldsum_body_terminal + S (pfc_natural_sum_shift_coefficient_old) = S ((S (S (i))) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_terminal. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_terminal * S ((S (S (i))) * fs_v_pfc_shift_coefficient_oldsum) + (pfc_natural_sum_shift_coefficient_old))) /\ forall fs_i_pfc_shift_coefficient_oldsum_body_steps. (exists fs_lt_pfc_shift_coefficient_oldsum_body_steps_bound. fs_lt_pfc_shift_coefficient_oldsum_body_steps_bound + S fs_i_pfc_shift_coefficient_oldsum_body_steps = S (i)) -> exists fs_a_pfc_shift_coefficient_oldsum_body_steps fs_r_pfc_shift_coefficient_oldsum_body_steps fs_s_pfc_shift_coefficient_oldsum_body_steps. ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_summand. fs_h_pfc_shift_coefficient_oldsum_body_steps_summand + S (fs_a_pfc_shift_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * pfc_terms_scale_shift_coefficient_old)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_summand. pfc_terms_code_shift_coefficient_old = fs_q_pfc_shift_coefficient_oldsum_body_steps_summand * S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * pfc_terms_scale_shift_coefficient_old) + (fs_a_pfc_shift_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_partial. fs_h_pfc_shift_coefficient_oldsum_body_steps_partial + S (fs_r_pfc_shift_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_partial. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_steps_partial * S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum) + (fs_r_pfc_shift_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_successor. fs_h_pfc_shift_coefficient_oldsum_body_steps_successor + S (fs_s_pfc_shift_coefficient_oldsum_body_steps) = S ((S (S fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_successor. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_steps_successor * S ((S (S fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum) + (fs_s_pfc_shift_coefficient_oldsum_body_steps))) /\ fs_s_pfc_shift_coefficient_oldsum_body_steps = fs_r_pfc_shift_coefficient_oldsum_body_steps + fs_a_pfc_shift_coefficient_oldsum_body_steps)))))) /\ ((((exists pfa_gap_shift_coefficient_oldresiduebound. pfa_gap_shift_coefficient_oldresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_shift_coefficient_oldresiduecongruence pfa_offset_right_shift_coefficient_oldresiduecongruence. (pfc_natural_sum_shift_coefficient_old) + (p) * pfa_offset_left_shift_coefficient_oldresiduecongruence = (r) + (p) * pfa_offset_right_shift_coefficient_oldresiduecongruence))))))))) -> (exists pfc_terms_code_shift_coefficient_new pfc_terms_scale_shift_coefficient_new pfc_natural_sum_shift_coefficient_new. ((forall pfc_index_shift_coefficient_newdiagonal. (exists pfa_gap_shift_coefficient_newdiagonalbound. pfa_gap_shift_coefficient_newdiagonalbound + S (pfc_index_shift_coefficient_newdiagonal) = (S (i))) -> exists pfc_value_shift_coefficient_newdiagonal. ((((exists ff_h_pfp_shift_coefficient_newdiagonalentry. ff_h_pfp_shift_coefficient_newdiagonalentry + S (pfc_value_shift_coefficient_newdiagonal) = S ((S (pfc_index_shift_coefficient_newdiagonal)) * pfc_terms_scale_shift_coefficient_new)) /\ exists ff_q_pfp_shift_coefficient_newdiagonalentry. pfc_terms_code_shift_coefficient_new = ff_q_pfp_shift_coefficient_newdiagonalentry * S ((S (pfc_index_shift_coefficient_newdiagonal)) * pfc_terms_scale_shift_coefficient_new) + (pfc_value_shift_coefficient_newdiagonal))) /\ ((exists pfc_complement_shift_coefficient_newdiagonalterm pfc_left_shift_coefficient_newdiagonalterm pfc_right_shift_coefficient_newdiagonalterm. (((pfc_index_shift_coefficient_newdiagonal)+pfc_complement_shift_coefficient_newdiagonalterm=(i)) /\ ((((((exists pfa_gap_shift_coefficient_newdiagonaltermleftinside. pfa_gap_shift_coefficient_newdiagonaltermleftinside + S (pfc_index_shift_coefficient_newdiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_coefficient_newdiagonaltermleftentry. ff_h_pfp_shift_coefficient_newdiagonaltermleftentry + S (pfc_left_shift_coefficient_newdiagonalterm) = S ((S (pfc_index_shift_coefficient_newdiagonal)) * ac)) /\ exists ff_q_pfp_shift_coefficient_newdiagonaltermleftentry. ab = ff_q_pfp_shift_coefficient_newdiagonaltermleftentry * S ((S (pfc_index_shift_coefficient_newdiagonal)) * ac) + (pfc_left_shift_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_newdiagonaltermleftoutside. pfc_gap_shift_coefficient_newdiagonaltermleftoutside+(L)=(pfc_index_shift_coefficient_newdiagonal)) /\ (((pfc_left_shift_coefficient_newdiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_coefficient_newdiagonaltermrightinside. pfa_gap_shift_coefficient_newdiagonaltermrightinside + S (pfc_complement_shift_coefficient_newdiagonalterm) = (S M)) /\ ((((exists ff_h_pfp_shift_coefficient_newdiagonaltermrightentry. ff_h_pfp_shift_coefficient_newdiagonaltermrightentry + S (pfc_right_shift_coefficient_newdiagonalterm) = S ((S (pfc_complement_shift_coefficient_newdiagonalterm)) * BC)) /\ exists ff_q_pfp_shift_coefficient_newdiagonaltermrightentry. BB = ff_q_pfp_shift_coefficient_newdiagonaltermrightentry * S ((S (pfc_complement_shift_coefficient_newdiagonalterm)) * BC) + (pfc_right_shift_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_newdiagonaltermrightoutside. pfc_gap_shift_coefficient_newdiagonaltermrightoutside+(S M)=(pfc_complement_shift_coefficient_newdiagonalterm)) /\ (((pfc_right_shift_coefficient_newdiagonalterm)=0))))) /\ (((pfc_value_shift_coefficient_newdiagonal)=pfc_left_shift_coefficient_newdiagonalterm*pfc_right_shift_coefficient_newdiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_coefficient_newsum fs_v_pfc_shift_coefficient_newsum. ((((exists fs_h_pfc_shift_coefficient_newsum_body_start. fs_h_pfc_shift_coefficient_newsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_start. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_start * S ((S (0)) * fs_v_pfc_shift_coefficient_newsum) + (0))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_terminal. fs_h_pfc_shift_coefficient_newsum_body_terminal + S (pfc_natural_sum_shift_coefficient_new) = S ((S (S (i))) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_terminal. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_terminal * S ((S (S (i))) * fs_v_pfc_shift_coefficient_newsum) + (pfc_natural_sum_shift_coefficient_new))) /\ forall fs_i_pfc_shift_coefficient_newsum_body_steps. (exists fs_lt_pfc_shift_coefficient_newsum_body_steps_bound. fs_lt_pfc_shift_coefficient_newsum_body_steps_bound + S fs_i_pfc_shift_coefficient_newsum_body_steps = S (i)) -> exists fs_a_pfc_shift_coefficient_newsum_body_steps fs_r_pfc_shift_coefficient_newsum_body_steps fs_s_pfc_shift_coefficient_newsum_body_steps. ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_summand. fs_h_pfc_shift_coefficient_newsum_body_steps_summand + S (fs_a_pfc_shift_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * pfc_terms_scale_shift_coefficient_new)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_summand. pfc_terms_code_shift_coefficient_new = fs_q_pfc_shift_coefficient_newsum_body_steps_summand * S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * pfc_terms_scale_shift_coefficient_new) + (fs_a_pfc_shift_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_partial. fs_h_pfc_shift_coefficient_newsum_body_steps_partial + S (fs_r_pfc_shift_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_partial. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_steps_partial * S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum) + (fs_r_pfc_shift_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_successor. fs_h_pfc_shift_coefficient_newsum_body_steps_successor + S (fs_s_pfc_shift_coefficient_newsum_body_steps) = S ((S (S fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_successor. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_steps_successor * S ((S (S fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum) + (fs_s_pfc_shift_coefficient_newsum_body_steps))) /\ fs_s_pfc_shift_coefficient_newsum_body_steps = fs_r_pfc_shift_coefficient_newsum_body_steps + fs_a_pfc_shift_coefficient_newsum_body_steps)))))) /\ ((((exists pfa_gap_shift_coefficient_newresiduebound. pfa_gap_shift_coefficient_newresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_shift_coefficient_newresiduecongruence pfa_offset_right_shift_coefficient_newresiduecongruence. (pfc_natural_sum_shift_coefficient_new) + (p) * pfa_offset_left_shift_coefficient_newresiduecongruence = (r) + (p) * pfa_offset_right_shift_coefficient_newresiduecongruence)))))))))) /\ (((exists pfc_terms_code_shift_coefficient_new pfc_terms_scale_shift_coefficient_new pfc_natural_sum_shift_coefficient_new. ((forall pfc_index_shift_coefficient_newdiagonal. (exists pfa_gap_shift_coefficient_newdiagonalbound. pfa_gap_shift_coefficient_newdiagonalbound + S (pfc_index_shift_coefficient_newdiagonal) = (S (i))) -> exists pfc_value_shift_coefficient_newdiagonal. ((((exists ff_h_pfp_shift_coefficient_newdiagonalentry. ff_h_pfp_shift_coefficient_newdiagonalentry + S (pfc_value_shift_coefficient_newdiagonal) = S ((S (pfc_index_shift_coefficient_newdiagonal)) * pfc_terms_scale_shift_coefficient_new)) /\ exists ff_q_pfp_shift_coefficient_newdiagonalentry. pfc_terms_code_shift_coefficient_new = ff_q_pfp_shift_coefficient_newdiagonalentry * S ((S (pfc_index_shift_coefficient_newdiagonal)) * pfc_terms_scale_shift_coefficient_new) + (pfc_value_shift_coefficient_newdiagonal))) /\ ((exists pfc_complement_shift_coefficient_newdiagonalterm pfc_left_shift_coefficient_newdiagonalterm pfc_right_shift_coefficient_newdiagonalterm. (((pfc_index_shift_coefficient_newdiagonal)+pfc_complement_shift_coefficient_newdiagonalterm=(i)) /\ ((((((exists pfa_gap_shift_coefficient_newdiagonaltermleftinside. pfa_gap_shift_coefficient_newdiagonaltermleftinside + S (pfc_index_shift_coefficient_newdiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_coefficient_newdiagonaltermleftentry. ff_h_pfp_shift_coefficient_newdiagonaltermleftentry + S (pfc_left_shift_coefficient_newdiagonalterm) = S ((S (pfc_index_shift_coefficient_newdiagonal)) * ac)) /\ exists ff_q_pfp_shift_coefficient_newdiagonaltermleftentry. ab = ff_q_pfp_shift_coefficient_newdiagonaltermleftentry * S ((S (pfc_index_shift_coefficient_newdiagonal)) * ac) + (pfc_left_shift_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_newdiagonaltermleftoutside. pfc_gap_shift_coefficient_newdiagonaltermleftoutside+(L)=(pfc_index_shift_coefficient_newdiagonal)) /\ (((pfc_left_shift_coefficient_newdiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_coefficient_newdiagonaltermrightinside. pfa_gap_shift_coefficient_newdiagonaltermrightinside + S (pfc_complement_shift_coefficient_newdiagonalterm) = (S M)) /\ ((((exists ff_h_pfp_shift_coefficient_newdiagonaltermrightentry. ff_h_pfp_shift_coefficient_newdiagonaltermrightentry + S (pfc_right_shift_coefficient_newdiagonalterm) = S ((S (pfc_complement_shift_coefficient_newdiagonalterm)) * BC)) /\ exists ff_q_pfp_shift_coefficient_newdiagonaltermrightentry. BB = ff_q_pfp_shift_coefficient_newdiagonaltermrightentry * S ((S (pfc_complement_shift_coefficient_newdiagonalterm)) * BC) + (pfc_right_shift_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_newdiagonaltermrightoutside. pfc_gap_shift_coefficient_newdiagonaltermrightoutside+(S M)=(pfc_complement_shift_coefficient_newdiagonalterm)) /\ (((pfc_right_shift_coefficient_newdiagonalterm)=0))))) /\ (((pfc_value_shift_coefficient_newdiagonal)=pfc_left_shift_coefficient_newdiagonalterm*pfc_right_shift_coefficient_newdiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_coefficient_newsum fs_v_pfc_shift_coefficient_newsum. ((((exists fs_h_pfc_shift_coefficient_newsum_body_start. fs_h_pfc_shift_coefficient_newsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_start. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_start * S ((S (0)) * fs_v_pfc_shift_coefficient_newsum) + (0))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_terminal. fs_h_pfc_shift_coefficient_newsum_body_terminal + S (pfc_natural_sum_shift_coefficient_new) = S ((S (S (i))) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_terminal. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_terminal * S ((S (S (i))) * fs_v_pfc_shift_coefficient_newsum) + (pfc_natural_sum_shift_coefficient_new))) /\ forall fs_i_pfc_shift_coefficient_newsum_body_steps. (exists fs_lt_pfc_shift_coefficient_newsum_body_steps_bound. fs_lt_pfc_shift_coefficient_newsum_body_steps_bound + S fs_i_pfc_shift_coefficient_newsum_body_steps = S (i)) -> exists fs_a_pfc_shift_coefficient_newsum_body_steps fs_r_pfc_shift_coefficient_newsum_body_steps fs_s_pfc_shift_coefficient_newsum_body_steps. ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_summand. fs_h_pfc_shift_coefficient_newsum_body_steps_summand + S (fs_a_pfc_shift_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * pfc_terms_scale_shift_coefficient_new)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_summand. pfc_terms_code_shift_coefficient_new = fs_q_pfc_shift_coefficient_newsum_body_steps_summand * S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * pfc_terms_scale_shift_coefficient_new) + (fs_a_pfc_shift_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_partial. fs_h_pfc_shift_coefficient_newsum_body_steps_partial + S (fs_r_pfc_shift_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_partial. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_steps_partial * S ((S (fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum) + (fs_r_pfc_shift_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_newsum_body_steps_successor. fs_h_pfc_shift_coefficient_newsum_body_steps_successor + S (fs_s_pfc_shift_coefficient_newsum_body_steps) = S ((S (S fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum)) /\ exists fs_q_pfc_shift_coefficient_newsum_body_steps_successor. fs_u_pfc_shift_coefficient_newsum = fs_q_pfc_shift_coefficient_newsum_body_steps_successor * S ((S (S fs_i_pfc_shift_coefficient_newsum_body_steps)) * fs_v_pfc_shift_coefficient_newsum) + (fs_s_pfc_shift_coefficient_newsum_body_steps))) /\ fs_s_pfc_shift_coefficient_newsum_body_steps = fs_r_pfc_shift_coefficient_newsum_body_steps + fs_a_pfc_shift_coefficient_newsum_body_steps)))))) /\ ((((exists pfa_gap_shift_coefficient_newresiduebound. pfa_gap_shift_coefficient_newresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_shift_coefficient_newresiduecongruence pfa_offset_right_shift_coefficient_newresiduecongruence. (pfc_natural_sum_shift_coefficient_new) + (p) * pfa_offset_left_shift_coefficient_newresiduecongruence = (r) + (p) * pfa_offset_right_shift_coefficient_newresiduecongruence))))))))) -> (exists pfc_terms_code_shift_coefficient_old pfc_terms_scale_shift_coefficient_old pfc_natural_sum_shift_coefficient_old. ((forall pfc_index_shift_coefficient_olddiagonal. (exists pfa_gap_shift_coefficient_olddiagonalbound. pfa_gap_shift_coefficient_olddiagonalbound + S (pfc_index_shift_coefficient_olddiagonal) = (S (i))) -> exists pfc_value_shift_coefficient_olddiagonal. ((((exists ff_h_pfp_shift_coefficient_olddiagonalentry. ff_h_pfp_shift_coefficient_olddiagonalentry + S (pfc_value_shift_coefficient_olddiagonal) = S ((S (pfc_index_shift_coefficient_olddiagonal)) * pfc_terms_scale_shift_coefficient_old)) /\ exists ff_q_pfp_shift_coefficient_olddiagonalentry. pfc_terms_code_shift_coefficient_old = ff_q_pfp_shift_coefficient_olddiagonalentry * S ((S (pfc_index_shift_coefficient_olddiagonal)) * pfc_terms_scale_shift_coefficient_old) + (pfc_value_shift_coefficient_olddiagonal))) /\ ((exists pfc_complement_shift_coefficient_olddiagonalterm pfc_left_shift_coefficient_olddiagonalterm pfc_right_shift_coefficient_olddiagonalterm. (((pfc_index_shift_coefficient_olddiagonal)+pfc_complement_shift_coefficient_olddiagonalterm=(i)) /\ ((((((exists pfa_gap_shift_coefficient_olddiagonaltermleftinside. pfa_gap_shift_coefficient_olddiagonaltermleftinside + S (pfc_index_shift_coefficient_olddiagonal) = (L)) /\ ((((exists ff_h_pfp_shift_coefficient_olddiagonaltermleftentry. ff_h_pfp_shift_coefficient_olddiagonaltermleftentry + S (pfc_left_shift_coefficient_olddiagonalterm) = S ((S (pfc_index_shift_coefficient_olddiagonal)) * ac)) /\ exists ff_q_pfp_shift_coefficient_olddiagonaltermleftentry. ab = ff_q_pfp_shift_coefficient_olddiagonaltermleftentry * S ((S (pfc_index_shift_coefficient_olddiagonal)) * ac) + (pfc_left_shift_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_olddiagonaltermleftoutside. pfc_gap_shift_coefficient_olddiagonaltermleftoutside+(L)=(pfc_index_shift_coefficient_olddiagonal)) /\ (((pfc_left_shift_coefficient_olddiagonalterm)=0))))) /\ ((((((exists pfa_gap_shift_coefficient_olddiagonaltermrightinside. pfa_gap_shift_coefficient_olddiagonaltermrightinside + S (pfc_complement_shift_coefficient_olddiagonalterm) = (M)) /\ ((((exists ff_h_pfp_shift_coefficient_olddiagonaltermrightentry. ff_h_pfp_shift_coefficient_olddiagonaltermrightentry + S (pfc_right_shift_coefficient_olddiagonalterm) = S ((S (pfc_complement_shift_coefficient_olddiagonalterm)) * bc)) /\ exists ff_q_pfp_shift_coefficient_olddiagonaltermrightentry. bb = ff_q_pfp_shift_coefficient_olddiagonaltermrightentry * S ((S (pfc_complement_shift_coefficient_olddiagonalterm)) * bc) + (pfc_right_shift_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_shift_coefficient_olddiagonaltermrightoutside. pfc_gap_shift_coefficient_olddiagonaltermrightoutside+(M)=(pfc_complement_shift_coefficient_olddiagonalterm)) /\ (((pfc_right_shift_coefficient_olddiagonalterm)=0))))) /\ (((pfc_value_shift_coefficient_olddiagonal)=pfc_left_shift_coefficient_olddiagonalterm*pfc_right_shift_coefficient_olddiagonalterm))))))))))) /\ (((exists fs_u_pfc_shift_coefficient_oldsum fs_v_pfc_shift_coefficient_oldsum. ((((exists fs_h_pfc_shift_coefficient_oldsum_body_start. fs_h_pfc_shift_coefficient_oldsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_start. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_start * S ((S (0)) * fs_v_pfc_shift_coefficient_oldsum) + (0))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_terminal. fs_h_pfc_shift_coefficient_oldsum_body_terminal + S (pfc_natural_sum_shift_coefficient_old) = S ((S (S (i))) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_terminal. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_terminal * S ((S (S (i))) * fs_v_pfc_shift_coefficient_oldsum) + (pfc_natural_sum_shift_coefficient_old))) /\ forall fs_i_pfc_shift_coefficient_oldsum_body_steps. (exists fs_lt_pfc_shift_coefficient_oldsum_body_steps_bound. fs_lt_pfc_shift_coefficient_oldsum_body_steps_bound + S fs_i_pfc_shift_coefficient_oldsum_body_steps = S (i)) -> exists fs_a_pfc_shift_coefficient_oldsum_body_steps fs_r_pfc_shift_coefficient_oldsum_body_steps fs_s_pfc_shift_coefficient_oldsum_body_steps. ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_summand. fs_h_pfc_shift_coefficient_oldsum_body_steps_summand + S (fs_a_pfc_shift_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * pfc_terms_scale_shift_coefficient_old)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_summand. pfc_terms_code_shift_coefficient_old = fs_q_pfc_shift_coefficient_oldsum_body_steps_summand * S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * pfc_terms_scale_shift_coefficient_old) + (fs_a_pfc_shift_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_partial. fs_h_pfc_shift_coefficient_oldsum_body_steps_partial + S (fs_r_pfc_shift_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_partial. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_steps_partial * S ((S (fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum) + (fs_r_pfc_shift_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_shift_coefficient_oldsum_body_steps_successor. fs_h_pfc_shift_coefficient_oldsum_body_steps_successor + S (fs_s_pfc_shift_coefficient_oldsum_body_steps) = S ((S (S fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum)) /\ exists fs_q_pfc_shift_coefficient_oldsum_body_steps_successor. fs_u_pfc_shift_coefficient_oldsum = fs_q_pfc_shift_coefficient_oldsum_body_steps_successor * S ((S (S fs_i_pfc_shift_coefficient_oldsum_body_steps)) * fs_v_pfc_shift_coefficient_oldsum) + (fs_s_pfc_shift_coefficient_oldsum_body_steps))) /\ fs_s_pfc_shift_coefficient_oldsum_body_steps = fs_r_pfc_shift_coefficient_oldsum_body_steps + fs_a_pfc_shift_coefficient_oldsum_body_steps)))))) /\ ((((exists pfa_gap_shift_coefficient_oldresiduebound. pfa_gap_shift_coefficient_oldresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_shift_coefficient_oldresiduecongruence pfa_offset_right_shift_coefficient_oldresiduecongruence. (pfc_natural_sum_shift_coefficient_old) + (p) * pfa_offset_left_shift_coefficient_oldresiduecongruence = (r) + (p) * pfa_offset_right_shift_coefficient_oldresiduecongruence)))))))))))))

Complete tactic proof in conservative notation

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

95 script commands · 35 reading checkpoints · 4 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 L
  5. L5
    intro bb
  6. L6
    intro bc
  7. L7
    intro M
  8. L8
    intro BB
  9. L9
    intro BC
  10. L10
    intro i
02Fix variables and assumptionsL11–12

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

  1. L11
    intro r
  2. L12
    intro hs
03Separate the logical casesL13–13

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

  1. L13
    split
04Fix variables and assumptionsL14–14

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

  1. L14
    intro hc
05Separate the logical casesL15–19

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

  1. L15
    cases hc
  2. L16
    cases hc_witness
  3. L17
    cases hc_witness_witness
  4. L18
    cases hc_witness_witness_witness
  5. L19
    cases hc_witness_witness_witness_right
06Construct an explicit witnessL20–22

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

  1. L20
    exists x
  2. L21
    exists x1
  3. L22
    exists x2
07Separate the logical casesL23–23

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

  1. L23
    split
08Fix variables and assumptionsL24–25

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

  1. L24
    intro j
  2. L25
    intro hj
09Establish htL26–29

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

  1. L26
    have ht : ∃ t. BetaAt(x,x1,j,t) ∧ PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,t)Definitions: BetaAt(x,x1,j,t)PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,t)Original native command in the exact edition
  2. L27
    specialize hc_witness_witness_witness_left (j)
  3. L28
    apply hc_witness_witness_witness_left
  4. L29
    exact hj
10Separate the logical casesL30–31

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

  1. L30
    cases ht
  2. L31
    cases ht_witness
11Construct an explicit witnessL32–32

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

  1. L32
    exists x3
12Separate the logical casesL33–33

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

  1. L33
    split
13Use earlier factsL34–34

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

  1. L34
    exact ht_witness_left
14Establish htiffL35–44

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

  1. L35
    have htiff : (PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3) → PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)) ∧ (PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3) → PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3))Definitions: PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)Original native command in the exact edition
  2. L36
    specialize polynomial_diagonal_term_shift_right_iff (ab)
  3. L37
    specialize polynomial_diagonal_term_shift_right_iff (ac)
  4. L38
    specialize polynomial_diagonal_term_shift_right_iff (L)
  5. L39
    specialize polynomial_diagonal_term_shift_right_iff (bb)
  6. L40
    specialize polynomial_diagonal_term_shift_right_iff (bc)
  7. L41
    specialize polynomial_diagonal_term_shift_right_iff (M)
  8. L42
    specialize polynomial_diagonal_term_shift_right_iff (BB)
  9. L43
    specialize polynomial_diagonal_term_shift_right_iff (BC)
  10. L44
    specialize polynomial_diagonal_term_shift_right_iff (i)
15Use earlier factsL45–48

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

  1. L45
    specialize polynomial_diagonal_term_shift_right_iff (j)
  2. L46
    specialize polynomial_diagonal_term_shift_right_iff (x3)
  3. L47
    apply polynomial_diagonal_term_shift_right_iff
  4. L48
    exact hs
16Separate the logical casesL49–49

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

  1. L49
    cases htiff
17Use earlier factsL50–51

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

  1. L50
    apply htiff_left
  2. L51
    exact ht_witness_right
18Separate the logical casesL52–52

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

  1. L52
    split
19Use earlier factsL53–54

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

  1. L53
    exact hc_witness_witness_witness_right_left
  2. L54
    exact hc_witness_witness_witness_right_right
20Fix variables and assumptionsL55–55

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

  1. L55
    intro hc
21Separate the logical casesL56–60

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

  1. L56
    cases hc
  2. L57
    cases hc_witness
  3. L58
    cases hc_witness_witness
  4. L59
    cases hc_witness_witness_witness
  5. L60
    cases hc_witness_witness_witness_right
22Construct an explicit witnessL61–63

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

  1. L61
    exists x
  2. L62
    exists x1
  3. L63
    exists x2
23Separate the logical casesL64–64

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

  1. L64
    split
24Fix variables and assumptionsL65–66

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

  1. L65
    intro j
  2. L66
    intro hj
25Establish htL67–70

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

  1. L67
    have ht : ∃ t. BetaAt(x,x1,j,t) ∧ PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,t)Definitions: BetaAt(x,x1,j,t)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,t)Original native command in the exact edition
  2. L68
    specialize hc_witness_witness_witness_left (j)
  3. L69
    apply hc_witness_witness_witness_left
  4. L70
    exact hj
26Separate the logical casesL71–72

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

  1. L71
    cases ht
  2. L72
    cases ht_witness
27Construct an explicit witnessL73–73

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

  1. L73
    exists x3
28Separate the logical casesL74–74

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

  1. L74
    split
29Use earlier factsL75–75

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

  1. L75
    exact ht_witness_left
30Establish htiffL76–85

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

  1. L76
    have htiff : (PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3) → PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)) ∧ (PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3) → PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3))Definitions: PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)Original native command in the exact edition
  2. L77
    specialize polynomial_diagonal_term_shift_right_iff (ab)
  3. L78
    specialize polynomial_diagonal_term_shift_right_iff (ac)
  4. L79
    specialize polynomial_diagonal_term_shift_right_iff (L)
  5. L80
    specialize polynomial_diagonal_term_shift_right_iff (bb)
  6. L81
    specialize polynomial_diagonal_term_shift_right_iff (bc)
  7. L82
    specialize polynomial_diagonal_term_shift_right_iff (M)
  8. L83
    specialize polynomial_diagonal_term_shift_right_iff (BB)
  9. L84
    specialize polynomial_diagonal_term_shift_right_iff (BC)
  10. L85
    specialize polynomial_diagonal_term_shift_right_iff (i)
31Use earlier factsL86–89

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

  1. L86
    specialize polynomial_diagonal_term_shift_right_iff (j)
  2. L87
    specialize polynomial_diagonal_term_shift_right_iff (x3)
  3. L88
    apply polynomial_diagonal_term_shift_right_iff
  4. L89
    exact hs
32Separate the logical casesL90–90

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

  1. L90
    cases htiff
33Use earlier factsL91–92

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

  1. L91
    apply htiff_right
  2. L92
    exact ht_witness_right
34Separate the logical casesL93–93

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

  1. L93
    split
35Use earlier factsL94–95

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

  1. L94
    exact hc_witness_witness_witness_right_left
  2. L95
    exact hc_witness_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 95 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro M
  8. 0008intro BB
  9. 0009intro BC
  10. 0010intro i
  11. 0011intro r
  12. 0012intro hs
  13. 0013split
  14. 0014intro hc
  15. 0015cases hc
  16. 0016cases hc_witness
  17. 0017cases hc_witness_witness
  18. 0018cases hc_witness_witness_witness
  19. 0019cases hc_witness_witness_witness_right
  20. 0020exists x
  21. 0021exists x1
  22. 0022exists x2
  23. 0023split
  24. 0024intro j
  25. 0025intro hj
  26. 0026have ht : ∃ t. BetaAt(x,x1,j,t)PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,t)
  27. 0027specialize hc_witness_witness_witness_left (j)
  28. 0028apply hc_witness_witness_witness_left
  29. 0029exact hj
  30. 0030cases ht
  31. 0031cases ht_witness
  32. 0032exists x3
  33. 0033split
  34. 0034exact ht_witness_left
  35. 0035have htiff : (PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)) ∧ (PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3))
  36. 0036specialize polynomial_diagonal_term_shift_right_iff (ab)
  37. 0037specialize polynomial_diagonal_term_shift_right_iff (ac)
  38. 0038specialize polynomial_diagonal_term_shift_right_iff (L)
  39. 0039specialize polynomial_diagonal_term_shift_right_iff (bb)
  40. 0040specialize polynomial_diagonal_term_shift_right_iff (bc)
  41. 0041specialize polynomial_diagonal_term_shift_right_iff (M)
  42. 0042specialize polynomial_diagonal_term_shift_right_iff (BB)
  43. 0043specialize polynomial_diagonal_term_shift_right_iff (BC)
  44. 0044specialize polynomial_diagonal_term_shift_right_iff (i)
  45. 0045specialize polynomial_diagonal_term_shift_right_iff (j)
  46. 0046specialize polynomial_diagonal_term_shift_right_iff (x3)
  47. 0047apply polynomial_diagonal_term_shift_right_iff
  48. 0048exact hs
  49. 0049cases htiff
  50. 0050apply htiff_left
  51. 0051exact ht_witness_right
  52. 0052split
  53. 0053exact hc_witness_witness_witness_right_left
  54. 0054exact hc_witness_witness_witness_right_right
  55. 0055intro hc
  56. 0056cases hc
  57. 0057cases hc_witness
  58. 0058cases hc_witness_witness
  59. 0059cases hc_witness_witness_witness
  60. 0060cases hc_witness_witness_witness_right
  61. 0061exists x
  62. 0062exists x1
  63. 0063exists x2
  64. 0064split
  65. 0065intro j
  66. 0066intro hj
  67. 0067have ht : ∃ t. BetaAt(x,x1,j,t)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,t)
  68. 0068specialize hc_witness_witness_witness_left (j)
  69. 0069apply hc_witness_witness_witness_left
  70. 0070exact hj
  71. 0071cases ht
  72. 0072cases ht_witness
  73. 0073exists x3
  74. 0074split
  75. 0075exact ht_witness_left
  76. 0076have htiff : (PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)) ∧ (PolynomialDiagonalTerm(ab,ac,L,BB,BC,S M,i,j,x3)PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,x3))
  77. 0077specialize polynomial_diagonal_term_shift_right_iff (ab)
  78. 0078specialize polynomial_diagonal_term_shift_right_iff (ac)
  79. 0079specialize polynomial_diagonal_term_shift_right_iff (L)
  80. 0080specialize polynomial_diagonal_term_shift_right_iff (bb)
  81. 0081specialize polynomial_diagonal_term_shift_right_iff (bc)
  82. 0082specialize polynomial_diagonal_term_shift_right_iff (M)
  83. 0083specialize polynomial_diagonal_term_shift_right_iff (BB)
  84. 0084specialize polynomial_diagonal_term_shift_right_iff (BC)
  85. 0085specialize polynomial_diagonal_term_shift_right_iff (i)
  86. 0086specialize polynomial_diagonal_term_shift_right_iff (j)
  87. 0087specialize polynomial_diagonal_term_shift_right_iff (x3)
  88. 0088apply polynomial_diagonal_term_shift_right_iff
  89. 0089exact hs
  90. 0090cases htiff
  91. 0091apply htiff_right
  92. 0092exact ht_witness_right
  93. 0093split
  94. 0094exact hc_witness_witness_witness_right_left
  95. 0095exact hc_witness_witness_witness_right_right