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
∀ m. ∀ M. ∀ h. ∀ A. ∀ B. ∀ C. ∀ R. M = S h → Dvd(m,M) → C = A + h · B → (ModEq(m,C,R) → ModEq(m,A,R + B)) ∧ (ModEq(m,A,R + B) → ModEq(m,C,R))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 77 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 (1)
01Fix variables and assumptionsL1–10
02Establish hbalanceL11–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel signed blend balance.
03Establish hmultipleL18–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple implies balanced zero congruence.
- L18
have hmultiple : ModEq(m,M · B,0)Definitions: ModEq(m,M · B,0)Original native command in the exact edition - L19
specialize multiple_implies_balanced_zero_congruence m - L20
specialize multiple_implies_balanced_zero_congruence (M * B) - L21
apply multiple_implies_balanced_zero_congruence - L22
specialize multiple_mul_right m - L23
specialize multiple_mul_right M - L24
specialize multiple_mul_right B - L25
apply multiple_mul_right - L26
exact hdiv
04Establish hdropL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L27
have hdrop : ModEq(m,A + M · B,A + 0)Definitions: ModEq(m,A + M · B,A + 0)Original native command in the exact edition - L28
specialize mod_eq_add m - L29
specialize mod_eq_add A - L30
specialize mod_eq_add A - L31
specialize mod_eq_add (M * B) - L32
specialize mod_eq_add 0 - L33
apply mod_eq_add - L34
specialize mod_eq_refl m - L35
specialize mod_eq_refl A - L36
apply mod_eq_refl
05Use earlier factsL37–37
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
exact hmultiple
06Establish hzeroL38–40
07Separate the logical casesL41–41
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
split
08Fix variables and assumptionsL42–42
Work with arbitrary variables or the premises of the current implication.
- L42
intro hsource
09Use earlier factsL43–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
10Calculate and transport equalitiesL53–53
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L53
rewrite <- hbalance
11Use earlier factsL54–63
Instantiate or apply named facts and discharge the corresponding proof obligations.
12Fix variables and assumptionsL64–64
Work with arbitrary variables or the premises of the current implication.
- L64
intro hsource
13Use earlier factsL65–69
14Calculate and transport equalitiesL70–70
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L70
rewrite hbalance
Original defined command ledger · 77 lines
- 0001
intro m - 0002
intro M - 0003
intro h - 0004
intro A - 0005
intro B - 0006
intro C - 0007
intro R - 0008
intro hM - 0009
intro hdiv - 0010
intro hC - 0011
have hbalance : C + B = A + M * B - 0012
rewrite hC - 0013
rewrite hM - 0014
specialize hensel_signed_blend_balance h - 0015
specialize hensel_signed_blend_balance A - 0016
specialize hensel_signed_blend_balance B - 0017
apply hensel_signed_blend_balance - 0018
have hmultiple : ModEq(m,M · B,0) - 0019
specialize multiple_implies_balanced_zero_congruence m - 0020
specialize multiple_implies_balanced_zero_congruence (M * B) - 0021
apply multiple_implies_balanced_zero_congruence - 0022
specialize multiple_mul_right m - 0023
specialize multiple_mul_right M - 0024
specialize multiple_mul_right B - 0025
apply multiple_mul_right - 0026
exact hdiv - 0027
have hdrop : ModEq(m,A + M · B,A + 0) - 0028
specialize mod_eq_add m - 0029
specialize mod_eq_add A - 0030
specialize mod_eq_add A - 0031
specialize mod_eq_add (M * B) - 0032
specialize mod_eq_add 0 - 0033
apply mod_eq_add - 0034
specialize mod_eq_refl m - 0035
specialize mod_eq_refl A - 0036
apply mod_eq_refl - 0037
exact hmultiple - 0038
have hzero : A + 0 = A - 0039
simp - 0040
rewrite hzero at hdrop - 0041
split - 0042
intro hsource - 0043
specialize mod_eq_trans m - 0044
specialize mod_eq_trans A - 0045
specialize mod_eq_trans (A + M * B) - 0046
specialize mod_eq_trans (R + B) - 0047
apply mod_eq_trans - 0048
specialize mod_eq_symm m - 0049
specialize mod_eq_symm (A + M * B) - 0050
specialize mod_eq_symm A - 0051
apply mod_eq_symm - 0052
exact hdrop - 0053
rewrite <- hbalance - 0054
specialize mod_eq_add m - 0055
specialize mod_eq_add C - 0056
specialize mod_eq_add R - 0057
specialize mod_eq_add B - 0058
specialize mod_eq_add B - 0059
apply mod_eq_add - 0060
exact hsource - 0061
specialize mod_eq_refl m - 0062
specialize mod_eq_refl B - 0063
apply mod_eq_refl - 0064
intro hsource - 0065
specialize mod_eq_add_cancel_right m - 0066
specialize mod_eq_add_cancel_right C - 0067
specialize mod_eq_add_cancel_right R - 0068
specialize mod_eq_add_cancel_right B - 0069
apply mod_eq_add_cancel_right - 0070
rewrite hbalance - 0071
specialize mod_eq_trans m - 0072
specialize mod_eq_trans (A + M * B) - 0073
specialize mod_eq_trans A - 0074
specialize mod_eq_trans (R + B) - 0075
apply mod_eq_trans - 0076
exact hdrop - 0077
exact hsource