PP0016

prime_field_polynomial_scale_entry

Every decoded input/output pair of the scalar table satisfies actual canonical multiplication.

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. ∀ k. ∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ l. ∀ i. ∀ a. ∀ r. FpPolyScale(p,k,ab,ac,bb,bc,l)Lt(i,l)BetaAt(ab,ac,i,a)BetaAt(bb,bc,i,r)FpMul(p,k,a,r)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p k ab ac bb bc l i a r. (((exists pfa_gap_scale_entry_tablescalar. pfa_gap_scale_entry_tablescalar + S (k) = (p)) /\ ((forall pfp_index_scale_entry_table. (exists pfa_gap_scale_entry_tableindex. pfa_gap_scale_entry_tableindex + S (pfp_index_scale_entry_table) = (l)) -> exists pfp_source_scale_entry_table pfp_value_scale_entry_table. ((((exists ff_h_pfp_scale_entry_tablesource. ff_h_pfp_scale_entry_tablesource + S (pfp_source_scale_entry_table) = S ((S (pfp_index_scale_entry_table)) * ac)) /\ exists ff_q_pfp_scale_entry_tablesource. ab = ff_q_pfp_scale_entry_tablesource * S ((S (pfp_index_scale_entry_table)) * ac) + (pfp_source_scale_entry_table))) /\ (((((exists ff_h_pfp_scale_entry_tabletarget. ff_h_pfp_scale_entry_tabletarget + S (pfp_value_scale_entry_table) = S ((S (pfp_index_scale_entry_table)) * bc)) /\ exists ff_q_pfp_scale_entry_tabletarget. bb = ff_q_pfp_scale_entry_tabletarget * S ((S (pfp_index_scale_entry_table)) * bc) + (pfp_value_scale_entry_table))) /\ ((((exists pfa_gap_scale_entry_tableoperationleft. pfa_gap_scale_entry_tableoperationleft + S (k) = (p)) /\ (((exists pfa_gap_scale_entry_tableoperationright. pfa_gap_scale_entry_tableoperationright + S (pfp_source_scale_entry_table) = (p)) /\ ((((exists pfa_gap_scale_entry_tableoperationresultbound. pfa_gap_scale_entry_tableoperationresultbound + S (pfp_value_scale_entry_table) = (p)) /\ ((exists pfa_offset_left_scale_entry_tableoperationresultcongruence pfa_offset_right_scale_entry_tableoperationresultcongruence. ((k) * (pfp_source_scale_entry_table)) + (p) * pfa_offset_left_scale_entry_tableoperationresultcongruence = (pfp_value_scale_entry_table) + (p) * pfa_offset_right_scale_entry_tableoperationresultcongruence))))))))))))))))) -> (exists pfa_gap_scale_entry_index. pfa_gap_scale_entry_index + S (i) = (l)) -> (((exists ff_h_pfp_scale_entry_input. ff_h_pfp_scale_entry_input + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_scale_entry_input. ab = ff_q_pfp_scale_entry_input * S ((S (i)) * ac) + (a))) -> (((exists ff_h_pfp_scale_entry_output. ff_h_pfp_scale_entry_output + S (r) = S ((S (i)) * bc)) /\ exists ff_q_pfp_scale_entry_output. bb = ff_q_pfp_scale_entry_output * S ((S (i)) * bc) + (r))) -> (((exists pfa_gap_scale_entry_valueleft. pfa_gap_scale_entry_valueleft + S (k) = (p)) /\ (((exists pfa_gap_scale_entry_valueright. pfa_gap_scale_entry_valueright + S (a) = (p)) /\ ((((exists pfa_gap_scale_entry_valueresultbound. pfa_gap_scale_entry_valueresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_scale_entry_valueresultcongruence pfa_offset_right_scale_entry_valueresultcongruence. ((k) * (a)) + (p) * pfa_offset_left_scale_entry_valueresultcongruence = (r) + (p) * pfa_offset_right_scale_entry_valueresultcongruence)))))))))

Complete tactic proof in conservative notation

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

46 script commands · 10 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro k
  3. L3
    intro ab
  4. L4
    intro ac
  5. L5
    intro bb
  6. L6
    intro bc
  7. L7
    intro l
  8. L8
    intro i
  9. L9
    intro a
  10. L10
    intro r
02Fix variables and assumptionsL11–14

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

  1. L11
    intro h
  2. L12
    intro hi
  3. L13
    intro ha
  4. L14
    intro hr
03Separate the logical casesL15–15

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

  1. L15
    cases h
04Establish hvL16–19

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

  1. L16
    have hv : ∃ u. ∃ v. BetaAt(ab,ac,i,u) ∧ (BetaAt(bb,bc,i,v) ∧ FpMul(p,k,u,v))Definitions: BetaAt(ab,ac,i,u)BetaAt(bb,bc,i,v)FpMul(p,k,u,v)Original native command in the exact edition
  2. L17
    specialize h_right (i)
  3. L18
    apply h_right
  4. L19
    exact hi
05Separate the logical casesL20–23

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

  1. L20
    cases hv
  2. L21
    cases hv_witness
  3. L22
    cases hv_witness_witness
  4. L23
    cases hv_witness_witness_right
06Establish heq0L24–33

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

  1. L24
    have heq0 : x=a
  2. L25
    specialize beta_at_unique (ab)
  3. L26
    specialize beta_at_unique (ac)
  4. L27
    specialize beta_at_unique (i)
  5. L28
    specialize beta_at_unique (x)
  6. L29
    specialize beta_at_unique (a)
  7. L30
    apply beta_at_unique
  8. L31
    exact hv_witness_witness_left
  9. L32
    exact ha
  10. L33
    rewrite heq0 at hv_witness_witness_right_right
07Calculate and transport equalitiesL34–34

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

  1. L34
    rewrite heq0 at hv_witness_witness_right_right
08Establish heq1L35–44

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

  1. L35
    have heq1 : x1=r
  2. L36
    specialize beta_at_unique (bb)
  3. L37
    specialize beta_at_unique (bc)
  4. L38
    specialize beta_at_unique (i)
  5. L39
    specialize beta_at_unique (x1)
  6. L40
    specialize beta_at_unique (r)
  7. L41
    apply beta_at_unique
  8. L42
    exact hv_witness_witness_right_left
  9. L43
    exact hr
  10. L44
    rewrite heq1 at hv_witness_witness_right_right
09Calculate and transport equalitiesL45–45

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

  1. L45
    rewrite heq1 at hv_witness_witness_right_right
10Use earlier factsL46–46

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

  1. L46
    exact hv_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 46 lines
  1. 0001intro p
  2. 0002intro k
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro l
  8. 0008intro i
  9. 0009intro a
  10. 0010intro r
  11. 0011intro h
  12. 0012intro hi
  13. 0013intro ha
  14. 0014intro hr
  15. 0015cases h
  16. 0016have hv : ∃ u. ∃ v. BetaAt(ab,ac,i,u) ∧ (BetaAt(bb,bc,i,v)FpMul(p,k,u,v))
  17. 0017specialize h_right (i)
  18. 0018apply h_right
  19. 0019exact hi
  20. 0020cases hv
  21. 0021cases hv_witness
  22. 0022cases hv_witness_witness
  23. 0023cases hv_witness_witness_right
  24. 0024have heq0 : x=a
  25. 0025specialize beta_at_unique (ab)
  26. 0026specialize beta_at_unique (ac)
  27. 0027specialize beta_at_unique (i)
  28. 0028specialize beta_at_unique (x)
  29. 0029specialize beta_at_unique (a)
  30. 0030apply beta_at_unique
  31. 0031exact hv_witness_witness_left
  32. 0032exact ha
  33. 0033rewrite heq0 at hv_witness_witness_right_right
  34. 0034rewrite heq0 at hv_witness_witness_right_right
  35. 0035have heq1 : x1=r
  36. 0036specialize beta_at_unique (bb)
  37. 0037specialize beta_at_unique (bc)
  38. 0038specialize beta_at_unique (i)
  39. 0039specialize beta_at_unique (x1)
  40. 0040specialize beta_at_unique (r)
  41. 0041apply beta_at_unique
  42. 0042exact hv_witness_witness_right_left
  43. 0043exact hr
  44. 0044rewrite heq1 at hv_witness_witness_right_right
  45. 0045rewrite heq1 at hv_witness_witness_right_right
  46. 0046exact hv_witness_witness_right_right