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. ¬p = 0 → ¬m = 0 → HornerDerivative(b,c,a,l,n,d) → m = p · s → n = m · q → Coprime(d,p) → Lt(a,m) → ∃ 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 117 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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–17
03Establish hstepL18–27
Establish this local claim before using it. It is not an additional assumption.
- L18
have hstep : ∃ t. ∃ y. Lt(t,p) ∧ ModEq(p,q + d · t,0) ∧ (Horner(b,c,a + m · t,l,y) ∧ Dvd(p · m,y))Definitions: Lt(t,p)ModEq(p,q + d · t,0)Horner(b,c,a + m · t,l,y)Dvd(p · m,y)Original native command in the exact edition - L19
specialize beta_horner_hensel_lift_exists b - L20
specialize beta_horner_hensel_lift_exists c - L21
specialize beta_horner_hensel_lift_exists a - L22
specialize beta_horner_hensel_lift_exists l - L23
specialize beta_horner_hensel_lift_exists n - L24
specialize beta_horner_hensel_lift_exists d - L25
specialize beta_horner_hensel_lift_exists m - L26
specialize beta_horner_hensel_lift_exists p - L27
specialize beta_horner_hensel_lift_exists s
04Use earlier factsL28–34
05Separate the logical casesL35–38
06Establish htL39–39
Establish this local claim before using it. It is not an additional assumption.
07Separate the logical casesL40–40
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L40
cases hstep_witness_witness_left
08Use earlier factsL41–41
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L41
exact hstep_witness_witness_left_left
09Construct an explicit witnessL42–42
Supply the displayed value, then prove that it has the required property.
- L42
exists a + m * x
10Separate the logical casesL43–44
11Use earlier factsL45–51
12Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
split
13Construct an explicit witnessL53–54
14Calculate and transport equalitiesL55–55
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L55
simp
15Construct an explicit witnessL56–56
Supply the displayed value, then prove that it has the required property.
- L56
exists x1
16Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
split
17Use earlier factsL58–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
18Fix variables and assumptionsL63–64
19Separate the logical casesL65–66
20Establish hdigitL67–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel canonical lift digit decompose.
- L67
have hdigit : ∃ t. Lt(t,p) ∧ z = a + m · tDefinitions: Lt(t,p)Original native command in the exact edition - L68
specialize hensel_canonical_lift_digit_decompose m - L69
specialize hensel_canonical_lift_digit_decompose p - L70
specialize hensel_canonical_lift_digit_decompose a - L71
specialize hensel_canonical_lift_digit_decompose z - L72
apply hensel_canonical_lift_digit_decompose - L73
exact hm - L74
exact ha - L75
exact hz_left - L76
exact hz_right_left
21Separate the logical casesL77–80
22Establish hcorrectionL81–90
Establish this local claim before using it. It is not an additional assumption.
- L81
have hcorrection : Lt(x2,p) ∧ ModEq(p,q + d · x2,0)Definitions: Lt(x2,p)ModEq(p,q + d · x2,0)Original native command in the exact edition - L82
specialize hensel_lift_correction_of_root b - L83
specialize hensel_lift_correction_of_root c - L84
specialize hensel_lift_correction_of_root a - L85
specialize hensel_lift_correction_of_root l - L86
specialize hensel_lift_correction_of_root n - L87
specialize hensel_lift_correction_of_root d - L88
specialize hensel_lift_correction_of_root m - L89
specialize hensel_lift_correction_of_root p - L90
specialize hensel_lift_correction_of_root s
23Use earlier factsL91–96
24Calculate and transport equalitiesL97–97
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L97
rewrite <- hdigit_witness_right
25Use earlier factsL98–102
26Establish heqL103–112
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel correction unique.
- L103
have heq : x2 = x - L104
specialize hensel_correction_unique d - L105
specialize hensel_correction_unique p - L106
specialize hensel_correction_unique q - L107
specialize hensel_correction_unique x2 - L108
specialize hensel_correction_unique x - L109
apply hensel_correction_unique - L110
exact hp - L111
exact hcop - L112
exact hcorrection
27Use earlier factsL113–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L113
exact hstep_witness_witness_left
28Calculate and transport equalitiesL114–114
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L114
trans a + m * x2
29Use earlier factsL115–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L115
exact hdigit_witness_right
Original defined command ledger · 117 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 hp - 0012
intro hm - 0013
intro hpair - 0014
intro hfactor - 0015
intro hn - 0016
intro hcop - 0017
intro ha - 0018
have hstep : ∃ t. ∃ y. Lt(t,p) ∧ ModEq(p,q + d · t,0) ∧ (Horner(b,c,a + m · t,l,y) ∧ Dvd(p · m,y)) - 0019
specialize beta_horner_hensel_lift_exists b - 0020
specialize beta_horner_hensel_lift_exists c - 0021
specialize beta_horner_hensel_lift_exists a - 0022
specialize beta_horner_hensel_lift_exists l - 0023
specialize beta_horner_hensel_lift_exists n - 0024
specialize beta_horner_hensel_lift_exists d - 0025
specialize beta_horner_hensel_lift_exists m - 0026
specialize beta_horner_hensel_lift_exists p - 0027
specialize beta_horner_hensel_lift_exists s - 0028
specialize beta_horner_hensel_lift_exists q - 0029
apply beta_horner_hensel_lift_exists - 0030
exact hp - 0031
exact hpair - 0032
exact hfactor - 0033
exact hn - 0034
exact hcop - 0035
cases hstep - 0036
cases hstep_witness - 0037
cases hstep_witness_witness - 0038
cases hstep_witness_witness_right - 0039
have ht : Lt(x,p) - 0040
cases hstep_witness_witness_left - 0041
exact hstep_witness_witness_left_left - 0042
exists a + m * x - 0043
split - 0044
split - 0045
specialize hensel_lift_digit_bound m - 0046
specialize hensel_lift_digit_bound p - 0047
specialize hensel_lift_digit_bound a - 0048
specialize hensel_lift_digit_bound x - 0049
apply hensel_lift_digit_bound - 0050
exact ha - 0051
exact ht - 0052
split - 0053
exists 0 - 0054
exists x - 0055
simp - 0056
exists x1 - 0057
split - 0058
exact hstep_witness_witness_right_left - 0059
specialize multiple_implies_balanced_zero_congruence (p * m) - 0060
specialize multiple_implies_balanced_zero_congruence x1 - 0061
apply multiple_implies_balanced_zero_congruence - 0062
exact hstep_witness_witness_right_right - 0063
intro z - 0064
intro hz - 0065
cases hz - 0066
cases hz_right - 0067
have hdigit : ∃ t. Lt(t,p) ∧ z = a + m · t - 0068
specialize hensel_canonical_lift_digit_decompose m - 0069
specialize hensel_canonical_lift_digit_decompose p - 0070
specialize hensel_canonical_lift_digit_decompose a - 0071
specialize hensel_canonical_lift_digit_decompose z - 0072
apply hensel_canonical_lift_digit_decompose - 0073
exact hm - 0074
exact ha - 0075
exact hz_left - 0076
exact hz_right_left - 0077
cases hdigit - 0078
cases hdigit_witness - 0079
cases hz_right_right - 0080
cases hz_right_right_witness - 0081
have hcorrection : Lt(x2,p) ∧ ModEq(p,q + d · x2,0) - 0082
specialize hensel_lift_correction_of_root b - 0083
specialize hensel_lift_correction_of_root c - 0084
specialize hensel_lift_correction_of_root a - 0085
specialize hensel_lift_correction_of_root l - 0086
specialize hensel_lift_correction_of_root n - 0087
specialize hensel_lift_correction_of_root d - 0088
specialize hensel_lift_correction_of_root m - 0089
specialize hensel_lift_correction_of_root p - 0090
specialize hensel_lift_correction_of_root s - 0091
specialize hensel_lift_correction_of_root q - 0092
specialize hensel_lift_correction_of_root x2 - 0093
specialize hensel_lift_correction_of_root x3 - 0094
apply hensel_lift_correction_of_root - 0095
exact hm - 0096
exact hpair - 0097
rewrite <- hdigit_witness_right - 0098
exact hz_right_right_witness_left - 0099
exact hfactor - 0100
exact hn - 0101
exact hdigit_witness_left - 0102
exact hz_right_right_witness_right - 0103
have heq : x2 = x - 0104
specialize hensel_correction_unique d - 0105
specialize hensel_correction_unique p - 0106
specialize hensel_correction_unique q - 0107
specialize hensel_correction_unique x2 - 0108
specialize hensel_correction_unique x - 0109
apply hensel_correction_unique - 0110
exact hp - 0111
exact hcop - 0112
exact hcorrection - 0113
exact hstep_witness_witness_left - 0114
trans a + m * x2 - 0115
exact hdigit_witness_right - 0116
rewrite heq - 0117
refl