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 r s b c l. (forall gcrt_positive_index_gcomp_canonical_positive gcrt_positive_value_gcomp_canonical_positive. (exists ff_lt_gcrt_gcomp_canonical_positive_bound. ff_lt_gcrt_gcomp_canonical_positive_bound + S gcrt_positive_index_gcomp_canonical_positive = l) -> (((exists ff_h_gcrt_gcomp_canonical_positive_entry. ff_h_gcrt_gcomp_canonical_positive_entry + S (gcrt_positive_value_gcomp_canonical_positive) = S ((S (gcrt_positive_index_gcomp_canonical_positive)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_positive_entry. b = ff_q_gcrt_gcomp_canonical_positive_entry * S ((S (gcrt_positive_index_gcomp_canonical_positive)) * c) + (gcrt_positive_value_gcomp_canonical_positive))) -> ~(gcrt_positive_value_gcomp_canonical_positive = 0)) -> (forall gcomp_merge_index_gcomp_canonical_merge gcomp_merge_solution_gcomp_canonical_merge gcomp_merge_lcm_gcomp_canonical_merge gcomp_merge_residue_gcomp_canonical_merge gcomp_merge_modulus_gcomp_canonical_merge gcomp_merge_gcd_gcomp_canonical_merge. (exists ff_lt_gcrt_gcomp_canonical_merge_bound. ff_lt_gcrt_gcomp_canonical_merge_bound + S gcomp_merge_index_gcomp_canonical_merge = l) -> (((forall gcrt_common_index_gcomp_canonical_merge_lcm_own gcrt_common_modulus_gcomp_canonical_merge_lcm_own. (exists ff_lt_gcrt_gcomp_canonical_merge_lcm_own_bound. ff_lt_gcrt_gcomp_canonical_merge_lcm_own_bound + S gcrt_common_index_gcomp_canonical_merge_lcm_own = gcomp_merge_index_gcomp_canonical_merge) -> (((exists ff_h_gcrt_gcomp_canonical_merge_lcm_own_entry. ff_h_gcrt_gcomp_canonical_merge_lcm_own_entry + S (gcrt_common_modulus_gcomp_canonical_merge_lcm_own) = S ((S (gcrt_common_index_gcomp_canonical_merge_lcm_own)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_merge_lcm_own_entry. b = ff_q_gcrt_gcomp_canonical_merge_lcm_own_entry * S ((S (gcrt_common_index_gcomp_canonical_merge_lcm_own)) * c) + (gcrt_common_modulus_gcomp_canonical_merge_lcm_own))) -> exists gcrt_common_quotient_gcomp_canonical_merge_lcm_own. gcomp_merge_lcm_gcomp_canonical_merge = gcrt_common_modulus_gcomp_canonical_merge_lcm_own * gcrt_common_quotient_gcomp_canonical_merge_lcm_own) /\ forall gcrt_lcm_common_gcomp_canonical_merge_lcm. (forall gcrt_common_index_gcomp_canonical_merge_lcm_other gcrt_common_modulus_gcomp_canonical_merge_lcm_other. (exists ff_lt_gcrt_gcomp_canonical_merge_lcm_other_bound. ff_lt_gcrt_gcomp_canonical_merge_lcm_other_bound + S gcrt_common_index_gcomp_canonical_merge_lcm_other = gcomp_merge_index_gcomp_canonical_merge) -> (((exists ff_h_gcrt_gcomp_canonical_merge_lcm_other_entry. ff_h_gcrt_gcomp_canonical_merge_lcm_other_entry + S (gcrt_common_modulus_gcomp_canonical_merge_lcm_other) = S ((S (gcrt_common_index_gcomp_canonical_merge_lcm_other)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_merge_lcm_other_entry. b = ff_q_gcrt_gcomp_canonical_merge_lcm_other_entry * S ((S (gcrt_common_index_gcomp_canonical_merge_lcm_other)) * c) + (gcrt_common_modulus_gcomp_canonical_merge_lcm_other))) -> exists gcrt_common_quotient_gcomp_canonical_merge_lcm_other. gcrt_lcm_common_gcomp_canonical_merge_lcm = gcrt_common_modulus_gcomp_canonical_merge_lcm_other * gcrt_common_quotient_gcomp_canonical_merge_lcm_other) -> exists gcrt_lcm_quotient_gcomp_canonical_merge_lcm. gcrt_lcm_common_gcomp_canonical_merge_lcm = gcomp_merge_lcm_gcomp_canonical_merge * gcrt_lcm_quotient_gcomp_canonical_merge_lcm)) -> (forall gcrt_solution_index_gcomp_canonical_merge_solution gcrt_solution_residue_gcomp_canonical_merge_solution gcrt_solution_modulus_gcomp_canonical_merge_solution. (exists ff_lt_gcrt_gcomp_canonical_merge_solution_bound. ff_lt_gcrt_gcomp_canonical_merge_solution_bound + S gcrt_solution_index_gcomp_canonical_merge_solution = gcomp_merge_index_gcomp_canonical_merge) -> (((exists ff_h_gcrt_gcomp_canonical_merge_solution_residue. ff_h_gcrt_gcomp_canonical_merge_solution_residue + S (gcrt_solution_residue_gcomp_canonical_merge_solution) = S ((S (gcrt_solution_index_gcomp_canonical_merge_solution)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_merge_solution_residue. r = ff_q_gcrt_gcomp_canonical_merge_solution_residue * S ((S (gcrt_solution_index_gcomp_canonical_merge_solution)) * s) + (gcrt_solution_residue_gcomp_canonical_merge_solution))) -> (((exists ff_h_gcrt_gcomp_canonical_merge_solution_modulus. ff_h_gcrt_gcomp_canonical_merge_solution_modulus + S (gcrt_solution_modulus_gcomp_canonical_merge_solution) = S ((S (gcrt_solution_index_gcomp_canonical_merge_solution)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_merge_solution_modulus. b = ff_q_gcrt_gcomp_canonical_merge_solution_modulus * S ((S (gcrt_solution_index_gcomp_canonical_merge_solution)) * c) + (gcrt_solution_modulus_gcomp_canonical_merge_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_merge_solution_congruence hgcrt_mod_right_gcrt_gcomp_canonical_merge_solution_congruence. gcomp_merge_solution_gcomp_canonical_merge + gcrt_solution_modulus_gcomp_canonical_merge_solution * hgcrt_mod_left_gcrt_gcomp_canonical_merge_solution_congruence = gcrt_solution_residue_gcomp_canonical_merge_solution + gcrt_solution_modulus_gcomp_canonical_merge_solution * hgcrt_mod_right_gcrt_gcomp_canonical_merge_solution_congruence)) -> (((exists ff_h_gcrt_gcomp_canonical_merge_residue. ff_h_gcrt_gcomp_canonical_merge_residue + S (gcomp_merge_residue_gcomp_canonical_merge) = S ((S (gcomp_merge_index_gcomp_canonical_merge)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_merge_residue. r = ff_q_gcrt_gcomp_canonical_merge_residue * S ((S (gcomp_merge_index_gcomp_canonical_merge)) * s) + (gcomp_merge_residue_gcomp_canonical_merge))) -> (((exists ff_h_gcrt_gcomp_canonical_merge_modulus. ff_h_gcrt_gcomp_canonical_merge_modulus + S (gcomp_merge_modulus_gcomp_canonical_merge) = S ((S (gcomp_merge_index_gcomp_canonical_merge)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_merge_modulus. b = ff_q_gcrt_gcomp_canonical_merge_modulus * S ((S (gcomp_merge_index_gcomp_canonical_merge)) * c) + (gcomp_merge_modulus_gcomp_canonical_merge))) -> ((((exists hag_left_factor_gcomp_gcomp_canonical_merge_gcd. gcomp_merge_lcm_gcomp_canonical_merge = gcomp_merge_gcd_gcomp_canonical_merge * hag_left_factor_gcomp_gcomp_canonical_merge_gcd) /\ (exists hag_right_factor_gcomp_gcomp_canonical_merge_gcd. gcomp_merge_modulus_gcomp_canonical_merge = gcomp_merge_gcd_gcomp_canonical_merge * hag_right_factor_gcomp_gcomp_canonical_merge_gcd)) /\ forall hag_divisor_gcomp_gcomp_canonical_merge_gcd. (exists hag_common_left_gcomp_gcomp_canonical_merge_gcd. gcomp_merge_lcm_gcomp_canonical_merge = hag_divisor_gcomp_gcomp_canonical_merge_gcd * hag_common_left_gcomp_gcomp_canonical_merge_gcd) -> (exists hag_common_right_gcomp_gcomp_canonical_merge_gcd. gcomp_merge_modulus_gcomp_canonical_merge = hag_divisor_gcomp_gcomp_canonical_merge_gcd * hag_common_right_gcomp_gcomp_canonical_merge_gcd) -> exists hag_greatest_factor_gcomp_gcomp_canonical_merge_gcd. gcomp_merge_gcd_gcomp_canonical_merge = hag_divisor_gcomp_gcomp_canonical_merge_gcd * hag_greatest_factor_gcomp_gcomp_canonical_merge_gcd)) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_merge_result hgcrt_mod_right_gcrt_gcomp_canonical_merge_result. gcomp_merge_solution_gcomp_canonical_merge + gcomp_merge_gcd_gcomp_canonical_merge * hgcrt_mod_left_gcrt_gcomp_canonical_merge_result = gcomp_merge_residue_gcomp_canonical_merge + gcomp_merge_gcd_gcomp_canonical_merge * hgcrt_mod_right_gcrt_gcomp_canonical_merge_result)) -> exists x M. ((((((forall gcrt_common_index_gcomp_canonical_chosen_lcm_own gcrt_common_modulus_gcomp_canonical_chosen_lcm_own. (exists ff_lt_gcrt_gcomp_canonical_chosen_lcm_own_bound. ff_lt_gcrt_gcomp_canonical_chosen_lcm_own_bound + S gcrt_common_index_gcomp_canonical_chosen_lcm_own = l) -> (((exists ff_h_gcrt_gcomp_canonical_chosen_lcm_own_entry. ff_h_gcrt_gcomp_canonical_chosen_lcm_own_entry + S (gcrt_common_modulus_gcomp_canonical_chosen_lcm_own) = S ((S (gcrt_common_index_gcomp_canonical_chosen_lcm_own)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_chosen_lcm_own_entry. b = ff_q_gcrt_gcomp_canonical_chosen_lcm_own_entry * S ((S (gcrt_common_index_gcomp_canonical_chosen_lcm_own)) * c) + (gcrt_common_modulus_gcomp_canonical_chosen_lcm_own))) -> exists gcrt_common_quotient_gcomp_canonical_chosen_lcm_own. M = gcrt_common_modulus_gcomp_canonical_chosen_lcm_own * gcrt_common_quotient_gcomp_canonical_chosen_lcm_own) /\ forall gcrt_lcm_common_gcomp_canonical_chosen_lcm. (forall gcrt_common_index_gcomp_canonical_chosen_lcm_other gcrt_common_modulus_gcomp_canonical_chosen_lcm_other. (exists ff_lt_gcrt_gcomp_canonical_chosen_lcm_other_bound. ff_lt_gcrt_gcomp_canonical_chosen_lcm_other_bound + S gcrt_common_index_gcomp_canonical_chosen_lcm_other = l) -> (((exists ff_h_gcrt_gcomp_canonical_chosen_lcm_other_entry. ff_h_gcrt_gcomp_canonical_chosen_lcm_other_entry + S (gcrt_common_modulus_gcomp_canonical_chosen_lcm_other) = S ((S (gcrt_common_index_gcomp_canonical_chosen_lcm_other)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_chosen_lcm_other_entry. b = ff_q_gcrt_gcomp_canonical_chosen_lcm_other_entry * S ((S (gcrt_common_index_gcomp_canonical_chosen_lcm_other)) * c) + (gcrt_common_modulus_gcomp_canonical_chosen_lcm_other))) -> exists gcrt_common_quotient_gcomp_canonical_chosen_lcm_other. gcrt_lcm_common_gcomp_canonical_chosen_lcm = gcrt_common_modulus_gcomp_canonical_chosen_lcm_other * gcrt_common_quotient_gcomp_canonical_chosen_lcm_other) -> exists gcrt_lcm_quotient_gcomp_canonical_chosen_lcm. gcrt_lcm_common_gcomp_canonical_chosen_lcm = M * gcrt_lcm_quotient_gcomp_canonical_chosen_lcm)) /\ ((exists ff_lt_gcrt_gcomp_canonical_chosen_bounded. ff_lt_gcrt_gcomp_canonical_chosen_bounded + S x = M) /\ (forall gcrt_solution_index_gcomp_canonical_chosen_solution gcrt_solution_residue_gcomp_canonical_chosen_solution gcrt_solution_modulus_gcomp_canonical_chosen_solution. (exists ff_lt_gcrt_gcomp_canonical_chosen_solution_bound. ff_lt_gcrt_gcomp_canonical_chosen_solution_bound + S gcrt_solution_index_gcomp_canonical_chosen_solution = l) -> (((exists ff_h_gcrt_gcomp_canonical_chosen_solution_residue. ff_h_gcrt_gcomp_canonical_chosen_solution_residue + S (gcrt_solution_residue_gcomp_canonical_chosen_solution) = S ((S (gcrt_solution_index_gcomp_canonical_chosen_solution)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_chosen_solution_residue. r = ff_q_gcrt_gcomp_canonical_chosen_solution_residue * S ((S (gcrt_solution_index_gcomp_canonical_chosen_solution)) * s) + (gcrt_solution_residue_gcomp_canonical_chosen_solution))) -> (((exists ff_h_gcrt_gcomp_canonical_chosen_solution_modulus. ff_h_gcrt_gcomp_canonical_chosen_solution_modulus + S (gcrt_solution_modulus_gcomp_canonical_chosen_solution) = S ((S (gcrt_solution_index_gcomp_canonical_chosen_solution)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_chosen_solution_modulus. b = ff_q_gcrt_gcomp_canonical_chosen_solution_modulus * S ((S (gcrt_solution_index_gcomp_canonical_chosen_solution)) * c) + (gcrt_solution_modulus_gcomp_canonical_chosen_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_chosen_solution_congruence hgcrt_mod_right_gcrt_gcomp_canonical_chosen_solution_congruence. x + gcrt_solution_modulus_gcomp_canonical_chosen_solution * hgcrt_mod_left_gcrt_gcomp_canonical_chosen_solution_congruence = gcrt_solution_residue_gcomp_canonical_chosen_solution + gcrt_solution_modulus_gcomp_canonical_chosen_solution * hgcrt_mod_right_gcrt_gcomp_canonical_chosen_solution_congruence))))) /\ forall y. (((((forall gcrt_common_index_gcomp_canonical_compared_lcm_own gcrt_common_modulus_gcomp_canonical_compared_lcm_own. (exists ff_lt_gcrt_gcomp_canonical_compared_lcm_own_bound. ff_lt_gcrt_gcomp_canonical_compared_lcm_own_bound + S gcrt_common_index_gcomp_canonical_compared_lcm_own = l) -> (((exists ff_h_gcrt_gcomp_canonical_compared_lcm_own_entry. ff_h_gcrt_gcomp_canonical_compared_lcm_own_entry + S (gcrt_common_modulus_gcomp_canonical_compared_lcm_own) = S ((S (gcrt_common_index_gcomp_canonical_compared_lcm_own)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_compared_lcm_own_entry. b = ff_q_gcrt_gcomp_canonical_compared_lcm_own_entry * S ((S (gcrt_common_index_gcomp_canonical_compared_lcm_own)) * c) + (gcrt_common_modulus_gcomp_canonical_compared_lcm_own))) -> exists gcrt_common_quotient_gcomp_canonical_compared_lcm_own. M = gcrt_common_modulus_gcomp_canonical_compared_lcm_own * gcrt_common_quotient_gcomp_canonical_compared_lcm_own) /\ forall gcrt_lcm_common_gcomp_canonical_compared_lcm. (forall gcrt_common_index_gcomp_canonical_compared_lcm_other gcrt_common_modulus_gcomp_canonical_compared_lcm_other. (exists ff_lt_gcrt_gcomp_canonical_compared_lcm_other_bound. ff_lt_gcrt_gcomp_canonical_compared_lcm_other_bound + S gcrt_common_index_gcomp_canonical_compared_lcm_other = l) -> (((exists ff_h_gcrt_gcomp_canonical_compared_lcm_other_entry. ff_h_gcrt_gcomp_canonical_compared_lcm_other_entry + S (gcrt_common_modulus_gcomp_canonical_compared_lcm_other) = S ((S (gcrt_common_index_gcomp_canonical_compared_lcm_other)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_compared_lcm_other_entry. b = ff_q_gcrt_gcomp_canonical_compared_lcm_other_entry * S ((S (gcrt_common_index_gcomp_canonical_compared_lcm_other)) * c) + (gcrt_common_modulus_gcomp_canonical_compared_lcm_other))) -> exists gcrt_common_quotient_gcomp_canonical_compared_lcm_other. gcrt_lcm_common_gcomp_canonical_compared_lcm = gcrt_common_modulus_gcomp_canonical_compared_lcm_other * gcrt_common_quotient_gcomp_canonical_compared_lcm_other) -> exists gcrt_lcm_quotient_gcomp_canonical_compared_lcm. gcrt_lcm_common_gcomp_canonical_compared_lcm = M * gcrt_lcm_quotient_gcomp_canonical_compared_lcm)) /\ ((exists ff_lt_gcrt_gcomp_canonical_compared_bounded. ff_lt_gcrt_gcomp_canonical_compared_bounded + S y = M) /\ (forall gcrt_solution_index_gcomp_canonical_compared_solution gcrt_solution_residue_gcomp_canonical_compared_solution gcrt_solution_modulus_gcomp_canonical_compared_solution. (exists ff_lt_gcrt_gcomp_canonical_compared_solution_bound. ff_lt_gcrt_gcomp_canonical_compared_solution_bound + S gcrt_solution_index_gcomp_canonical_compared_solution = l) -> (((exists ff_h_gcrt_gcomp_canonical_compared_solution_residue. ff_h_gcrt_gcomp_canonical_compared_solution_residue + S (gcrt_solution_residue_gcomp_canonical_compared_solution) = S ((S (gcrt_solution_index_gcomp_canonical_compared_solution)) * s)) /\ exists ff_q_gcrt_gcomp_canonical_compared_solution_residue. r = ff_q_gcrt_gcomp_canonical_compared_solution_residue * S ((S (gcrt_solution_index_gcomp_canonical_compared_solution)) * s) + (gcrt_solution_residue_gcomp_canonical_compared_solution))) -> (((exists ff_h_gcrt_gcomp_canonical_compared_solution_modulus. ff_h_gcrt_gcomp_canonical_compared_solution_modulus + S (gcrt_solution_modulus_gcomp_canonical_compared_solution) = S ((S (gcrt_solution_index_gcomp_canonical_compared_solution)) * c)) /\ exists ff_q_gcrt_gcomp_canonical_compared_solution_modulus. b = ff_q_gcrt_gcomp_canonical_compared_solution_modulus * S ((S (gcrt_solution_index_gcomp_canonical_compared_solution)) * c) + (gcrt_solution_modulus_gcomp_canonical_compared_solution))) -> (exists hgcrt_mod_left_gcrt_gcomp_canonical_compared_solution_congruence hgcrt_mod_right_gcrt_gcomp_canonical_compared_solution_congruence. y + gcrt_solution_modulus_gcomp_canonical_compared_solution * hgcrt_mod_left_gcrt_gcomp_canonical_compared_solution_congruence = gcrt_solution_residue_gcomp_canonical_compared_solution + gcrt_solution_modulus_gcomp_canonical_compared_solution * hgcrt_mod_right_gcrt_gcomp_canonical_compared_solution_congruence))))) -> y = x)Constructive proof overview
Generated structural guide
Every arbitrary finite positive non-coprime congruence system satisfying the exact operational gcd-merge invariant has its genuine LCM and exactly one strictly bounded solution.
The unchanged tactic script uses 5 declared prerequisites and contains 61 exact native proof lines.
Alpha v34 checked-use · first admitted v25 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
GC0009 crt_merge_compatible_prefix_solution_exists crt_prefix_lcm_exists_unique Alpha theorem; checked-use authorized GC000A crt_positive_prefix_lcm_nonzero crt_prefix_solution_canonical_remainder Alpha theorem; checked-use authorized crt_canonical_prefix_solution_unique 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 (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: CRTPrefixSolution - 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: CRTCanonicalPrefixSolution - 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 exact 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
Separate complete second-wave branches: Full G011 proof · Alpha v27.