PP0013

prime_field_polynomial_add_zero_right

An actual all-zero table is an additive identity at every finite representation length.

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

Length is representation length, not polynomial degree. Leading zeros and the empty zero polynomial are allowed; the canonical argument guard x<p also applies to the empty case. Evaluation is defined by actual field-operation steps, not an assumed residue invariant. Polynomial division, gcd, irreducibles and general prime-power extension fields remain open; this does not close G091.

Exact theorem in conservative defined notation

∀ p. ∀ b. ∀ c. ∀ zb. ∀ zc. ∀ l. Prime(p)BetaPrefixInto(b,c,l,p)Repeat(zb,zc,0,l)FpPolyAdd(p,b,c,zb,zc,b,c,l)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p b c zb zc l. (~((p) = 1) /\ forall pfa_factor_left_add_zero_prime pfa_factor_right_add_zero_prime. (p) = pfa_factor_left_add_zero_prime * pfa_factor_right_add_zero_prime -> pfa_factor_left_add_zero_prime = 1 \/ pfa_factor_right_add_zero_prime = 1) -> (forall fom_index_pfp_add_zero_coefficients. (exists fom_gap_pfp_add_zero_coefficients_index_bound. fom_gap_pfp_add_zero_coefficients_index_bound + S (fom_index_pfp_add_zero_coefficients) = l) -> exists fom_value_pfp_add_zero_coefficients. ((((exists fom_beta_height_pfp_add_zero_coefficients_entry. fom_beta_height_pfp_add_zero_coefficients_entry + S (fom_value_pfp_add_zero_coefficients) = S ((S (fom_index_pfp_add_zero_coefficients)) * c)) /\ exists fom_beta_quotient_pfp_add_zero_coefficients_entry. b = fom_beta_quotient_pfp_add_zero_coefficients_entry * S ((S (fom_index_pfp_add_zero_coefficients)) * c) + (fom_value_pfp_add_zero_coefficients))) /\ (exists fom_gap_pfp_add_zero_coefficients_value_bound. fom_gap_pfp_add_zero_coefficients_value_bound + S (fom_value_pfp_add_zero_coefficients) = p))) -> (forall pfp_repeat_index_add_zero_table. (exists pfa_gap_add_zero_tableindex. pfa_gap_add_zero_tableindex + S (pfp_repeat_index_add_zero_table) = (l)) -> (((exists ff_h_pfp_add_zero_tableentry. ff_h_pfp_add_zero_tableentry + S (0) = S ((S (pfp_repeat_index_add_zero_table)) * zc)) /\ exists ff_q_pfp_add_zero_tableentry. zb = ff_q_pfp_add_zero_tableentry * S ((S (pfp_repeat_index_add_zero_table)) * zc) + (0)))) -> (forall pfp_index_add_zero_result. (exists pfa_gap_add_zero_resultindex. pfa_gap_add_zero_resultindex + S (pfp_index_add_zero_result) = (l)) -> exists pfp_left_add_zero_result pfp_right_add_zero_result pfp_value_add_zero_result. ((((exists ff_h_pfp_add_zero_resultleft. ff_h_pfp_add_zero_resultleft + S (pfp_left_add_zero_result) = S ((S (pfp_index_add_zero_result)) * c)) /\ exists ff_q_pfp_add_zero_resultleft. b = ff_q_pfp_add_zero_resultleft * S ((S (pfp_index_add_zero_result)) * c) + (pfp_left_add_zero_result))) /\ (((((exists ff_h_pfp_add_zero_resultright. ff_h_pfp_add_zero_resultright + S (pfp_right_add_zero_result) = S ((S (pfp_index_add_zero_result)) * zc)) /\ exists ff_q_pfp_add_zero_resultright. zb = ff_q_pfp_add_zero_resultright * S ((S (pfp_index_add_zero_result)) * zc) + (pfp_right_add_zero_result))) /\ (((((exists ff_h_pfp_add_zero_resulttarget. ff_h_pfp_add_zero_resulttarget + S (pfp_value_add_zero_result) = S ((S (pfp_index_add_zero_result)) * c)) /\ exists ff_q_pfp_add_zero_resulttarget. b = ff_q_pfp_add_zero_resulttarget * S ((S (pfp_index_add_zero_result)) * c) + (pfp_value_add_zero_result))) /\ ((((exists pfa_gap_add_zero_resultoperationleft. pfa_gap_add_zero_resultoperationleft + S (pfp_left_add_zero_result) = (p)) /\ (((exists pfa_gap_add_zero_resultoperationright. pfa_gap_add_zero_resultoperationright + S (pfp_right_add_zero_result) = (p)) /\ ((((exists pfa_gap_add_zero_resultoperationresultbound. pfa_gap_add_zero_resultoperationresultbound + S (pfp_value_add_zero_result) = (p)) /\ ((exists pfa_offset_left_add_zero_resultoperationresultcongruence pfa_offset_right_add_zero_resultoperationresultcongruence. ((pfp_left_add_zero_result) + (pfp_right_add_zero_result)) + (p) * pfa_offset_left_add_zero_resultoperationresultcongruence = (pfp_value_add_zero_result) + (p) * pfa_offset_right_add_zero_resultoperationresultcongruence))))))))))))))))

Complete tactic proof in conservative notation

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

33 script commands · 11 reading checkpoints · 1 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro zb
  5. L5
    intro zc
  6. L6
    intro l
  7. L7
    intro hp
  8. L8
    intro hc
  9. L9
    intro hz
  10. L10
    intro i
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hi
03Establish haL12–15

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

  1. L12
    have ha : ∃ a. BetaAt(b,c,i,a) ∧ Lt(a,p)Definitions: BetaAt(b,c,i,a)Lt(a,p)Original native command in the exact edition
  2. L13
    specialize hc (i)
  3. L14
    apply hc
  4. L15
    exact hi
04Separate the logical casesL16–17

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

  1. L16
    cases ha
  2. L17
    cases ha_witness
05Construct an explicit witnessL18–20

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

  1. L18
    exists x
  2. L19
    exists 0
  3. L20
    exists x
06Separate the logical casesL21–21

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

  1. L21
    split
07Use earlier factsL22–22

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

  1. L22
    exact ha_witness_left
08Separate the logical casesL23–23

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

  1. L23
    split
09Use earlier factsL24–26

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

  1. L24
    specialize hz (i)
  2. L25
    apply hz
  3. L26
    exact hi
10Separate the logical casesL27–27

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

  1. L27
    split
11Use earlier factsL28–33

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

  1. L28
    exact ha_witness_left
  2. L29
    specialize prime_field_add_zero_right (p)
  3. L30
    specialize prime_field_add_zero_right (x)
  4. L31
    apply prime_field_add_zero_right
  5. L32
    exact hp
  6. L33
    exact ha_witness_right

Library-wide reading audit

Original defined command ledger · 33 lines
  1. 0001intro p
  2. 0002intro b
  3. 0003intro c
  4. 0004intro zb
  5. 0005intro zc
  6. 0006intro l
  7. 0007intro hp
  8. 0008intro hc
  9. 0009intro hz
  10. 0010intro i
  11. 0011intro hi
  12. 0012have ha : ∃ a. BetaAt(b,c,i,a)Lt(a,p)
  13. 0013specialize hc (i)
  14. 0014apply hc
  15. 0015exact hi
  16. 0016cases ha
  17. 0017cases ha_witness
  18. 0018exists x
  19. 0019exists 0
  20. 0020exists x
  21. 0021split
  22. 0022exact ha_witness_left
  23. 0023split
  24. 0024specialize hz (i)
  25. 0025apply hz
  26. 0026exact hi
  27. 0027split
  28. 0028exact ha_witness_left
  29. 0029specialize prime_field_add_zero_right (p)
  30. 0030specialize prime_field_add_zero_right (x)
  31. 0031apply prime_field_add_zero_right
  32. 0032exact hp
  33. 0033exact ha_witness_right