PQ003C

prime_field_polynomial_monic_normalization_exists

Construct an actual inverse and actual scaled beta prefix from a canonical nonzero-leading representation over any prime, including two.

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

All coefficients retain the established highest-degree-first order. Trimming handles empty and all-zero prefixes; monic normalization requires a nonzero leading coefficient. Synthetic division has a nonempty input of length S n and a quotient of length n, unique in decoded values. Its coefficient recurrence, actual evaluation remainder and positive-degree drop are checked. General polynomial Euclidean division, gcd/Bezout, an arbitrary-convolution factor theorem, irreducible-polynomial existence and the full G091 prime-power-field endpoint remain open. These exact theorems are first admitted to Alpha v32; Stable remains unchanged.

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ d. Prime(p)FpRepresentedDegree(p,ab,ac,L,d) → ∃ x. ∃ y. ∃ z. FpMonicNormalization(p,x,ab,ac,y,z,L)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p ab ac L d. (~((p) = 1) /\ forall pfa_factor_left_normalization_exists_prime pfa_factor_right_normalization_exists_prime. (p) = pfa_factor_left_normalization_exists_prime * pfa_factor_right_normalization_exists_prime -> pfa_factor_left_normalization_exists_prime = 1 \/ pfa_factor_right_normalization_exists_prime = 1) -> ((((L)=S (d)) /\ (((forall fom_index_pfp_normalization_exists_inputcoefficients. (exists fom_gap_pfp_normalization_exists_inputcoefficients_index_bound. fom_gap_pfp_normalization_exists_inputcoefficients_index_bound + S (fom_index_pfp_normalization_exists_inputcoefficients) = L) -> exists fom_value_pfp_normalization_exists_inputcoefficients. ((((exists fom_beta_height_pfp_normalization_exists_inputcoefficients_entry. fom_beta_height_pfp_normalization_exists_inputcoefficients_entry + S (fom_value_pfp_normalization_exists_inputcoefficients) = S ((S (fom_index_pfp_normalization_exists_inputcoefficients)) * ac)) /\ exists fom_beta_quotient_pfp_normalization_exists_inputcoefficients_entry. ab = fom_beta_quotient_pfp_normalization_exists_inputcoefficients_entry * S ((S (fom_index_pfp_normalization_exists_inputcoefficients)) * ac) + (fom_value_pfp_normalization_exists_inputcoefficients))) /\ (exists fom_gap_pfp_normalization_exists_inputcoefficients_value_bound. fom_gap_pfp_normalization_exists_inputcoefficients_value_bound + S (fom_value_pfp_normalization_exists_inputcoefficients) = p))) /\ ((exists pfd_leading_normalization_exists_input. ((((exists ff_h_pfp_normalization_exists_inputentry. ff_h_pfp_normalization_exists_inputentry + S (pfd_leading_normalization_exists_input) = S ((S (0)) * ac)) /\ exists ff_q_pfp_normalization_exists_inputentry. ab = ff_q_pfp_normalization_exists_inputentry * S ((S (0)) * ac) + (pfd_leading_normalization_exists_input))) /\ ((~(pfd_leading_normalization_exists_input=0)))))))))) -> exists k bb bc. (((~((L) = 0)) /\ (((exists pfm_leading_normalization_exists_result. ((((exists ff_h_pfp_normalization_exists_resultsource. ff_h_pfp_normalization_exists_resultsource + S (pfm_leading_normalization_exists_result) = S ((S (0)) * ac)) /\ exists ff_q_pfp_normalization_exists_resultsource. ab = ff_q_pfp_normalization_exists_resultsource * S ((S (0)) * ac) + (pfm_leading_normalization_exists_result))) /\ ((((~((pfm_leading_normalization_exists_result) = 0)) /\ ((((exists pfa_gap_normalization_exists_resultinversemultiplicationleft. pfa_gap_normalization_exists_resultinversemultiplicationleft + S (pfm_leading_normalization_exists_result) = (p)) /\ (((exists pfa_gap_normalization_exists_resultinversemultiplicationright. pfa_gap_normalization_exists_resultinversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_normalization_exists_resultinversemultiplicationresultbound. pfa_gap_normalization_exists_resultinversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_normalization_exists_resultinversemultiplicationresultcongruence pfa_offset_right_normalization_exists_resultinversemultiplicationresultcongruence. ((pfm_leading_normalization_exists_result) * (k)) + (p) * pfa_offset_left_normalization_exists_resultinversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_normalization_exists_resultinversemultiplicationresultcongruence))))))))))))))) /\ ((((exists pfa_gap_normalization_exists_resultscalescalar. pfa_gap_normalization_exists_resultscalescalar + S (k) = (p)) /\ ((forall pfp_index_normalization_exists_resultscale. (exists pfa_gap_normalization_exists_resultscaleindex. pfa_gap_normalization_exists_resultscaleindex + S (pfp_index_normalization_exists_resultscale) = (L)) -> exists pfp_source_normalization_exists_resultscale pfp_value_normalization_exists_resultscale. ((((exists ff_h_pfp_normalization_exists_resultscalesource. ff_h_pfp_normalization_exists_resultscalesource + S (pfp_source_normalization_exists_resultscale) = S ((S (pfp_index_normalization_exists_resultscale)) * ac)) /\ exists ff_q_pfp_normalization_exists_resultscalesource. ab = ff_q_pfp_normalization_exists_resultscalesource * S ((S (pfp_index_normalization_exists_resultscale)) * ac) + (pfp_source_normalization_exists_resultscale))) /\ (((((exists ff_h_pfp_normalization_exists_resultscaletarget. ff_h_pfp_normalization_exists_resultscaletarget + S (pfp_value_normalization_exists_resultscale) = S ((S (pfp_index_normalization_exists_resultscale)) * bc)) /\ exists ff_q_pfp_normalization_exists_resultscaletarget. bb = ff_q_pfp_normalization_exists_resultscaletarget * S ((S (pfp_index_normalization_exists_resultscale)) * bc) + (pfp_value_normalization_exists_resultscale))) /\ ((((exists pfa_gap_normalization_exists_resultscaleoperationleft. pfa_gap_normalization_exists_resultscaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_normalization_exists_resultscaleoperationright. pfa_gap_normalization_exists_resultscaleoperationright + S (pfp_source_normalization_exists_resultscale) = (p)) /\ ((((exists pfa_gap_normalization_exists_resultscaleoperationresultbound. pfa_gap_normalization_exists_resultscaleoperationresultbound + S (pfp_value_normalization_exists_resultscale) = (p)) /\ ((exists pfa_offset_left_normalization_exists_resultscaleoperationresultcongruence pfa_offset_right_normalization_exists_resultscaleoperationresultcongruence. ((k) * (pfp_source_normalization_exists_resultscale)) + (p) * pfa_offset_left_normalization_exists_resultscaleoperationresultcongruence = (pfp_value_normalization_exists_resultscale) + (p) * pfa_offset_right_normalization_exists_resultscaleoperationresultcongruence))))))))))))))))))))))

Complete tactic proof in conservative notation

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

70 script commands · 23 reading checkpoints · 4 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–7

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

  1. L1
    intro p
  2. L2
    intro ab
  3. L3
    intro ac
  4. L4
    intro L
  5. L5
    intro d
  6. L6
    intro hp
  7. L7
    intro hd
02Separate the logical casesL8–11

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

  1. L8
    cases hd
  2. L9
    cases hd_right
  3. L10
    cases hd_right_right
  4. L11
    cases hd_right_right_witness
03Establish haL12–21

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix value.

  1. L12
  2. L13
    specialize matrix_rank_bounded_prefix_value (ab)
  3. L14
    specialize matrix_rank_bounded_prefix_value (ac)
  4. L15
    specialize matrix_rank_bounded_prefix_value (L)
  5. L16
    specialize matrix_rank_bounded_prefix_value (p)
  6. L17
    specialize matrix_rank_bounded_prefix_value (0)
  7. L18
    specialize matrix_rank_bounded_prefix_value (x)
  8. L19
    apply matrix_rank_bounded_prefix_value
  9. L20
    exact hd_right_left
  10. L21
    rewrite hd_left
04Construct an explicit witnessL22–22

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

  1. L22
    exists d
05Calculate and transport equalitiesL23–23

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

  1. L23
    simp
06Use earlier factsL24–24

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

  1. L24
    exact hd_right_right_witness_left
07Establish hiL25–31

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field inverse exists.

  1. L25
    have hi : ∃ k. FpInv(p,x,k)Definitions: FpInv(p,x,k)Original native command in the exact edition
  2. L26
    specialize prime_field_inverse_exists (p)
  3. L27
    specialize prime_field_inverse_exists (x)
  4. L28
    apply prime_field_inverse_exists
  5. L29
    exact hp
  6. L30
    exact ha
  7. L31
    exact hd_right_right_witness_right
08Separate the logical casesL32–32

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

  1. L32
    cases hi
09Establish hcL33–34

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

  1. L33
  2. L34
    exact hi_witness
10Separate the logical casesL35–37

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

  1. L35
    cases hc
  2. L36
    cases hc_right
  3. L37
    cases hc_right_right
11Establish hsL38–47

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial scale exists.

  1. L38
    have hs : ∃ bb. ∃ bc. FpPolyScale(p,x1,ab,ac,bb,bc,L)Definitions: FpPolyScale(p,x1,ab,ac,bb,bc,L)Original native command in the exact edition
  2. L39
    specialize prime_field_polynomial_scale_exists (p)
  3. L40
    specialize prime_field_polynomial_scale_exists (x1)
  4. L41
    specialize prime_field_polynomial_scale_exists (ab)
  5. L42
    specialize prime_field_polynomial_scale_exists (ac)
  6. L43
    specialize prime_field_polynomial_scale_exists (L)
  7. L44
    apply prime_field_polynomial_scale_exists
  8. L45
    intro hz
  9. L46
    specialize prime_nonzero (p)
  10. L47
    apply prime_nonzero
12Use earlier factsL48–51

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

  1. L48
    exact hp
  2. L49
    exact hz
  3. L50
    exact hc_right_right_left
  4. L51
    exact hd_right_left
13Separate the logical casesL52–53

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

  1. L52
    cases hs
  2. L53
    cases hs_witness
14Construct an explicit witnessL54–56

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

  1. L54
    exists x1
  2. L55
    exists x2
  3. L56
    exists x3
15Separate the logical casesL57–57

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

  1. L57
    split
16Fix variables and assumptionsL58–58

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

  1. L58
    intro hz
17Use earlier factsL59–60

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

  1. L59
    specialize succ_ne_zero (d)
  2. L60
    apply succ_ne_zero
18Calculate and transport equalitiesL61–62

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

  1. L61
    trans L
  2. L62
    symm
19Use earlier factsL63–64

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

  1. L63
    exact hd_left
  2. L64
    exact hz
20Separate the logical casesL65–65

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

  1. L65
    split
21Construct an explicit witnessL66–66

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

  1. L66
    exists x
22Separate the logical casesL67–67

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

  1. L67
    split
23Use earlier factsL68–70

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

  1. L68
    exact hd_right_right_witness_left
  2. L69
    exact hi_witness
  3. L70
    exact hs_witness_witness

Library-wide reading audit

Original defined command ledger · 70 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro d
  6. 0006intro hp
  7. 0007intro hd
  8. 0008cases hd
  9. 0009cases hd_right
  10. 0010cases hd_right_right
  11. 0011cases hd_right_right_witness
  12. 0012have ha : Lt(x,p)
  13. 0013specialize matrix_rank_bounded_prefix_value (ab)
  14. 0014specialize matrix_rank_bounded_prefix_value (ac)
  15. 0015specialize matrix_rank_bounded_prefix_value (L)
  16. 0016specialize matrix_rank_bounded_prefix_value (p)
  17. 0017specialize matrix_rank_bounded_prefix_value (0)
  18. 0018specialize matrix_rank_bounded_prefix_value (x)
  19. 0019apply matrix_rank_bounded_prefix_value
  20. 0020exact hd_right_left
  21. 0021rewrite hd_left
  22. 0022exists d
  23. 0023simp
  24. 0024exact hd_right_right_witness_left
  25. 0025have hi : ∃ k. FpInv(p,x,k)
  26. 0026specialize prime_field_inverse_exists (p)
  27. 0027specialize prime_field_inverse_exists (x)
  28. 0028apply prime_field_inverse_exists
  29. 0029exact hp
  30. 0030exact ha
  31. 0031exact hd_right_right_witness_right
  32. 0032cases hi
  33. 0033have hc : FpInv(p,x,x1)
  34. 0034exact hi_witness
  35. 0035cases hc
  36. 0036cases hc_right
  37. 0037cases hc_right_right
  38. 0038have hs : ∃ bb. ∃ bc. FpPolyScale(p,x1,ab,ac,bb,bc,L)
  39. 0039specialize prime_field_polynomial_scale_exists (p)
  40. 0040specialize prime_field_polynomial_scale_exists (x1)
  41. 0041specialize prime_field_polynomial_scale_exists (ab)
  42. 0042specialize prime_field_polynomial_scale_exists (ac)
  43. 0043specialize prime_field_polynomial_scale_exists (L)
  44. 0044apply prime_field_polynomial_scale_exists
  45. 0045intro hz
  46. 0046specialize prime_nonzero (p)
  47. 0047apply prime_nonzero
  48. 0048exact hp
  49. 0049exact hz
  50. 0050exact hc_right_right_left
  51. 0051exact hd_right_left
  52. 0052cases hs
  53. 0053cases hs_witness
  54. 0054exists x1
  55. 0055exists x2
  56. 0056exists x3
  57. 0057split
  58. 0058intro hz
  59. 0059specialize succ_ne_zero (d)
  60. 0060apply succ_ne_zero
  61. 0061trans L
  62. 0062symm
  63. 0063exact hd_left
  64. 0064exact hz
  65. 0065split
  66. 0066exists x
  67. 0067split
  68. 0068exact hd_right_right_witness_left
  69. 0069exact hi_witness
  70. 0070exact hs_witness_witness