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 canonical solutions under successive-merge compatibility and in the pairwise-compatible dominating-last case. G011 is now closed in the separate Alpha-v27 generalized-crt branch for arbitrary pairwise-compatible finite lists, including noncoprime moduli. Full G011 proof · Alpha v27
Exact theorem in conservative defined notation
∀ r. ∀ s. ∀ b. ∀ c. ∀ l. CRTPositiveModuliPrefix(b,c,l) → CRTMergeCompatiblePrefix(r,s,b,c,l) → ∃ x. ∃ y. CRTCanonicalPrefixSolution(r,s,b,c,l,x,y) ∧ (∀ z. CRTCanonicalPrefixSolution(r,s,b,c,l,z,y) → z = 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 (2)
01Fix variables and assumptionsL1–7
02Establish hsolutionL8–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt merge compatible prefix solution exists.
- L8
have hsolution : ∃ z. CRTPrefixSolution(r,s,b,c,l,z)Definitions: CRTPrefixSolutionOriginal native command in the exact edition - L9
specialize crt_merge_compatible_prefix_solution_exists r - L10
specialize crt_merge_compatible_prefix_solution_exists s - L11
specialize crt_merge_compatible_prefix_solution_exists b - L12
specialize crt_merge_compatible_prefix_solution_exists c - L13
specialize crt_merge_compatible_prefix_solution_exists l - L14
apply crt_merge_compatible_prefix_solution_exists - L15
exact hmerge
03Separate the logical casesL16–16
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
cases hsolution
04Use earlier factsL17–19
05Separate the logical casesL20–21
06Establish hnonzeroL22–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive prefix lcm nonzero.
- L22
have hnonzero : ~(x1 = 0) - L23
specialize crt_positive_prefix_lcm_nonzero b - L24
specialize crt_positive_prefix_lcm_nonzero c - L25
specialize crt_positive_prefix_lcm_nonzero l - L26
specialize crt_positive_prefix_lcm_nonzero x1 - L27
intro hz - L28
apply crt_positive_prefix_lcm_nonzero - L29
exact hpositive - L30
exact crt_prefix_lcm_exists_unique_witness_left - L31
exact hz
07Establish hcanonicalL32–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt prefix solution canonical remainder.
- L32
have hcanonical : ∃ z. CRTCanonicalPrefixSolution(r,s,b,c,l,z,x1)Definitions: CRTCanonicalPrefixSolutionOriginal native command in the exact edition - L33
specialize crt_prefix_solution_canonical_remainder r - L34
specialize crt_prefix_solution_canonical_remainder s - L35
specialize crt_prefix_solution_canonical_remainder b - L36
specialize crt_prefix_solution_canonical_remainder c - L37
specialize crt_prefix_solution_canonical_remainder l - L38
specialize crt_prefix_solution_canonical_remainder x1 - L39
specialize crt_prefix_solution_canonical_remainder x - L40
apply crt_prefix_solution_canonical_remainder - L41
exact hnonzero
08Use earlier factsL42–43
09Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
cases hcanonical
10Construct an explicit witnessL45–46
11Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
12Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hcanonical_witness
13Fix variables and assumptionsL49–50
14Use earlier factsL51–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L51
specialize crt_canonical_prefix_solution_unique r - L52
specialize crt_canonical_prefix_solution_unique s - L53
specialize crt_canonical_prefix_solution_unique b - L54
specialize crt_canonical_prefix_solution_unique c - L55
specialize crt_canonical_prefix_solution_unique l - L56
specialize crt_canonical_prefix_solution_unique x1 - L57
specialize crt_canonical_prefix_solution_unique x2 - L58
specialize crt_canonical_prefix_solution_unique y - L59
apply crt_canonical_prefix_solution_unique - L60
exact hcanonical_witness
15Use earlier factsL61–61
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L61
exact hy
Original defined command ledger · 61 lines
- 0001
intro r - 0002
intro s - 0003
intro b - 0004
intro c - 0005
intro l - 0006
intro hpositive - 0007
intro hmerge - 0008
have hsolution : exists z. (forall gcrt_solution_index_gcomp_canonical_old_solution gcrt_solution_residue_gcomp_canonical_old_solution gcrt_solution_modulus_gcomp_canonical_old_solution. (exists ff_lt_gcrt_gcomp_canonical_old_solution_bound. ff_lt_gcrt_gcomp_canonical_old_solution_bound + S gcrt_solution_index_gcomp_canonical_old_solution = l) -> (((exists ff_h_gcrt_gcomp_canonical_old_solution_residue. ff_h_gcrt_gcomp_canonical_old_solution_residue + S (gcrt_solution_residue_gcomp_canonical_old_solution) = S ((S (gcrt_solution_index_gcomp_canonical_old_solution)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_old_solution_residue. r = ff_q_gcrt_gcomp_canonical_old_solution_residue * S ((S (gcrt_solution_index_gcomp_canonical_old_solution)) * s) + (gcrt_solution_residue_gcomp_canonical_old_solution))) -> (((exists ff_h_gcrt_gcomp_canonical_old_solution_modulus. ff_h_gcrt_gcomp_canonical_old_solution_modulus + S (gcrt_solution_modulus_gcomp_canonical_old_solution) = S ((S (gcrt_solution_index_gcomp_canonical_old_solution)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_old_solution_modulus. b = ff_q_gcrt_gcomp_canonical_old_solution_modulus * S ((S (gcrt_solution_index_gcomp_canonical_old_solution)) * c) + (gcrt_solution_modulus_gcomp_canonical_old_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_old_solution_congruence hgcrt_mod_right_gcrt_gcomp_canonical_old_solution_congruence. z + gcrt_solution_modulus_gcomp_canonical_old_solution * hgcrt_mod_left_gcrt_gcomp_canonical_old_solution_congruence = gcrt_solution_residue_gcomp_canonical_old_solution + gcrt_solution_modulus_gcomp_canonical_old_solution * hgcrt_mod_right_gcrt_gcomp_canonical_old_solution_congruence)) - 0009
specialize crt_merge_compatible_prefix_solution_exists r - 0010
specialize crt_merge_compatible_prefix_solution_exists s - 0011
specialize crt_merge_compatible_prefix_solution_exists b - 0012
specialize crt_merge_compatible_prefix_solution_exists c - 0013
specialize crt_merge_compatible_prefix_solution_exists l - 0014
apply crt_merge_compatible_prefix_solution_exists - 0015
exact hmerge - 0016
cases hsolution - 0017
specialize crt_prefix_lcm_exists_unique b - 0018
specialize crt_prefix_lcm_exists_unique c - 0019
specialize crt_prefix_lcm_exists_unique l - 0020
cases crt_prefix_lcm_exists_unique - 0021
cases crt_prefix_lcm_exists_unique_witness - 0022
have hnonzero : ~(x1 = 0) - 0023
specialize crt_positive_prefix_lcm_nonzero b - 0024
specialize crt_positive_prefix_lcm_nonzero c - 0025
specialize crt_positive_prefix_lcm_nonzero l - 0026
specialize crt_positive_prefix_lcm_nonzero x1 - 0027
intro hz - 0028
apply crt_positive_prefix_lcm_nonzero - 0029
exact hpositive - 0030
exact crt_prefix_lcm_exists_unique_witness_left - 0031
exact hz - 0032
have hcanonical : exists z. (((((forall gcrt_common_index_gcomp_canonical_exists_actual_lcm_own gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_own. (exists ff_lt_gcrt_gcomp_canonical_exists_actual_lcm_own_bound. ff_lt_gcrt_gcomp_canonical_exists_actual_lcm_own_bound + S gcrt_common_index_gcomp_canonical_exists_actual_lcm_own = l) -> (((exists ff_h_gcrt_gcomp_canonical_exists_actual_lcm_own_entry. ff_h_gcrt_gcomp_canonical_exists_actual_lcm_own_entry + S (gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_own) = S ((S (gcrt_common_index_gcomp_canonical_exists_actual_lcm_own)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_exists_actual_lcm_own_entry. b = ff_q_gcrt_gcomp_canonical_exists_actual_lcm_own_entry * S ((S (gcrt_common_index_gcomp_canonical_exists_actual_lcm_own)) * c) + (gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_own))) -> exists gcrt_common_quotient_gcomp_canonical_exists_actual_lcm_own. x1 = gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_own * gcrt_common_quotient_gcomp_canonical_exists_actual_lcm_own) /\ forall gcrt_lcm_common_gcomp_canonical_exists_actual_lcm. (forall gcrt_common_index_gcomp_canonical_exists_actual_lcm_other gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_other. (exists ff_lt_gcrt_gcomp_canonical_exists_actual_lcm_other_bound. ff_lt_gcrt_gcomp_canonical_exists_actual_lcm_other_bound + S gcrt_common_index_gcomp_canonical_exists_actual_lcm_other = l) -> (((exists ff_h_gcrt_gcomp_canonical_exists_actual_lcm_other_entry. ff_h_gcrt_gcomp_canonical_exists_actual_lcm_other_entry + S (gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_other) = S ((S (gcrt_common_index_gcomp_canonical_exists_actual_lcm_other)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_exists_actual_lcm_other_entry. b = ff_q_gcrt_gcomp_canonical_exists_actual_lcm_other_entry * S ((S (gcrt_common_index_gcomp_canonical_exists_actual_lcm_other)) * c) + (gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_other))) -> exists gcrt_common_quotient_gcomp_canonical_exists_actual_lcm_other. gcrt_lcm_common_gcomp_canonical_exists_actual_lcm = gcrt_common_modulus_gcomp_canonical_exists_actual_lcm_other * gcrt_common_quotient_gcomp_canonical_exists_actual_lcm_other) -> exists gcrt_lcm_quotient_gcomp_canonical_exists_actual_lcm. gcrt_lcm_common_gcomp_canonical_exists_actual_lcm = x1 * gcrt_lcm_quotient_gcomp_canonical_exists_actual_lcm)) /\ ((exists ff_lt_gcrt_gcomp_canonical_exists_actual_bounded. ff_lt_gcrt_gcomp_canonical_exists_actual_bounded + S z = x1) /\ (forall gcrt_solution_index_gcomp_canonical_exists_actual_solution gcrt_solution_residue_gcomp_canonical_exists_actual_solution gcrt_solution_modulus_gcomp_canonical_exists_actual_solution. (exists ff_lt_gcrt_gcomp_canonical_exists_actual_solution_bound. ff_lt_gcrt_gcomp_canonical_exists_actual_solution_bound + S gcrt_solution_index_gcomp_canonical_exists_actual_solution = l) -> (((exists ff_h_gcrt_gcomp_canonical_exists_actual_solution_residue. ff_h_gcrt_gcomp_canonical_exists_actual_solution_residue + S (gcrt_solution_residue_gcomp_canonical_exists_actual_solution) = S ((S (gcrt_solution_index_gcomp_canonical_exists_actual_solution)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_exists_actual_solution_residue. r = ff_q_gcrt_gcomp_canonical_exists_actual_solution_residue * S ((S (gcrt_solution_index_gcomp_canonical_exists_actual_solution)) * s) + (gcrt_solution_residue_gcomp_canonical_exists_actual_solution))) -> (((exists ff_h_gcrt_gcomp_canonical_exists_actual_solution_modulus. ff_h_gcrt_gcomp_canonical_exists_actual_solution_modulus + S (gcrt_solution_modulus_gcomp_canonical_exists_actual_solution) = S ((S (gcrt_solution_index_gcomp_canonical_exists_actual_solution)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_exists_actual_solution_modulus. b = ff_q_gcrt_gcomp_canonical_exists_actual_solution_modulus * S ((S (gcrt_solution_index_gcomp_canonical_exists_actual_solution)) * c) + (gcrt_solution_modulus_gcomp_canonical_exists_actual_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_exists_actual_solution_congruence hgcrt_mod_right_gcrt_gcomp_canonical_exists_actual_solution_congruence. z + gcrt_solution_modulus_gcomp_canonical_exists_actual_solution * hgcrt_mod_left_gcrt_gcomp_canonical_exists_actual_solution_congruence = gcrt_solution_residue_gcomp_canonical_exists_actual_solution + gcrt_solution_modulus_gcomp_canonical_exists_actual_solution * hgcrt_mod_right_gcrt_gcomp_canonical_exists_actual_solution_congruence))))) - 0033
specialize crt_prefix_solution_canonical_remainder r - 0034
specialize crt_prefix_solution_canonical_remainder s - 0035
specialize crt_prefix_solution_canonical_remainder b - 0036
specialize crt_prefix_solution_canonical_remainder c - 0037
specialize crt_prefix_solution_canonical_remainder l - 0038
specialize crt_prefix_solution_canonical_remainder x1 - 0039
specialize crt_prefix_solution_canonical_remainder x - 0040
apply crt_prefix_solution_canonical_remainder - 0041
exact hnonzero - 0042
exact crt_prefix_lcm_exists_unique_witness_left - 0043
exact hsolution_witness - 0044
cases hcanonical - 0045
exists x2 - 0046
exists x1 - 0047
split - 0048
exact hcanonical_witness - 0049
intro y - 0050
intro hy - 0051
specialize crt_canonical_prefix_solution_unique r - 0052
specialize crt_canonical_prefix_solution_unique s - 0053
specialize crt_canonical_prefix_solution_unique b - 0054
specialize crt_canonical_prefix_solution_unique c - 0055
specialize crt_canonical_prefix_solution_unique l - 0056
specialize crt_canonical_prefix_solution_unique x1 - 0057
specialize crt_canonical_prefix_solution_unique x2 - 0058
specialize crt_canonical_prefix_solution_unique y - 0059
apply crt_canonical_prefix_solution_unique - 0060
exact hcanonical_witness - 0061
exact hy