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
∀ pb. ∀ pc. ∀ nb. ∀ nc. ∀ a. ∀ l. ∀ p. ∀ k. Prime(p) → ¬k = 0 → SignedNonsingularHornerRoot(pb,pc,nb,nc,a,l,p,p) → ∃ x. Pow(p,k,x) ∧ (∃ y. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,x,y) ∧ (∀ z. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,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 74 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–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hroot
03Establish hsimpleL12–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel prime nonsingular root is simple.
- L12
have hsimple : SignedSimpleHornerRoot(pb,pc,nb,nc,a,l,p,p)Definitions: SignedSimpleHornerRoot(pb,pc,nb,nc,a,l,p,p)Original native command in the exact edition - L13
specialize hensel_prime_nonsingular_root_is_simple (pb) - L14
specialize hensel_prime_nonsingular_root_is_simple (pc) - L15
specialize hensel_prime_nonsingular_root_is_simple (nb) - L16
specialize hensel_prime_nonsingular_root_is_simple (nc) - L17
specialize hensel_prime_nonsingular_root_is_simple (a) - L18
specialize hensel_prime_nonsingular_root_is_simple (l) - L19
specialize hensel_prime_nonsingular_root_is_simple (p) - L20
specialize hensel_prime_nonsingular_root_is_simple (p) - L21
apply hensel_prime_nonsingular_root_is_simple
04Use earlier factsL22–23
05Establish hpowerL24–24
Establish this local claim before using it. It is not an additional assumption.
06Establish hpowerexistsL25–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow exists.
- L25
have hpowerexists : ∃ q. Pow(p,1,q)Definitions: Pow(p,1,q)Original native command in the exact edition - L26
specialize pow_exists (p) - L27
specialize pow_exists (1) - L28
apply pow_exists
07Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hpowerexists
08Establish heqL30–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow one.
09Establish hpredecessorL40–43
10Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
cases hpredecessor
11Establish hexponentL45–51
12Establish hresultL52–61
Establish this local claim before using it. It is not an additional assumption.
- L52
have hresult : ∃ hsc_modulus_all_precision_predecessor. Pow(p,1 + x,hsc_modulus_all_precision_predecessor) ∧ (∃ y. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,y) ∧ (∀ z. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,z) → z = y))Definitions: Pow(p,1 + x,hsc_modulus_all_precision_predecessor)CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,y)CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,z)Original native command in the exact edition - L53
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (pb) - L54
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (pc) - L55
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (nb) - L56
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (nc) - L57
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (a) - L58
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (l) - L59
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (p) - L60
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (1) - L61
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (x)
13Use earlier factsL62–64
14Fix variables and assumptionsL65–65
Work with arbitrary variables or the premises of the current implication.
- L65
intro hz
15Use earlier factsL66–69
16Calculate and transport equalitiesL70–73
17Use earlier factsL74–74
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L74
exact hresult
Original defined command ledger · 74 lines
- 0001
intro pb - 0002
intro pc - 0003
intro nb - 0004
intro nc - 0005
intro a - 0006
intro l - 0007
intro p - 0008
intro k - 0009
intro hp - 0010
intro hk - 0011
intro hroot - 0012
have hsimple : SignedSimpleHornerRoot(pb,pc,nb,nc,a,l,p,p) - 0013
specialize hensel_prime_nonsingular_root_is_simple (pb) - 0014
specialize hensel_prime_nonsingular_root_is_simple (pc) - 0015
specialize hensel_prime_nonsingular_root_is_simple (nb) - 0016
specialize hensel_prime_nonsingular_root_is_simple (nc) - 0017
specialize hensel_prime_nonsingular_root_is_simple (a) - 0018
specialize hensel_prime_nonsingular_root_is_simple (l) - 0019
specialize hensel_prime_nonsingular_root_is_simple (p) - 0020
specialize hensel_prime_nonsingular_root_is_simple (p) - 0021
apply hensel_prime_nonsingular_root_is_simple - 0022
exact hp - 0023
exact hroot - 0024
have hpower : Pow(p,1,p) - 0025
have hpowerexists : ∃ q. Pow(p,1,q) - 0026
specialize pow_exists (p) - 0027
specialize pow_exists (1) - 0028
apply pow_exists - 0029
cases hpowerexists - 0030
have heq : x = p - 0031
specialize pow_one (p) - 0032
specialize pow_one (1) - 0033
specialize pow_one (x) - 0034
apply pow_one - 0035
refl - 0036
exact hpowerexists_witness - 0037
rewrite heq at hpowerexists_witness - 0038
rewrite heq at hpowerexists_witness - 0039
exact hpowerexists_witness - 0040
have hpredecessor : exists j. k = S j - 0041
specialize nonzero_is_succ (k) - 0042
apply nonzero_is_succ - 0043
exact hk - 0044
cases hpredecessor - 0045
have hexponent : 1 + x = k - 0046
trans x + 1 - 0047
apply add_comm - 0048
trans S x - 0049
simp - 0050
symm - 0051
exact hpredecessor_witness - 0052
have hresult : ∃ hsc_modulus_all_precision_predecessor. Pow(p,1 + x,hsc_modulus_all_precision_predecessor) ∧ (∃ y. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,y) ∧ (∀ z. CanonicalSignedHornerLift(pb,pc,nb,nc,l,p,a,hsc_modulus_all_precision_predecessor,z) → z = y)) - 0053
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (pb) - 0054
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (pc) - 0055
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (nb) - 0056
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (nc) - 0057
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (a) - 0058
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (l) - 0059
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (p) - 0060
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (1) - 0061
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (x) - 0062
specialize integer_polynomial_prime_power_hensel_iterated_exists_unique (p) - 0063
apply integer_polynomial_prime_power_hensel_iterated_exists_unique - 0064
exact hp - 0065
intro hz - 0066
apply PA1 - 0067
exact hz - 0068
exact hpower - 0069
exact hsimple - 0070
rewrite hexponent at hresult - 0071
rewrite hexponent at hresult - 0072
rewrite hexponent at hresult - 0073
rewrite hexponent at hresult - 0074
exact hresult