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.
Exact expanded first-order arithmetic statement
forall m M h A B C R. M = S h -> (exists q. M = m * q) -> C = A + h * B -> (((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = R + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (R + B) + m * hgcrt_mod_right_hpl_mod)) /\ ((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (R + B) + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = R + m * hgcrt_mod_right_hpl_mod)))Constructive proof overview
Generated structural guide
Natural recoding preserves every signed residue modulo every divisor of the selected final modulus.
The unchanged tactic script uses 8 declared prerequisites and contains 77 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
HL0017 hensel_signed_blend_balance multiple_mul_right Stable theorem; checked-use authorized multiple_implies_balanced_zero_congruence Alpha theorem; checked-use authorized mod_eq_add Stable theorem; checked-use authorized mod_eq_refl Stable theorem; checked-use authorized mod_eq_trans Stable theorem; checked-use authorized mod_eq_symm Stable theorem; checked-use authorized mod_eq_add_cancel_right Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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 : exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. (M * B) + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod - 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 : exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. (A + M * B) + m * hgcrt_mod_left_hpl_mod = (A + 0) + m * hgcrt_mod_right_hpl_mod - 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 exact 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 : exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. (M * B) + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod - 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 : exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. (A + M * B) + m * hgcrt_mod_left_hpl_mod = (A + 0) + m * hgcrt_mod_right_hpl_mod - 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