PQ004F

prime_field_polynomial_synthetic_leading_coefficient

For a nonempty quotient its leading coefficient equals the original leading coefficient, including zero when the input has leading zeros.

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. ∀ b. ∀ c. ∀ a. ∀ n. ∀ qb. ∀ qc. ∀ r. ∀ v. Prime(p)FpSyntheticDivision(p,b,c,a,S n,qb,qc,r)BetaAt(b,c,0,v)BetaAt(qb,qc,0,v)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p b c a n qb qc r v. (~((p) = 1) /\ forall pfa_factor_left_leading_prime pfa_factor_right_leading_prime. (p) = pfa_factor_left_leading_prime * pfa_factor_right_leading_prime -> pfa_factor_left_leading_prime = 1 \/ pfa_factor_right_leading_prime = 1) -> (exists pfs_history_code_leading_division pfs_history_scale_leading_division. ((((exists pfa_gap_leading_divisiontracebase. pfa_gap_leading_divisiontracebase + S (a) = (p)) /\ (((((exists ff_h_pfp_leading_divisiontraceinitial. ff_h_pfp_leading_divisiontraceinitial + S (0) = S ((S (0)) * pfs_history_scale_leading_division)) /\ exists ff_q_pfp_leading_divisiontraceinitial. pfs_history_code_leading_division = ff_q_pfp_leading_divisiontraceinitial * S ((S (0)) * pfs_history_scale_leading_division) + (0))) /\ (((((exists ff_h_pfp_leading_divisiontraceterminal. ff_h_pfp_leading_divisiontraceterminal + S (r) = S ((S (S (S n))) * pfs_history_scale_leading_division)) /\ exists ff_q_pfp_leading_divisiontraceterminal. pfs_history_code_leading_division = ff_q_pfp_leading_divisiontraceterminal * S ((S (S (S n))) * pfs_history_scale_leading_division) + (r))) /\ ((forall pfh_index_leading_divisiontracesteps. (exists pfa_gap_leading_divisiontracestepsindex. pfa_gap_leading_divisiontracestepsindex + S (pfh_index_leading_divisiontracesteps) = (S (S n))) -> (exists pfh_coefficient_leading_divisiontracestepsstep pfh_before_leading_divisiontracestepsstep pfh_after_leading_divisiontracestepsstep pfh_product_leading_divisiontracestepsstep. ((((exists ff_h_pfp_leading_divisiontracestepsstepcoefficient. ff_h_pfp_leading_divisiontracestepsstepcoefficient + S (pfh_coefficient_leading_divisiontracestepsstep) = S ((S (pfh_index_leading_divisiontracesteps)) * c)) /\ exists ff_q_pfp_leading_divisiontracestepsstepcoefficient. b = ff_q_pfp_leading_divisiontracestepsstepcoefficient * S ((S (pfh_index_leading_divisiontracesteps)) * c) + (pfh_coefficient_leading_divisiontracestepsstep))) /\ (((((exists ff_h_pfp_leading_divisiontracestepsstepbefore. ff_h_pfp_leading_divisiontracestepsstepbefore + S (pfh_before_leading_divisiontracestepsstep) = S ((S (pfh_index_leading_divisiontracesteps)) * pfs_history_scale_leading_division)) /\ exists ff_q_pfp_leading_divisiontracestepsstepbefore. pfs_history_code_leading_division = ff_q_pfp_leading_divisiontracestepsstepbefore * S ((S (pfh_index_leading_divisiontracesteps)) * pfs_history_scale_leading_division) + (pfh_before_leading_divisiontracestepsstep))) /\ (((((exists ff_h_pfp_leading_divisiontracestepsstepafter. ff_h_pfp_leading_divisiontracestepsstepafter + S (pfh_after_leading_divisiontracestepsstep) = S ((S (S (pfh_index_leading_divisiontracesteps))) * pfs_history_scale_leading_division)) /\ exists ff_q_pfp_leading_divisiontracestepsstepafter. pfs_history_code_leading_division = ff_q_pfp_leading_divisiontracestepsstepafter * S ((S (S (pfh_index_leading_divisiontracesteps))) * pfs_history_scale_leading_division) + (pfh_after_leading_divisiontracestepsstep))) /\ (((((exists pfa_gap_leading_divisiontracestepsstepmultiplyleft. pfa_gap_leading_divisiontracestepsstepmultiplyleft + S (pfh_before_leading_divisiontracestepsstep) = (p)) /\ (((exists pfa_gap_leading_divisiontracestepsstepmultiplyright. pfa_gap_leading_divisiontracestepsstepmultiplyright + S (a) = (p)) /\ ((((exists pfa_gap_leading_divisiontracestepsstepmultiplyresultbound. pfa_gap_leading_divisiontracestepsstepmultiplyresultbound + S (pfh_product_leading_divisiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_leading_divisiontracestepsstepmultiplyresultcongruence pfa_offset_right_leading_divisiontracestepsstepmultiplyresultcongruence. ((pfh_before_leading_divisiontracestepsstep) * (a)) + (p) * pfa_offset_left_leading_divisiontracestepsstepmultiplyresultcongruence = (pfh_product_leading_divisiontracestepsstep) + (p) * pfa_offset_right_leading_divisiontracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_leading_divisiontracestepsstepaddleft. pfa_gap_leading_divisiontracestepsstepaddleft + S (pfh_product_leading_divisiontracestepsstep) = (p)) /\ (((exists pfa_gap_leading_divisiontracestepsstepaddright. pfa_gap_leading_divisiontracestepsstepaddright + S (pfh_coefficient_leading_divisiontracestepsstep) = (p)) /\ ((((exists pfa_gap_leading_divisiontracestepsstepaddresultbound. pfa_gap_leading_divisiontracestepsstepaddresultbound + S (pfh_after_leading_divisiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_leading_divisiontracestepsstepaddresultcongruence pfa_offset_right_leading_divisiontracestepsstepaddresultcongruence. ((pfh_product_leading_divisiontracestepsstep) + (pfh_coefficient_leading_divisiontracestepsstep)) + (p) * pfa_offset_left_leading_divisiontracestepsstepaddresultcongruence = (pfh_after_leading_divisiontracestepsstep) + (p) * pfa_offset_right_leading_divisiontracestepsstepaddresultcongruence)))))))))))))))))))))))))) /\ ((forall ff_index_mcp_pfs_leading_divisionquotient ff_source_mcp_pfs_leading_divisionquotient ff_target_mcp_pfs_leading_divisionquotient. (exists mcp_gap_pfs_leading_divisionquotient_bound. mcp_gap_pfs_leading_divisionquotient_bound + S (ff_index_mcp_pfs_leading_divisionquotient) = (S n)) -> (((exists fs_h_mcp_pfs_leading_divisionquotient_source. fs_h_mcp_pfs_leading_divisionquotient_source + S (ff_source_mcp_pfs_leading_divisionquotient) = S ((S ((1) + (1) * ff_index_mcp_pfs_leading_divisionquotient)) * pfs_history_scale_leading_division)) /\ exists fs_q_mcp_pfs_leading_divisionquotient_source. pfs_history_code_leading_division = fs_q_mcp_pfs_leading_divisionquotient_source * S ((S ((1) + (1) * ff_index_mcp_pfs_leading_divisionquotient)) * pfs_history_scale_leading_division) + (ff_source_mcp_pfs_leading_divisionquotient))) -> (((exists fs_h_mcp_pfs_leading_divisionquotient_target. fs_h_mcp_pfs_leading_divisionquotient_target + S (ff_target_mcp_pfs_leading_divisionquotient) = S ((S (ff_index_mcp_pfs_leading_divisionquotient)) * qc)) /\ exists fs_q_mcp_pfs_leading_divisionquotient_target. qb = fs_q_mcp_pfs_leading_divisionquotient_target * S ((S (ff_index_mcp_pfs_leading_divisionquotient)) * qc) + (ff_target_mcp_pfs_leading_divisionquotient))) -> ff_target_mcp_pfs_leading_divisionquotient = ff_source_mcp_pfs_leading_divisionquotient)))) -> (((exists ff_h_pfp_leading_input. ff_h_pfp_leading_input + S (v) = S ((S (0)) * c)) /\ exists ff_q_pfp_leading_input. b = ff_q_pfp_leading_input * S ((S (0)) * c) + (v))) -> (((exists ff_h_pfp_leading_output. ff_h_pfp_leading_output + S (v) = S ((S (0)) * qc)) /\ exists ff_q_pfp_leading_output. qb = ff_q_pfp_leading_output * S ((S (0)) * qc) + (v)))

Complete tactic proof in conservative notation

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

46 script commands · 12 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
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 a
  5. L5
    intro n
  6. L6
    intro qb
  7. L7
    intro qc
  8. L8
    intro r
  9. L9
    intro v
  10. L10
    intro hp
02Fix variables and assumptionsL11–12

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

  1. L11
    intro hs
  2. L12
    intro hv
03Establish hqL13–17

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

  1. L13
    have hq : ∃ h. BetaAt(qb,qc,0,h)Definitions: BetaAt(qb,qc,0,h)Original native command in the exact edition
  2. L14
    specialize beta_at_exists (qb)
  3. L15
    specialize beta_at_exists (qc)
  4. L16
    specialize beta_at_exists (0)
  5. L17
    apply beta_at_exists
04Separate the logical casesL18–18

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

  1. L18
    cases hq
05Establish heqL19–28

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

  1. L19
    have heq : x=v
  2. L20
    specialize prime_field_polynomial_horner_constant_value (p)
  3. L21
    specialize prime_field_polynomial_horner_constant_value (b)
  4. L22
    specialize prime_field_polynomial_horner_constant_value (c)
  5. L23
    specialize prime_field_polynomial_horner_constant_value (a)
  6. L24
    specialize prime_field_polynomial_horner_constant_value (x)
  7. L25
    specialize prime_field_polynomial_horner_constant_value (v)
  8. L26
    apply prime_field_polynomial_horner_constant_value
  9. L27
    exact hp
  10. L28
    specialize prime_field_polynomial_synthetic_quotient_entry (p)
06Use earlier factsL29–38

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

  1. L29
    specialize prime_field_polynomial_synthetic_quotient_entry (b)
  2. L30
    specialize prime_field_polynomial_synthetic_quotient_entry (c)
  3. L31
    specialize prime_field_polynomial_synthetic_quotient_entry (a)
  4. L32
    specialize prime_field_polynomial_synthetic_quotient_entry (S n)
  5. L33
    specialize prime_field_polynomial_synthetic_quotient_entry (qb)
  6. L34
    specialize prime_field_polynomial_synthetic_quotient_entry (qc)
  7. L35
    specialize prime_field_polynomial_synthetic_quotient_entry (r)
  8. L36
    specialize prime_field_polynomial_synthetic_quotient_entry (0)
  9. L37
    specialize prime_field_polynomial_synthetic_quotient_entry (x)
  10. L38
    apply prime_field_polynomial_synthetic_quotient_entry
07Use earlier factsL39–39

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

  1. L39
    exact hs
08Construct an explicit witnessL40–40

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

  1. L40
    exists n
09Calculate and transport equalitiesL41–41

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

  1. L41
    simp
10Use earlier factsL42–43

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

  1. L42
    exact hq_witness
  2. L43
    exact hv
11Calculate and transport equalitiesL44–45

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

  1. L44
    rewrite heq at hq_witness
  2. L45
    rewrite heq at hq_witness
12Use earlier factsL46–46

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

  1. L46
    exact hq_witness

Library-wide reading audit

Original defined command ledger · 46 lines
  1. 0001intro p
  2. 0002intro b
  3. 0003intro c
  4. 0004intro a
  5. 0005intro n
  6. 0006intro qb
  7. 0007intro qc
  8. 0008intro r
  9. 0009intro v
  10. 0010intro hp
  11. 0011intro hs
  12. 0012intro hv
  13. 0013have hq : ∃ h. BetaAt(qb,qc,0,h)
  14. 0014specialize beta_at_exists (qb)
  15. 0015specialize beta_at_exists (qc)
  16. 0016specialize beta_at_exists (0)
  17. 0017apply beta_at_exists
  18. 0018cases hq
  19. 0019have heq : x=v
  20. 0020specialize prime_field_polynomial_horner_constant_value (p)
  21. 0021specialize prime_field_polynomial_horner_constant_value (b)
  22. 0022specialize prime_field_polynomial_horner_constant_value (c)
  23. 0023specialize prime_field_polynomial_horner_constant_value (a)
  24. 0024specialize prime_field_polynomial_horner_constant_value (x)
  25. 0025specialize prime_field_polynomial_horner_constant_value (v)
  26. 0026apply prime_field_polynomial_horner_constant_value
  27. 0027exact hp
  28. 0028specialize prime_field_polynomial_synthetic_quotient_entry (p)
  29. 0029specialize prime_field_polynomial_synthetic_quotient_entry (b)
  30. 0030specialize prime_field_polynomial_synthetic_quotient_entry (c)
  31. 0031specialize prime_field_polynomial_synthetic_quotient_entry (a)
  32. 0032specialize prime_field_polynomial_synthetic_quotient_entry (S n)
  33. 0033specialize prime_field_polynomial_synthetic_quotient_entry (qb)
  34. 0034specialize prime_field_polynomial_synthetic_quotient_entry (qc)
  35. 0035specialize prime_field_polynomial_synthetic_quotient_entry (r)
  36. 0036specialize prime_field_polynomial_synthetic_quotient_entry (0)
  37. 0037specialize prime_field_polynomial_synthetic_quotient_entry (x)
  38. 0038apply prime_field_polynomial_synthetic_quotient_entry
  39. 0039exact hs
  40. 0040exists n
  41. 0041simp
  42. 0042exact hq_witness
  43. 0043exact hv
  44. 0044rewrite heq at hq_witness
  45. 0045rewrite heq at hq_witness
  46. 0046exact hq_witness