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. ∀ m. ¬m = 0 → HornerRootModulo(b,c,a,l,m) → ∃ x. CanonicalHornerLift(b,c,l,m,a,m,x) ∧ (∀ y. CanonicalHornerLift(b,c,l,m,a,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 50 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–7
02Establish hresidueL8–12
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel canonical residue exists.
- L8
have hresidue : ∃ r. Lt(r,m) ∧ ModEq(m,a,r)Definitions: Lt(r,m)ModEq(m,a,r)Original native command in the exact edition - L9
specialize hensel_canonical_residue_exists m - L10
specialize hensel_canonical_residue_exists a - L11
apply hensel_canonical_residue_exists - L12
exact hm
03Separate the logical casesL13–14
04Construct an explicit witnessL15–15
Supply the displayed value, then prove that it has the required property.
- L15
exists x
05Separate the logical casesL16–17
06Use earlier factsL18–18
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L18
exact hresidue_witness_left
07Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
split
08Use earlier factsL20–29
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L20
specialize mod_eq_symm m - L21
specialize mod_eq_symm a - L22
specialize mod_eq_symm x - L23
apply mod_eq_symm - L24
exact hresidue_witness_right - L25
specialize beta_horner_root_mod_transport b - L26
specialize beta_horner_root_mod_transport c - L27
specialize beta_horner_root_mod_transport a - L28
specialize beta_horner_root_mod_transport x - L29
specialize beta_horner_root_mod_transport l
09Use earlier factsL30–33
10Fix variables and assumptionsL34–35
11Separate the logical casesL36–37
12Use earlier factsL38–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 50 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
intro l - 0005
intro m - 0006
intro hm - 0007
intro hroot - 0008
have hresidue : ∃ r. Lt(r,m) ∧ ModEq(m,a,r) - 0009
specialize hensel_canonical_residue_exists m - 0010
specialize hensel_canonical_residue_exists a - 0011
apply hensel_canonical_residue_exists - 0012
exact hm - 0013
cases hresidue - 0014
cases hresidue_witness - 0015
exists x - 0016
split - 0017
split - 0018
exact hresidue_witness_left - 0019
split - 0020
specialize mod_eq_symm m - 0021
specialize mod_eq_symm a - 0022
specialize mod_eq_symm x - 0023
apply mod_eq_symm - 0024
exact hresidue_witness_right - 0025
specialize beta_horner_root_mod_transport b - 0026
specialize beta_horner_root_mod_transport c - 0027
specialize beta_horner_root_mod_transport a - 0028
specialize beta_horner_root_mod_transport x - 0029
specialize beta_horner_root_mod_transport l - 0030
specialize beta_horner_root_mod_transport m - 0031
apply beta_horner_root_mod_transport - 0032
exact hresidue_witness_right - 0033
exact hroot - 0034
intro z - 0035
intro hz - 0036
cases hz - 0037
cases hz_right - 0038
specialize mod_eq_bounded_unique m - 0039
specialize mod_eq_bounded_unique z - 0040
specialize mod_eq_bounded_unique x - 0041
apply mod_eq_bounded_unique - 0042
exact hz_left - 0043
exact hresidue_witness_left - 0044
specialize mod_eq_trans m - 0045
specialize mod_eq_trans z - 0046
specialize mod_eq_trans a - 0047
specialize mod_eq_trans x - 0048
apply mod_eq_trans - 0049
exact hz_right_left - 0050
exact hresidue_witness_right