Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Length is representation length, not polynomial degree. Leading zeros and the empty zero polynomial are allowed; the canonical argument guard x<p also applies to the empty case. Evaluation is defined by actual field-operation steps, not an assumed residue invariant. Polynomial division, gcd, irreducibles and general prime-power extension fields remain open; this does not close G091.
Exact theorem in conservative defined notation
∀ p. ∀ b. ∀ c. ∀ t. ∀ l. ∀ a. ∀ h. ∀ k. ∀ r. Prime(p) → BetaAt(b,c,l,a) → FpHorner(p,b,c,t,l,h) → FpMul(p,h,t,k) → FpAdd(p,k,a,r) → FpHorner(p,b,c,t,S l,r)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 112 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
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.
Named ingredients (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hboundsL15–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner input bounds.
- L15
have hbounds : Lt(t,p) ∧ BetaPrefixInto(b,c,l,p)Definitions: Lt(t,p)BetaPrefixInto(b,c,l,p)Original native command in the exact edition - L16
specialize prime_field_polynomial_horner_input_bounds (p) - L17
specialize prime_field_polynomial_horner_input_bounds (b) - L18
specialize prime_field_polynomial_horner_input_bounds (c) - L19
specialize prime_field_polynomial_horner_input_bounds (t) - L20
specialize prime_field_polynomial_horner_input_bounds (l) - L21
specialize prime_field_polynomial_horner_input_bounds (h) - L22
apply prime_field_polynomial_horner_input_bounds - L23
exact hh
04Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hbounds
05Establish hrcopyL25–26
Establish this local claim before using it. It is not an additional assumption.
06Separate the logical casesL27–28
07Establish hcoeffL29–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix extend.
- L29
have hcoeff : BetaPrefixInto(b,c,S l,p)Definitions: BetaPrefixInto(b,c,S l,p)Original native command in the exact edition - L30
specialize matrix_rank_bounded_prefix_extend (b) - L31
specialize matrix_rank_bounded_prefix_extend (c) - L32
specialize matrix_rank_bounded_prefix_extend (l) - L33
specialize matrix_rank_bounded_prefix_extend (p) - L34
specialize matrix_rank_bounded_prefix_extend (a) - L35
apply matrix_rank_bounded_prefix_extend - L36
exact hbounds_right - L37
exact ha - L38
exact hrcopy_right_left
08Establish heL39–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner exists.
- L39
have he : ∃ s. FpHorner(p,b,c,t,S l,s)Definitions: FpHorner(p,b,c,t,S l,s)Original native command in the exact edition - L40
specialize prime_field_polynomial_horner_exists (p) - L41
specialize prime_field_polynomial_horner_exists (b) - L42
specialize prime_field_polynomial_horner_exists (c) - L43
specialize prime_field_polynomial_horner_exists (t) - L44
specialize prime_field_polynomial_horner_exists (S l) - L45
apply prime_field_polynomial_horner_exists - L46
exact hp - L47
exact hcoeff - L48
exact hbounds_left
09Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases he
10Establish hsL50–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner successor decompose.
- L50
have hs : ∃ a. ∃ h. ∃ k. BetaAt(b,c,l,a) ∧ (FpHorner(p,b,c,t,l,h) ∧ (FpMul(p,h,t,k) ∧ FpAdd(p,k,a,x)))Definitions: BetaAt(b,c,l,a)FpHorner(p,b,c,t,l,h)FpMul(p,h,t,k)FpAdd(p,k,a,x)Original native command in the exact edition - L51
specialize prime_field_polynomial_horner_successor_decompose (p) - L52
specialize prime_field_polynomial_horner_successor_decompose (b) - L53
specialize prime_field_polynomial_horner_successor_decompose (c) - L54
specialize prime_field_polynomial_horner_successor_decompose (t) - L55
specialize prime_field_polynomial_horner_successor_decompose (l) - L56
specialize prime_field_polynomial_horner_successor_decompose (x) - L57
apply prime_field_polynomial_horner_successor_decompose - L58
exact he_witness
11Separate the logical casesL59–64
12Establish haeL65–73
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
13Establish hheL74–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner functional.
- L74
have hhe : x2=h - L75
specialize prime_field_polynomial_horner_functional (p) - L76
specialize prime_field_polynomial_horner_functional (b) - L77
specialize prime_field_polynomial_horner_functional (c) - L78
specialize prime_field_polynomial_horner_functional (t) - L79
specialize prime_field_polynomial_horner_functional (l) - L80
specialize prime_field_polynomial_horner_functional (x2) - L81
specialize prime_field_polynomial_horner_functional (h) - L82
apply prime_field_polynomial_horner_functional - L83
exact hp
14Use earlier factsL84–85
15Calculate and transport equalitiesL86–87
16Establish hkeL88–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply functional.
- L88
have hke : x3=k - L89
specialize prime_field_multiply_functional (p) - L90
specialize prime_field_multiply_functional (h) - L91
specialize prime_field_multiply_functional (t) - L92
specialize prime_field_multiply_functional (x3) - L93
specialize prime_field_multiply_functional (k) - L94
apply prime_field_multiply_functional - L95
exact hs_witness_witness_witness_right_right_left - L96
exact hm - L97
rewrite hae at hs_witness_witness_witness_right_right_right
17Calculate and transport equalitiesL98–100
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
18Establish hreL101–110
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field add functional.
- L101
have hre : x=r - L102
specialize prime_field_add_functional (p) - L103
specialize prime_field_add_functional (k) - L104
specialize prime_field_add_functional (a) - L105
specialize prime_field_add_functional (x) - L106
specialize prime_field_add_functional (r) - L107
apply prime_field_add_functional - L108
exact hs_witness_witness_witness_right_right_right - L109
exact hr - L110
rewrite hre at he_witness
19Calculate and transport equalitiesL111–111
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L111
rewrite hre at he_witness
20Use earlier factsL112–112
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L112
exact he_witness
Original defined command ledger · 112 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
intro t - 0005
intro l - 0006
intro a - 0007
intro h - 0008
intro k - 0009
intro r - 0010
intro hp - 0011
intro ha - 0012
intro hh - 0013
intro hm - 0014
intro hr - 0015
have hbounds : Lt(t,p) ∧ BetaPrefixInto(b,c,l,p) - 0016
specialize prime_field_polynomial_horner_input_bounds (p) - 0017
specialize prime_field_polynomial_horner_input_bounds (b) - 0018
specialize prime_field_polynomial_horner_input_bounds (c) - 0019
specialize prime_field_polynomial_horner_input_bounds (t) - 0020
specialize prime_field_polynomial_horner_input_bounds (l) - 0021
specialize prime_field_polynomial_horner_input_bounds (h) - 0022
apply prime_field_polynomial_horner_input_bounds - 0023
exact hh - 0024
cases hbounds - 0025
have hrcopy : FpAdd(p,k,a,r) - 0026
exact hr - 0027
cases hrcopy - 0028
cases hrcopy_right - 0029
have hcoeff : BetaPrefixInto(b,c,S l,p) - 0030
specialize matrix_rank_bounded_prefix_extend (b) - 0031
specialize matrix_rank_bounded_prefix_extend (c) - 0032
specialize matrix_rank_bounded_prefix_extend (l) - 0033
specialize matrix_rank_bounded_prefix_extend (p) - 0034
specialize matrix_rank_bounded_prefix_extend (a) - 0035
apply matrix_rank_bounded_prefix_extend - 0036
exact hbounds_right - 0037
exact ha - 0038
exact hrcopy_right_left - 0039
have he : ∃ s. FpHorner(p,b,c,t,S l,s) - 0040
specialize prime_field_polynomial_horner_exists (p) - 0041
specialize prime_field_polynomial_horner_exists (b) - 0042
specialize prime_field_polynomial_horner_exists (c) - 0043
specialize prime_field_polynomial_horner_exists (t) - 0044
specialize prime_field_polynomial_horner_exists (S l) - 0045
apply prime_field_polynomial_horner_exists - 0046
exact hp - 0047
exact hcoeff - 0048
exact hbounds_left - 0049
cases he - 0050
have hs : ∃ a. ∃ h. ∃ k. BetaAt(b,c,l,a) ∧ (FpHorner(p,b,c,t,l,h) ∧ (FpMul(p,h,t,k) ∧ FpAdd(p,k,a,x))) - 0051
specialize prime_field_polynomial_horner_successor_decompose (p) - 0052
specialize prime_field_polynomial_horner_successor_decompose (b) - 0053
specialize prime_field_polynomial_horner_successor_decompose (c) - 0054
specialize prime_field_polynomial_horner_successor_decompose (t) - 0055
specialize prime_field_polynomial_horner_successor_decompose (l) - 0056
specialize prime_field_polynomial_horner_successor_decompose (x) - 0057
apply prime_field_polynomial_horner_successor_decompose - 0058
exact he_witness - 0059
cases hs - 0060
cases hs_witness - 0061
cases hs_witness_witness - 0062
cases hs_witness_witness_witness - 0063
cases hs_witness_witness_witness_right - 0064
cases hs_witness_witness_witness_right_right - 0065
have hae : x1=a - 0066
specialize beta_at_unique (b) - 0067
specialize beta_at_unique (c) - 0068
specialize beta_at_unique (l) - 0069
specialize beta_at_unique (x1) - 0070
specialize beta_at_unique (a) - 0071
apply beta_at_unique - 0072
exact hs_witness_witness_witness_left - 0073
exact ha - 0074
have hhe : x2=h - 0075
specialize prime_field_polynomial_horner_functional (p) - 0076
specialize prime_field_polynomial_horner_functional (b) - 0077
specialize prime_field_polynomial_horner_functional (c) - 0078
specialize prime_field_polynomial_horner_functional (t) - 0079
specialize prime_field_polynomial_horner_functional (l) - 0080
specialize prime_field_polynomial_horner_functional (x2) - 0081
specialize prime_field_polynomial_horner_functional (h) - 0082
apply prime_field_polynomial_horner_functional - 0083
exact hp - 0084
exact hs_witness_witness_witness_right_left - 0085
exact hh - 0086
rewrite hhe at hs_witness_witness_witness_right_right_left - 0087
rewrite hhe at hs_witness_witness_witness_right_right_left - 0088
have hke : x3=k - 0089
specialize prime_field_multiply_functional (p) - 0090
specialize prime_field_multiply_functional (h) - 0091
specialize prime_field_multiply_functional (t) - 0092
specialize prime_field_multiply_functional (x3) - 0093
specialize prime_field_multiply_functional (k) - 0094
apply prime_field_multiply_functional - 0095
exact hs_witness_witness_witness_right_right_left - 0096
exact hm - 0097
rewrite hae at hs_witness_witness_witness_right_right_right - 0098
rewrite hae at hs_witness_witness_witness_right_right_right - 0099
rewrite hke at hs_witness_witness_witness_right_right_right - 0100
rewrite hke at hs_witness_witness_witness_right_right_right - 0101
have hre : x=r - 0102
specialize prime_field_add_functional (p) - 0103
specialize prime_field_add_functional (k) - 0104
specialize prime_field_add_functional (a) - 0105
specialize prime_field_add_functional (x) - 0106
specialize prime_field_add_functional (r) - 0107
apply prime_field_add_functional - 0108
exact hs_witness_witness_witness_right_right_right - 0109
exact hr - 0110
rewrite hre at he_witness - 0111
rewrite hre at he_witness - 0112
exact he_witness