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. ∀ bb. ∀ bc. ∀ ub. ∀ uc. ∀ vb. ∀ vc. ∀ l. FpMul(p,a,b,k) → FpPolyScale(p,b,ab,ac,bb,bc,l) → FpPolyScale(p,a,bb,bc,ub,uc,l) → FpPolyScale(p,k,ab,ac,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 99 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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro hr
04Establish entry_aL22–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L22
have entry_a : ∃ z. BetaAt(ab,ac,i,z)Definitions: BetaAt(ab,ac,i,z)Original native command in the exact edition - L23
specialize beta_at_exists (ab) - L24
specialize beta_at_exists (ac) - L25
specialize beta_at_exists (i) - L26
apply beta_at_exists
05Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
cases entry_a
06Establish entry_bL28–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L28
have entry_b : ∃ z. BetaAt(bb,bc,i,z)Definitions: BetaAt(bb,bc,i,z)Original native command in the exact edition - L29
specialize beta_at_exists (bb) - L30
specialize beta_at_exists (bc) - L31
specialize beta_at_exists (i) - L32
apply beta_at_exists
07Separate the logical casesL33–33
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L33
cases entry_b
08Establish entry_vL34–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L34
have entry_v : ∃ z. BetaAt(vb,vc,i,z)Definitions: BetaAt(vb,vc,i,z)Original native command in the exact edition - L35
specialize beta_at_exists (vb) - L36
specialize beta_at_exists (vc) - L37
specialize beta_at_exists (i) - L38
apply beta_at_exists
09Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
cases entry_v
10Establish heqL40–49
Establish this local claim before using it. It is not an additional assumption.
- L40
have heq : r=x2 - L41
symm - L42
specialize prime_field_multiply_associative (p) - L43
specialize prime_field_multiply_associative (a) - L44
specialize prime_field_multiply_associative (b) - L45
specialize prime_field_multiply_associative (x) - L46
specialize prime_field_multiply_associative (k) - L47
specialize prime_field_multiply_associative (x1) - L48
specialize prime_field_multiply_associative (x2) - L49
specialize prime_field_multiply_associative (r)
11Use earlier factsL50–59
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply prime_field_multiply_associative - L51
exact hk - L52
specialize prime_field_polynomial_scale_entry (p) - L53
specialize prime_field_polynomial_scale_entry (k) - L54
specialize prime_field_polynomial_scale_entry (ab) - L55
specialize prime_field_polynomial_scale_entry (ac) - L56
specialize prime_field_polynomial_scale_entry (vb) - L57
specialize prime_field_polynomial_scale_entry (vc) - L58
specialize prime_field_polynomial_scale_entry (l) - L59
specialize prime_field_polynomial_scale_entry (i)
12Use earlier factsL60–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L60
specialize prime_field_polynomial_scale_entry (x) - L61
specialize prime_field_polynomial_scale_entry (x2) - L62
apply prime_field_polynomial_scale_entry - L63
exact hproduct - L64
exact hi - L65
exact entry_a_witness - L66
exact entry_v_witness - L67
specialize prime_field_polynomial_scale_entry (p) - L68
specialize prime_field_polynomial_scale_entry (b) - L69
specialize prime_field_polynomial_scale_entry (ab)
13Use earlier factsL70–79
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
specialize prime_field_polynomial_scale_entry (ac) - L71
specialize prime_field_polynomial_scale_entry (bb) - L72
specialize prime_field_polynomial_scale_entry (bc) - L73
specialize prime_field_polynomial_scale_entry (l) - L74
specialize prime_field_polynomial_scale_entry (i) - L75
specialize prime_field_polynomial_scale_entry (x) - L76
specialize prime_field_polynomial_scale_entry (x1) - L77
apply prime_field_polynomial_scale_entry - L78
exact hfirst - L79
exact hi
14Use earlier factsL80–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact entry_a_witness - L81
exact entry_b_witness - L82
specialize prime_field_polynomial_scale_entry (p) - L83
specialize prime_field_polynomial_scale_entry (a) - L84
specialize prime_field_polynomial_scale_entry (bb) - L85
specialize prime_field_polynomial_scale_entry (bc) - L86
specialize prime_field_polynomial_scale_entry (ub) - L87
specialize prime_field_polynomial_scale_entry (uc) - L88
specialize prime_field_polynomial_scale_entry (l) - L89
specialize prime_field_polynomial_scale_entry (i)
15Use earlier factsL90–96
16Calculate and transport equalitiesL97–98
17Use earlier factsL99–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
exact entry_v_witness
Original defined command ledger · 99 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro k - 0005
intro ab - 0006
intro ac - 0007
intro bb - 0008
intro bc - 0009
intro ub - 0010
intro uc - 0011
intro vb - 0012
intro vc - 0013
intro l - 0014
intro hk - 0015
intro hfirst - 0016
intro hsecond - 0017
intro hproduct - 0018
intro i - 0019
intro r - 0020
intro hi - 0021
intro hr - 0022
have entry_a : ∃ z. BetaAt(ab,ac,i,z) - 0023
specialize beta_at_exists (ab) - 0024
specialize beta_at_exists (ac) - 0025
specialize beta_at_exists (i) - 0026
apply beta_at_exists - 0027
cases entry_a - 0028
have entry_b : ∃ z. BetaAt(bb,bc,i,z) - 0029
specialize beta_at_exists (bb) - 0030
specialize beta_at_exists (bc) - 0031
specialize beta_at_exists (i) - 0032
apply beta_at_exists - 0033
cases entry_b - 0034
have entry_v : ∃ z. BetaAt(vb,vc,i,z) - 0035
specialize beta_at_exists (vb) - 0036
specialize beta_at_exists (vc) - 0037
specialize beta_at_exists (i) - 0038
apply beta_at_exists - 0039
cases entry_v - 0040
have heq : r=x2 - 0041
symm - 0042
specialize prime_field_multiply_associative (p) - 0043
specialize prime_field_multiply_associative (a) - 0044
specialize prime_field_multiply_associative (b) - 0045
specialize prime_field_multiply_associative (x) - 0046
specialize prime_field_multiply_associative (k) - 0047
specialize prime_field_multiply_associative (x1) - 0048
specialize prime_field_multiply_associative (x2) - 0049
specialize prime_field_multiply_associative (r) - 0050
apply prime_field_multiply_associative - 0051
exact hk - 0052
specialize prime_field_polynomial_scale_entry (p) - 0053
specialize prime_field_polynomial_scale_entry (k) - 0054
specialize prime_field_polynomial_scale_entry (ab) - 0055
specialize prime_field_polynomial_scale_entry (ac) - 0056
specialize prime_field_polynomial_scale_entry (vb) - 0057
specialize prime_field_polynomial_scale_entry (vc) - 0058
specialize prime_field_polynomial_scale_entry (l) - 0059
specialize prime_field_polynomial_scale_entry (i) - 0060
specialize prime_field_polynomial_scale_entry (x) - 0061
specialize prime_field_polynomial_scale_entry (x2) - 0062
apply prime_field_polynomial_scale_entry - 0063
exact hproduct - 0064
exact hi - 0065
exact entry_a_witness - 0066
exact entry_v_witness - 0067
specialize prime_field_polynomial_scale_entry (p) - 0068
specialize prime_field_polynomial_scale_entry (b) - 0069
specialize prime_field_polynomial_scale_entry (ab) - 0070
specialize prime_field_polynomial_scale_entry (ac) - 0071
specialize prime_field_polynomial_scale_entry (bb) - 0072
specialize prime_field_polynomial_scale_entry (bc) - 0073
specialize prime_field_polynomial_scale_entry (l) - 0074
specialize prime_field_polynomial_scale_entry (i) - 0075
specialize prime_field_polynomial_scale_entry (x) - 0076
specialize prime_field_polynomial_scale_entry (x1) - 0077
apply prime_field_polynomial_scale_entry - 0078
exact hfirst - 0079
exact hi - 0080
exact entry_a_witness - 0081
exact entry_b_witness - 0082
specialize prime_field_polynomial_scale_entry (p) - 0083
specialize prime_field_polynomial_scale_entry (a) - 0084
specialize prime_field_polynomial_scale_entry (bb) - 0085
specialize prime_field_polynomial_scale_entry (bc) - 0086
specialize prime_field_polynomial_scale_entry (ub) - 0087
specialize prime_field_polynomial_scale_entry (uc) - 0088
specialize prime_field_polynomial_scale_entry (l) - 0089
specialize prime_field_polynomial_scale_entry (i) - 0090
specialize prime_field_polynomial_scale_entry (x1) - 0091
specialize prime_field_polynomial_scale_entry (r) - 0092
apply prime_field_polynomial_scale_entry - 0093
exact hsecond - 0094
exact hi - 0095
exact entry_b_witness - 0096
exact hr - 0097
rewrite heq - 0098
rewrite heq - 0099
exact entry_v_witness