Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
The derivative-nonzero criterion supplies no inverse or power witness: both are constructed. Roots may be arbitrary natural representatives of signed integer polynomials. Singular-root classification and p-adic completion are separate milestones.
Exact theorem in conservative defined notation
∀ pb. ∀ pc. ∀ nb. ∀ nc. ∀ a. ∀ l. ∀ vp. ∀ dp. ∀ vn. ∀ dn. ∀ m. ∀ p. ∀ s. ∀ j. ∀ q. ¬p = 0 → ¬m = 0 → m = p · s → SignedHornerValueDerivative(pb,pc,nb,nc,a,l,vp,dp,vn,dn) → ModEq(m,vp,vn) → SignedDerivativeUnit(p,dp,dn) → Pow(p,j,q) → ∃ x. CanonicalSignedHornerLift(pb,pc,nb,nc,l,m,a,m · q,x) ∧ (∀ y. CanonicalSignedHornerLift(pb,pc,nb,nc,l,m,a,m · q,y) → y = x)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 186 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 (6)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–22
04Separate the logical casesL23–23
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L23
cases hpair
05Establish hqL24–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow nonzero of one le.
06Use earlier factsL34–34
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L34
exact hzero
07Establish hnonzeroL35–42
08Establish hmodulusL43–46
09Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hmodulus
10Establish hrecodedL48–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner coefficient blend exists.
- L48
have hrecoded : ∃ gb. ∃ gc. HornerCoefficientBlend(pb,pc,nb,nc,gb,gc,x,l)Definitions: HornerCoefficientBlend(pb,pc,nb,nc,gb,gc,x,l)Original native command in the exact edition - L49
specialize beta_horner_coefficient_blend_exists pb - L50
specialize beta_horner_coefficient_blend_exists pc - L51
specialize beta_horner_coefficient_blend_exists nb - L52
specialize beta_horner_coefficient_blend_exists nc - L53
specialize beta_horner_coefficient_blend_exists x - L54
specialize beta_horner_coefficient_blend_exists l - L55
apply beta_horner_coefficient_blend_exists
11Separate the logical casesL56–57
12Establish hGL58–63
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner derivative value exists.
- L58
have hG : ∃ v. ∃ d. HornerDerivative(x1,x2,a,l,v,d)Definitions: HornerDerivative(x1,x2,a,l,v,d)Original native command in the exact edition - L59
specialize beta_horner_derivative_value_exists x1 - L60
specialize beta_horner_derivative_value_exists x2 - L61
specialize beta_horner_derivative_value_exists a - L62
specialize beta_horner_derivative_value_exists l - L63
apply beta_horner_derivative_value_exists
13Separate the logical casesL64–65
14Establish hlinearL66–75
Establish this local claim before using it. It is not an additional assumption.
- L66
have hlinear : x3 = vp + x * vn /\ x4 = dp + x * dn - L67
specialize beta_horner_coefficient_blend_value_derivative pb - L68
specialize beta_horner_coefficient_blend_value_derivative pc - L69
specialize beta_horner_coefficient_blend_value_derivative nb - L70
specialize beta_horner_coefficient_blend_value_derivative nc - L71
specialize beta_horner_coefficient_blend_value_derivative x1 - L72
specialize beta_horner_coefficient_blend_value_derivative x2 - L73
specialize beta_horner_coefficient_blend_value_derivative x - L74
specialize beta_horner_coefficient_blend_value_derivative a - L75
specialize beta_horner_coefficient_blend_value_derivative l
15Use earlier factsL76–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
specialize beta_horner_coefficient_blend_value_derivative vp - L77
specialize beta_horner_coefficient_blend_value_derivative dp - L78
specialize beta_horner_coefficient_blend_value_derivative vn - L79
specialize beta_horner_coefficient_blend_value_derivative dn - L80
specialize beta_horner_coefficient_blend_value_derivative x3 - L81
specialize beta_horner_coefficient_blend_value_derivative x4 - L82
apply beta_horner_coefficient_blend_value_derivative - L83
exact hrecoded_witness_witness - L84
exact hpair_left - L85
exact hpair_right
16Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
exact hG_witness_witness
17Separate the logical casesL87–87
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L87
cases hlinear
18Establish hrootGL88–88
Establish this local claim before using it. It is not an additional assumption.
19Establish hiffL89–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel signed blend zero iff.
- L89
have hiff : (ModEq(m,x3,0) → ModEq(m,vp,vn)) ∧ (ModEq(m,vp,vn) → ModEq(m,x3,0))Definitions: ModEq(m,x3,0)ModEq(m,vp,vn)Original native command in the exact edition - L90
specialize hensel_signed_blend_zero_iff m - L91
specialize hensel_signed_blend_zero_iff (m * q) - L92
specialize hensel_signed_blend_zero_iff x - L93
specialize hensel_signed_blend_zero_iff vp - L94
specialize hensel_signed_blend_zero_iff vn - L95
specialize hensel_signed_blend_zero_iff x3 - L96
apply hensel_signed_blend_zero_iff - L97
exact hmodulus_witness
20Construct an explicit witnessL98–98
Supply the displayed value, then prove that it has the required property.
- L98
exists q
21Calculate and transport equalitiesL99–99
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L99
refl
22Use earlier factsL100–100
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
exact hlinear_left
23Separate the logical casesL101–101
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L101
cases hiff
24Use earlier factsL102–103
25Establish hcopGL104–112
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel signed blend unit coprime.
- L104
- L105
specialize hensel_signed_blend_unit_coprime p - L106
specialize hensel_signed_blend_unit_coprime (m * q) - L107
specialize hensel_signed_blend_unit_coprime x - L108
specialize hensel_signed_blend_unit_coprime dp - L109
specialize hensel_signed_blend_unit_coprime dn - L110
specialize hensel_signed_blend_unit_coprime x4 - L111
apply hensel_signed_blend_unit_coprime - L112
exact hmodulus_witness
26Construct an explicit witnessL113–113
Supply the displayed value, then prove that it has the required property.
- L113
exists s * q
27Calculate and transport equalitiesL114–114
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L114
rewrite hfactor
28Use earlier factsL115–117
29Establish hiterationL118–127
Establish this local claim before using it. It is not an additional assumption.
- L118
have hiteration : ∀ e. ∀ Q. Pow(p,e,Q) → ∃ x. CanonicalHornerLift(x1,x2,l,m,a,m · Q,x) ∧ (∀ y. CanonicalHornerLift(x1,x2,l,m,a,m · Q,y) → y = x)Definitions: Pow(p,e,Q)CanonicalHornerLift(x1,x2,l,m,a,m · Q,x)CanonicalHornerLift(x1,x2,l,m,a,m · Q,y)Original native command in the exact edition - L119
specialize beta_horner_hensel_iterated_exists_unique x1 - L120
specialize beta_horner_hensel_iterated_exists_unique x2 - L121
specialize beta_horner_hensel_iterated_exists_unique a - L122
specialize beta_horner_hensel_iterated_exists_unique l - L123
specialize beta_horner_hensel_iterated_exists_unique x3 - L124
specialize beta_horner_hensel_iterated_exists_unique x4 - L125
specialize beta_horner_hensel_iterated_exists_unique m - L126
specialize beta_horner_hensel_iterated_exists_unique p - L127
specialize beta_horner_hensel_iterated_exists_unique s
30Use earlier factsL128–134
31Establish hresultL135–139
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hiteration.
- L135
have hresult : ∃ r. CanonicalHornerLift(x1,x2,l,m,a,m · q,r) ∧ (∀ x. CanonicalHornerLift(x1,x2,l,m,a,m · q,x) → x = r)Definitions: CanonicalHornerLift(x1,x2,l,m,a,m · q,r)CanonicalHornerLift(x1,x2,l,m,a,m · q,x)Original native command in the exact edition - L136
specialize hiteration j - L137
specialize hiteration q - L138
apply hiteration - L139
exact hpower
32Establish hequivalenceL140–149
Establish this local claim before using it. It is not an additional assumption.
- L140
have hequivalence : ∀ t. (HornerRootModulo(x1,x2,t,l,m · q) → SignedHornerRoot(pb,pc,nb,nc,t,l,m · q)) ∧ (SignedHornerRoot(pb,pc,nb,nc,t,l,m · q) → HornerRootModulo(x1,x2,t,l,m · q))Definitions: HornerRootModulo(x1,x2,t,l,m · q)SignedHornerRoot(pb,pc,nb,nc,t,l,m · q)Original native command in the exact edition - L141
intro t - L142
specialize beta_signed_horner_blend_root_equivalence pb - L143
specialize beta_signed_horner_blend_root_equivalence pc - L144
specialize beta_signed_horner_blend_root_equivalence nb - L145
specialize beta_signed_horner_blend_root_equivalence nc - L146
specialize beta_signed_horner_blend_root_equivalence x1 - L147
specialize beta_signed_horner_blend_root_equivalence x2 - L148
specialize beta_signed_horner_blend_root_equivalence x - L149
specialize beta_signed_horner_blend_root_equivalence t
33Use earlier factsL150–154
Instantiate or apply named facts and discharge the corresponding proof obligations.
34Construct an explicit witnessL155–155
Supply the displayed value, then prove that it has the required property.
- L155
exists 1
35Calculate and transport equalitiesL156–156
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L156
symm
36Use earlier factsL157–158
37Separate the logical casesL159–162
38Construct an explicit witnessL163–163
Supply the displayed value, then prove that it has the required property.
- L163
exists x5
39Separate the logical casesL164–165
40Use earlier factsL166–166
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L166
exact hresult_witness_left_left
41Separate the logical casesL167–167
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L167
split
42Use earlier factsL168–169
43Separate the logical casesL170–170
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L170
cases hequivalence
44Use earlier factsL171–172
45Fix variables and assumptionsL173–174
46Separate the logical casesL175–176
47Use earlier factsL177–178
48Separate the logical casesL179–179
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L179
split
49Use earlier factsL180–180
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L180
exact hz_left
50Separate the logical casesL181–181
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L181
split
51Use earlier factsL182–183
52Separate the logical casesL184–184
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L184
cases hequivalence
Original defined command ledger · 186 lines
- 0001
intro pb - 0002
intro pc - 0003
intro nb - 0004
intro nc - 0005
intro a - 0006
intro l - 0007
intro vp - 0008
intro dp - 0009
intro vn - 0010
intro dn - 0011
intro m - 0012
intro p - 0013
intro s - 0014
intro j - 0015
intro q - 0016
intro hp - 0017
intro hm - 0018
intro hfactor - 0019
intro hpair - 0020
intro hroot - 0021
intro hunit - 0022
intro hpower - 0023
cases hpair - 0024
have hq : ~(q = 0) - 0025
intro hzero - 0026
specialize pow_nonzero_of_one_le p - 0027
specialize pow_nonzero_of_one_le j - 0028
specialize pow_nonzero_of_one_le q - 0029
apply pow_nonzero_of_one_le - 0030
specialize one_le_of_ne_zero p - 0031
apply one_le_of_ne_zero - 0032
exact hp - 0033
exact hpower - 0034
exact hzero - 0035
have hnonzero : ~(m * q = 0) - 0036
intro hzero - 0037
specialize mul_ne_zero m - 0038
specialize mul_ne_zero q - 0039
apply mul_ne_zero - 0040
exact hm - 0041
exact hq - 0042
exact hzero - 0043
have hmodulus : exists h. m * q = S h - 0044
specialize nonzero_is_succ (m * q) - 0045
apply nonzero_is_succ - 0046
exact hnonzero - 0047
cases hmodulus - 0048
have hrecoded : ∃ gb. ∃ gc. HornerCoefficientBlend(pb,pc,nb,nc,gb,gc,x,l) - 0049
specialize beta_horner_coefficient_blend_exists pb - 0050
specialize beta_horner_coefficient_blend_exists pc - 0051
specialize beta_horner_coefficient_blend_exists nb - 0052
specialize beta_horner_coefficient_blend_exists nc - 0053
specialize beta_horner_coefficient_blend_exists x - 0054
specialize beta_horner_coefficient_blend_exists l - 0055
apply beta_horner_coefficient_blend_exists - 0056
cases hrecoded - 0057
cases hrecoded_witness - 0058
have hG : ∃ v. ∃ d. HornerDerivative(x1,x2,a,l,v,d) - 0059
specialize beta_horner_derivative_value_exists x1 - 0060
specialize beta_horner_derivative_value_exists x2 - 0061
specialize beta_horner_derivative_value_exists a - 0062
specialize beta_horner_derivative_value_exists l - 0063
apply beta_horner_derivative_value_exists - 0064
cases hG - 0065
cases hG_witness - 0066
have hlinear : x3 = vp + x * vn /\ x4 = dp + x * dn - 0067
specialize beta_horner_coefficient_blend_value_derivative pb - 0068
specialize beta_horner_coefficient_blend_value_derivative pc - 0069
specialize beta_horner_coefficient_blend_value_derivative nb - 0070
specialize beta_horner_coefficient_blend_value_derivative nc - 0071
specialize beta_horner_coefficient_blend_value_derivative x1 - 0072
specialize beta_horner_coefficient_blend_value_derivative x2 - 0073
specialize beta_horner_coefficient_blend_value_derivative x - 0074
specialize beta_horner_coefficient_blend_value_derivative a - 0075
specialize beta_horner_coefficient_blend_value_derivative l - 0076
specialize beta_horner_coefficient_blend_value_derivative vp - 0077
specialize beta_horner_coefficient_blend_value_derivative dp - 0078
specialize beta_horner_coefficient_blend_value_derivative vn - 0079
specialize beta_horner_coefficient_blend_value_derivative dn - 0080
specialize beta_horner_coefficient_blend_value_derivative x3 - 0081
specialize beta_horner_coefficient_blend_value_derivative x4 - 0082
apply beta_horner_coefficient_blend_value_derivative - 0083
exact hrecoded_witness_witness - 0084
exact hpair_left - 0085
exact hpair_right - 0086
exact hG_witness_witness - 0087
cases hlinear - 0088
have hrootG : ModEq(m,x3,0) - 0089
have hiff : (ModEq(m,x3,0) → ModEq(m,vp,vn)) ∧ (ModEq(m,vp,vn) → ModEq(m,x3,0)) - 0090
specialize hensel_signed_blend_zero_iff m - 0091
specialize hensel_signed_blend_zero_iff (m * q) - 0092
specialize hensel_signed_blend_zero_iff x - 0093
specialize hensel_signed_blend_zero_iff vp - 0094
specialize hensel_signed_blend_zero_iff vn - 0095
specialize hensel_signed_blend_zero_iff x3 - 0096
apply hensel_signed_blend_zero_iff - 0097
exact hmodulus_witness - 0098
exists q - 0099
refl - 0100
exact hlinear_left - 0101
cases hiff - 0102
apply hiff_right - 0103
exact hroot - 0104
have hcopG : Coprime(x4,p) - 0105
specialize hensel_signed_blend_unit_coprime p - 0106
specialize hensel_signed_blend_unit_coprime (m * q) - 0107
specialize hensel_signed_blend_unit_coprime x - 0108
specialize hensel_signed_blend_unit_coprime dp - 0109
specialize hensel_signed_blend_unit_coprime dn - 0110
specialize hensel_signed_blend_unit_coprime x4 - 0111
apply hensel_signed_blend_unit_coprime - 0112
exact hmodulus_witness - 0113
exists s * q - 0114
rewrite hfactor - 0115
apply mul_assoc - 0116
exact hlinear_right - 0117
exact hunit - 0118
have hiteration : ∀ e. ∀ Q. Pow(p,e,Q) → ∃ x. CanonicalHornerLift(x1,x2,l,m,a,m · Q,x) ∧ (∀ y. CanonicalHornerLift(x1,x2,l,m,a,m · Q,y) → y = x) - 0119
specialize beta_horner_hensel_iterated_exists_unique x1 - 0120
specialize beta_horner_hensel_iterated_exists_unique x2 - 0121
specialize beta_horner_hensel_iterated_exists_unique a - 0122
specialize beta_horner_hensel_iterated_exists_unique l - 0123
specialize beta_horner_hensel_iterated_exists_unique x3 - 0124
specialize beta_horner_hensel_iterated_exists_unique x4 - 0125
specialize beta_horner_hensel_iterated_exists_unique m - 0126
specialize beta_horner_hensel_iterated_exists_unique p - 0127
specialize beta_horner_hensel_iterated_exists_unique s - 0128
apply beta_horner_hensel_iterated_exists_unique - 0129
exact hp - 0130
exact hm - 0131
exact hG_witness_witness - 0132
exact hfactor - 0133
exact hrootG - 0134
exact hcopG - 0135
have hresult : ∃ r. CanonicalHornerLift(x1,x2,l,m,a,m · q,r) ∧ (∀ x. CanonicalHornerLift(x1,x2,l,m,a,m · q,x) → x = r) - 0136
specialize hiteration j - 0137
specialize hiteration q - 0138
apply hiteration - 0139
exact hpower - 0140
have hequivalence : ∀ t. (HornerRootModulo(x1,x2,t,l,m · q) → SignedHornerRoot(pb,pc,nb,nc,t,l,m · q)) ∧ (SignedHornerRoot(pb,pc,nb,nc,t,l,m · q) → HornerRootModulo(x1,x2,t,l,m · q)) - 0141
intro t - 0142
specialize beta_signed_horner_blend_root_equivalence pb - 0143
specialize beta_signed_horner_blend_root_equivalence pc - 0144
specialize beta_signed_horner_blend_root_equivalence nb - 0145
specialize beta_signed_horner_blend_root_equivalence nc - 0146
specialize beta_signed_horner_blend_root_equivalence x1 - 0147
specialize beta_signed_horner_blend_root_equivalence x2 - 0148
specialize beta_signed_horner_blend_root_equivalence x - 0149
specialize beta_signed_horner_blend_root_equivalence t - 0150
specialize beta_signed_horner_blend_root_equivalence l - 0151
specialize beta_signed_horner_blend_root_equivalence (m * q) - 0152
specialize beta_signed_horner_blend_root_equivalence (m * q) - 0153
apply beta_signed_horner_blend_root_equivalence - 0154
exact hmodulus_witness - 0155
exists 1 - 0156
symm - 0157
apply mul_one - 0158
exact hrecoded_witness_witness - 0159
cases hresult - 0160
cases hresult_witness - 0161
cases hresult_witness_left - 0162
cases hresult_witness_left_right - 0163
exists x5 - 0164
split - 0165
split - 0166
exact hresult_witness_left_left - 0167
split - 0168
exact hresult_witness_left_right_left - 0169
specialize hequivalence x5 - 0170
cases hequivalence - 0171
apply hequivalence_left - 0172
exact hresult_witness_left_right_right - 0173
intro z - 0174
intro hz - 0175
cases hz - 0176
cases hz_right - 0177
specialize hresult_witness_right z - 0178
apply hresult_witness_right - 0179
split - 0180
exact hz_left - 0181
split - 0182
exact hz_right_left - 0183
specialize hequivalence z - 0184
cases hequivalence - 0185
apply hequivalence_right - 0186
exact hz_right_right