PX003E

prime_field_convolution_prefix_empty_left_zero

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

An actual ambient convolution prefix of an empty quotient consists entirely of zero coefficients, regardless of its requested length.

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

Exact expanded first-order arithmetic statement

forall p qb qc bb bc M pb pc L. ~(p=0) -> (forall pfc_index_division_empty_product_source. (exists pfa_gap_division_empty_product_sourcebound. pfa_gap_division_empty_product_sourcebound + S (pfc_index_division_empty_product_source) = (L)) -> exists pfc_value_division_empty_product_source. ((((exists ff_h_pfp_division_empty_product_sourceentry. ff_h_pfp_division_empty_product_sourceentry + S (pfc_value_division_empty_product_source) = S ((S (pfc_index_division_empty_product_source)) * pc)) /\ exists ff_q_pfp_division_empty_product_sourceentry. pb = ff_q_pfp_division_empty_product_sourceentry * S ((S (pfc_index_division_empty_product_source)) * pc) + (pfc_value_division_empty_product_source))) /\ ((exists pfc_terms_code_division_empty_product_sourcecoefficient pfc_terms_scale_division_empty_product_sourcecoefficient pfc_natural_sum_division_empty_product_sourcecoefficient. ((forall pfc_index_division_empty_product_sourcecoefficientdiagonal. (exists pfa_gap_division_empty_product_sourcecoefficientdiagonalbound. pfa_gap_division_empty_product_sourcecoefficientdiagonalbound + S (pfc_index_division_empty_product_sourcecoefficientdiagonal) = (S (pfc_index_division_empty_product_source))) -> exists pfc_value_division_empty_product_sourcecoefficientdiagonal. ((((exists ff_h_pfp_division_empty_product_sourcecoefficientdiagonalentry. ff_h_pfp_division_empty_product_sourcecoefficientdiagonalentry + S (pfc_value_division_empty_product_sourcecoefficientdiagonal) = S ((S (pfc_index_division_empty_product_sourcecoefficientdiagonal)) * pfc_terms_scale_division_empty_product_sourcecoefficient)) /\ exists ff_q_pfp_division_empty_product_sourcecoefficientdiagonalentry. pfc_terms_code_division_empty_product_sourcecoefficient = ff_q_pfp_division_empty_product_sourcecoefficientdiagonalentry * S ((S (pfc_index_division_empty_product_sourcecoefficientdiagonal)) * pfc_terms_scale_division_empty_product_sourcecoefficient) + (pfc_value_division_empty_product_sourcecoefficientdiagonal))) /\ ((exists pfc_complement_division_empty_product_sourcecoefficientdiagonalterm pfc_left_division_empty_product_sourcecoefficientdiagonalterm pfc_right_division_empty_product_sourcecoefficientdiagonalterm. (((pfc_index_division_empty_product_sourcecoefficientdiagonal)+pfc_complement_division_empty_product_sourcecoefficientdiagonalterm=(pfc_index_division_empty_product_source)) /\ ((((((exists pfa_gap_division_empty_product_sourcecoefficientdiagonaltermleftinside. pfa_gap_division_empty_product_sourcecoefficientdiagonaltermleftinside + S (pfc_index_division_empty_product_sourcecoefficientdiagonal) = (0)) /\ ((((exists ff_h_pfp_division_empty_product_sourcecoefficientdiagonaltermleftentry. ff_h_pfp_division_empty_product_sourcecoefficientdiagonaltermleftentry + S (pfc_left_division_empty_product_sourcecoefficientdiagonalterm) = S ((S (pfc_index_division_empty_product_sourcecoefficientdiagonal)) * qc)) /\ exists ff_q_pfp_division_empty_product_sourcecoefficientdiagonaltermleftentry. qb = ff_q_pfp_division_empty_product_sourcecoefficientdiagonaltermleftentry * S ((S (pfc_index_division_empty_product_sourcecoefficientdiagonal)) * qc) + (pfc_left_division_empty_product_sourcecoefficientdiagonalterm)))))) \/ (((exists pfc_gap_division_empty_product_sourcecoefficientdiagonaltermleftoutside. pfc_gap_division_empty_product_sourcecoefficientdiagonaltermleftoutside+(0)=(pfc_index_division_empty_product_sourcecoefficientdiagonal)) /\ (((pfc_left_division_empty_product_sourcecoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_division_empty_product_sourcecoefficientdiagonaltermrightinside. pfa_gap_division_empty_product_sourcecoefficientdiagonaltermrightinside + S (pfc_complement_division_empty_product_sourcecoefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_division_empty_product_sourcecoefficientdiagonaltermrightentry. ff_h_pfp_division_empty_product_sourcecoefficientdiagonaltermrightentry + S (pfc_right_division_empty_product_sourcecoefficientdiagonalterm) = S ((S (pfc_complement_division_empty_product_sourcecoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_division_empty_product_sourcecoefficientdiagonaltermrightentry. bb = ff_q_pfp_division_empty_product_sourcecoefficientdiagonaltermrightentry * S ((S (pfc_complement_division_empty_product_sourcecoefficientdiagonalterm)) * bc) + (pfc_right_division_empty_product_sourcecoefficientdiagonalterm)))))) \/ (((exists pfc_gap_division_empty_product_sourcecoefficientdiagonaltermrightoutside. pfc_gap_division_empty_product_sourcecoefficientdiagonaltermrightoutside+(M)=(pfc_complement_division_empty_product_sourcecoefficientdiagonalterm)) /\ (((pfc_right_division_empty_product_sourcecoefficientdiagonalterm)=0))))) /\ (((pfc_value_division_empty_product_sourcecoefficientdiagonal)=pfc_left_division_empty_product_sourcecoefficientdiagonalterm*pfc_right_division_empty_product_sourcecoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_division_empty_product_sourcecoefficientsum fs_v_pfc_division_empty_product_sourcecoefficientsum. ((((exists fs_h_pfc_division_empty_product_sourcecoefficientsum_body_start. fs_h_pfc_division_empty_product_sourcecoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_division_empty_product_sourcecoefficientsum)) /\ exists fs_q_pfc_division_empty_product_sourcecoefficientsum_body_start. fs_u_pfc_division_empty_product_sourcecoefficientsum = fs_q_pfc_division_empty_product_sourcecoefficientsum_body_start * S ((S (0)) * fs_v_pfc_division_empty_product_sourcecoefficientsum) + (0))) /\ ((((exists fs_h_pfc_division_empty_product_sourcecoefficientsum_body_terminal. fs_h_pfc_division_empty_product_sourcecoefficientsum_body_terminal + S (pfc_natural_sum_division_empty_product_sourcecoefficient) = S ((S (S (pfc_index_division_empty_product_source))) * fs_v_pfc_division_empty_product_sourcecoefficientsum)) /\ exists fs_q_pfc_division_empty_product_sourcecoefficientsum_body_terminal. fs_u_pfc_division_empty_product_sourcecoefficientsum = fs_q_pfc_division_empty_product_sourcecoefficientsum_body_terminal * S ((S (S (pfc_index_division_empty_product_source))) * fs_v_pfc_division_empty_product_sourcecoefficientsum) + (pfc_natural_sum_division_empty_product_sourcecoefficient))) /\ forall fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps. (exists fs_lt_pfc_division_empty_product_sourcecoefficientsum_body_steps_bound. fs_lt_pfc_division_empty_product_sourcecoefficientsum_body_steps_bound + S fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps = S (pfc_index_division_empty_product_source)) -> exists fs_a_pfc_division_empty_product_sourcecoefficientsum_body_steps fs_r_pfc_division_empty_product_sourcecoefficientsum_body_steps fs_s_pfc_division_empty_product_sourcecoefficientsum_body_steps. ((((exists fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_summand. fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_summand + S (fs_a_pfc_division_empty_product_sourcecoefficientsum_body_steps) = S ((S (fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * pfc_terms_scale_division_empty_product_sourcecoefficient)) /\ exists fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_summand. pfc_terms_code_division_empty_product_sourcecoefficient = fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_summand * S ((S (fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * pfc_terms_scale_division_empty_product_sourcecoefficient) + (fs_a_pfc_division_empty_product_sourcecoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_partial. fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_partial + S (fs_r_pfc_division_empty_product_sourcecoefficientsum_body_steps) = S ((S (fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * fs_v_pfc_division_empty_product_sourcecoefficientsum)) /\ exists fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_partial. fs_u_pfc_division_empty_product_sourcecoefficientsum = fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_partial * S ((S (fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * fs_v_pfc_division_empty_product_sourcecoefficientsum) + (fs_r_pfc_division_empty_product_sourcecoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_successor. fs_h_pfc_division_empty_product_sourcecoefficientsum_body_steps_successor + S (fs_s_pfc_division_empty_product_sourcecoefficientsum_body_steps) = S ((S (S fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * fs_v_pfc_division_empty_product_sourcecoefficientsum)) /\ exists fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_successor. fs_u_pfc_division_empty_product_sourcecoefficientsum = fs_q_pfc_division_empty_product_sourcecoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_division_empty_product_sourcecoefficientsum_body_steps)) * fs_v_pfc_division_empty_product_sourcecoefficientsum) + (fs_s_pfc_division_empty_product_sourcecoefficientsum_body_steps))) /\ fs_s_pfc_division_empty_product_sourcecoefficientsum_body_steps = fs_r_pfc_division_empty_product_sourcecoefficientsum_body_steps + fs_a_pfc_division_empty_product_sourcecoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_division_empty_product_sourcecoefficientresiduebound. pfa_gap_division_empty_product_sourcecoefficientresiduebound + S (pfc_value_division_empty_product_source) = (p)) /\ ((exists pfa_offset_left_division_empty_product_sourcecoefficientresiduecongruence pfa_offset_right_division_empty_product_sourcecoefficientresiduecongruence. (pfc_natural_sum_division_empty_product_sourcecoefficient) + (p) * pfa_offset_left_division_empty_product_sourcecoefficientresiduecongruence = (pfc_value_division_empty_product_source) + (p) * pfa_offset_right_division_empty_product_sourcecoefficientresiduecongruence)))))))))))) -> (forall pfp_repeat_index_division_empty_product_result. (exists pfa_gap_division_empty_product_resultindex. pfa_gap_division_empty_product_resultindex + S (pfp_repeat_index_division_empty_product_result) = (L)) -> (((exists ff_h_pfp_division_empty_product_resultentry. ff_h_pfp_division_empty_product_resultentry + S (0) = S ((S (pfp_repeat_index_division_empty_product_result)) * pc)) /\ exists ff_q_pfp_division_empty_product_resultentry. pb = ff_q_pfp_division_empty_product_resultentry * S ((S (pfp_repeat_index_division_empty_product_result)) * pc) + (0))))

Constructive proof overview

Generated structural guide

An actual ambient convolution prefix of an empty quotient consists entirely of zero coefficients, regardless of its requested length.

The unchanged tactic script uses 3 declared prerequisites and contains 44 exact native proof lines.

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

Proof neighborhood

Direct dependencies

prime_field_convolution_coefficient_zero_left Alpha theorem; checked-use authorized lt_not_le Alpha theorem; checked-use authorized zero_le Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

44 script commands · 11 reading checkpoints · 2 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.

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro qb
  3. L3
    intro qc
  4. L4
    intro bb
  5. L5
    intro bc
  6. L6
    intro M
  7. L7
    intro pb
  8. L8
    intro pc
  9. L9
    intro L
  10. L10
    intro hp
02Fix variables and assumptionsL11–13

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

  1. L11
    intro h
  2. L12
    intro i
  3. L13
    intro hi
03Establish hvL14–17

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

  1. L14
    have hv : ∃ r. BetaAt(pb,pc,i,r) ∧ FpConvolutionCoefficient(p,qb,qc,0,bb,bc,M,i,r)Definitions: FpConvolutionCoefficientBetaAt
  2. L15
    specialize h (i)
  3. L16
    apply h
  4. L17
    exact hi
04Separate the logical casesL18–19

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

  1. L18
    cases hv
  2. L19
    cases hv_witness
05Establish hzL20–29

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

  1. L20
    have hz : x=0
  2. L21
    specialize prime_field_convolution_coefficient_zero_left (p)
  3. L22
    specialize prime_field_convolution_coefficient_zero_left (qb)
  4. L23
    specialize prime_field_convolution_coefficient_zero_left (qc)
  5. L24
    specialize prime_field_convolution_coefficient_zero_left (0)
  6. L25
    specialize prime_field_convolution_coefficient_zero_left (bb)
  7. L26
    specialize prime_field_convolution_coefficient_zero_left (bc)
  8. L27
    specialize prime_field_convolution_coefficient_zero_left (M)
  9. L28
    specialize prime_field_convolution_coefficient_zero_left (i)
  10. L29
    specialize prime_field_convolution_coefficient_zero_left (x)
06Use earlier factsL30–31

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

  1. L30
    apply prime_field_convolution_coefficient_zero_left
  2. L31
    exact hp
07Fix variables and assumptionsL32–33

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

  1. L32
    intro j
  2. L33
    intro hj
08Separate the logical casesL34–34

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

  1. L34
    exfalso
09Use earlier factsL35–41

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

  1. L35
    specialize lt_not_le (j)
  2. L36
    specialize lt_not_le (0)
  3. L37
    apply lt_not_le
  4. L38
    exact hj
  5. L39
    specialize zero_le (j)
  6. L40
    apply zero_le
  7. L41
    exact hv_witness_right
10Calculate and transport equalitiesL42–43

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

  1. L42
    rewrite hz at hv_witness_left
  2. L43
    rewrite hz at hv_witness_left
11Use earlier factsL44–44

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

  1. L44
    exact hv_witness_left

Library-wide reading audit

Original exact command ledger · 44 lines
  1. 0001intro p
  2. 0002intro qb
  3. 0003intro qc
  4. 0004intro bb
  5. 0005intro bc
  6. 0006intro M
  7. 0007intro pb
  8. 0008intro pc
  9. 0009intro L
  10. 0010intro hp
  11. 0011intro h
  12. 0012intro i
  13. 0013intro hi
  14. 0014have hv : exists r. ((((exists ff_h_pfp_division_empty_product_entry. ff_h_pfp_division_empty_product_entry + S (r) = S ((S (i)) * pc)) /\ exists ff_q_pfp_division_empty_product_entry. pb = ff_q_pfp_division_empty_product_entry * S ((S (i)) * pc) + (r))) /\ ((exists pfc_terms_code_division_empty_product_coefficient pfc_terms_scale_division_empty_product_coefficient pfc_natural_sum_division_empty_product_coefficient. ((forall pfc_index_division_empty_product_coefficientdiagonal. (exists pfa_gap_division_empty_product_coefficientdiagonalbound. pfa_gap_division_empty_product_coefficientdiagonalbound + S (pfc_index_division_empty_product_coefficientdiagonal) = (S (i))) -> exists pfc_value_division_empty_product_coefficientdiagonal. ((((exists ff_h_pfp_division_empty_product_coefficientdiagonalentry. ff_h_pfp_division_empty_product_coefficientdiagonalentry + S (pfc_value_division_empty_product_coefficientdiagonal) = S ((S (pfc_index_division_empty_product_coefficientdiagonal)) * pfc_terms_scale_division_empty_product_coefficient)) /\ exists ff_q_pfp_division_empty_product_coefficientdiagonalentry. pfc_terms_code_division_empty_product_coefficient = ff_q_pfp_division_empty_product_coefficientdiagonalentry * S ((S (pfc_index_division_empty_product_coefficientdiagonal)) * pfc_terms_scale_division_empty_product_coefficient) + (pfc_value_division_empty_product_coefficientdiagonal))) /\ ((exists pfc_complement_division_empty_product_coefficientdiagonalterm pfc_left_division_empty_product_coefficientdiagonalterm pfc_right_division_empty_product_coefficientdiagonalterm. (((pfc_index_division_empty_product_coefficientdiagonal)+pfc_complement_division_empty_product_coefficientdiagonalterm=(i)) /\ ((((((exists pfa_gap_division_empty_product_coefficientdiagonaltermleftinside. pfa_gap_division_empty_product_coefficientdiagonaltermleftinside + S (pfc_index_division_empty_product_coefficientdiagonal) = (0)) /\ ((((exists ff_h_pfp_division_empty_product_coefficientdiagonaltermleftentry. ff_h_pfp_division_empty_product_coefficientdiagonaltermleftentry + S (pfc_left_division_empty_product_coefficientdiagonalterm) = S ((S (pfc_index_division_empty_product_coefficientdiagonal)) * qc)) /\ exists ff_q_pfp_division_empty_product_coefficientdiagonaltermleftentry. qb = ff_q_pfp_division_empty_product_coefficientdiagonaltermleftentry * S ((S (pfc_index_division_empty_product_coefficientdiagonal)) * qc) + (pfc_left_division_empty_product_coefficientdiagonalterm)))))) \/ (((exists pfc_gap_division_empty_product_coefficientdiagonaltermleftoutside. pfc_gap_division_empty_product_coefficientdiagonaltermleftoutside+(0)=(pfc_index_division_empty_product_coefficientdiagonal)) /\ (((pfc_left_division_empty_product_coefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_division_empty_product_coefficientdiagonaltermrightinside. pfa_gap_division_empty_product_coefficientdiagonaltermrightinside + S (pfc_complement_division_empty_product_coefficientdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_division_empty_product_coefficientdiagonaltermrightentry. ff_h_pfp_division_empty_product_coefficientdiagonaltermrightentry + S (pfc_right_division_empty_product_coefficientdiagonalterm) = S ((S (pfc_complement_division_empty_product_coefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_division_empty_product_coefficientdiagonaltermrightentry. bb = ff_q_pfp_division_empty_product_coefficientdiagonaltermrightentry * S ((S (pfc_complement_division_empty_product_coefficientdiagonalterm)) * bc) + (pfc_right_division_empty_product_coefficientdiagonalterm)))))) \/ (((exists pfc_gap_division_empty_product_coefficientdiagonaltermrightoutside. pfc_gap_division_empty_product_coefficientdiagonaltermrightoutside+(M)=(pfc_complement_division_empty_product_coefficientdiagonalterm)) /\ (((pfc_right_division_empty_product_coefficientdiagonalterm)=0))))) /\ (((pfc_value_division_empty_product_coefficientdiagonal)=pfc_left_division_empty_product_coefficientdiagonalterm*pfc_right_division_empty_product_coefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_division_empty_product_coefficientsum fs_v_pfc_division_empty_product_coefficientsum. ((((exists fs_h_pfc_division_empty_product_coefficientsum_body_start. fs_h_pfc_division_empty_product_coefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_division_empty_product_coefficientsum)) /\ exists fs_q_pfc_division_empty_product_coefficientsum_body_start. fs_u_pfc_division_empty_product_coefficientsum = fs_q_pfc_division_empty_product_coefficientsum_body_start * S ((S (0)) * fs_v_pfc_division_empty_product_coefficientsum) + (0))) /\ ((((exists fs_h_pfc_division_empty_product_coefficientsum_body_terminal. fs_h_pfc_division_empty_product_coefficientsum_body_terminal + S (pfc_natural_sum_division_empty_product_coefficient) = S ((S (S (i))) * fs_v_pfc_division_empty_product_coefficientsum)) /\ exists fs_q_pfc_division_empty_product_coefficientsum_body_terminal. fs_u_pfc_division_empty_product_coefficientsum = fs_q_pfc_division_empty_product_coefficientsum_body_terminal * S ((S (S (i))) * fs_v_pfc_division_empty_product_coefficientsum) + (pfc_natural_sum_division_empty_product_coefficient))) /\ forall fs_i_pfc_division_empty_product_coefficientsum_body_steps. (exists fs_lt_pfc_division_empty_product_coefficientsum_body_steps_bound. fs_lt_pfc_division_empty_product_coefficientsum_body_steps_bound + S fs_i_pfc_division_empty_product_coefficientsum_body_steps = S (i)) -> exists fs_a_pfc_division_empty_product_coefficientsum_body_steps fs_r_pfc_division_empty_product_coefficientsum_body_steps fs_s_pfc_division_empty_product_coefficientsum_body_steps. ((((exists fs_h_pfc_division_empty_product_coefficientsum_body_steps_summand. fs_h_pfc_division_empty_product_coefficientsum_body_steps_summand + S (fs_a_pfc_division_empty_product_coefficientsum_body_steps) = S ((S (fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * pfc_terms_scale_division_empty_product_coefficient)) /\ exists fs_q_pfc_division_empty_product_coefficientsum_body_steps_summand. pfc_terms_code_division_empty_product_coefficient = fs_q_pfc_division_empty_product_coefficientsum_body_steps_summand * S ((S (fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * pfc_terms_scale_division_empty_product_coefficient) + (fs_a_pfc_division_empty_product_coefficientsum_body_steps))) /\ ((((exists fs_h_pfc_division_empty_product_coefficientsum_body_steps_partial. fs_h_pfc_division_empty_product_coefficientsum_body_steps_partial + S (fs_r_pfc_division_empty_product_coefficientsum_body_steps) = S ((S (fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * fs_v_pfc_division_empty_product_coefficientsum)) /\ exists fs_q_pfc_division_empty_product_coefficientsum_body_steps_partial. fs_u_pfc_division_empty_product_coefficientsum = fs_q_pfc_division_empty_product_coefficientsum_body_steps_partial * S ((S (fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * fs_v_pfc_division_empty_product_coefficientsum) + (fs_r_pfc_division_empty_product_coefficientsum_body_steps))) /\ ((((exists fs_h_pfc_division_empty_product_coefficientsum_body_steps_successor. fs_h_pfc_division_empty_product_coefficientsum_body_steps_successor + S (fs_s_pfc_division_empty_product_coefficientsum_body_steps) = S ((S (S fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * fs_v_pfc_division_empty_product_coefficientsum)) /\ exists fs_q_pfc_division_empty_product_coefficientsum_body_steps_successor. fs_u_pfc_division_empty_product_coefficientsum = fs_q_pfc_division_empty_product_coefficientsum_body_steps_successor * S ((S (S fs_i_pfc_division_empty_product_coefficientsum_body_steps)) * fs_v_pfc_division_empty_product_coefficientsum) + (fs_s_pfc_division_empty_product_coefficientsum_body_steps))) /\ fs_s_pfc_division_empty_product_coefficientsum_body_steps = fs_r_pfc_division_empty_product_coefficientsum_body_steps + fs_a_pfc_division_empty_product_coefficientsum_body_steps)))))) /\ ((((exists pfa_gap_division_empty_product_coefficientresiduebound. pfa_gap_division_empty_product_coefficientresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_division_empty_product_coefficientresiduecongruence pfa_offset_right_division_empty_product_coefficientresiduecongruence. (pfc_natural_sum_division_empty_product_coefficient) + (p) * pfa_offset_left_division_empty_product_coefficientresiduecongruence = (r) + (p) * pfa_offset_right_division_empty_product_coefficientresiduecongruence)))))))))))
  15. 0015specialize h (i)
  16. 0016apply h
  17. 0017exact hi
  18. 0018cases hv
  19. 0019cases hv_witness
  20. 0020have hz : x=0
  21. 0021specialize prime_field_convolution_coefficient_zero_left (p)
  22. 0022specialize prime_field_convolution_coefficient_zero_left (qb)
  23. 0023specialize prime_field_convolution_coefficient_zero_left (qc)
  24. 0024specialize prime_field_convolution_coefficient_zero_left (0)
  25. 0025specialize prime_field_convolution_coefficient_zero_left (bb)
  26. 0026specialize prime_field_convolution_coefficient_zero_left (bc)
  27. 0027specialize prime_field_convolution_coefficient_zero_left (M)
  28. 0028specialize prime_field_convolution_coefficient_zero_left (i)
  29. 0029specialize prime_field_convolution_coefficient_zero_left (x)
  30. 0030apply prime_field_convolution_coefficient_zero_left
  31. 0031exact hp
  32. 0032intro j
  33. 0033intro hj
  34. 0034exfalso
  35. 0035specialize lt_not_le (j)
  36. 0036specialize lt_not_le (0)
  37. 0037apply lt_not_le
  38. 0038exact hj
  39. 0039specialize zero_le (j)
  40. 0040apply zero_le
  41. 0041exact hv_witness_right
  42. 0042rewrite hz at hv_witness_left
  43. 0043rewrite hz at hv_witness_left
  44. 0044exact hv_witness_left