PQ0036

prime_field_polynomial_monic_normalization_scalar_nonzero

Over a prime field the actual normalization scalar is nonzero; zero is never an inverse convention.

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. ∀ k. ∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ L. Prime(p)FpMonicNormalization(p,k,ab,ac,bb,bc,L) → ¬k = 0

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. (~((p) = 1) /\ forall pfa_factor_left_normalization_scalar_prime pfa_factor_right_normalization_scalar_prime. (p) = pfa_factor_left_normalization_scalar_prime * pfa_factor_right_normalization_scalar_prime -> pfa_factor_left_normalization_scalar_prime = 1 \/ pfa_factor_right_normalization_scalar_prime = 1) -> (((~((L) = 0)) /\ (((exists pfm_leading_normalization_scalar_source. ((((exists ff_h_pfp_normalization_scalar_sourcesource. ff_h_pfp_normalization_scalar_sourcesource + S (pfm_leading_normalization_scalar_source) = S ((S (0)) * ac)) /\ exists ff_q_pfp_normalization_scalar_sourcesource. ab = ff_q_pfp_normalization_scalar_sourcesource * S ((S (0)) * ac) + (pfm_leading_normalization_scalar_source))) /\ ((((~((pfm_leading_normalization_scalar_source) = 0)) /\ ((((exists pfa_gap_normalization_scalar_sourceinversemultiplicationleft. pfa_gap_normalization_scalar_sourceinversemultiplicationleft + S (pfm_leading_normalization_scalar_source) = (p)) /\ (((exists pfa_gap_normalization_scalar_sourceinversemultiplicationright. pfa_gap_normalization_scalar_sourceinversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_normalization_scalar_sourceinversemultiplicationresultbound. pfa_gap_normalization_scalar_sourceinversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_normalization_scalar_sourceinversemultiplicationresultcongruence pfa_offset_right_normalization_scalar_sourceinversemultiplicationresultcongruence. ((pfm_leading_normalization_scalar_source) * (k)) + (p) * pfa_offset_left_normalization_scalar_sourceinversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_normalization_scalar_sourceinversemultiplicationresultcongruence))))))))))))))) /\ ((((exists pfa_gap_normalization_scalar_sourcescalescalar. pfa_gap_normalization_scalar_sourcescalescalar + S (k) = (p)) /\ ((forall pfp_index_normalization_scalar_sourcescale. (exists pfa_gap_normalization_scalar_sourcescaleindex. pfa_gap_normalization_scalar_sourcescaleindex + S (pfp_index_normalization_scalar_sourcescale) = (L)) -> exists pfp_source_normalization_scalar_sourcescale pfp_value_normalization_scalar_sourcescale. ((((exists ff_h_pfp_normalization_scalar_sourcescalesource. ff_h_pfp_normalization_scalar_sourcescalesource + S (pfp_source_normalization_scalar_sourcescale) = S ((S (pfp_index_normalization_scalar_sourcescale)) * ac)) /\ exists ff_q_pfp_normalization_scalar_sourcescalesource. ab = ff_q_pfp_normalization_scalar_sourcescalesource * S ((S (pfp_index_normalization_scalar_sourcescale)) * ac) + (pfp_source_normalization_scalar_sourcescale))) /\ (((((exists ff_h_pfp_normalization_scalar_sourcescaletarget. ff_h_pfp_normalization_scalar_sourcescaletarget + S (pfp_value_normalization_scalar_sourcescale) = S ((S (pfp_index_normalization_scalar_sourcescale)) * bc)) /\ exists ff_q_pfp_normalization_scalar_sourcescaletarget. bb = ff_q_pfp_normalization_scalar_sourcescaletarget * S ((S (pfp_index_normalization_scalar_sourcescale)) * bc) + (pfp_value_normalization_scalar_sourcescale))) /\ ((((exists pfa_gap_normalization_scalar_sourcescaleoperationleft. pfa_gap_normalization_scalar_sourcescaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_normalization_scalar_sourcescaleoperationright. pfa_gap_normalization_scalar_sourcescaleoperationright + S (pfp_source_normalization_scalar_sourcescale) = (p)) /\ ((((exists pfa_gap_normalization_scalar_sourcescaleoperationresultbound. pfa_gap_normalization_scalar_sourcescaleoperationresultbound + S (pfp_value_normalization_scalar_sourcescale) = (p)) /\ ((exists pfa_offset_left_normalization_scalar_sourcescaleoperationresultcongruence pfa_offset_right_normalization_scalar_sourcescaleoperationresultcongruence. ((k) * (pfp_source_normalization_scalar_sourcescale)) + (p) * pfa_offset_left_normalization_scalar_sourcescaleoperationresultcongruence = (pfp_value_normalization_scalar_sourcescale) + (p) * pfa_offset_right_normalization_scalar_sourcescaleoperationresultcongruence)))))))))))))))))))))) -> ~(k=0)

Complete tactic proof in conservative notation

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

21 script commands · 4 reading checkpoints · 0 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–9

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 hp
  9. L9
    intro h
02Separate the logical casesL10–13

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

  1. L10
    cases h
  2. L11
    cases h_right
  3. L12
    cases h_right_left
  4. L13
    cases h_right_left_witness
03Fix variables and assumptionsL14–14

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

  1. L14
    intro hz
04Use earlier factsL15–21

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

  1. L15
    specialize prime_field_inverse_output_nonzero (p)
  2. L16
    specialize prime_field_inverse_output_nonzero (x)
  3. L17
    specialize prime_field_inverse_output_nonzero (k)
  4. L18
    apply prime_field_inverse_output_nonzero
  5. L19
    exact hp
  6. L20
    exact h_right_left_witness_right
  7. L21
    exact hz

Library-wide reading audit

Original defined command ledger · 21 lines
  1. 0001intro p
  2. 0002intro k
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro L
  8. 0008intro hp
  9. 0009intro h
  10. 0010cases h
  11. 0011cases h_right
  12. 0012cases h_right_left
  13. 0013cases h_right_left_witness
  14. 0014intro hz
  15. 0015specialize prime_field_inverse_output_nonzero (p)
  16. 0016specialize prime_field_inverse_output_nonzero (x)
  17. 0017specialize prime_field_inverse_output_nonzero (k)
  18. 0018apply prime_field_inverse_output_nonzero
  19. 0019exact hp
  20. 0020exact h_right_left_witness_right
  21. 0021exact hz