PQ003C

prime_field_polynomial_monic_normalization_exists

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

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

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 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))))))))))))))))))))))

Constructive proof overview

Generated structural guide

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

The unchanged tactic script uses 5 declared prerequisites and contains 70 exact native proof lines.

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

Proof neighborhood

Direct dependencies

matrix_rank_bounded_prefix_value Alpha theorem; checked-use authorized prime_field_inverse_exists Alpha theorem; checked-use authorized prime_field_polynomial_scale_exists Alpha theorem; checked-use authorized prime_nonzero Stable theorem; checked-use authorized succ_ne_zero Stable 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

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.

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–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
    have ha : exists pfa_gap_normalization_exists_bound. pfa_gap_normalization_exists_bound + S (x) = (p)
  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
  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
    have hc : FpInv(p,x,x1)Definitions: FpInv
  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
  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 exact 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 : exists pfa_gap_normalization_exists_bound. pfa_gap_normalization_exists_bound + S (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 : exists k. (((~((x) = 0)) /\ ((((exists pfa_gap_normalization_exists_inversemultiplicationleft. pfa_gap_normalization_exists_inversemultiplicationleft + S (x) = (p)) /\ (((exists pfa_gap_normalization_exists_inversemultiplicationright. pfa_gap_normalization_exists_inversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_normalization_exists_inversemultiplicationresultbound. pfa_gap_normalization_exists_inversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_normalization_exists_inversemultiplicationresultcongruence pfa_offset_right_normalization_exists_inversemultiplicationresultcongruence. ((x) * (k)) + (p) * pfa_offset_left_normalization_exists_inversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_normalization_exists_inversemultiplicationresultcongruence))))))))))))
  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 : ((~((x) = 0)) /\ ((((exists pfa_gap_normalization_exists_inverse_copymultiplicationleft. pfa_gap_normalization_exists_inverse_copymultiplicationleft + S (x) = (p)) /\ (((exists pfa_gap_normalization_exists_inverse_copymultiplicationright. pfa_gap_normalization_exists_inverse_copymultiplicationright + S (x1) = (p)) /\ ((((exists pfa_gap_normalization_exists_inverse_copymultiplicationresultbound. pfa_gap_normalization_exists_inverse_copymultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_normalization_exists_inverse_copymultiplicationresultcongruence pfa_offset_right_normalization_exists_inverse_copymultiplicationresultcongruence. ((x) * (x1)) + (p) * pfa_offset_left_normalization_exists_inverse_copymultiplicationresultcongruence = (1) + (p) * pfa_offset_right_normalization_exists_inverse_copymultiplicationresultcongruence)))))))))))
  34. 0034exact hi_witness
  35. 0035cases hc
  36. 0036cases hc_right
  37. 0037cases hc_right_right
  38. 0038have hs : exists bb bc. (((exists pfa_gap_normalization_exists_scalescalar. pfa_gap_normalization_exists_scalescalar + S (x1) = (p)) /\ ((forall pfp_index_normalization_exists_scale. (exists pfa_gap_normalization_exists_scaleindex. pfa_gap_normalization_exists_scaleindex + S (pfp_index_normalization_exists_scale) = (L)) -> exists pfp_source_normalization_exists_scale pfp_value_normalization_exists_scale. ((((exists ff_h_pfp_normalization_exists_scalesource. ff_h_pfp_normalization_exists_scalesource + S (pfp_source_normalization_exists_scale) = S ((S (pfp_index_normalization_exists_scale)) * ac)) /\ exists ff_q_pfp_normalization_exists_scalesource. ab = ff_q_pfp_normalization_exists_scalesource * S ((S (pfp_index_normalization_exists_scale)) * ac) + (pfp_source_normalization_exists_scale))) /\ (((((exists ff_h_pfp_normalization_exists_scaletarget. ff_h_pfp_normalization_exists_scaletarget + S (pfp_value_normalization_exists_scale) = S ((S (pfp_index_normalization_exists_scale)) * bc)) /\ exists ff_q_pfp_normalization_exists_scaletarget. bb = ff_q_pfp_normalization_exists_scaletarget * S ((S (pfp_index_normalization_exists_scale)) * bc) + (pfp_value_normalization_exists_scale))) /\ ((((exists pfa_gap_normalization_exists_scaleoperationleft. pfa_gap_normalization_exists_scaleoperationleft + S (x1) = (p)) /\ (((exists pfa_gap_normalization_exists_scaleoperationright. pfa_gap_normalization_exists_scaleoperationright + S (pfp_source_normalization_exists_scale) = (p)) /\ ((((exists pfa_gap_normalization_exists_scaleoperationresultbound. pfa_gap_normalization_exists_scaleoperationresultbound + S (pfp_value_normalization_exists_scale) = (p)) /\ ((exists pfa_offset_left_normalization_exists_scaleoperationresultcongruence pfa_offset_right_normalization_exists_scaleoperationresultcongruence. ((x1) * (pfp_source_normalization_exists_scale)) + (p) * pfa_offset_left_normalization_exists_scaleoperationresultcongruence = (pfp_value_normalization_exists_scale) + (p) * pfa_offset_right_normalization_exists_scaleoperationresultcongruence)))))))))))))))))
  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