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
∀ b. ∀ c. ∀ a. ∀ l. ∀ n. ∀ d. ∀ p. ∀ k. ∀ j. ∀ m. ¬p = 0 → ¬k = 0 → Pow(p,k,m) → HornerDerivative(b,c,a,l,n,d) → ModEq(m,n,0) → Coprime(d,p) → ∃ x. Pow(p,k + j,x) ∧ (∃ y. CanonicalHornerLift(b,c,l,m,a,x,y) ∧ (∀ z. CanonicalHornerLift(b,c,l,m,a,x,z) → z = y))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 79 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–16
03Establish hfactorL17–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel positive power factor.
04Separate the logical casesL25–26
05Establish hmultiplierL27–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow exists.
- L27
have hmultiplier : ∃ q. Pow(p,j,q)Definitions: Pow(p,j,q)Original native command in the exact edition - L28
specialize pow_exists p - L29
specialize pow_exists j - L30
apply pow_exists
06Separate the logical casesL31–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases hmultiplier
07Establish htargetL32–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow exists.
- L32
have htarget : ∃ M. Pow(p,k + j,M)Definitions: Pow(p,k + j,M)Original native command in the exact edition - L33
specialize pow_exists p - L34
specialize pow_exists (k + j) - L35
apply pow_exists
08Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
cases htarget
09Establish hML37–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow add.
10Use earlier factsL47–49
11Establish hiterationL50–59
Establish this local claim before using it. It is not an additional assumption.
- L50
have hiteration : ∀ e. ∀ q. Pow(p,e,q) → ∃ x. CanonicalHornerLift(b,c,l,m,a,m · q,x) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,a,m · q,y) → y = x)Definitions: Pow(p,e,q)CanonicalHornerLift(b,c,l,m,a,m · q,x)CanonicalHornerLift(b,c,l,m,a,m · q,y)Original native command in the exact edition - L51
specialize beta_horner_hensel_iterated_exists_unique b - L52
specialize beta_horner_hensel_iterated_exists_unique c - L53
specialize beta_horner_hensel_iterated_exists_unique a - L54
specialize beta_horner_hensel_iterated_exists_unique l - L55
specialize beta_horner_hensel_iterated_exists_unique n - L56
specialize beta_horner_hensel_iterated_exists_unique d - L57
specialize beta_horner_hensel_iterated_exists_unique m - L58
specialize beta_horner_hensel_iterated_exists_unique p - L59
specialize beta_horner_hensel_iterated_exists_unique x
12Use earlier factsL60–66
13Construct an explicit witnessL67–67
Supply the displayed value, then prove that it has the required property.
- L67
exists x2
14Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
15Use earlier factsL69–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
exact htarget_witness
16Calculate and transport equalitiesL70–75
Original defined command ledger · 79 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
intro l - 0005
intro n - 0006
intro d - 0007
intro p - 0008
intro k - 0009
intro j - 0010
intro m - 0011
intro hp - 0012
intro hk - 0013
intro hpower - 0014
intro hpair - 0015
intro hroot - 0016
intro hcop - 0017
have hfactor : ¬m = 0 ∧ Dvd(p,m) - 0018
specialize hensel_positive_power_factor p - 0019
specialize hensel_positive_power_factor k - 0020
specialize hensel_positive_power_factor m - 0021
apply hensel_positive_power_factor - 0022
exact hp - 0023
exact hk - 0024
exact hpower - 0025
cases hfactor - 0026
cases hfactor_right - 0027
have hmultiplier : ∃ q. Pow(p,j,q) - 0028
specialize pow_exists p - 0029
specialize pow_exists j - 0030
apply pow_exists - 0031
cases hmultiplier - 0032
have htarget : ∃ M. Pow(p,k + j,M) - 0033
specialize pow_exists p - 0034
specialize pow_exists (k + j) - 0035
apply pow_exists - 0036
cases htarget - 0037
have hM : x2 = m * x1 - 0038
specialize pow_add p - 0039
specialize pow_add k - 0040
specialize pow_add j - 0041
specialize pow_add (k + j) - 0042
specialize pow_add m - 0043
specialize pow_add x1 - 0044
specialize pow_add x2 - 0045
apply pow_add - 0046
refl - 0047
exact hpower - 0048
exact hmultiplier_witness - 0049
exact htarget_witness - 0050
have hiteration : ∀ e. ∀ q. Pow(p,e,q) → ∃ x. CanonicalHornerLift(b,c,l,m,a,m · q,x) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,a,m · q,y) → y = x) - 0051
specialize beta_horner_hensel_iterated_exists_unique b - 0052
specialize beta_horner_hensel_iterated_exists_unique c - 0053
specialize beta_horner_hensel_iterated_exists_unique a - 0054
specialize beta_horner_hensel_iterated_exists_unique l - 0055
specialize beta_horner_hensel_iterated_exists_unique n - 0056
specialize beta_horner_hensel_iterated_exists_unique d - 0057
specialize beta_horner_hensel_iterated_exists_unique m - 0058
specialize beta_horner_hensel_iterated_exists_unique p - 0059
specialize beta_horner_hensel_iterated_exists_unique x - 0060
apply beta_horner_hensel_iterated_exists_unique - 0061
exact hp - 0062
exact hfactor_left - 0063
exact hpair - 0064
exact hfactor_right_witness - 0065
exact hroot - 0066
exact hcop - 0067
exists x2 - 0068
split - 0069
exact htarget_witness - 0070
rewrite hM - 0071
rewrite hM - 0072
rewrite hM - 0073
rewrite hM - 0074
rewrite hM - 0075
rewrite hM - 0076
specialize hiteration j - 0077
specialize hiteration x1 - 0078
apply hiteration - 0079
exact hmultiplier_witness