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_fold_positive gcrt_positive_value_fold_positive. (exists ff_lt_gcrt_fold_positive_bound. ff_lt_gcrt_fold_positive_bound + S gcrt_positive_index_fold_positive = l) -> (((exists ff_h_gcrt_fold_positive_entry. ff_h_gcrt_fold_positive_entry + S (gcrt_positive_value_fold_positive) = S ((S (gcrt_positive_index_fold_positive)) * c)) /\ exists ff_q_gcrt_fold_positive_entry. b = ff_q_gcrt_fold_positive_entry * S ((S (gcrt_positive_index_fold_positive)) * c) + (gcrt_positive_value_fold_positive))) -> ~(gcrt_positive_value_fold_positive = 0)) -> (forall bpr_left_index_gcrt_fold_pairwise bpr_right_index_gcrt_fold_pairwise bpr_left_value_gcrt_fold_pairwise bpr_right_value_gcrt_fold_pairwise. (exists bpr_gap_gcrt_fold_pairwise_left_bound. bpr_gap_gcrt_fold_pairwise_left_bound + S (bpr_left_index_gcrt_fold_pairwise) = l) -> (exists bpr_gap_gcrt_fold_pairwise_right_bound. bpr_gap_gcrt_fold_pairwise_right_bound + S (bpr_right_index_gcrt_fold_pairwise) = l) -> (((exists bpr_height_gcrt_fold_pairwise_left_at. bpr_height_gcrt_fold_pairwise_left_at + S (bpr_left_value_gcrt_fold_pairwise) = S ((S (bpr_left_index_gcrt_fold_pairwise)) * c)) /\ exists bpr_quotient_gcrt_fold_pairwise_left_at. b = bpr_quotient_gcrt_fold_pairwise_left_at * S ((S (bpr_left_index_gcrt_fold_pairwise)) * c) + (bpr_left_value_gcrt_fold_pairwise))) -> (((exists bpr_height_gcrt_fold_pairwise_right_at. bpr_height_gcrt_fold_pairwise_right_at + S (bpr_right_value_gcrt_fold_pairwise) = S ((S (bpr_right_index_gcrt_fold_pairwise)) * c)) /\ exists bpr_quotient_gcrt_fold_pairwise_right_at. b = bpr_quotient_gcrt_fold_pairwise_right_at * S ((S (bpr_right_index_gcrt_fold_pairwise)) * c) + (bpr_right_value_gcrt_fold_pairwise))) -> ~(bpr_left_index_gcrt_fold_pairwise = bpr_right_index_gcrt_fold_pairwise) -> (forall bpr_coprime_divisor_gcrt_fold_pairwise_coprime. (exists bpr_coprime_left_factor_gcrt_fold_pairwise_coprime. bpr_left_value_gcrt_fold_pairwise = bpr_coprime_divisor_gcrt_fold_pairwise_coprime * bpr_coprime_left_factor_gcrt_fold_pairwise_coprime) -> (exists bpr_coprime_right_factor_gcrt_fold_pairwise_coprime. bpr_right_value_gcrt_fold_pairwise = bpr_coprime_divisor_gcrt_fold_pairwise_coprime * bpr_coprime_right_factor_gcrt_fold_pairwise_coprime) -> bpr_coprime_divisor_gcrt_fold_pairwise_coprime = 1)) -> exists x. (forall gcrt_solution_index_fold_result gcrt_solution_residue_fold_result gcrt_solution_modulus_fold_result. (exists ff_lt_gcrt_fold_result_bound. ff_lt_gcrt_fold_result_bound + S gcrt_solution_index_fold_result = l) -> (((exists ff_h_gcrt_fold_result_residue. ff_h_gcrt_fold_result_residue + S (gcrt_solution_residue_fold_result) = S ((S (gcrt_solution_index_fold_result)) * s)) /\ exists ff_q_gcrt_fold_result_residue. r = ff_q_gcrt_fold_result_residue * S ((S (gcrt_solution_index_fold_result)) * s) + (gcrt_solution_residue_fold_result))) -> (((exists ff_h_gcrt_fold_result_modulus. ff_h_gcrt_fold_result_modulus + S (gcrt_solution_modulus_fold_result) = S ((S (gcrt_solution_index_fold_result)) * c)) /\ exists ff_q_gcrt_fold_result_modulus. b = ff_q_gcrt_fold_result_modulus * S ((S (gcrt_solution_index_fold_result)) * c) + (gcrt_solution_modulus_fold_result))) -> (exists hgcrt_mod_left_gcrt_fold_result_congruence hgcrt_mod_right_gcrt_fold_result_congruence. x + gcrt_solution_modulus_fold_result * hgcrt_mod_left_gcrt_fold_result_congruence = gcrt_solution_residue_fold_result + gcrt_solution_modulus_fold_result * hgcrt_mod_right_gcrt_fold_result_congruence))Constructive proof overview
Generated structural guide
Every arbitrary finite beta-coded list of positive pairwise-coprime moduli has an actual simultaneous CRT solution.
The unchanged tactic script uses 11 declared prerequisites and contains 134 exact native proof lines.
Alpha v34 checked-use · first admitted v24 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
CR0005 crt_prefix_solution_empty CR0002 crt_positive_moduli_prefix_drop_last CR0004 crt_pairwise_coprime_prefix_drop_last beta_product_exists_unique Stable theorem; checked-use authorized beta_at_exists Stable theorem; checked-use authorized CR000A crt_positive_moduli_prefix_product_nonzero CR0003 crt_positive_moduli_prefix_last_nonzero CR0012 crt_pairwise_coprime_prefix_product_coprime_last binary_crt_fold_step Stable theorem; checked-use authorized beta_factor_divides_product Stable theorem; checked-use authorized CR0008 crt_prefix_solution_successor_introDirect 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 (7)
01Fix variables and assumptionsL1–4
02Induction on lL5–7
03Construct an explicit witnessL8–8
Supply the displayed value, then prove that it has the required property.
- L8
exists 0
04Use earlier factsL9–15
Instantiate or apply named facts and discharge the corresponding proof obligations.
05Calculate and transport equalitiesL16–16
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L16
refl
06Fix variables and assumptionsL17–18
07Establish hpositive_prefixL19–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive moduli prefix drop last.
- L19
have hpositive_prefix : CRTPositiveModuliPrefix(b,c,l)Definitions: CRTPositiveModuliPrefix - L20
specialize crt_positive_moduli_prefix_drop_last b - L21
specialize crt_positive_moduli_prefix_drop_last c - L22
specialize crt_positive_moduli_prefix_drop_last l - L23
apply crt_positive_moduli_prefix_drop_last - L24
exact hpositive
08Establish hpairs_prefixL25–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt pairwise coprime prefix drop last.
- L25
have hpairs_prefix : CRTPairwiseCoprimePrefix(b,c,l)Definitions: CRTPairwiseCoprimePrefix - L26
specialize crt_pairwise_coprime_prefix_drop_last b - L27
specialize crt_pairwise_coprime_prefix_drop_last c - L28
specialize crt_pairwise_coprime_prefix_drop_last l - L29
apply crt_pairwise_coprime_prefix_drop_last - L30
exact hpairs
09Establish hpreviousL31–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L31
have hprevious : ∃ x. CRTPrefixSolution(r,s,b,c,l,x)Definitions: CRTPrefixSolution - L32
apply IH - L33
exact hpositive_prefix - L34
exact hpairs_prefix
10Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
cases hprevious
11Use earlier factsL36–38
12Separate the logical casesL39–40
13Establish hmodulusL41–45
Establish this local claim before using it. It is not an additional assumption.
- L41
have hmodulus : exists m. (((exists ff_h_gcrt_fold_last_modulus. ff_h_gcrt_fold_last_modulus + S (m) = S ((S (l)) * c)) /\ exists ff_q_gcrt_fold_last_modulus. b = ff_q_gcrt_fold_last_modulus * S ((S (l)) * c) + (m))) - L42
specialize beta_at_exists b - L43
specialize beta_at_exists c - L44
specialize beta_at_exists l - L45
exact beta_at_exists
14Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hmodulus
15Establish hresidueL47–51
Establish this local claim before using it. It is not an additional assumption.
- L47
have hresidue : exists a. (((exists ff_h_gcrt_fold_last_residue. ff_h_gcrt_fold_last_residue + S (a) = S ((S (l)) * s)) /\ exists ff_q_gcrt_fold_last_residue. r = ff_q_gcrt_fold_last_residue * S ((S (l)) * s) + (a))) - L48
specialize beta_at_exists r - L49
specialize beta_at_exists s - L50
specialize beta_at_exists l - L51
exact beta_at_exists
16Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hresidue
17Establish hproduct_nonzeroL53–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive moduli prefix product nonzero.
- L53
have hproduct_nonzero : ~(x1 = 0) - L54
specialize crt_positive_moduli_prefix_product_nonzero b - L55
specialize crt_positive_moduli_prefix_product_nonzero c - L56
specialize crt_positive_moduli_prefix_product_nonzero l - L57
specialize crt_positive_moduli_prefix_product_nonzero x1 - L58
intro hzero - L59
apply crt_positive_moduli_prefix_product_nonzero - L60
exact hpositive_prefix - L61
exact beta_product_exists_unique_witness_left - L62
exact hzero
18Establish hlast_nonzeroL63–72
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive moduli prefix last nonzero.
- L63
have hlast_nonzero : ~(x2 = 0) - L64
specialize crt_positive_moduli_prefix_last_nonzero b - L65
specialize crt_positive_moduli_prefix_last_nonzero c - L66
specialize crt_positive_moduli_prefix_last_nonzero l - L67
specialize crt_positive_moduli_prefix_last_nonzero x2 - L68
intro hzero - L69
apply crt_positive_moduli_prefix_last_nonzero - L70
exact hpositive - L71
exact hmodulus_witness - L72
exact hzero
19Establish hcoprimeL73–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt pairwise coprime prefix product coprime last.
- L73
have hcoprime : forall frp_divisor_gcrt_fold_local_coprime. (exists frp_left_factor_gcrt_fold_local_coprime. x1 = frp_divisor_gcrt_fold_local_coprime * frp_left_factor_gcrt_fold_local_coprime) -> (exists frp_right_factor_gcrt_fold_local_coprime. x2 = frp_divisor_gcrt_fold_local_coprime * frp_right_factor_gcrt_fold_local_coprime) -> frp_divisor_gcrt_fold_local_coprime = 1 - L74
specialize crt_pairwise_coprime_prefix_product_coprime_last b - L75
specialize crt_pairwise_coprime_prefix_product_coprime_last c - L76
specialize crt_pairwise_coprime_prefix_product_coprime_last l - L77
specialize crt_pairwise_coprime_prefix_product_coprime_last x1 - L78
specialize crt_pairwise_coprime_prefix_product_coprime_last x2 - L79
apply crt_pairwise_coprime_prefix_product_coprime_last - L80
exact hpairs - L81
exact beta_product_exists_unique_witness_left - L82
exact hmodulus_witness
20Establish hfoldL83–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary crt fold step.
- L83
have hfold : exists z. ((forall m a. (exists q. x1 = m * q) -> (exists u v. x + m * u = a + m * v) -> exists u v. z + m * u = a + m * v) /\ exists u v. z + x2 * u = x3 + x2 * v) - L84
specialize binary_crt_fold_step x1 - L85
specialize binary_crt_fold_step x2 - L86
specialize binary_crt_fold_step x - L87
specialize binary_crt_fold_step x3 - L88
apply binary_crt_fold_step - L89
exact hproduct_nonzero - L90
exact hlast_nonzero - L91
exact hcoprime
21Separate the logical casesL92–93
22Establish htransportedL94–103
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfold witness left.
23Use earlier factsL104–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
specialize beta_factor_divides_product b - L105
specialize beta_factor_divides_product c - L106
specialize beta_factor_divides_product l - L107
specialize beta_factor_divides_product x1 - L108
specialize beta_factor_divides_product i - L109
specialize beta_factor_divides_product m - L110
apply beta_factor_divides_product - L111
exact hi - L112
exact hm - L113
exact beta_product_exists_unique_witness_left
24Use earlier factsL114–120
25Construct an explicit witnessL121–121
Supply the displayed value, then prove that it has the required property.
- L121
exists x4
26Use earlier factsL122–131
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L122
specialize crt_prefix_solution_successor_intro r - L123
specialize crt_prefix_solution_successor_intro s - L124
specialize crt_prefix_solution_successor_intro b - L125
specialize crt_prefix_solution_successor_intro c - L126
specialize crt_prefix_solution_successor_intro l - L127
specialize crt_prefix_solution_successor_intro x4 - L128
specialize crt_prefix_solution_successor_intro x3 - L129
specialize crt_prefix_solution_successor_intro x2 - L130
apply crt_prefix_solution_successor_intro - L131
exact htransported
Original exact command ledger · 134 lines
- 0001
intro r - 0002
intro s - 0003
intro b - 0004
intro c - 0005
induction l - 0006
intro hpositive - 0007
intro hpairs - 0008
exists 0 - 0009
specialize crt_prefix_solution_empty r - 0010
specialize crt_prefix_solution_empty s - 0011
specialize crt_prefix_solution_empty b - 0012
specialize crt_prefix_solution_empty c - 0013
specialize crt_prefix_solution_empty 0 - 0014
specialize crt_prefix_solution_empty 0 - 0015
apply crt_prefix_solution_empty - 0016
refl - 0017
intro hpositive - 0018
intro hpairs - 0019
have hpositive_prefix : forall gcrt_positive_index_fold_positive_prefix gcrt_positive_value_fold_positive_prefix. (exists ff_lt_gcrt_fold_positive_prefix_bound. ff_lt_gcrt_fold_positive_prefix_bound + S gcrt_positive_index_fold_positive_prefix = l) -> (((exists ff_h_gcrt_fold_positive_prefix_entry. ff_h_gcrt_fold_positive_prefix_entry + S (gcrt_positive_value_fold_positive_prefix) = S ((S (gcrt_positive_index_fold_positive_prefix)) * c)) /\ exists ff_q_gcrt_fold_positive_prefix_entry. b = ff_q_gcrt_fold_positive_prefix_entry * S ((S (gcrt_positive_index_fold_positive_prefix)) * c) + (gcrt_positive_value_fold_positive_prefix))) -> ~(gcrt_positive_value_fold_positive_prefix = 0) - 0020
specialize crt_positive_moduli_prefix_drop_last b - 0021
specialize crt_positive_moduli_prefix_drop_last c - 0022
specialize crt_positive_moduli_prefix_drop_last l - 0023
apply crt_positive_moduli_prefix_drop_last - 0024
exact hpositive - 0025
have hpairs_prefix : forall bpr_left_index_gcrt_fold_pairwise_prefix bpr_right_index_gcrt_fold_pairwise_prefix bpr_left_value_gcrt_fold_pairwise_prefix bpr_right_value_gcrt_fold_pairwise_prefix. (exists bpr_gap_gcrt_fold_pairwise_prefix_left_bound. bpr_gap_gcrt_fold_pairwise_prefix_left_bound + S (bpr_left_index_gcrt_fold_pairwise_prefix) = l) -> (exists bpr_gap_gcrt_fold_pairwise_prefix_right_bound. bpr_gap_gcrt_fold_pairwise_prefix_right_bound + S (bpr_right_index_gcrt_fold_pairwise_prefix) = l) -> (((exists bpr_height_gcrt_fold_pairwise_prefix_left_at. bpr_height_gcrt_fold_pairwise_prefix_left_at + S (bpr_left_value_gcrt_fold_pairwise_prefix) = S ((S (bpr_left_index_gcrt_fold_pairwise_prefix)) * c)) /\ exists bpr_quotient_gcrt_fold_pairwise_prefix_left_at. b = bpr_quotient_gcrt_fold_pairwise_prefix_left_at * S ((S (bpr_left_index_gcrt_fold_pairwise_prefix)) * c) + (bpr_left_value_gcrt_fold_pairwise_prefix))) -> (((exists bpr_height_gcrt_fold_pairwise_prefix_right_at. bpr_height_gcrt_fold_pairwise_prefix_right_at + S (bpr_right_value_gcrt_fold_pairwise_prefix) = S ((S (bpr_right_index_gcrt_fold_pairwise_prefix)) * c)) /\ exists bpr_quotient_gcrt_fold_pairwise_prefix_right_at. b = bpr_quotient_gcrt_fold_pairwise_prefix_right_at * S ((S (bpr_right_index_gcrt_fold_pairwise_prefix)) * c) + (bpr_right_value_gcrt_fold_pairwise_prefix))) -> ~(bpr_left_index_gcrt_fold_pairwise_prefix = bpr_right_index_gcrt_fold_pairwise_prefix) -> (forall bpr_coprime_divisor_gcrt_fold_pairwise_prefix_coprime. (exists bpr_coprime_left_factor_gcrt_fold_pairwise_prefix_coprime. bpr_left_value_gcrt_fold_pairwise_prefix = bpr_coprime_divisor_gcrt_fold_pairwise_prefix_coprime * bpr_coprime_left_factor_gcrt_fold_pairwise_prefix_coprime) -> (exists bpr_coprime_right_factor_gcrt_fold_pairwise_prefix_coprime. bpr_right_value_gcrt_fold_pairwise_prefix = bpr_coprime_divisor_gcrt_fold_pairwise_prefix_coprime * bpr_coprime_right_factor_gcrt_fold_pairwise_prefix_coprime) -> bpr_coprime_divisor_gcrt_fold_pairwise_prefix_coprime = 1) - 0026
specialize crt_pairwise_coprime_prefix_drop_last b - 0027
specialize crt_pairwise_coprime_prefix_drop_last c - 0028
specialize crt_pairwise_coprime_prefix_drop_last l - 0029
apply crt_pairwise_coprime_prefix_drop_last - 0030
exact hpairs - 0031
have hprevious : exists x. (forall gcrt_solution_index_fold_previous gcrt_solution_residue_fold_previous gcrt_solution_modulus_fold_previous. (exists ff_lt_gcrt_fold_previous_bound. ff_lt_gcrt_fold_previous_bound + S gcrt_solution_index_fold_previous = l) -> (((exists ff_h_gcrt_fold_previous_residue. ff_h_gcrt_fold_previous_residue + S (gcrt_solution_residue_fold_previous) = S ((S (gcrt_solution_index_fold_previous)) * s)) /\ exists ff_q_gcrt_fold_previous_residue. r = ff_q_gcrt_fold_previous_residue * S ((S (gcrt_solution_index_fold_previous)) * s) + (gcrt_solution_residue_fold_previous))) -> (((exists ff_h_gcrt_fold_previous_modulus. ff_h_gcrt_fold_previous_modulus + S (gcrt_solution_modulus_fold_previous) = S ((S (gcrt_solution_index_fold_previous)) * c)) /\ exists ff_q_gcrt_fold_previous_modulus. b = ff_q_gcrt_fold_previous_modulus * S ((S (gcrt_solution_index_fold_previous)) * c) + (gcrt_solution_modulus_fold_previous))) -> (exists hgcrt_mod_left_gcrt_fold_previous_congruence hgcrt_mod_right_gcrt_fold_previous_congruence. x + gcrt_solution_modulus_fold_previous * hgcrt_mod_left_gcrt_fold_previous_congruence = gcrt_solution_residue_fold_previous + gcrt_solution_modulus_fold_previous * hgcrt_mod_right_gcrt_fold_previous_congruence)) - 0032
apply IH - 0033
exact hpositive_prefix - 0034
exact hpairs_prefix - 0035
cases hprevious - 0036
specialize beta_product_exists_unique b - 0037
specialize beta_product_exists_unique c - 0038
specialize beta_product_exists_unique l - 0039
cases beta_product_exists_unique - 0040
cases beta_product_exists_unique_witness - 0041
have hmodulus : exists m. (((exists ff_h_gcrt_fold_last_modulus. ff_h_gcrt_fold_last_modulus + S (m) = S ((S (l)) * c)) /\ exists ff_q_gcrt_fold_last_modulus. b = ff_q_gcrt_fold_last_modulus * S ((S (l)) * c) + (m))) - 0042
specialize beta_at_exists b - 0043
specialize beta_at_exists c - 0044
specialize beta_at_exists l - 0045
exact beta_at_exists - 0046
cases hmodulus - 0047
have hresidue : exists a. (((exists ff_h_gcrt_fold_last_residue. ff_h_gcrt_fold_last_residue + S (a) = S ((S (l)) * s)) /\ exists ff_q_gcrt_fold_last_residue. r = ff_q_gcrt_fold_last_residue * S ((S (l)) * s) + (a))) - 0048
specialize beta_at_exists r - 0049
specialize beta_at_exists s - 0050
specialize beta_at_exists l - 0051
exact beta_at_exists - 0052
cases hresidue - 0053
have hproduct_nonzero : ~(x1 = 0) - 0054
specialize crt_positive_moduli_prefix_product_nonzero b - 0055
specialize crt_positive_moduli_prefix_product_nonzero c - 0056
specialize crt_positive_moduli_prefix_product_nonzero l - 0057
specialize crt_positive_moduli_prefix_product_nonzero x1 - 0058
intro hzero - 0059
apply crt_positive_moduli_prefix_product_nonzero - 0060
exact hpositive_prefix - 0061
exact beta_product_exists_unique_witness_left - 0062
exact hzero - 0063
have hlast_nonzero : ~(x2 = 0) - 0064
specialize crt_positive_moduli_prefix_last_nonzero b - 0065
specialize crt_positive_moduli_prefix_last_nonzero c - 0066
specialize crt_positive_moduli_prefix_last_nonzero l - 0067
specialize crt_positive_moduli_prefix_last_nonzero x2 - 0068
intro hzero - 0069
apply crt_positive_moduli_prefix_last_nonzero - 0070
exact hpositive - 0071
exact hmodulus_witness - 0072
exact hzero - 0073
have hcoprime : forall frp_divisor_gcrt_fold_local_coprime. (exists frp_left_factor_gcrt_fold_local_coprime. x1 = frp_divisor_gcrt_fold_local_coprime * frp_left_factor_gcrt_fold_local_coprime) -> (exists frp_right_factor_gcrt_fold_local_coprime. x2 = frp_divisor_gcrt_fold_local_coprime * frp_right_factor_gcrt_fold_local_coprime) -> frp_divisor_gcrt_fold_local_coprime = 1 - 0074
specialize crt_pairwise_coprime_prefix_product_coprime_last b - 0075
specialize crt_pairwise_coprime_prefix_product_coprime_last c - 0076
specialize crt_pairwise_coprime_prefix_product_coprime_last l - 0077
specialize crt_pairwise_coprime_prefix_product_coprime_last x1 - 0078
specialize crt_pairwise_coprime_prefix_product_coprime_last x2 - 0079
apply crt_pairwise_coprime_prefix_product_coprime_last - 0080
exact hpairs - 0081
exact beta_product_exists_unique_witness_left - 0082
exact hmodulus_witness - 0083
have hfold : exists z. ((forall m a. (exists q. x1 = m * q) -> (exists u v. x + m * u = a + m * v) -> exists u v. z + m * u = a + m * v) /\ exists u v. z + x2 * u = x3 + x2 * v) - 0084
specialize binary_crt_fold_step x1 - 0085
specialize binary_crt_fold_step x2 - 0086
specialize binary_crt_fold_step x - 0087
specialize binary_crt_fold_step x3 - 0088
apply binary_crt_fold_step - 0089
exact hproduct_nonzero - 0090
exact hlast_nonzero - 0091
exact hcoprime - 0092
cases hfold - 0093
cases hfold_witness - 0094
have htransported : forall gcrt_solution_index_fold_transported gcrt_solution_residue_fold_transported gcrt_solution_modulus_fold_transported. (exists ff_lt_gcrt_fold_transported_bound. ff_lt_gcrt_fold_transported_bound + S gcrt_solution_index_fold_transported = l) -> (((exists ff_h_gcrt_fold_transported_residue. ff_h_gcrt_fold_transported_residue + S (gcrt_solution_residue_fold_transported) = S ((S (gcrt_solution_index_fold_transported)) * s)) /\ exists ff_q_gcrt_fold_transported_residue. r = ff_q_gcrt_fold_transported_residue * S ((S (gcrt_solution_index_fold_transported)) * s) + (gcrt_solution_residue_fold_transported))) -> (((exists ff_h_gcrt_fold_transported_modulus. ff_h_gcrt_fold_transported_modulus + S (gcrt_solution_modulus_fold_transported) = S ((S (gcrt_solution_index_fold_transported)) * c)) /\ exists ff_q_gcrt_fold_transported_modulus. b = ff_q_gcrt_fold_transported_modulus * S ((S (gcrt_solution_index_fold_transported)) * c) + (gcrt_solution_modulus_fold_transported))) -> (exists hgcrt_mod_left_gcrt_fold_transported_congruence hgcrt_mod_right_gcrt_fold_transported_congruence. x4 + gcrt_solution_modulus_fold_transported * hgcrt_mod_left_gcrt_fold_transported_congruence = gcrt_solution_residue_fold_transported + gcrt_solution_modulus_fold_transported * hgcrt_mod_right_gcrt_fold_transported_congruence) - 0095
intro i - 0096
intro a - 0097
intro m - 0098
intro hi - 0099
intro ha - 0100
intro hm - 0101
specialize hfold_witness_left m - 0102
specialize hfold_witness_left a - 0103
apply hfold_witness_left - 0104
specialize beta_factor_divides_product b - 0105
specialize beta_factor_divides_product c - 0106
specialize beta_factor_divides_product l - 0107
specialize beta_factor_divides_product x1 - 0108
specialize beta_factor_divides_product i - 0109
specialize beta_factor_divides_product m - 0110
apply beta_factor_divides_product - 0111
exact hi - 0112
exact hm - 0113
exact beta_product_exists_unique_witness_left - 0114
specialize hprevious_witness i - 0115
specialize hprevious_witness a - 0116
specialize hprevious_witness m - 0117
apply hprevious_witness - 0118
exact hi - 0119
exact ha - 0120
exact hm - 0121
exists x4 - 0122
specialize crt_prefix_solution_successor_intro r - 0123
specialize crt_prefix_solution_successor_intro s - 0124
specialize crt_prefix_solution_successor_intro b - 0125
specialize crt_prefix_solution_successor_intro c - 0126
specialize crt_prefix_solution_successor_intro l - 0127
specialize crt_prefix_solution_successor_intro x4 - 0128
specialize crt_prefix_solution_successor_intro x3 - 0129
specialize crt_prefix_solution_successor_intro x2 - 0130
apply crt_prefix_solution_successor_intro - 0131
exact htransported - 0132
exact hresidue_witness - 0133
exact hmodulus_witness - 0134
exact hfold_witness_right
Separate complete second-wave branches: Full G011 proof · Alpha v27.