PP0014

prime_field_polynomial_scale_from_normalization

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

Normalize an actual pointwise product with a repeated scalar to obtain genuine canonical scalar multiplication.

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 k kb kc ab ac rb rc bb bc l. (exists pfa_gap_scale_scalar. pfa_gap_scale_scalar + S (k) = (p)) -> (forall fom_index_pfp_scale_source. (exists fom_gap_pfp_scale_source_index_bound. fom_gap_pfp_scale_source_index_bound + S (fom_index_pfp_scale_source) = l) -> exists fom_value_pfp_scale_source. ((((exists fom_beta_height_pfp_scale_source_entry. fom_beta_height_pfp_scale_source_entry + S (fom_value_pfp_scale_source) = S ((S (fom_index_pfp_scale_source)) * ac)) /\ exists fom_beta_quotient_pfp_scale_source_entry. ab = fom_beta_quotient_pfp_scale_source_entry * S ((S (fom_index_pfp_scale_source)) * ac) + (fom_value_pfp_scale_source))) /\ (exists fom_gap_pfp_scale_source_value_bound. fom_gap_pfp_scale_source_value_bound + S (fom_value_pfp_scale_source) = p))) -> (forall pfp_repeat_index_scale_repeated. (exists pfa_gap_scale_repeatedindex. pfa_gap_scale_repeatedindex + S (pfp_repeat_index_scale_repeated) = (l)) -> (((exists ff_h_pfp_scale_repeatedentry. ff_h_pfp_scale_repeatedentry + S (k) = S ((S (pfp_repeat_index_scale_repeated)) * kc)) /\ exists ff_q_pfp_scale_repeatedentry. kb = ff_q_pfp_scale_repeatedentry * S ((S (pfp_repeat_index_scale_repeated)) * kc) + (k)))) -> (forall fpmp_index_pfp_scale_raw fpmp_left_pfp_scale_raw fpmp_right_pfp_scale_raw fpmp_target_pfp_scale_raw. (exists fpmp_gap_pfp_scale_raw. fpmp_gap_pfp_scale_raw + S fpmp_index_pfp_scale_raw = l) -> (((exists ff_h_fpmp_pfp_scale_raw_left. ff_h_fpmp_pfp_scale_raw_left + S (fpmp_left_pfp_scale_raw) = S ((S (fpmp_index_pfp_scale_raw)) * kc)) /\ exists ff_q_fpmp_pfp_scale_raw_left. kb = ff_q_fpmp_pfp_scale_raw_left * S ((S (fpmp_index_pfp_scale_raw)) * kc) + (fpmp_left_pfp_scale_raw))) -> (((exists ff_h_fpmp_pfp_scale_raw_right. ff_h_fpmp_pfp_scale_raw_right + S (fpmp_right_pfp_scale_raw) = S ((S (fpmp_index_pfp_scale_raw)) * ac)) /\ exists ff_q_fpmp_pfp_scale_raw_right. ab = ff_q_fpmp_pfp_scale_raw_right * S ((S (fpmp_index_pfp_scale_raw)) * ac) + (fpmp_right_pfp_scale_raw))) -> (((exists ff_h_fpmp_pfp_scale_raw_target. ff_h_fpmp_pfp_scale_raw_target + S (fpmp_target_pfp_scale_raw) = S ((S (fpmp_index_pfp_scale_raw)) * rc)) /\ exists ff_q_fpmp_pfp_scale_raw_target. rb = ff_q_fpmp_pfp_scale_raw_target * S ((S (fpmp_index_pfp_scale_raw)) * rc) + (fpmp_target_pfp_scale_raw))) -> fpmp_target_pfp_scale_raw = fpmp_left_pfp_scale_raw * fpmp_right_pfp_scale_raw) -> (forall pfp_index_scale_normalize. (exists pfa_gap_scale_normalizeindex. pfa_gap_scale_normalizeindex + S (pfp_index_scale_normalize) = (l)) -> exists pfp_source_scale_normalize pfp_residue_scale_normalize. ((((exists ff_h_pfp_scale_normalizesource. ff_h_pfp_scale_normalizesource + S (pfp_source_scale_normalize) = S ((S (pfp_index_scale_normalize)) * rc)) /\ exists ff_q_pfp_scale_normalizesource. rb = ff_q_pfp_scale_normalizesource * S ((S (pfp_index_scale_normalize)) * rc) + (pfp_source_scale_normalize))) /\ (((((exists ff_h_pfp_scale_normalizetarget. ff_h_pfp_scale_normalizetarget + S (pfp_residue_scale_normalize) = S ((S (pfp_index_scale_normalize)) * bc)) /\ exists ff_q_pfp_scale_normalizetarget. bb = ff_q_pfp_scale_normalizetarget * S ((S (pfp_index_scale_normalize)) * bc) + (pfp_residue_scale_normalize))) /\ ((((exists pfa_gap_scale_normalizeresiduebound. pfa_gap_scale_normalizeresiduebound + S (pfp_residue_scale_normalize) = (p)) /\ ((exists pfa_offset_left_scale_normalizeresiduecongruence pfa_offset_right_scale_normalizeresiduecongruence. (pfp_source_scale_normalize) + (p) * pfa_offset_left_scale_normalizeresiduecongruence = (pfp_residue_scale_normalize) + (p) * pfa_offset_right_scale_normalizeresiduecongruence))))))))) -> (((exists pfa_gap_scale_resultscalar. pfa_gap_scale_resultscalar + S (k) = (p)) /\ ((forall pfp_index_scale_result. (exists pfa_gap_scale_resultindex. pfa_gap_scale_resultindex + S (pfp_index_scale_result) = (l)) -> exists pfp_source_scale_result pfp_value_scale_result. ((((exists ff_h_pfp_scale_resultsource. ff_h_pfp_scale_resultsource + S (pfp_source_scale_result) = S ((S (pfp_index_scale_result)) * ac)) /\ exists ff_q_pfp_scale_resultsource. ab = ff_q_pfp_scale_resultsource * S ((S (pfp_index_scale_result)) * ac) + (pfp_source_scale_result))) /\ (((((exists ff_h_pfp_scale_resulttarget. ff_h_pfp_scale_resulttarget + S (pfp_value_scale_result) = S ((S (pfp_index_scale_result)) * bc)) /\ exists ff_q_pfp_scale_resulttarget. bb = ff_q_pfp_scale_resulttarget * S ((S (pfp_index_scale_result)) * bc) + (pfp_value_scale_result))) /\ ((((exists pfa_gap_scale_resultoperationleft. pfa_gap_scale_resultoperationleft + S (k) = (p)) /\ (((exists pfa_gap_scale_resultoperationright. pfa_gap_scale_resultoperationright + S (pfp_source_scale_result) = (p)) /\ ((((exists pfa_gap_scale_resultoperationresultbound. pfa_gap_scale_resultoperationresultbound + S (pfp_value_scale_result) = (p)) /\ ((exists pfa_offset_left_scale_resultoperationresultcongruence pfa_offset_right_scale_resultoperationresultcongruence. ((k) * (pfp_source_scale_result)) + (p) * pfa_offset_left_scale_resultoperationresultcongruence = (pfp_value_scale_result) + (p) * pfa_offset_right_scale_resultoperationresultcongruence)))))))))))))))))

Constructive proof overview

Generated structural guide

Normalize an actual pointwise product with a repeated scalar to obtain genuine canonical scalar multiplication.

The unchanged tactic script uses 1 declared prerequisite and contains 62 exact native proof lines.

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

Proof neighborhood

Direct dependencies

prime_field_residue_input_equal 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

62 script commands · 21 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 k
  3. L3
    intro kb
  4. L4
    intro kc
  5. L5
    intro ab
  6. L6
    intro ac
  7. L7
    intro rb
  8. L8
    intro rc
  9. L9
    intro bb
  10. L10
    intro bc
02Fix variables and assumptionsL11–16

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

  1. L11
    intro l
  2. L12
    intro hk
  3. L13
    intro hc
  4. L14
    intro hr
  5. L15
    intro hm
  6. L16
    intro hn
03Separate the logical casesL17–17

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

  1. L17
    split
04Use earlier factsL18–18

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

  1. L18
    exact hk
05Fix variables and assumptionsL19–20

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

  1. L19
    intro i
  2. L20
    intro hi
06Establish haL21–24

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

  1. L21
    have ha : exists a. ((((exists ff_h_pfp_scale_chosen_a. ff_h_pfp_scale_chosen_a + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_scale_chosen_a. ab = ff_q_pfp_scale_chosen_a * S ((S (i)) * ac) + (a))) /\ ((exists pfa_gap_scale_chosen_bound. pfa_gap_scale_chosen_bound + S (a) = (p))))
  2. L22
    specialize hc (i)
  3. L23
    apply hc
  4. L24
    exact hi
07Separate the logical casesL25–26

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

  1. L25
    cases ha
  2. L26
    cases ha_witness
08Establish hvnL27–30

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

  1. L27
    have hvn : ∃ n. ∃ r. BetaAt(rb,rc,i,n) ∧ (BetaAt(bb,bc,i,r) ∧ CanonicalModularResidue(p,n,r))Definitions: CanonicalModularResidueBetaAt
  2. L28
    specialize hn (i)
  3. L29
    apply hn
  4. L30
    exact hi
09Separate the logical casesL31–34

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

  1. L31
    cases hvn
  2. L32
    cases hvn_witness
  3. L33
    cases hvn_witness_witness
  4. L34
    cases hvn_witness_witness_right
10Construct an explicit witnessL35–36

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

  1. L35
    exists x
  2. L36
    exists x2
11Separate the logical casesL37–37

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

  1. L37
    split
12Use earlier factsL38–38

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

  1. L38
    exact ha_witness_left
13Separate the logical casesL39–39

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

  1. L39
    split
14Use earlier factsL40–40

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

  1. L40
    exact hvn_witness_witness_right_left
15Separate the logical casesL41–41

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

  1. L41
    split
16Use earlier factsL42–42

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

  1. L42
    exact hk
17Separate the logical casesL43–43

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

  1. L43
    split
18Use earlier factsL44–49

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

  1. L44
    exact ha_witness_right
  2. L45
    specialize prime_field_residue_input_equal (p)
  3. L46
    specialize prime_field_residue_input_equal (k*x)
  4. L47
    specialize prime_field_residue_input_equal (x1)
  5. L48
    specialize prime_field_residue_input_equal (x2)
  6. L49
    apply prime_field_residue_input_equal
19Calculate and transport equalitiesL50–50

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

  1. L50
    symm
20Use earlier factsL51–60

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

  1. L51
    specialize hm (i)
  2. L52
    specialize hm (k)
  3. L53
    specialize hm (x)
  4. L54
    specialize hm (x1)
  5. L55
    apply hm
  6. L56
    exact hi
  7. L57
    specialize hr (i)
  8. L58
    apply hr
  9. L59
    exact hi
  10. L60
    exact ha_witness_left
21Use earlier factsL61–62

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

  1. L61
    exact hvn_witness_witness_left
  2. L62
    exact hvn_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 62 lines
  1. 0001intro p
  2. 0002intro k
  3. 0003intro kb
  4. 0004intro kc
  5. 0005intro ab
  6. 0006intro ac
  7. 0007intro rb
  8. 0008intro rc
  9. 0009intro bb
  10. 0010intro bc
  11. 0011intro l
  12. 0012intro hk
  13. 0013intro hc
  14. 0014intro hr
  15. 0015intro hm
  16. 0016intro hn
  17. 0017split
  18. 0018exact hk
  19. 0019intro i
  20. 0020intro hi
  21. 0021have ha : exists a. ((((exists ff_h_pfp_scale_chosen_a. ff_h_pfp_scale_chosen_a + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_scale_chosen_a. ab = ff_q_pfp_scale_chosen_a * S ((S (i)) * ac) + (a))) /\ ((exists pfa_gap_scale_chosen_bound. pfa_gap_scale_chosen_bound + S (a) = (p))))
  22. 0022specialize hc (i)
  23. 0023apply hc
  24. 0024exact hi
  25. 0025cases ha
  26. 0026cases ha_witness
  27. 0027have hvn : exists n r. ((((exists ff_h_pfp_scale_chosen_product. ff_h_pfp_scale_chosen_product + S (n) = S ((S (i)) * rc)) /\ exists ff_q_pfp_scale_chosen_product. rb = ff_q_pfp_scale_chosen_product * S ((S (i)) * rc) + (n))) /\ (((((exists ff_h_pfp_scale_chosen_output. ff_h_pfp_scale_chosen_output + S (r) = S ((S (i)) * bc)) /\ exists ff_q_pfp_scale_chosen_output. bb = ff_q_pfp_scale_chosen_output * S ((S (i)) * bc) + (r))) /\ ((((exists pfa_gap_scale_chosen_residuebound. pfa_gap_scale_chosen_residuebound + S (r) = (p)) /\ ((exists pfa_offset_left_scale_chosen_residuecongruence pfa_offset_right_scale_chosen_residuecongruence. (n) + (p) * pfa_offset_left_scale_chosen_residuecongruence = (r) + (p) * pfa_offset_right_scale_chosen_residuecongruence))))))))
  28. 0028specialize hn (i)
  29. 0029apply hn
  30. 0030exact hi
  31. 0031cases hvn
  32. 0032cases hvn_witness
  33. 0033cases hvn_witness_witness
  34. 0034cases hvn_witness_witness_right
  35. 0035exists x
  36. 0036exists x2
  37. 0037split
  38. 0038exact ha_witness_left
  39. 0039split
  40. 0040exact hvn_witness_witness_right_left
  41. 0041split
  42. 0042exact hk
  43. 0043split
  44. 0044exact ha_witness_right
  45. 0045specialize prime_field_residue_input_equal (p)
  46. 0046specialize prime_field_residue_input_equal (k*x)
  47. 0047specialize prime_field_residue_input_equal (x1)
  48. 0048specialize prime_field_residue_input_equal (x2)
  49. 0049apply prime_field_residue_input_equal
  50. 0050symm
  51. 0051specialize hm (i)
  52. 0052specialize hm (k)
  53. 0053specialize hm (x)
  54. 0054specialize hm (x1)
  55. 0055apply hm
  56. 0056exact hi
  57. 0057specialize hr (i)
  58. 0058apply hr
  59. 0059exact hi
  60. 0060exact ha_witness_left
  61. 0061exact hvn_witness_witness_left
  62. 0062exact hvn_witness_witness_right_right