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. ∀ m. ∀ p. ∀ s. ¬p = 0 → ¬m = 0 → HornerDerivative(b,c,a,l,n,d) → m = p · s → ModEq(m,n,0) → Coprime(d,p) → ∃ x. CanonicalHornerLift(b,c,l,m,a,p · m,x) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,a,p · m,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 103 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–15
03Establish hnormalizedL16–25
Establish this local claim before using it. It is not an additional assumption.
- L16
have hnormalized : ∃ r. Lt(r,m) ∧ (ModEq(m,r,a) ∧ SimpleHornerRoot(b,c,r,l,m,p))Definitions: Lt(r,m)ModEq(m,r,a)SimpleHornerRoot(b,c,r,l,m,p)Original native command in the exact edition - L17
specialize beta_horner_simple_canonical_representative b - L18
specialize beta_horner_simple_canonical_representative c - L19
specialize beta_horner_simple_canonical_representative a - L20
specialize beta_horner_simple_canonical_representative l - L21
specialize beta_horner_simple_canonical_representative n - L22
specialize beta_horner_simple_canonical_representative d - L23
specialize beta_horner_simple_canonical_representative m - L24
specialize beta_horner_simple_canonical_representative p - L25
specialize beta_horner_simple_canonical_representative s
04Use earlier factsL26–32
05Separate the logical casesL33–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
06Establish hquotientL40–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq zero to dvd nonzero.
07Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hquotient
08Establish hcanonicalL47–56
Establish this local claim before using it. It is not an additional assumption.
- L47
have hcanonical : ∃ r. CanonicalHornerLift(b,c,l,m,x,p · m,r) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,x,p · m,y) → y = r)Definitions: CanonicalHornerLift(b,c,l,m,x,p · m,r)CanonicalHornerLift(b,c,l,m,x,p · m,y)Original native command in the exact edition - L48
specialize hensel_canonical_horner_lift_exists_unique b - L49
specialize hensel_canonical_horner_lift_exists_unique c - L50
specialize hensel_canonical_horner_lift_exists_unique x - L51
specialize hensel_canonical_horner_lift_exists_unique l - L52
specialize hensel_canonical_horner_lift_exists_unique x1 - L53
specialize hensel_canonical_horner_lift_exists_unique x2 - L54
specialize hensel_canonical_horner_lift_exists_unique m - L55
specialize hensel_canonical_horner_lift_exists_unique p - L56
specialize hensel_canonical_horner_lift_exists_unique s
09Use earlier factsL57–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
specialize hensel_canonical_horner_lift_exists_unique x3 - L58
apply hensel_canonical_horner_lift_exists_unique - L59
exact hp - L60
exact hm - L61
exact hnormalized_witness_right_right_witness_witness_left - L62
exact hfactor - L63
exact hquotient_witness - L64
exact hnormalized_witness_right_right_witness_witness_right_right - L65
exact hnormalized_witness_left
10Separate the logical casesL66–69
11Construct an explicit witnessL70–70
Supply the displayed value, then prove that it has the required property.
- L70
exists x4
12Separate the logical casesL71–72
13Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
exact hcanonical_witness_left_left
14Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
split
15Use earlier factsL75–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
16Fix variables and assumptionsL83–84
17Separate the logical casesL85–86
18Use earlier factsL87–88
19Separate the logical casesL89–89
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L89
split
20Use earlier factsL90–90
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
exact hz_left
21Separate the logical casesL91–91
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L91
split
22Use earlier factsL92–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 103 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
intro l - 0005
intro n - 0006
intro d - 0007
intro m - 0008
intro p - 0009
intro s - 0010
intro hp - 0011
intro hm - 0012
intro hpair - 0013
intro hfactor - 0014
intro hroot - 0015
intro hcop - 0016
have hnormalized : ∃ r. Lt(r,m) ∧ (ModEq(m,r,a) ∧ SimpleHornerRoot(b,c,r,l,m,p)) - 0017
specialize beta_horner_simple_canonical_representative b - 0018
specialize beta_horner_simple_canonical_representative c - 0019
specialize beta_horner_simple_canonical_representative a - 0020
specialize beta_horner_simple_canonical_representative l - 0021
specialize beta_horner_simple_canonical_representative n - 0022
specialize beta_horner_simple_canonical_representative d - 0023
specialize beta_horner_simple_canonical_representative m - 0024
specialize beta_horner_simple_canonical_representative p - 0025
specialize beta_horner_simple_canonical_representative s - 0026
apply beta_horner_simple_canonical_representative - 0027
exact hp - 0028
exact hm - 0029
exact hpair - 0030
exact hfactor - 0031
exact hroot - 0032
exact hcop - 0033
cases hnormalized - 0034
cases hnormalized_witness - 0035
cases hnormalized_witness_right - 0036
cases hnormalized_witness_right_right - 0037
cases hnormalized_witness_right_right_witness - 0038
cases hnormalized_witness_right_right_witness_witness - 0039
cases hnormalized_witness_right_right_witness_witness_right - 0040
have hquotient : Dvd(m,x1) - 0041
specialize mod_eq_zero_to_dvd_nonzero m - 0042
specialize mod_eq_zero_to_dvd_nonzero x1 - 0043
apply mod_eq_zero_to_dvd_nonzero - 0044
exact hm - 0045
exact hnormalized_witness_right_right_witness_witness_right_left - 0046
cases hquotient - 0047
have hcanonical : ∃ r. CanonicalHornerLift(b,c,l,m,x,p · m,r) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,x,p · m,y) → y = r) - 0048
specialize hensel_canonical_horner_lift_exists_unique b - 0049
specialize hensel_canonical_horner_lift_exists_unique c - 0050
specialize hensel_canonical_horner_lift_exists_unique x - 0051
specialize hensel_canonical_horner_lift_exists_unique l - 0052
specialize hensel_canonical_horner_lift_exists_unique x1 - 0053
specialize hensel_canonical_horner_lift_exists_unique x2 - 0054
specialize hensel_canonical_horner_lift_exists_unique m - 0055
specialize hensel_canonical_horner_lift_exists_unique p - 0056
specialize hensel_canonical_horner_lift_exists_unique s - 0057
specialize hensel_canonical_horner_lift_exists_unique x3 - 0058
apply hensel_canonical_horner_lift_exists_unique - 0059
exact hp - 0060
exact hm - 0061
exact hnormalized_witness_right_right_witness_witness_left - 0062
exact hfactor - 0063
exact hquotient_witness - 0064
exact hnormalized_witness_right_right_witness_witness_right_right - 0065
exact hnormalized_witness_left - 0066
cases hcanonical - 0067
cases hcanonical_witness - 0068
cases hcanonical_witness_left - 0069
cases hcanonical_witness_left_right - 0070
exists x4 - 0071
split - 0072
split - 0073
exact hcanonical_witness_left_left - 0074
split - 0075
specialize mod_eq_trans m - 0076
specialize mod_eq_trans x4 - 0077
specialize mod_eq_trans x - 0078
specialize mod_eq_trans a - 0079
apply mod_eq_trans - 0080
exact hcanonical_witness_left_right_left - 0081
exact hnormalized_witness_right_left - 0082
exact hcanonical_witness_left_right_right - 0083
intro z - 0084
intro hz - 0085
cases hz - 0086
cases hz_right - 0087
specialize hcanonical_witness_right z - 0088
apply hcanonical_witness_right - 0089
split - 0090
exact hz_left - 0091
split - 0092
specialize mod_eq_trans m - 0093
specialize mod_eq_trans z - 0094
specialize mod_eq_trans a - 0095
specialize mod_eq_trans x - 0096
apply mod_eq_trans - 0097
exact hz_right_left - 0098
specialize mod_eq_symm m - 0099
specialize mod_eq_symm x - 0100
specialize mod_eq_symm a - 0101
apply mod_eq_symm - 0102
exact hnormalized_witness_right_left - 0103
exact hz_right_right