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. ∀ a. ∀ b. ∀ k. ∀ ab. ∀ ac. ∀ xb. ∀ xc. ∀ yb. ∀ yc. ∀ ub. ∀ uc. ∀ vb. ∀ vc. ∀ l. FpAdd(p,a,b,k) → FpPolyScale(p,k,ab,ac,ub,uc,l) → FpPolyScale(p,a,ab,ac,xb,xc,l) → FpPolyScale(p,b,ab,ac,yb,yc,l) → FpPolyAdd(p,xb,xc,yb,yc,vb,vc,l) → BetaPrefixEqual(ub,uc,vb,vc,l)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 126 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 (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–24
04Establish entry_aL25–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L25
have entry_a : ∃ z. BetaAt(ab,ac,i,z)Definitions: BetaAt(ab,ac,i,z)Original native command in the exact edition - L26
specialize beta_at_exists (ab) - L27
specialize beta_at_exists (ac) - L28
specialize beta_at_exists (i) - L29
apply beta_at_exists
05Separate the logical casesL30–30
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L30
cases entry_a
06Establish entry_xL31–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L31
have entry_x : ∃ z. BetaAt(xb,xc,i,z)Definitions: BetaAt(xb,xc,i,z)Original native command in the exact edition - L32
specialize beta_at_exists (xb) - L33
specialize beta_at_exists (xc) - L34
specialize beta_at_exists (i) - L35
apply beta_at_exists
07Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
cases entry_x
08Establish entry_yL37–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L37
have entry_y : ∃ z. BetaAt(yb,yc,i,z)Definitions: BetaAt(yb,yc,i,z)Original native command in the exact edition - L38
specialize beta_at_exists (yb) - L39
specialize beta_at_exists (yc) - L40
specialize beta_at_exists (i) - L41
apply beta_at_exists
09Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
cases entry_y
10Establish entry_vL43–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L43
have entry_v : ∃ z. BetaAt(vb,vc,i,z)Definitions: BetaAt(vb,vc,i,z)Original native command in the exact edition - L44
specialize beta_at_exists (vb) - L45
specialize beta_at_exists (vc) - L46
specialize beta_at_exists (i) - L47
apply beta_at_exists
11Separate the logical casesL48–48
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L48
cases entry_v
12Establish heqL49–58
Establish this local claim before using it. It is not an additional assumption.
- L49
have heq : r=x3 - L50
specialize prime_field_right_distributive (p) - L51
specialize prime_field_right_distributive (x) - L52
specialize prime_field_right_distributive (a) - L53
specialize prime_field_right_distributive (b) - L54
specialize prime_field_right_distributive (k) - L55
specialize prime_field_right_distributive (x1) - L56
specialize prime_field_right_distributive (x2) - L57
specialize prime_field_right_distributive (r) - L58
specialize prime_field_right_distributive (x3)
13Use earlier factsL59–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
apply prime_field_right_distributive - L60
exact hsum - L61
specialize prime_field_polynomial_scale_entry (p) - L62
specialize prime_field_polynomial_scale_entry (k) - L63
specialize prime_field_polynomial_scale_entry (ab) - L64
specialize prime_field_polynomial_scale_entry (ac) - L65
specialize prime_field_polynomial_scale_entry (ub) - L66
specialize prime_field_polynomial_scale_entry (uc) - L67
specialize prime_field_polynomial_scale_entry (l) - L68
specialize prime_field_polynomial_scale_entry (i)
14Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
specialize prime_field_polynomial_scale_entry (x) - L70
specialize prime_field_polynomial_scale_entry (r) - L71
apply prime_field_polynomial_scale_entry - L72
exact hleft - L73
exact hi - L74
exact entry_a_witness - L75
exact hr - L76
specialize prime_field_polynomial_scale_entry (p) - L77
specialize prime_field_polynomial_scale_entry (a) - L78
specialize prime_field_polynomial_scale_entry (ab)
15Use earlier factsL79–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L79
specialize prime_field_polynomial_scale_entry (ac) - L80
specialize prime_field_polynomial_scale_entry (xb) - L81
specialize prime_field_polynomial_scale_entry (xc) - L82
specialize prime_field_polynomial_scale_entry (l) - L83
specialize prime_field_polynomial_scale_entry (i) - L84
specialize prime_field_polynomial_scale_entry (x) - L85
specialize prime_field_polynomial_scale_entry (x1) - L86
apply prime_field_polynomial_scale_entry - L87
exact hfirst - L88
exact hi
16Use earlier factsL89–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact entry_a_witness - L90
exact entry_x_witness - L91
specialize prime_field_polynomial_scale_entry (p) - L92
specialize prime_field_polynomial_scale_entry (b) - L93
specialize prime_field_polynomial_scale_entry (ab) - L94
specialize prime_field_polynomial_scale_entry (ac) - L95
specialize prime_field_polynomial_scale_entry (yb) - L96
specialize prime_field_polynomial_scale_entry (yc) - L97
specialize prime_field_polynomial_scale_entry (l) - L98
specialize prime_field_polynomial_scale_entry (i)
17Use earlier factsL99–108
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
specialize prime_field_polynomial_scale_entry (x) - L100
specialize prime_field_polynomial_scale_entry (x2) - L101
apply prime_field_polynomial_scale_entry - L102
exact hsecond - L103
exact hi - L104
exact entry_a_witness - L105
exact entry_y_witness - L106
specialize prime_field_polynomial_add_entry (p) - L107
specialize prime_field_polynomial_add_entry (xb) - L108
specialize prime_field_polynomial_add_entry (xc)
18Use earlier factsL109–118
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L109
specialize prime_field_polynomial_add_entry (yb) - L110
specialize prime_field_polynomial_add_entry (yc) - L111
specialize prime_field_polynomial_add_entry (vb) - L112
specialize prime_field_polynomial_add_entry (vc) - L113
specialize prime_field_polynomial_add_entry (l) - L114
specialize prime_field_polynomial_add_entry (i) - L115
specialize prime_field_polynomial_add_entry (x1) - L116
specialize prime_field_polynomial_add_entry (x2) - L117
specialize prime_field_polynomial_add_entry (x3) - L118
apply prime_field_polynomial_add_entry
19Use earlier factsL119–123
20Calculate and transport equalitiesL124–125
21Use earlier factsL126–126
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L126
exact entry_v_witness
Original defined command ledger · 126 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro k - 0005
intro ab - 0006
intro ac - 0007
intro xb - 0008
intro xc - 0009
intro yb - 0010
intro yc - 0011
intro ub - 0012
intro uc - 0013
intro vb - 0014
intro vc - 0015
intro l - 0016
intro hsum - 0017
intro hleft - 0018
intro hfirst - 0019
intro hsecond - 0020
intro hright - 0021
intro i - 0022
intro r - 0023
intro hi - 0024
intro hr - 0025
have entry_a : ∃ z. BetaAt(ab,ac,i,z) - 0026
specialize beta_at_exists (ab) - 0027
specialize beta_at_exists (ac) - 0028
specialize beta_at_exists (i) - 0029
apply beta_at_exists - 0030
cases entry_a - 0031
have entry_x : ∃ z. BetaAt(xb,xc,i,z) - 0032
specialize beta_at_exists (xb) - 0033
specialize beta_at_exists (xc) - 0034
specialize beta_at_exists (i) - 0035
apply beta_at_exists - 0036
cases entry_x - 0037
have entry_y : ∃ z. BetaAt(yb,yc,i,z) - 0038
specialize beta_at_exists (yb) - 0039
specialize beta_at_exists (yc) - 0040
specialize beta_at_exists (i) - 0041
apply beta_at_exists - 0042
cases entry_y - 0043
have entry_v : ∃ z. BetaAt(vb,vc,i,z) - 0044
specialize beta_at_exists (vb) - 0045
specialize beta_at_exists (vc) - 0046
specialize beta_at_exists (i) - 0047
apply beta_at_exists - 0048
cases entry_v - 0049
have heq : r=x3 - 0050
specialize prime_field_right_distributive (p) - 0051
specialize prime_field_right_distributive (x) - 0052
specialize prime_field_right_distributive (a) - 0053
specialize prime_field_right_distributive (b) - 0054
specialize prime_field_right_distributive (k) - 0055
specialize prime_field_right_distributive (x1) - 0056
specialize prime_field_right_distributive (x2) - 0057
specialize prime_field_right_distributive (r) - 0058
specialize prime_field_right_distributive (x3) - 0059
apply prime_field_right_distributive - 0060
exact hsum - 0061
specialize prime_field_polynomial_scale_entry (p) - 0062
specialize prime_field_polynomial_scale_entry (k) - 0063
specialize prime_field_polynomial_scale_entry (ab) - 0064
specialize prime_field_polynomial_scale_entry (ac) - 0065
specialize prime_field_polynomial_scale_entry (ub) - 0066
specialize prime_field_polynomial_scale_entry (uc) - 0067
specialize prime_field_polynomial_scale_entry (l) - 0068
specialize prime_field_polynomial_scale_entry (i) - 0069
specialize prime_field_polynomial_scale_entry (x) - 0070
specialize prime_field_polynomial_scale_entry (r) - 0071
apply prime_field_polynomial_scale_entry - 0072
exact hleft - 0073
exact hi - 0074
exact entry_a_witness - 0075
exact hr - 0076
specialize prime_field_polynomial_scale_entry (p) - 0077
specialize prime_field_polynomial_scale_entry (a) - 0078
specialize prime_field_polynomial_scale_entry (ab) - 0079
specialize prime_field_polynomial_scale_entry (ac) - 0080
specialize prime_field_polynomial_scale_entry (xb) - 0081
specialize prime_field_polynomial_scale_entry (xc) - 0082
specialize prime_field_polynomial_scale_entry (l) - 0083
specialize prime_field_polynomial_scale_entry (i) - 0084
specialize prime_field_polynomial_scale_entry (x) - 0085
specialize prime_field_polynomial_scale_entry (x1) - 0086
apply prime_field_polynomial_scale_entry - 0087
exact hfirst - 0088
exact hi - 0089
exact entry_a_witness - 0090
exact entry_x_witness - 0091
specialize prime_field_polynomial_scale_entry (p) - 0092
specialize prime_field_polynomial_scale_entry (b) - 0093
specialize prime_field_polynomial_scale_entry (ab) - 0094
specialize prime_field_polynomial_scale_entry (ac) - 0095
specialize prime_field_polynomial_scale_entry (yb) - 0096
specialize prime_field_polynomial_scale_entry (yc) - 0097
specialize prime_field_polynomial_scale_entry (l) - 0098
specialize prime_field_polynomial_scale_entry (i) - 0099
specialize prime_field_polynomial_scale_entry (x) - 0100
specialize prime_field_polynomial_scale_entry (x2) - 0101
apply prime_field_polynomial_scale_entry - 0102
exact hsecond - 0103
exact hi - 0104
exact entry_a_witness - 0105
exact entry_y_witness - 0106
specialize prime_field_polynomial_add_entry (p) - 0107
specialize prime_field_polynomial_add_entry (xb) - 0108
specialize prime_field_polynomial_add_entry (xc) - 0109
specialize prime_field_polynomial_add_entry (yb) - 0110
specialize prime_field_polynomial_add_entry (yc) - 0111
specialize prime_field_polynomial_add_entry (vb) - 0112
specialize prime_field_polynomial_add_entry (vc) - 0113
specialize prime_field_polynomial_add_entry (l) - 0114
specialize prime_field_polynomial_add_entry (i) - 0115
specialize prime_field_polynomial_add_entry (x1) - 0116
specialize prime_field_polynomial_add_entry (x2) - 0117
specialize prime_field_polynomial_add_entry (x3) - 0118
apply prime_field_polynomial_add_entry - 0119
exact hright - 0120
exact hi - 0121
exact entry_x_witness - 0122
exact entry_y_witness - 0123
exact entry_v_witness - 0124
rewrite heq - 0125
rewrite heq - 0126
exact entry_v_witness