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. ∀ q. ∀ t. ∀ y. ¬m = 0 → HornerDerivative(b,c,a,l,n,d) → Horner(b,c,a + m · t,l,y) → m = p · s → n = m · q → Lt(t,p) → ModEq(p · m,y,0) → Lt(t,p) ∧ ModEq(p,q + d · t,0)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 80 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–19
03Establish htaylorL20–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner taylor remainder exists.
- L20
have htaylor : exists w. y = (n + (m * t) * d) + ((m * t) * (m * t)) * w - L21
specialize beta_horner_taylor_remainder_exists b - L22
specialize beta_horner_taylor_remainder_exists c - L23
specialize beta_horner_taylor_remainder_exists a - L24
specialize beta_horner_taylor_remainder_exists (m * t) - L25
specialize beta_horner_taylor_remainder_exists l - L26
specialize beta_horner_taylor_remainder_exists n - L27
specialize beta_horner_taylor_remainder_exists d - L28
specialize beta_horner_taylor_remainder_exists y - L29
apply beta_horner_taylor_remainder_exists
04Use earlier factsL30–31
05Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
cases htaylor
06Establish hsquareL33–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel square shift multiple.
- L33
have hsquare : Dvd(p · m,m · t · (m · t))Definitions: Dvd(p · m,m · t · (m · t))Original native command in the exact edition - L34
specialize hensel_square_shift_multiple m - L35
specialize hensel_square_shift_multiple t - L36
specialize hensel_square_shift_multiple p - L37
specialize hensel_square_shift_multiple s - L38
apply hensel_square_shift_multiple - L39
exact hfactor
07Establish hquadL40–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple implies balanced zero congruence.
- L40
have hquad : ModEq(p · m,m · t · (m · t) · x,0)Definitions: ModEq(p · m,m · t · (m · t) · x,0)Original native command in the exact edition - L41
specialize multiple_implies_balanced_zero_congruence (p * m) - L42
specialize multiple_implies_balanced_zero_congruence (((m * t) * (m * t)) * x) - L43
apply multiple_implies_balanced_zero_congruence - L44
specialize multiple_mul_right (p * m) - L45
specialize multiple_mul_right ((m * t) * (m * t)) - L46
specialize multiple_mul_right x - L47
apply multiple_mul_right - L48
exact hsquare
08Establish hlinearL49–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel mod add zero cancel.
- L49
have hlinear : ModEq(p · m,n + m · t · d,0)Definitions: ModEq(p · m,n + m · t · d,0)Original native command in the exact edition - L50
specialize hensel_mod_add_zero_cancel (p * m) - L51
specialize hensel_mod_add_zero_cancel (n + (m * t) * d) - L52
specialize hensel_mod_add_zero_cancel (((m * t) * (m * t)) * x) - L53
apply hensel_mod_add_zero_cancel - L54
rewrite <- htaylor_witness - L55
exact hroot - L56
exact hquad
09Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
split
10Use earlier factsL58–64
11Establish hproductL65–68
12Establish hzeroL69–71
13Establish hidentityL72–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel lift linear identity.
- L72
have hidentity : m * (q + d * t) = n + (m * t) * d - L73
rewrite hn - L74
specialize hensel_lift_linear_identity m - L75
specialize hensel_lift_linear_identity d - L76
specialize hensel_lift_linear_identity q - L77
specialize hensel_lift_linear_identity t - L78
apply hensel_lift_linear_identity - L79
rewrite hidentity - L80
exact hlinear
Original defined command ledger · 80 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 q - 0011
intro t - 0012
intro y - 0013
intro hm - 0014
intro hpair - 0015
intro hvalue - 0016
intro hfactor - 0017
intro hn - 0018
intro ht - 0019
intro hroot - 0020
have htaylor : exists w. y = (n + (m * t) * d) + ((m * t) * (m * t)) * w - 0021
specialize beta_horner_taylor_remainder_exists b - 0022
specialize beta_horner_taylor_remainder_exists c - 0023
specialize beta_horner_taylor_remainder_exists a - 0024
specialize beta_horner_taylor_remainder_exists (m * t) - 0025
specialize beta_horner_taylor_remainder_exists l - 0026
specialize beta_horner_taylor_remainder_exists n - 0027
specialize beta_horner_taylor_remainder_exists d - 0028
specialize beta_horner_taylor_remainder_exists y - 0029
apply beta_horner_taylor_remainder_exists - 0030
exact hpair - 0031
exact hvalue - 0032
cases htaylor - 0033
have hsquare : Dvd(p · m,m · t · (m · t)) - 0034
specialize hensel_square_shift_multiple m - 0035
specialize hensel_square_shift_multiple t - 0036
specialize hensel_square_shift_multiple p - 0037
specialize hensel_square_shift_multiple s - 0038
apply hensel_square_shift_multiple - 0039
exact hfactor - 0040
have hquad : ModEq(p · m,m · t · (m · t) · x,0) - 0041
specialize multiple_implies_balanced_zero_congruence (p * m) - 0042
specialize multiple_implies_balanced_zero_congruence (((m * t) * (m * t)) * x) - 0043
apply multiple_implies_balanced_zero_congruence - 0044
specialize multiple_mul_right (p * m) - 0045
specialize multiple_mul_right ((m * t) * (m * t)) - 0046
specialize multiple_mul_right x - 0047
apply multiple_mul_right - 0048
exact hsquare - 0049
have hlinear : ModEq(p · m,n + m · t · d,0) - 0050
specialize hensel_mod_add_zero_cancel (p * m) - 0051
specialize hensel_mod_add_zero_cancel (n + (m * t) * d) - 0052
specialize hensel_mod_add_zero_cancel (((m * t) * (m * t)) * x) - 0053
apply hensel_mod_add_zero_cancel - 0054
rewrite <- htaylor_witness - 0055
exact hroot - 0056
exact hquad - 0057
split - 0058
exact ht - 0059
specialize mod_eq_unscale_nonzero m - 0060
specialize mod_eq_unscale_nonzero p - 0061
specialize mod_eq_unscale_nonzero (q + d * t) - 0062
specialize mod_eq_unscale_nonzero 0 - 0063
apply mod_eq_unscale_nonzero - 0064
exact hm - 0065
have hproduct : m * p = p * m - 0066
apply mul_comm - 0067
rewrite hproduct - 0068
rewrite hproduct - 0069
have hzero : m * 0 = 0 - 0070
simp - 0071
rewrite hzero - 0072
have hidentity : m * (q + d * t) = n + (m * t) * d - 0073
rewrite hn - 0074
specialize hensel_lift_linear_identity m - 0075
specialize hensel_lift_linear_identity d - 0076
specialize hensel_lift_linear_identity q - 0077
specialize hensel_lift_linear_identity t - 0078
apply hensel_lift_linear_identity - 0079
rewrite hidentity - 0080
exact hlinear