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.
Historical partial components only: this chapter proves exact natural polynomial Taylor remainders, bounded corrections, and one-step divisibility lifts. G095 is now closed in the separate Alpha-v27 hensel-lifting branch for integer polynomials, unrestricted input roots, unique canonical representatives, and every positive prime power. Full G095 proof · Alpha v27
Exact theorem in conservative defined notation
∀ d. ∀ p. ∀ q. ¬p = 0 → Coprime(d,p) → ∃ x. HenselCorrection(d,p,q,x)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete unchanged native tactic proof
All 61 lines are the exact independently kernel-checked original 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–5
02Establish hsuccessorL6–9
03Separate the logical casesL10–10
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L10
cases hsuccessor
04Establish hgcdL11–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime to is gcd one.
05Establish hdivisorL16–16
Establish this local claim before using it. It is not an additional assumption.
- L16
have hdivisor : exists w. x * q = 1 * w
06Construct an explicit witnessL17–17
Supply the displayed value, then prove that it has the required property.
- L17
exists x * q
07Calculate and transport equalitiesL18–18
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L18
symm
08Use earlier factsL19–19
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L19
apply one_mul
09Establish hsolutionL20–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply linear congruence nonzero modulus bounded constructor.
- L20
have hsolution : exists t. ((exists h. h + S t = p) /\ (exists hgcrt_mod_left_pth_correction_solution hgcrt_mod_right_pth_correction_solution. (d * t) + p * hgcrt_mod_left_pth_correction_solution = (x * q) + p * hgcrt_mod_right_pth_correction_solution)) - L21
specialize linear_congruence_nonzero_modulus_bounded_constructor d - L22
specialize linear_congruence_nonzero_modulus_bounded_constructor p - L23
specialize linear_congruence_nonzero_modulus_bounded_constructor (x * q) - L24
specialize linear_congruence_nonzero_modulus_bounded_constructor 1 - L25
apply linear_congruence_nonzero_modulus_bounded_constructor - L26
exact hgcd - L27
exact hp - L28
exact hdivisor
10Separate the logical casesL29–30
11Establish hsameL31–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq refl.
12Establish hsumL35–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L35
have hsum : exists hgcrt_mod_left_pth_correction_sum hgcrt_mod_right_pth_correction_sum. (q + d * x1) + p * hgcrt_mod_left_pth_correction_sum = (q + x * q) + p * hgcrt_mod_right_pth_correction_sum - L36
specialize mod_eq_add p - L37
specialize mod_eq_add q - L38
specialize mod_eq_add q - L39
specialize mod_eq_add (d * x1) - L40
specialize mod_eq_add (x * q) - L41
apply mod_eq_add - L42
exact hsame - L43
exact hsolution_witness_right
13Establish hnegativeL44–49
Establish this local claim before using it. It is not an additional assumption.
- L44
have hnegative : exists hgcrt_mod_left_pth_correction_negative hgcrt_mod_right_pth_correction_negative. (q + x * q) + p * hgcrt_mod_left_pth_correction_negative = 0 + p * hgcrt_mod_right_pth_correction_negative - L45
specialize hensel_predecessor_annihilates_residue x - L46
specialize hensel_predecessor_annihilates_residue q - L47
rewrite <- hsuccessor_witness at hensel_predecessor_annihilates_residue - L48
rewrite <- hsuccessor_witness at hensel_predecessor_annihilates_residue - L49
exact hensel_predecessor_annihilates_residue
14Establish hresultL50–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L50
have hresult : exists hgcrt_mod_left_pth_correction_final hgcrt_mod_right_pth_correction_final. (q + d * x1) + p * hgcrt_mod_left_pth_correction_final = 0 + p * hgcrt_mod_right_pth_correction_final - L51
specialize mod_eq_trans p - L52
specialize mod_eq_trans (q + d * x1) - L53
specialize mod_eq_trans (q + x * q) - L54
specialize mod_eq_trans 0 - L55
apply mod_eq_trans - L56
exact hsum - L57
exact hnegative
15Construct an explicit witnessL58–58
Supply the displayed value, then prove that it has the required property.
- L58
exists x1
16Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
split
Original defined command ledger · 61 lines
- 0001
intro d - 0002
intro p - 0003
intro q - 0004
intro hp - 0005
intro hcop - 0006
have hsuccessor : exists k. p = S k - 0007
specialize nonzero_is_succ p - 0008
apply nonzero_is_succ - 0009
exact hp - 0010
cases hsuccessor - 0011
have hgcd : (((exists r. d = 1 * r) /\ (exists s. p = 1 * s)) /\ forall j. (exists u. d = j * u) -> (exists v. p = j * v) -> exists w. 1 = j * w) - 0012
specialize coprime_to_is_gcd_one d - 0013
specialize coprime_to_is_gcd_one p - 0014
apply coprime_to_is_gcd_one - 0015
exact hcop - 0016
have hdivisor : exists w. x * q = 1 * w - 0017
exists x * q - 0018
symm - 0019
apply one_mul - 0020
have hsolution : exists t. ((exists h. h + S t = p) /\ (exists hgcrt_mod_left_pth_correction_solution hgcrt_mod_right_pth_correction_solution. (d * t) + p * hgcrt_mod_left_pth_correction_solution = (x * q) + p * hgcrt_mod_right_pth_correction_solution)) - 0021
specialize linear_congruence_nonzero_modulus_bounded_constructor d - 0022
specialize linear_congruence_nonzero_modulus_bounded_constructor p - 0023
specialize linear_congruence_nonzero_modulus_bounded_constructor (x * q) - 0024
specialize linear_congruence_nonzero_modulus_bounded_constructor 1 - 0025
apply linear_congruence_nonzero_modulus_bounded_constructor - 0026
exact hgcd - 0027
exact hp - 0028
exact hdivisor - 0029
cases hsolution - 0030
cases hsolution_witness - 0031
have hsame : exists hgcrt_mod_left_pth_correction_same hgcrt_mod_right_pth_correction_same. q + p * hgcrt_mod_left_pth_correction_same = q + p * hgcrt_mod_right_pth_correction_same - 0032
specialize mod_eq_refl p - 0033
specialize mod_eq_refl q - 0034
apply mod_eq_refl - 0035
have hsum : exists hgcrt_mod_left_pth_correction_sum hgcrt_mod_right_pth_correction_sum. (q + d * x1) + p * hgcrt_mod_left_pth_correction_sum = (q + x * q) + p * hgcrt_mod_right_pth_correction_sum - 0036
specialize mod_eq_add p - 0037
specialize mod_eq_add q - 0038
specialize mod_eq_add q - 0039
specialize mod_eq_add (d * x1) - 0040
specialize mod_eq_add (x * q) - 0041
apply mod_eq_add - 0042
exact hsame - 0043
exact hsolution_witness_right - 0044
have hnegative : exists hgcrt_mod_left_pth_correction_negative hgcrt_mod_right_pth_correction_negative. (q + x * q) + p * hgcrt_mod_left_pth_correction_negative = 0 + p * hgcrt_mod_right_pth_correction_negative - 0045
specialize hensel_predecessor_annihilates_residue x - 0046
specialize hensel_predecessor_annihilates_residue q - 0047
rewrite <- hsuccessor_witness at hensel_predecessor_annihilates_residue - 0048
rewrite <- hsuccessor_witness at hensel_predecessor_annihilates_residue - 0049
exact hensel_predecessor_annihilates_residue - 0050
have hresult : exists hgcrt_mod_left_pth_correction_final hgcrt_mod_right_pth_correction_final. (q + d * x1) + p * hgcrt_mod_left_pth_correction_final = 0 + p * hgcrt_mod_right_pth_correction_final - 0051
specialize mod_eq_trans p - 0052
specialize mod_eq_trans (q + d * x1) - 0053
specialize mod_eq_trans (q + x * q) - 0054
specialize mod_eq_trans 0 - 0055
apply mod_eq_trans - 0056
exact hsum - 0057
exact hnegative - 0058
exists x1 - 0059
split - 0060
exact hsolution_witness_left - 0061
exact hresult