PP0029

prime_field_polynomial_horner_functional

Public research checkpoint, not admitted to Alpha or Stable. Alpha v30 remains 3222 checked-use theorems; Stable remains 432. The on-demand Alpha Lean service does not yet expose these checkpoint theorems; their independently checked literal bundles and unchanged sources are available below.

Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable

Every actual modular execution of the same coefficient prefix and base has the same canonical result.

Exact expanded first-order arithmetic statement

forall p b c t l r s. (~((p) = 1) /\ forall pfa_factor_left_functional_prime pfa_factor_right_functional_prime. (p) = pfa_factor_left_functional_prime * pfa_factor_right_functional_prime -> pfa_factor_left_functional_prime = 1 \/ pfa_factor_right_functional_prime = 1) -> (exists pfh_trace_code_functional_first pfh_trace_scale_functional_first. (((exists pfa_gap_functional_firsttracebase. pfa_gap_functional_firsttracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_functional_firsttraceinitial. ff_h_pfp_functional_firsttraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_functional_first)) /\ exists ff_q_pfp_functional_firsttraceinitial. pfh_trace_code_functional_first = ff_q_pfp_functional_firsttraceinitial * S ((S (0)) * pfh_trace_scale_functional_first) + (0))) /\ (((((exists ff_h_pfp_functional_firsttraceterminal. ff_h_pfp_functional_firsttraceterminal + S (r) = S ((S (l)) * pfh_trace_scale_functional_first)) /\ exists ff_q_pfp_functional_firsttraceterminal. pfh_trace_code_functional_first = ff_q_pfp_functional_firsttraceterminal * S ((S (l)) * pfh_trace_scale_functional_first) + (r))) /\ ((forall pfh_index_functional_firsttracesteps. (exists pfa_gap_functional_firsttracestepsindex. pfa_gap_functional_firsttracestepsindex + S (pfh_index_functional_firsttracesteps) = (l)) -> (exists pfh_coefficient_functional_firsttracestepsstep pfh_before_functional_firsttracestepsstep pfh_after_functional_firsttracestepsstep pfh_product_functional_firsttracestepsstep. ((((exists ff_h_pfp_functional_firsttracestepsstepcoefficient. ff_h_pfp_functional_firsttracestepsstepcoefficient + S (pfh_coefficient_functional_firsttracestepsstep) = S ((S (pfh_index_functional_firsttracesteps)) * c)) /\ exists ff_q_pfp_functional_firsttracestepsstepcoefficient. b = ff_q_pfp_functional_firsttracestepsstepcoefficient * S ((S (pfh_index_functional_firsttracesteps)) * c) + (pfh_coefficient_functional_firsttracestepsstep))) /\ (((((exists ff_h_pfp_functional_firsttracestepsstepbefore. ff_h_pfp_functional_firsttracestepsstepbefore + S (pfh_before_functional_firsttracestepsstep) = S ((S (pfh_index_functional_firsttracesteps)) * pfh_trace_scale_functional_first)) /\ exists ff_q_pfp_functional_firsttracestepsstepbefore. pfh_trace_code_functional_first = ff_q_pfp_functional_firsttracestepsstepbefore * S ((S (pfh_index_functional_firsttracesteps)) * pfh_trace_scale_functional_first) + (pfh_before_functional_firsttracestepsstep))) /\ (((((exists ff_h_pfp_functional_firsttracestepsstepafter. ff_h_pfp_functional_firsttracestepsstepafter + S (pfh_after_functional_firsttracestepsstep) = S ((S (S (pfh_index_functional_firsttracesteps))) * pfh_trace_scale_functional_first)) /\ exists ff_q_pfp_functional_firsttracestepsstepafter. pfh_trace_code_functional_first = ff_q_pfp_functional_firsttracestepsstepafter * S ((S (S (pfh_index_functional_firsttracesteps))) * pfh_trace_scale_functional_first) + (pfh_after_functional_firsttracestepsstep))) /\ (((((exists pfa_gap_functional_firsttracestepsstepmultiplyleft. pfa_gap_functional_firsttracestepsstepmultiplyleft + S (pfh_before_functional_firsttracestepsstep) = (p)) /\ (((exists pfa_gap_functional_firsttracestepsstepmultiplyright. pfa_gap_functional_firsttracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_functional_firsttracestepsstepmultiplyresultbound. pfa_gap_functional_firsttracestepsstepmultiplyresultbound + S (pfh_product_functional_firsttracestepsstep) = (p)) /\ ((exists pfa_offset_left_functional_firsttracestepsstepmultiplyresultcongruence pfa_offset_right_functional_firsttracestepsstepmultiplyresultcongruence. ((pfh_before_functional_firsttracestepsstep) * (t)) + (p) * pfa_offset_left_functional_firsttracestepsstepmultiplyresultcongruence = (pfh_product_functional_firsttracestepsstep) + (p) * pfa_offset_right_functional_firsttracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_functional_firsttracestepsstepaddleft. pfa_gap_functional_firsttracestepsstepaddleft + S (pfh_product_functional_firsttracestepsstep) = (p)) /\ (((exists pfa_gap_functional_firsttracestepsstepaddright. pfa_gap_functional_firsttracestepsstepaddright + S (pfh_coefficient_functional_firsttracestepsstep) = (p)) /\ ((((exists pfa_gap_functional_firsttracestepsstepaddresultbound. pfa_gap_functional_firsttracestepsstepaddresultbound + S (pfh_after_functional_firsttracestepsstep) = (p)) /\ ((exists pfa_offset_left_functional_firsttracestepsstepaddresultcongruence pfa_offset_right_functional_firsttracestepsstepaddresultcongruence. ((pfh_product_functional_firsttracestepsstep) + (pfh_coefficient_functional_firsttracestepsstep)) + (p) * pfa_offset_left_functional_firsttracestepsstepaddresultcongruence = (pfh_after_functional_firsttracestepsstep) + (p) * pfa_offset_right_functional_firsttracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> (exists pfh_trace_code_functional_second pfh_trace_scale_functional_second. (((exists pfa_gap_functional_secondtracebase. pfa_gap_functional_secondtracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_functional_secondtraceinitial. ff_h_pfp_functional_secondtraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_functional_second)) /\ exists ff_q_pfp_functional_secondtraceinitial. pfh_trace_code_functional_second = ff_q_pfp_functional_secondtraceinitial * S ((S (0)) * pfh_trace_scale_functional_second) + (0))) /\ (((((exists ff_h_pfp_functional_secondtraceterminal. ff_h_pfp_functional_secondtraceterminal + S (s) = S ((S (l)) * pfh_trace_scale_functional_second)) /\ exists ff_q_pfp_functional_secondtraceterminal. pfh_trace_code_functional_second = ff_q_pfp_functional_secondtraceterminal * S ((S (l)) * pfh_trace_scale_functional_second) + (s))) /\ ((forall pfh_index_functional_secondtracesteps. (exists pfa_gap_functional_secondtracestepsindex. pfa_gap_functional_secondtracestepsindex + S (pfh_index_functional_secondtracesteps) = (l)) -> (exists pfh_coefficient_functional_secondtracestepsstep pfh_before_functional_secondtracestepsstep pfh_after_functional_secondtracestepsstep pfh_product_functional_secondtracestepsstep. ((((exists ff_h_pfp_functional_secondtracestepsstepcoefficient. ff_h_pfp_functional_secondtracestepsstepcoefficient + S (pfh_coefficient_functional_secondtracestepsstep) = S ((S (pfh_index_functional_secondtracesteps)) * c)) /\ exists ff_q_pfp_functional_secondtracestepsstepcoefficient. b = ff_q_pfp_functional_secondtracestepsstepcoefficient * S ((S (pfh_index_functional_secondtracesteps)) * c) + (pfh_coefficient_functional_secondtracestepsstep))) /\ (((((exists ff_h_pfp_functional_secondtracestepsstepbefore. ff_h_pfp_functional_secondtracestepsstepbefore + S (pfh_before_functional_secondtracestepsstep) = S ((S (pfh_index_functional_secondtracesteps)) * pfh_trace_scale_functional_second)) /\ exists ff_q_pfp_functional_secondtracestepsstepbefore. pfh_trace_code_functional_second = ff_q_pfp_functional_secondtracestepsstepbefore * S ((S (pfh_index_functional_secondtracesteps)) * pfh_trace_scale_functional_second) + (pfh_before_functional_secondtracestepsstep))) /\ (((((exists ff_h_pfp_functional_secondtracestepsstepafter. ff_h_pfp_functional_secondtracestepsstepafter + S (pfh_after_functional_secondtracestepsstep) = S ((S (S (pfh_index_functional_secondtracesteps))) * pfh_trace_scale_functional_second)) /\ exists ff_q_pfp_functional_secondtracestepsstepafter. pfh_trace_code_functional_second = ff_q_pfp_functional_secondtracestepsstepafter * S ((S (S (pfh_index_functional_secondtracesteps))) * pfh_trace_scale_functional_second) + (pfh_after_functional_secondtracestepsstep))) /\ (((((exists pfa_gap_functional_secondtracestepsstepmultiplyleft. pfa_gap_functional_secondtracestepsstepmultiplyleft + S (pfh_before_functional_secondtracestepsstep) = (p)) /\ (((exists pfa_gap_functional_secondtracestepsstepmultiplyright. pfa_gap_functional_secondtracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_functional_secondtracestepsstepmultiplyresultbound. pfa_gap_functional_secondtracestepsstepmultiplyresultbound + S (pfh_product_functional_secondtracestepsstep) = (p)) /\ ((exists pfa_offset_left_functional_secondtracestepsstepmultiplyresultcongruence pfa_offset_right_functional_secondtracestepsstepmultiplyresultcongruence. ((pfh_before_functional_secondtracestepsstep) * (t)) + (p) * pfa_offset_left_functional_secondtracestepsstepmultiplyresultcongruence = (pfh_product_functional_secondtracestepsstep) + (p) * pfa_offset_right_functional_secondtracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_functional_secondtracestepsstepaddleft. pfa_gap_functional_secondtracestepsstepaddleft + S (pfh_product_functional_secondtracestepsstep) = (p)) /\ (((exists pfa_gap_functional_secondtracestepsstepaddright. pfa_gap_functional_secondtracestepsstepaddright + S (pfh_coefficient_functional_secondtracestepsstep) = (p)) /\ ((((exists pfa_gap_functional_secondtracestepsstepaddresultbound. pfa_gap_functional_secondtracestepsstepaddresultbound + S (pfh_after_functional_secondtracestepsstep) = (p)) /\ ((exists pfa_offset_left_functional_secondtracestepsstepaddresultcongruence pfa_offset_right_functional_secondtracestepsstepaddresultcongruence. ((pfh_product_functional_secondtracestepsstep) + (pfh_coefficient_functional_secondtracestepsstep)) + (p) * pfa_offset_left_functional_secondtracestepsstepaddresultcongruence = (pfh_after_functional_secondtracestepsstep) + (p) * pfa_offset_right_functional_secondtracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> r=s

Constructive proof overview

Generated structural guide

Every actual modular execution of the same coefficient prefix and base has the same canonical result.

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

Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or Stable membership.

Read the argument

Proof checkpoints

44 script commands · 6 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.

Named ingredients (1)

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 b
  3. L3
    intro c
  4. L4
    intro t
  5. L5
    intro l
  6. L6
    intro r
  7. L7
    intro s
  8. L8
    intro hp
  9. L9
    intro hr
  10. L10
    intro hs
02Establish hnL11–16

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

  1. L11
    have hn : ∃ n. Horner(b,c,t,l,n)Definitions: Horner
  2. L12
    specialize beta_horner_eval_exists (b)
  3. L13
    specialize beta_horner_eval_exists (c)
  4. L14
    specialize beta_horner_eval_exists (t)
  5. L15
    specialize beta_horner_eval_exists (l)
  6. L16
    apply beta_horner_eval_exists
03Separate the logical casesL17–17

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

  1. L17
    cases hn
04Use earlier factsL18–27

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

  1. L18
    specialize binary_canonical_residue_functional (p)
  2. L19
    specialize binary_canonical_residue_functional (x)
  3. L20
    specialize binary_canonical_residue_functional (r)
  4. L21
    specialize binary_canonical_residue_functional (s)
  5. L22
    apply binary_canonical_residue_functional
  6. L23
    specialize prime_field_polynomial_horner_residue (p)
  7. L24
    specialize prime_field_polynomial_horner_residue (b)
  8. L25
    specialize prime_field_polynomial_horner_residue (c)
  9. L26
    specialize prime_field_polynomial_horner_residue (t)
  10. L27
    specialize prime_field_polynomial_horner_residue (l)
05Use earlier factsL28–37

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

  1. L28
    specialize prime_field_polynomial_horner_residue (x)
  2. L29
    specialize prime_field_polynomial_horner_residue (r)
  3. L30
    apply prime_field_polynomial_horner_residue
  4. L31
    exact hp
  5. L32
    exact hn_witness
  6. L33
    exact hr
  7. L34
    specialize prime_field_polynomial_horner_residue (p)
  8. L35
    specialize prime_field_polynomial_horner_residue (b)
  9. L36
    specialize prime_field_polynomial_horner_residue (c)
  10. L37
    specialize prime_field_polynomial_horner_residue (t)
06Use earlier factsL38–44

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

  1. L38
    specialize prime_field_polynomial_horner_residue (l)
  2. L39
    specialize prime_field_polynomial_horner_residue (x)
  3. L40
    specialize prime_field_polynomial_horner_residue (s)
  4. L41
    apply prime_field_polynomial_horner_residue
  5. L42
    exact hp
  6. L43
    exact hn_witness
  7. L44
    exact hs

Library-wide reading audit

Original exact command ledger · 44 lines
  1. 0001intro p
  2. 0002intro b
  3. 0003intro c
  4. 0004intro t
  5. 0005intro l
  6. 0006intro r
  7. 0007intro s
  8. 0008intro hp
  9. 0009intro hr
  10. 0010intro hs
  11. 0011have hn : exists n. (exists ff_u_ph_pfh_functional_natural ff_v_ph_pfh_functional_natural. ((((exists fs_h_ph_pfh_functional_natural_body_start. fs_h_ph_pfh_functional_natural_body_start + S (0) = S ((S (0)) * ff_v_ph_pfh_functional_natural)) /\ exists fs_q_ph_pfh_functional_natural_body_start. ff_u_ph_pfh_functional_natural = fs_q_ph_pfh_functional_natural_body_start * S ((S (0)) * ff_v_ph_pfh_functional_natural) + (0))) /\ ((((exists fs_h_ph_pfh_functional_natural_body_terminal. fs_h_ph_pfh_functional_natural_body_terminal + S (n) = S ((S (l)) * ff_v_ph_pfh_functional_natural)) /\ exists fs_q_ph_pfh_functional_natural_body_terminal. ff_u_ph_pfh_functional_natural = fs_q_ph_pfh_functional_natural_body_terminal * S ((S (l)) * ff_v_ph_pfh_functional_natural) + (n))) /\ forall ff_i_ph_pfh_functional_natural_body_steps. (exists ph_bound_pfh_functional_natural_body_steps. ph_bound_pfh_functional_natural_body_steps + S ff_i_ph_pfh_functional_natural_body_steps = l) -> exists ff_coefficient_ph_pfh_functional_natural_body_steps ff_previous_ph_pfh_functional_natural_body_steps ff_current_ph_pfh_functional_natural_body_steps. ((((exists fs_h_ph_pfh_functional_natural_body_steps_coefficient. fs_h_ph_pfh_functional_natural_body_steps_coefficient + S (ff_coefficient_ph_pfh_functional_natural_body_steps) = S ((S (ff_i_ph_pfh_functional_natural_body_steps)) * c)) /\ exists fs_q_ph_pfh_functional_natural_body_steps_coefficient. b = fs_q_ph_pfh_functional_natural_body_steps_coefficient * S ((S (ff_i_ph_pfh_functional_natural_body_steps)) * c) + (ff_coefficient_ph_pfh_functional_natural_body_steps))) /\ ((((exists fs_h_ph_pfh_functional_natural_body_steps_before. fs_h_ph_pfh_functional_natural_body_steps_before + S (ff_previous_ph_pfh_functional_natural_body_steps) = S ((S (ff_i_ph_pfh_functional_natural_body_steps)) * ff_v_ph_pfh_functional_natural)) /\ exists fs_q_ph_pfh_functional_natural_body_steps_before. ff_u_ph_pfh_functional_natural = fs_q_ph_pfh_functional_natural_body_steps_before * S ((S (ff_i_ph_pfh_functional_natural_body_steps)) * ff_v_ph_pfh_functional_natural) + (ff_previous_ph_pfh_functional_natural_body_steps))) /\ ((((exists fs_h_ph_pfh_functional_natural_body_steps_after. fs_h_ph_pfh_functional_natural_body_steps_after + S (ff_current_ph_pfh_functional_natural_body_steps) = S ((S (S ff_i_ph_pfh_functional_natural_body_steps)) * ff_v_ph_pfh_functional_natural)) /\ exists fs_q_ph_pfh_functional_natural_body_steps_after. ff_u_ph_pfh_functional_natural = fs_q_ph_pfh_functional_natural_body_steps_after * S ((S (S ff_i_ph_pfh_functional_natural_body_steps)) * ff_v_ph_pfh_functional_natural) + (ff_current_ph_pfh_functional_natural_body_steps))) /\ ff_current_ph_pfh_functional_natural_body_steps = ff_previous_ph_pfh_functional_natural_body_steps * t + ff_coefficient_ph_pfh_functional_natural_body_steps))))))
  12. 0012specialize beta_horner_eval_exists (b)
  13. 0013specialize beta_horner_eval_exists (c)
  14. 0014specialize beta_horner_eval_exists (t)
  15. 0015specialize beta_horner_eval_exists (l)
  16. 0016apply beta_horner_eval_exists
  17. 0017cases hn
  18. 0018specialize binary_canonical_residue_functional (p)
  19. 0019specialize binary_canonical_residue_functional (x)
  20. 0020specialize binary_canonical_residue_functional (r)
  21. 0021specialize binary_canonical_residue_functional (s)
  22. 0022apply binary_canonical_residue_functional
  23. 0023specialize prime_field_polynomial_horner_residue (p)
  24. 0024specialize prime_field_polynomial_horner_residue (b)
  25. 0025specialize prime_field_polynomial_horner_residue (c)
  26. 0026specialize prime_field_polynomial_horner_residue (t)
  27. 0027specialize prime_field_polynomial_horner_residue (l)
  28. 0028specialize prime_field_polynomial_horner_residue (x)
  29. 0029specialize prime_field_polynomial_horner_residue (r)
  30. 0030apply prime_field_polynomial_horner_residue
  31. 0031exact hp
  32. 0032exact hn_witness
  33. 0033exact hr
  34. 0034specialize prime_field_polynomial_horner_residue (p)
  35. 0035specialize prime_field_polynomial_horner_residue (b)
  36. 0036specialize prime_field_polynomial_horner_residue (c)
  37. 0037specialize prime_field_polynomial_horner_residue (t)
  38. 0038specialize prime_field_polynomial_horner_residue (l)
  39. 0039specialize prime_field_polynomial_horner_residue (x)
  40. 0040specialize prime_field_polynomial_horner_residue (s)
  41. 0041apply prime_field_polynomial_horner_residue
  42. 0042exact hp
  43. 0043exact hn_witness
  44. 0044exact hs