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. CRTMergeCompatiblePrefix(r,s,b,c,l) → ∃ x. CRTPrefixSolution(r,s,b,c,l,x)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete unchanged native tactic proof
All 106 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–4
02Induction on lL5–6
03Construct an explicit witnessL7–7
Supply the displayed value, then prove that it has the required property.
- L7
exists 0
04Use earlier factsL8–14
Instantiate or apply named facts and discharge the corresponding proof obligations.
05Calculate and transport equalitiesL15–15
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L15
refl
06Fix variables and assumptionsL16–16
Work with arbitrary variables or the premises of the current implication.
- L16
intro hmerge
07Establish hrestrictedL17–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt merge compatible prefix drop last.
- L17
have hrestricted : CRTMergeCompatiblePrefix(r,s,b,c,l)Definitions: CRTMergeCompatiblePrefixOriginal native command in the exact edition - L18
specialize crt_merge_compatible_prefix_drop_last r - L19
specialize crt_merge_compatible_prefix_drop_last s - L20
specialize crt_merge_compatible_prefix_drop_last b - L21
specialize crt_merge_compatible_prefix_drop_last c - L22
specialize crt_merge_compatible_prefix_drop_last l - L23
apply crt_merge_compatible_prefix_drop_last - L24
exact hmerge
08Establish hprefixL25–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L25
have hprefix : ∃ x. CRTPrefixSolution(r,s,b,c,l,x)Definitions: CRTPrefixSolutionOriginal native command in the exact edition - L26
apply IH - L27
exact hrestricted
09Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hprefix
10Establish hlcmL29–33
Establish this local claim before using it. It is not an additional assumption.
- L29
have hlcm : ∃ P. CRTPrefixLCM(b,c,l,P) ∧ (∀ x. CRTPrefixLCM(b,c,l,x) → x = P)Definitions: CRTPrefixLCMOriginal native command in the exact edition - L30
specialize crt_prefix_lcm_exists_unique b - L31
specialize crt_prefix_lcm_exists_unique c - L32
specialize crt_prefix_lcm_exists_unique l - L33
exact crt_prefix_lcm_exists_unique
11Separate the logical casesL34–35
12Establish hresidueL36–40
Establish this local claim before using it. It is not an additional assumption.
- L36
have hresidue : exists a. (((exists ff_h_gcrt_gcomp_fold_actual_residue. ff_h_gcrt_gcomp_fold_actual_residue + S (a) = S ((S (l)) * s)) /\ exists ff_q_gcrt_gcomp_fold_actual_residue. r = ff_q_gcrt_gcomp_fold_actual_residue * S ((S (l)) * s) + (a))) - L37
specialize beta_at_exists r - L38
specialize beta_at_exists s - L39
specialize beta_at_exists l - L40
exact beta_at_exists
13Separate the logical casesL41–41
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
cases hresidue
14Establish hmodulusL42–46
Establish this local claim before using it. It is not an additional assumption.
- L42
have hmodulus : exists n. (((exists ff_h_gcrt_gcomp_fold_actual_modulus. ff_h_gcrt_gcomp_fold_actual_modulus + S (n) = S ((S (l)) * c)) /\ exists ff_q_gcrt_gcomp_fold_actual_modulus. b = ff_q_gcrt_gcomp_fold_actual_modulus * S ((S (l)) * c) + (n))) - L43
specialize beta_at_exists b - L44
specialize beta_at_exists c - L45
specialize beta_at_exists l - L46
exact beta_at_exists
15Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hmodulus
16Establish hgcdL48–51
17Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hgcd
18Establish hcompatibleL53–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hmerge.
- L53
have hcompatible : exists hgcrt_mod_left_gcrt_gcomp_fold_actual_compatible hgcrt_mod_right_gcrt_gcomp_fold_actual_compatible. x + x4 * hgcrt_mod_left_gcrt_gcomp_fold_actual_compatible = x2 + x4 * hgcrt_mod_right_gcrt_gcomp_fold_actual_compatible - L54
specialize hmerge l - L55
specialize hmerge x - L56
specialize hmerge x1 - L57
specialize hmerge x2 - L58
specialize hmerge x3 - L59
specialize hmerge x4 - L60
apply hmerge - L61
specialize le_refl (S l) - L62
exact le_refl
19Use earlier factsL63–67
20Establish hmergedL68–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply generalized binary crt merge step.
- L68
have hmerged : exists z. (((exists hgcrt_mod_left_gcrt_gcomp_fold_merged_old hgcrt_mod_right_gcrt_gcomp_fold_merged_old. z + x1 * hgcrt_mod_left_gcrt_gcomp_fold_merged_old = x + x1 * hgcrt_mod_right_gcrt_gcomp_fold_merged_old) /\ (exists hgcrt_mod_left_gcrt_gcomp_fold_merged_new hgcrt_mod_right_gcrt_gcomp_fold_merged_new. z + x3 * hgcrt_mod_left_gcrt_gcomp_fold_merged_new = x2 + x3 * hgcrt_mod_right_gcrt_gcomp_fold_merged_new))) - L69
specialize generalized_binary_crt_merge_step x1 - L70
specialize generalized_binary_crt_merge_step x3 - L71
specialize generalized_binary_crt_merge_step x - L72
specialize generalized_binary_crt_merge_step x2 - L73
specialize generalized_binary_crt_merge_step x4 - L74
apply generalized_binary_crt_merge_step - L75
exact hgcd_witness - L76
exact hcompatible
21Separate the logical casesL77–78
22Establish htransportedL79–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt prefix solution transport common multiple.
- L79
have htransported : CRTPrefixSolution(r,s,b,c,l,x5)Definitions: CRTPrefixSolutionOriginal native command in the exact edition - L80
specialize crt_prefix_solution_transport_common_multiple r - L81
specialize crt_prefix_solution_transport_common_multiple s - L82
specialize crt_prefix_solution_transport_common_multiple b - L83
specialize crt_prefix_solution_transport_common_multiple c - L84
specialize crt_prefix_solution_transport_common_multiple l - L85
specialize crt_prefix_solution_transport_common_multiple x1 - L86
specialize crt_prefix_solution_transport_common_multiple x - L87
specialize crt_prefix_solution_transport_common_multiple x5 - L88
apply crt_prefix_solution_transport_common_multiple
23Separate the logical casesL89–89
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L89
cases hlcm_witness_left
24Use earlier factsL90–92
25Construct an explicit witnessL93–93
Supply the displayed value, then prove that it has the required property.
- L93
exists x5
26Use earlier factsL94–103
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
specialize crt_prefix_solution_successor_intro r - L95
specialize crt_prefix_solution_successor_intro s - L96
specialize crt_prefix_solution_successor_intro b - L97
specialize crt_prefix_solution_successor_intro c - L98
specialize crt_prefix_solution_successor_intro l - L99
specialize crt_prefix_solution_successor_intro x5 - L100
specialize crt_prefix_solution_successor_intro x2 - L101
specialize crt_prefix_solution_successor_intro x3 - L102
apply crt_prefix_solution_successor_intro - L103
exact htransported
Original defined command ledger · 106 lines
- 0001
intro r - 0002
intro s - 0003
intro b - 0004
intro c - 0005
induction l - 0006
intro hmerge - 0007
exists 0 - 0008
specialize crt_prefix_solution_empty r - 0009
specialize crt_prefix_solution_empty s - 0010
specialize crt_prefix_solution_empty b - 0011
specialize crt_prefix_solution_empty c - 0012
specialize crt_prefix_solution_empty 0 - 0013
specialize crt_prefix_solution_empty 0 - 0014
apply crt_prefix_solution_empty - 0015
refl - 0016
intro hmerge - 0017
have hrestricted : forall gcomp_merge_index_fold_restricted gcomp_merge_solution_fold_restricted gcomp_merge_lcm_fold_restricted gcomp_merge_residue_fold_restricted gcomp_merge_modulus_fold_restricted gcomp_merge_gcd_fold_restricted. (exists ff_lt_gcrt_fold_restricted_bound. ff_lt_gcrt_fold_restricted_bound + S gcomp_merge_index_fold_restricted = l) -> (((forall gcrt_common_index_fold_restricted_lcm_own gcrt_common_modulus_fold_restricted_lcm_own. (exists ff_lt_gcrt_fold_restricted_lcm_own_bound. ff_lt_gcrt_fold_restricted_lcm_own_bound + S gcrt_common_index_fold_restricted_lcm_own = gcomp_merge_index_fold_restricted) -> (((exists ff_h_gcrt_fold_restricted_lcm_own_entry. ff_h_gcrt_fold_restricted_lcm_own_entry + S (gcrt_common_modulus_fold_restricted_lcm_own) = S ((S (gcrt_common_index_fold_restricted_lcm_own)) * c)) /\ exists ff_q_gcrt_fold_restricted_lcm_own_entry. b = ff_q_gcrt_fold_restricted_lcm_own_entry * S ((S (gcrt_common_index_fold_restricted_lcm_own)) * c) + (gcrt_common_modulus_fold_restricted_lcm_own))) -> exists gcrt_common_quotient_fold_restricted_lcm_own. gcomp_merge_lcm_fold_restricted = gcrt_common_modulus_fold_restricted_lcm_own * gcrt_common_quotient_fold_restricted_lcm_own) /\ forall gcrt_lcm_common_fold_restricted_lcm. (forall gcrt_common_index_fold_restricted_lcm_other gcrt_common_modulus_fold_restricted_lcm_other. (exists ff_lt_gcrt_fold_restricted_lcm_other_bound. ff_lt_gcrt_fold_restricted_lcm_other_bound + S gcrt_common_index_fold_restricted_lcm_other = gcomp_merge_index_fold_restricted) -> (((exists ff_h_gcrt_fold_restricted_lcm_other_entry. ff_h_gcrt_fold_restricted_lcm_other_entry + S (gcrt_common_modulus_fold_restricted_lcm_other) = S ((S (gcrt_common_index_fold_restricted_lcm_other)) * c)) /\ exists ff_q_gcrt_fold_restricted_lcm_other_entry. b = ff_q_gcrt_fold_restricted_lcm_other_entry * S ((S (gcrt_common_index_fold_restricted_lcm_other)) * c) + (gcrt_common_modulus_fold_restricted_lcm_other))) -> exists gcrt_common_quotient_fold_restricted_lcm_other. gcrt_lcm_common_fold_restricted_lcm = gcrt_common_modulus_fold_restricted_lcm_other * gcrt_common_quotient_fold_restricted_lcm_other) -> exists gcrt_lcm_quotient_fold_restricted_lcm. gcrt_lcm_common_fold_restricted_lcm = gcomp_merge_lcm_fold_restricted * gcrt_lcm_quotient_fold_restricted_lcm)) -> (forall gcrt_solution_index_fold_restricted_solution gcrt_solution_residue_fold_restricted_solution gcrt_solution_modulus_fold_restricted_solution. (exists ff_lt_gcrt_fold_restricted_solution_bound. ff_lt_gcrt_fold_restricted_solution_bound + S gcrt_solution_index_fold_restricted_solution = gcomp_merge_index_fold_restricted) -> (((exists ff_h_gcrt_fold_restricted_solution_residue. ff_h_gcrt_fold_restricted_solution_residue + S (gcrt_solution_residue_fold_restricted_solution) = S ((S (gcrt_solution_index_fold_restricted_solution)) * s)) /\ exists ff_q_gcrt_fold_restricted_solution_residue. r = ff_q_gcrt_fold_restricted_solution_residue * S ((S (gcrt_solution_index_fold_restricted_solution)) * s) + (gcrt_solution_residue_fold_restricted_solution))) -> (((exists ff_h_gcrt_fold_restricted_solution_modulus. ff_h_gcrt_fold_restricted_solution_modulus + S (gcrt_solution_modulus_fold_restricted_solution) = S ((S (gcrt_solution_index_fold_restricted_solution)) * c)) /\ exists ff_q_gcrt_fold_restricted_solution_modulus. b = ff_q_gcrt_fold_restricted_solution_modulus * S ((S (gcrt_solution_index_fold_restricted_solution)) * c) + (gcrt_solution_modulus_fold_restricted_solution))) -> (exists hgcrt_mod_left_gcrt_fold_restricted_solution_congruence hgcrt_mod_right_gcrt_fold_restricted_solution_congruence. gcomp_merge_solution_fold_restricted + gcrt_solution_modulus_fold_restricted_solution * hgcrt_mod_left_gcrt_fold_restricted_solution_congruence = gcrt_solution_residue_fold_restricted_solution + gcrt_solution_modulus_fold_restricted_solution * hgcrt_mod_right_gcrt_fold_restricted_solution_congruence)) -> (((exists ff_h_gcrt_fold_restricted_residue. ff_h_gcrt_fold_restricted_residue + S (gcomp_merge_residue_fold_restricted) = S ((S (gcomp_merge_index_fold_restricted)) * s)) /\ exists ff_q_gcrt_fold_restricted_residue. r = ff_q_gcrt_fold_restricted_residue * S ((S (gcomp_merge_index_fold_restricted)) * s) + (gcomp_merge_residue_fold_restricted))) -> (((exists ff_h_gcrt_fold_restricted_modulus. ff_h_gcrt_fold_restricted_modulus + S (gcomp_merge_modulus_fold_restricted) = S ((S (gcomp_merge_index_fold_restricted)) * c)) /\ exists ff_q_gcrt_fold_restricted_modulus. b = ff_q_gcrt_fold_restricted_modulus * S ((S (gcomp_merge_index_fold_restricted)) * c) + (gcomp_merge_modulus_fold_restricted))) -> ((((exists hag_left_factor_gcomp_fold_restricted_gcd. gcomp_merge_lcm_fold_restricted = gcomp_merge_gcd_fold_restricted * hag_left_factor_gcomp_fold_restricted_gcd) /\ (exists hag_right_factor_gcomp_fold_restricted_gcd. gcomp_merge_modulus_fold_restricted = gcomp_merge_gcd_fold_restricted * hag_right_factor_gcomp_fold_restricted_gcd)) /\ forall hag_divisor_gcomp_fold_restricted_gcd. (exists hag_common_left_gcomp_fold_restricted_gcd. gcomp_merge_lcm_fold_restricted = hag_divisor_gcomp_fold_restricted_gcd * hag_common_left_gcomp_fold_restricted_gcd) -> (exists hag_common_right_gcomp_fold_restricted_gcd. gcomp_merge_modulus_fold_restricted = hag_divisor_gcomp_fold_restricted_gcd * hag_common_right_gcomp_fold_restricted_gcd) -> exists hag_greatest_factor_gcomp_fold_restricted_gcd. gcomp_merge_gcd_fold_restricted = hag_divisor_gcomp_fold_restricted_gcd * hag_greatest_factor_gcomp_fold_restricted_gcd)) -> (exists hgcrt_mod_left_gcrt_fold_restricted_result hgcrt_mod_right_gcrt_fold_restricted_result. gcomp_merge_solution_fold_restricted + gcomp_merge_gcd_fold_restricted * hgcrt_mod_left_gcrt_fold_restricted_result = gcomp_merge_residue_fold_restricted + gcomp_merge_gcd_fold_restricted * hgcrt_mod_right_gcrt_fold_restricted_result) - 0018
specialize crt_merge_compatible_prefix_drop_last r - 0019
specialize crt_merge_compatible_prefix_drop_last s - 0020
specialize crt_merge_compatible_prefix_drop_last b - 0021
specialize crt_merge_compatible_prefix_drop_last c - 0022
specialize crt_merge_compatible_prefix_drop_last l - 0023
apply crt_merge_compatible_prefix_drop_last - 0024
exact hmerge - 0025
have hprefix : exists x. (forall gcrt_solution_index_gcomp_fold_old_solution gcrt_solution_residue_gcomp_fold_old_solution gcrt_solution_modulus_gcomp_fold_old_solution. (exists ff_lt_gcrt_gcomp_fold_old_solution_bound. ff_lt_gcrt_gcomp_fold_old_solution_bound + S gcrt_solution_index_gcomp_fold_old_solution = l) -> (((exists ff_h_gcrt_gcomp_fold_old_solution_residue. ff_h_gcrt_gcomp_fold_old_solution_residue + S (gcrt_solution_residue_gcomp_fold_old_solution) = S ((S (gcrt_solution_index_gcomp_fold_old_solution)) * s)) /\ exists ff_q_gcrt_gcomp_fold_old_solution_residue. r = ff_q_gcrt_gcomp_fold_old_solution_residue * S ((S (gcrt_solution_index_gcomp_fold_old_solution)) * s) + (gcrt_solution_residue_gcomp_fold_old_solution))) -> (((exists ff_h_gcrt_gcomp_fold_old_solution_modulus. ff_h_gcrt_gcomp_fold_old_solution_modulus + S (gcrt_solution_modulus_gcomp_fold_old_solution) = S ((S (gcrt_solution_index_gcomp_fold_old_solution)) * c)) /\ exists ff_q_gcrt_gcomp_fold_old_solution_modulus. b = ff_q_gcrt_gcomp_fold_old_solution_modulus * S ((S (gcrt_solution_index_gcomp_fold_old_solution)) * c) + (gcrt_solution_modulus_gcomp_fold_old_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_fold_old_solution_congruence hgcrt_mod_right_gcrt_gcomp_fold_old_solution_congruence. x + gcrt_solution_modulus_gcomp_fold_old_solution * hgcrt_mod_left_gcrt_gcomp_fold_old_solution_congruence = gcrt_solution_residue_gcomp_fold_old_solution + gcrt_solution_modulus_gcomp_fold_old_solution * hgcrt_mod_right_gcrt_gcomp_fold_old_solution_congruence)) - 0026
apply IH - 0027
exact hrestricted - 0028
cases hprefix - 0029
have hlcm : exists P. ((((forall gcrt_common_index_gcomp_fold_old_lcm_own gcrt_common_modulus_gcomp_fold_old_lcm_own. (exists ff_lt_gcrt_gcomp_fold_old_lcm_own_bound. ff_lt_gcrt_gcomp_fold_old_lcm_own_bound + S gcrt_common_index_gcomp_fold_old_lcm_own = l) -> (((exists ff_h_gcrt_gcomp_fold_old_lcm_own_entry. ff_h_gcrt_gcomp_fold_old_lcm_own_entry + S (gcrt_common_modulus_gcomp_fold_old_lcm_own) = S ((S (gcrt_common_index_gcomp_fold_old_lcm_own)) * c)) /\ exists ff_q_gcrt_gcomp_fold_old_lcm_own_entry. b = ff_q_gcrt_gcomp_fold_old_lcm_own_entry * S ((S (gcrt_common_index_gcomp_fold_old_lcm_own)) * c) + (gcrt_common_modulus_gcomp_fold_old_lcm_own))) -> exists gcrt_common_quotient_gcomp_fold_old_lcm_own. P = gcrt_common_modulus_gcomp_fold_old_lcm_own * gcrt_common_quotient_gcomp_fold_old_lcm_own) /\ forall gcrt_lcm_common_gcomp_fold_old_lcm. (forall gcrt_common_index_gcomp_fold_old_lcm_other gcrt_common_modulus_gcomp_fold_old_lcm_other. (exists ff_lt_gcrt_gcomp_fold_old_lcm_other_bound. ff_lt_gcrt_gcomp_fold_old_lcm_other_bound + S gcrt_common_index_gcomp_fold_old_lcm_other = l) -> (((exists ff_h_gcrt_gcomp_fold_old_lcm_other_entry. ff_h_gcrt_gcomp_fold_old_lcm_other_entry + S (gcrt_common_modulus_gcomp_fold_old_lcm_other) = S ((S (gcrt_common_index_gcomp_fold_old_lcm_other)) * c)) /\ exists ff_q_gcrt_gcomp_fold_old_lcm_other_entry. b = ff_q_gcrt_gcomp_fold_old_lcm_other_entry * S ((S (gcrt_common_index_gcomp_fold_old_lcm_other)) * c) + (gcrt_common_modulus_gcomp_fold_old_lcm_other))) -> exists gcrt_common_quotient_gcomp_fold_old_lcm_other. gcrt_lcm_common_gcomp_fold_old_lcm = gcrt_common_modulus_gcomp_fold_old_lcm_other * gcrt_common_quotient_gcomp_fold_old_lcm_other) -> exists gcrt_lcm_quotient_gcomp_fold_old_lcm. gcrt_lcm_common_gcomp_fold_old_lcm = P * gcrt_lcm_quotient_gcomp_fold_old_lcm)) /\ forall z. (((forall gcrt_common_index_gcomp_fold_old_lcm_unique_own gcrt_common_modulus_gcomp_fold_old_lcm_unique_own. (exists ff_lt_gcrt_gcomp_fold_old_lcm_unique_own_bound. ff_lt_gcrt_gcomp_fold_old_lcm_unique_own_bound + S gcrt_common_index_gcomp_fold_old_lcm_unique_own = l) -> (((exists ff_h_gcrt_gcomp_fold_old_lcm_unique_own_entry. ff_h_gcrt_gcomp_fold_old_lcm_unique_own_entry + S (gcrt_common_modulus_gcomp_fold_old_lcm_unique_own) = S ((S (gcrt_common_index_gcomp_fold_old_lcm_unique_own)) * c)) /\ exists ff_q_gcrt_gcomp_fold_old_lcm_unique_own_entry. b = ff_q_gcrt_gcomp_fold_old_lcm_unique_own_entry * S ((S (gcrt_common_index_gcomp_fold_old_lcm_unique_own)) * c) + (gcrt_common_modulus_gcomp_fold_old_lcm_unique_own))) -> exists gcrt_common_quotient_gcomp_fold_old_lcm_unique_own. z = gcrt_common_modulus_gcomp_fold_old_lcm_unique_own * gcrt_common_quotient_gcomp_fold_old_lcm_unique_own) /\ forall gcrt_lcm_common_gcomp_fold_old_lcm_unique. (forall gcrt_common_index_gcomp_fold_old_lcm_unique_other gcrt_common_modulus_gcomp_fold_old_lcm_unique_other. (exists ff_lt_gcrt_gcomp_fold_old_lcm_unique_other_bound. ff_lt_gcrt_gcomp_fold_old_lcm_unique_other_bound + S gcrt_common_index_gcomp_fold_old_lcm_unique_other = l) -> (((exists ff_h_gcrt_gcomp_fold_old_lcm_unique_other_entry. ff_h_gcrt_gcomp_fold_old_lcm_unique_other_entry + S (gcrt_common_modulus_gcomp_fold_old_lcm_unique_other) = S ((S (gcrt_common_index_gcomp_fold_old_lcm_unique_other)) * c)) /\ exists ff_q_gcrt_gcomp_fold_old_lcm_unique_other_entry. b = ff_q_gcrt_gcomp_fold_old_lcm_unique_other_entry * S ((S (gcrt_common_index_gcomp_fold_old_lcm_unique_other)) * c) + (gcrt_common_modulus_gcomp_fold_old_lcm_unique_other))) -> exists gcrt_common_quotient_gcomp_fold_old_lcm_unique_other. gcrt_lcm_common_gcomp_fold_old_lcm_unique = gcrt_common_modulus_gcomp_fold_old_lcm_unique_other * gcrt_common_quotient_gcomp_fold_old_lcm_unique_other) -> exists gcrt_lcm_quotient_gcomp_fold_old_lcm_unique. gcrt_lcm_common_gcomp_fold_old_lcm_unique = z * gcrt_lcm_quotient_gcomp_fold_old_lcm_unique)) -> z = P) - 0030
specialize crt_prefix_lcm_exists_unique b - 0031
specialize crt_prefix_lcm_exists_unique c - 0032
specialize crt_prefix_lcm_exists_unique l - 0033
exact crt_prefix_lcm_exists_unique - 0034
cases hlcm - 0035
cases hlcm_witness - 0036
have hresidue : exists a. (((exists ff_h_gcrt_gcomp_fold_actual_residue. ff_h_gcrt_gcomp_fold_actual_residue + S (a) = S ((S (l)) * s)) /\ exists ff_q_gcrt_gcomp_fold_actual_residue. r = ff_q_gcrt_gcomp_fold_actual_residue * S ((S (l)) * s) + (a))) - 0037
specialize beta_at_exists r - 0038
specialize beta_at_exists s - 0039
specialize beta_at_exists l - 0040
exact beta_at_exists - 0041
cases hresidue - 0042
have hmodulus : exists n. (((exists ff_h_gcrt_gcomp_fold_actual_modulus. ff_h_gcrt_gcomp_fold_actual_modulus + S (n) = S ((S (l)) * c)) /\ exists ff_q_gcrt_gcomp_fold_actual_modulus. b = ff_q_gcrt_gcomp_fold_actual_modulus * S ((S (l)) * c) + (n))) - 0043
specialize beta_at_exists b - 0044
specialize beta_at_exists c - 0045
specialize beta_at_exists l - 0046
exact beta_at_exists - 0047
cases hmodulus - 0048
have hgcd : exists g. ((((exists hag_left_factor_gcomp_fold_actual_gcd. x1 = g * hag_left_factor_gcomp_fold_actual_gcd) /\ (exists hag_right_factor_gcomp_fold_actual_gcd. x3 = g * hag_right_factor_gcomp_fold_actual_gcd)) /\ forall hag_divisor_gcomp_fold_actual_gcd. (exists hag_common_left_gcomp_fold_actual_gcd. x1 = hag_divisor_gcomp_fold_actual_gcd * hag_common_left_gcomp_fold_actual_gcd) -> (exists hag_common_right_gcomp_fold_actual_gcd. x3 = hag_divisor_gcomp_fold_actual_gcd * hag_common_right_gcomp_fold_actual_gcd) -> exists hag_greatest_factor_gcomp_fold_actual_gcd. g = hag_divisor_gcomp_fold_actual_gcd * hag_greatest_factor_gcomp_fold_actual_gcd)) - 0049
specialize gcd_exists_relational x1 - 0050
specialize gcd_exists_relational x3 - 0051
exact gcd_exists_relational - 0052
cases hgcd - 0053
have hcompatible : exists hgcrt_mod_left_gcrt_gcomp_fold_actual_compatible hgcrt_mod_right_gcrt_gcomp_fold_actual_compatible. x + x4 * hgcrt_mod_left_gcrt_gcomp_fold_actual_compatible = x2 + x4 * hgcrt_mod_right_gcrt_gcomp_fold_actual_compatible - 0054
specialize hmerge l - 0055
specialize hmerge x - 0056
specialize hmerge x1 - 0057
specialize hmerge x2 - 0058
specialize hmerge x3 - 0059
specialize hmerge x4 - 0060
apply hmerge - 0061
specialize le_refl (S l) - 0062
exact le_refl - 0063
exact hlcm_witness_left - 0064
exact hprefix_witness - 0065
exact hresidue_witness - 0066
exact hmodulus_witness - 0067
exact hgcd_witness - 0068
have hmerged : exists z. (((exists hgcrt_mod_left_gcrt_gcomp_fold_merged_old hgcrt_mod_right_gcrt_gcomp_fold_merged_old. z + x1 * hgcrt_mod_left_gcrt_gcomp_fold_merged_old = x + x1 * hgcrt_mod_right_gcrt_gcomp_fold_merged_old) /\ (exists hgcrt_mod_left_gcrt_gcomp_fold_merged_new hgcrt_mod_right_gcrt_gcomp_fold_merged_new. z + x3 * hgcrt_mod_left_gcrt_gcomp_fold_merged_new = x2 + x3 * hgcrt_mod_right_gcrt_gcomp_fold_merged_new))) - 0069
specialize generalized_binary_crt_merge_step x1 - 0070
specialize generalized_binary_crt_merge_step x3 - 0071
specialize generalized_binary_crt_merge_step x - 0072
specialize generalized_binary_crt_merge_step x2 - 0073
specialize generalized_binary_crt_merge_step x4 - 0074
apply generalized_binary_crt_merge_step - 0075
exact hgcd_witness - 0076
exact hcompatible - 0077
cases hmerged - 0078
cases hmerged_witness - 0079
have htransported : forall gcrt_solution_index_gcomp_fold_transported gcrt_solution_residue_gcomp_fold_transported gcrt_solution_modulus_gcomp_fold_transported. (exists ff_lt_gcrt_gcomp_fold_transported_bound. ff_lt_gcrt_gcomp_fold_transported_bound + S gcrt_solution_index_gcomp_fold_transported = l) -> (((exists ff_h_gcrt_gcomp_fold_transported_residue. ff_h_gcrt_gcomp_fold_transported_residue + S (gcrt_solution_residue_gcomp_fold_transported) = S ((S (gcrt_solution_index_gcomp_fold_transported)) * s)) /\ exists ff_q_gcrt_gcomp_fold_transported_residue. r = ff_q_gcrt_gcomp_fold_transported_residue * S ((S (gcrt_solution_index_gcomp_fold_transported)) * s) + (gcrt_solution_residue_gcomp_fold_transported))) -> (((exists ff_h_gcrt_gcomp_fold_transported_modulus. ff_h_gcrt_gcomp_fold_transported_modulus + S (gcrt_solution_modulus_gcomp_fold_transported) = S ((S (gcrt_solution_index_gcomp_fold_transported)) * c)) /\ exists ff_q_gcrt_gcomp_fold_transported_modulus. b = ff_q_gcrt_gcomp_fold_transported_modulus * S ((S (gcrt_solution_index_gcomp_fold_transported)) * c) + (gcrt_solution_modulus_gcomp_fold_transported))) -> (exists hgcrt_mod_left_gcrt_gcomp_fold_transported_congruence hgcrt_mod_right_gcrt_gcomp_fold_transported_congruence. x5 + gcrt_solution_modulus_gcomp_fold_transported * hgcrt_mod_left_gcrt_gcomp_fold_transported_congruence = gcrt_solution_residue_gcomp_fold_transported + gcrt_solution_modulus_gcomp_fold_transported * hgcrt_mod_right_gcrt_gcomp_fold_transported_congruence) - 0080
specialize crt_prefix_solution_transport_common_multiple r - 0081
specialize crt_prefix_solution_transport_common_multiple s - 0082
specialize crt_prefix_solution_transport_common_multiple b - 0083
specialize crt_prefix_solution_transport_common_multiple c - 0084
specialize crt_prefix_solution_transport_common_multiple l - 0085
specialize crt_prefix_solution_transport_common_multiple x1 - 0086
specialize crt_prefix_solution_transport_common_multiple x - 0087
specialize crt_prefix_solution_transport_common_multiple x5 - 0088
apply crt_prefix_solution_transport_common_multiple - 0089
cases hlcm_witness_left - 0090
exact hlcm_witness_left_left - 0091
exact hprefix_witness - 0092
exact hmerged_witness_left - 0093
exists x5 - 0094
specialize crt_prefix_solution_successor_intro r - 0095
specialize crt_prefix_solution_successor_intro s - 0096
specialize crt_prefix_solution_successor_intro b - 0097
specialize crt_prefix_solution_successor_intro c - 0098
specialize crt_prefix_solution_successor_intro l - 0099
specialize crt_prefix_solution_successor_intro x5 - 0100
specialize crt_prefix_solution_successor_intro x2 - 0101
specialize crt_prefix_solution_successor_intro x3 - 0102
apply crt_prefix_solution_successor_intro - 0103
exact htransported - 0104
exact hresidue_witness - 0105
exact hmodulus_witness - 0106
exact hmerged_witness_right