Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Coefficients are highest-degree-first. The divisor has a nonzero decoded head; primality supplies its actual inverse. Empty quotients and remainders are included. Functionality compares the constructed execution lengths and decoded coefficients, never arbitrary beta codes. Formal polynomial equivalence compares every coefficient, not evaluations on a finite field. The formal identity and remainder-degree bound are proved separately, not assumed by the execution graph. Arbitrary quotient/remainder-pair uniqueness from a formal identity, multiplication associativity, gcd/Bezout, irreducible-polynomial existence, and the full G091 prime-power-field goal remain open. The seven displayed new names are conservative first-order notation, not new kernel primitives.
Exact theorem in conservative defined notation
∀ p. ∀ k. ∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ M. ∀ N. Prime(p) → Lt(k,p) → BetaPrefixInto(ab,ac,N,p) → ∃ x. ∃ y. FpPolynomialQuotientPrefix(p,k,ab,ac,bb,bc,M,x,y,N)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 128 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
02Induction on NL11–12
03Construct an explicit witnessL13–14
04Use earlier factsL15–24
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L15
specialize prime_field_polynomial_quotient_prefix_empty (p) - L16
specialize prime_field_polynomial_quotient_prefix_empty (k) - L17
specialize prime_field_polynomial_quotient_prefix_empty (ab) - L18
specialize prime_field_polynomial_quotient_prefix_empty (ac) - L19
specialize prime_field_polynomial_quotient_prefix_empty (bb) - L20
specialize prime_field_polynomial_quotient_prefix_empty (bc) - L21
specialize prime_field_polynomial_quotient_prefix_empty (M) - L22
specialize prime_field_polynomial_quotient_prefix_empty (0) - L23
specialize prime_field_polynomial_quotient_prefix_empty (0) - L24
apply prime_field_polynomial_quotient_prefix_empty
05Fix variables and assumptionsL25–25
Work with arbitrary variables or the premises of the current implication.
- L25
intro ha
06Establish holdL26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L26
have hold : ∃ qb. ∃ qc. FpPolynomialQuotientPrefix(p,k,ab,ac,bb,bc,M,qb,qc,N)Definitions: FpPolynomialQuotientPrefix(p,k,ab,ac,bb,bc,M,qb,qc,N)Original native command in the exact edition - L27
apply IH - L28
intro i - L29
intro hi - L30
specialize ha (i) - L31
apply ha - L32
specialize le_succ (S i) - L33
specialize le_succ (N) - L34
apply le_succ - L35
exact hi
07Separate the logical casesL36–37
08Establish hinputL38–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply ha.
- L38
have hinput : ∃ a. BetaAt(ab,ac,N,a) ∧ Lt(a,p)Definitions: BetaAt(ab,ac,N,a)Lt(a,p)Original native command in the exact edition - L39
specialize ha (N) - L40
apply ha - L41
specialize le_refl (S N) - L42
apply le_refl
09Separate the logical casesL43–44
10Establish hcL45–54
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field convolution coefficient exists.
- L45
have hc : ∃ c. FpConvolutionCoefficient(p,x,x1,N,bb,bc,M,N,c)Definitions: FpConvolutionCoefficient(p,x,x1,N,bb,bc,M,N,c)Original native command in the exact edition - L46
specialize prime_field_convolution_coefficient_exists (p) - L47
specialize prime_field_convolution_coefficient_exists (x) - L48
specialize prime_field_convolution_coefficient_exists (x1) - L49
specialize prime_field_convolution_coefficient_exists (N) - L50
specialize prime_field_convolution_coefficient_exists (bb) - L51
specialize prime_field_convolution_coefficient_exists (bc) - L52
specialize prime_field_convolution_coefficient_exists (M) - L53
specialize prime_field_convolution_coefficient_exists (N) - L54
apply prime_field_convolution_coefficient_exists
11Fix variables and assumptionsL55–55
Work with arbitrary variables or the premises of the current implication.
- L55
intro hz
12Use earlier factsL56–59
13Separate the logical casesL60–60
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L60
cases hc
14Establish hsL61–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field subtract exists.
- L61
have hs : ∃ s. FpAdd(p,x3,s,x2)Definitions: FpAdd(p,x3,s,x2)Original native command in the exact edition - L62
specialize prime_field_subtract_exists (p) - L63
specialize prime_field_subtract_exists (x2) - L64
specialize prime_field_subtract_exists (x3) - L65
apply prime_field_subtract_exists - L66
exact hp - L67
exact hinput_witness_right - L68
specialize prime_field_convolution_coefficient_bounded (p) - L69
specialize prime_field_convolution_coefficient_bounded (x) - L70
specialize prime_field_convolution_coefficient_bounded (x1)
15Use earlier factsL71–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
specialize prime_field_convolution_coefficient_bounded (N) - L72
specialize prime_field_convolution_coefficient_bounded (bb) - L73
specialize prime_field_convolution_coefficient_bounded (bc) - L74
specialize prime_field_convolution_coefficient_bounded (M) - L75
specialize prime_field_convolution_coefficient_bounded (N) - L76
specialize prime_field_convolution_coefficient_bounded (x3) - L77
apply prime_field_convolution_coefficient_bounded - L78
exact hc_witness
16Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
cases hs
17Establish hqL80–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply exists.
- L80
have hq : ∃ q. FpMul(p,k,x4,q)Definitions: FpMul(p,k,x4,q)Original native command in the exact edition - L81
specialize prime_field_multiply_exists (p) - L82
specialize prime_field_multiply_exists (k) - L83
specialize prime_field_multiply_exists (x4) - L84
apply prime_field_multiply_exists - L85
exact hp - L86
exact hk
18Separate the logical casesL87–88
19Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact hs_witness_right_left
20Separate the logical casesL90–90
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L90
cases hq
21Establish hnewL91–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
- L91
have hnew : ∃ QB. ∃ QC. BetaAt(QB,QC,N,x5) ∧ BetaPrefixEqual(x,x1,QB,QC,N)Definitions: BetaAt(QB,QC,N,x5)BetaPrefixEqual(x,x1,QB,QC,N)Original native command in the exact edition - L92
specialize beta_prefix_extend (N) - L93
specialize beta_prefix_extend (x) - L94
specialize beta_prefix_extend (x1) - L95
specialize beta_prefix_extend (x5) - L96
apply beta_prefix_extend
22Separate the logical casesL97–99
23Construct an explicit witnessL100–101
24Use earlier factsL102–111
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L102
specialize prime_field_polynomial_quotient_prefix_append (p) - L103
specialize prime_field_polynomial_quotient_prefix_append (k) - L104
specialize prime_field_polynomial_quotient_prefix_append (ab) - L105
specialize prime_field_polynomial_quotient_prefix_append (ac) - L106
specialize prime_field_polynomial_quotient_prefix_append (bb) - L107
specialize prime_field_polynomial_quotient_prefix_append (bc) - L108
specialize prime_field_polynomial_quotient_prefix_append (M) - L109
specialize prime_field_polynomial_quotient_prefix_append (x) - L110
specialize prime_field_polynomial_quotient_prefix_append (x1) - L111
specialize prime_field_polynomial_quotient_prefix_append (x6)
25Use earlier factsL112–118
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L112
specialize prime_field_polynomial_quotient_prefix_append (x7) - L113
specialize prime_field_polynomial_quotient_prefix_append (N) - L114
specialize prime_field_polynomial_quotient_prefix_append (x5) - L115
apply prime_field_polynomial_quotient_prefix_append - L116
exact hold_witness_witness - L117
exact hnew_witness_witness_right - L118
exact hnew_witness_witness_left
26Construct an explicit witnessL119–121
27Separate the logical casesL122–122
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L122
split
28Use earlier factsL123–123
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L123
exact hinput_witness_left
29Separate the logical casesL124–124
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L124
split
30Use earlier factsL125–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L125
exact hc_witness
31Separate the logical casesL126–126
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L126
split
Original defined command ledger · 128 lines
- 0001
intro p - 0002
intro k - 0003
intro ab - 0004
intro ac - 0005
intro bb - 0006
intro bc - 0007
intro M - 0008
intro N - 0009
intro hp - 0010
intro hk - 0011
induction N - 0012
intro ha - 0013
exists 0 - 0014
exists 0 - 0015
specialize prime_field_polynomial_quotient_prefix_empty (p) - 0016
specialize prime_field_polynomial_quotient_prefix_empty (k) - 0017
specialize prime_field_polynomial_quotient_prefix_empty (ab) - 0018
specialize prime_field_polynomial_quotient_prefix_empty (ac) - 0019
specialize prime_field_polynomial_quotient_prefix_empty (bb) - 0020
specialize prime_field_polynomial_quotient_prefix_empty (bc) - 0021
specialize prime_field_polynomial_quotient_prefix_empty (M) - 0022
specialize prime_field_polynomial_quotient_prefix_empty (0) - 0023
specialize prime_field_polynomial_quotient_prefix_empty (0) - 0024
apply prime_field_polynomial_quotient_prefix_empty - 0025
intro ha - 0026
have hold : ∃ qb. ∃ qc. FpPolynomialQuotientPrefix(p,k,ab,ac,bb,bc,M,qb,qc,N) - 0027
apply IH - 0028
intro i - 0029
intro hi - 0030
specialize ha (i) - 0031
apply ha - 0032
specialize le_succ (S i) - 0033
specialize le_succ (N) - 0034
apply le_succ - 0035
exact hi - 0036
cases hold - 0037
cases hold_witness - 0038
have hinput : ∃ a. BetaAt(ab,ac,N,a) ∧ Lt(a,p) - 0039
specialize ha (N) - 0040
apply ha - 0041
specialize le_refl (S N) - 0042
apply le_refl - 0043
cases hinput - 0044
cases hinput_witness - 0045
have hc : ∃ c. FpConvolutionCoefficient(p,x,x1,N,bb,bc,M,N,c) - 0046
specialize prime_field_convolution_coefficient_exists (p) - 0047
specialize prime_field_convolution_coefficient_exists (x) - 0048
specialize prime_field_convolution_coefficient_exists (x1) - 0049
specialize prime_field_convolution_coefficient_exists (N) - 0050
specialize prime_field_convolution_coefficient_exists (bb) - 0051
specialize prime_field_convolution_coefficient_exists (bc) - 0052
specialize prime_field_convolution_coefficient_exists (M) - 0053
specialize prime_field_convolution_coefficient_exists (N) - 0054
apply prime_field_convolution_coefficient_exists - 0055
intro hz - 0056
specialize prime_nonzero (p) - 0057
apply prime_nonzero - 0058
exact hp - 0059
exact hz - 0060
cases hc - 0061
have hs : ∃ s. FpAdd(p,x3,s,x2) - 0062
specialize prime_field_subtract_exists (p) - 0063
specialize prime_field_subtract_exists (x2) - 0064
specialize prime_field_subtract_exists (x3) - 0065
apply prime_field_subtract_exists - 0066
exact hp - 0067
exact hinput_witness_right - 0068
specialize prime_field_convolution_coefficient_bounded (p) - 0069
specialize prime_field_convolution_coefficient_bounded (x) - 0070
specialize prime_field_convolution_coefficient_bounded (x1) - 0071
specialize prime_field_convolution_coefficient_bounded (N) - 0072
specialize prime_field_convolution_coefficient_bounded (bb) - 0073
specialize prime_field_convolution_coefficient_bounded (bc) - 0074
specialize prime_field_convolution_coefficient_bounded (M) - 0075
specialize prime_field_convolution_coefficient_bounded (N) - 0076
specialize prime_field_convolution_coefficient_bounded (x3) - 0077
apply prime_field_convolution_coefficient_bounded - 0078
exact hc_witness - 0079
cases hs - 0080
have hq : ∃ q. FpMul(p,k,x4,q) - 0081
specialize prime_field_multiply_exists (p) - 0082
specialize prime_field_multiply_exists (k) - 0083
specialize prime_field_multiply_exists (x4) - 0084
apply prime_field_multiply_exists - 0085
exact hp - 0086
exact hk - 0087
cases hs_witness - 0088
cases hs_witness_right - 0089
exact hs_witness_right_left - 0090
cases hq - 0091
have hnew : ∃ QB. ∃ QC. BetaAt(QB,QC,N,x5) ∧ BetaPrefixEqual(x,x1,QB,QC,N) - 0092
specialize beta_prefix_extend (N) - 0093
specialize beta_prefix_extend (x) - 0094
specialize beta_prefix_extend (x1) - 0095
specialize beta_prefix_extend (x5) - 0096
apply beta_prefix_extend - 0097
cases hnew - 0098
cases hnew_witness - 0099
cases hnew_witness_witness - 0100
exists x6 - 0101
exists x7 - 0102
specialize prime_field_polynomial_quotient_prefix_append (p) - 0103
specialize prime_field_polynomial_quotient_prefix_append (k) - 0104
specialize prime_field_polynomial_quotient_prefix_append (ab) - 0105
specialize prime_field_polynomial_quotient_prefix_append (ac) - 0106
specialize prime_field_polynomial_quotient_prefix_append (bb) - 0107
specialize prime_field_polynomial_quotient_prefix_append (bc) - 0108
specialize prime_field_polynomial_quotient_prefix_append (M) - 0109
specialize prime_field_polynomial_quotient_prefix_append (x) - 0110
specialize prime_field_polynomial_quotient_prefix_append (x1) - 0111
specialize prime_field_polynomial_quotient_prefix_append (x6) - 0112
specialize prime_field_polynomial_quotient_prefix_append (x7) - 0113
specialize prime_field_polynomial_quotient_prefix_append (N) - 0114
specialize prime_field_polynomial_quotient_prefix_append (x5) - 0115
apply prime_field_polynomial_quotient_prefix_append - 0116
exact hold_witness_witness - 0117
exact hnew_witness_witness_right - 0118
exact hnew_witness_witness_left - 0119
exists x2 - 0120
exists x3 - 0121
exists x4 - 0122
split - 0123
exact hinput_witness_left - 0124
split - 0125
exact hc_witness - 0126
split - 0127
exact hs_witness - 0128
exact hq_witness