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 l p b c z t n k P. (exists ff_u_lmd_fold_product ff_v_lmd_fold_product. ((((exists ff_h_lmd_fold_product_start. ff_h_lmd_fold_product_start + S (1) = S ((S (0)) * ff_v_lmd_fold_product)) /\ exists ff_q_lmd_fold_product_start. ff_u_lmd_fold_product = ff_q_lmd_fold_product_start * S ((S (0)) * ff_v_lmd_fold_product) + (1))) /\ ((((exists ff_h_lmd_fold_product_terminal. ff_h_lmd_fold_product_terminal + S (P) = S ((S (l)) * ff_v_lmd_fold_product)) /\ exists ff_q_lmd_fold_product_terminal. ff_u_lmd_fold_product = ff_q_lmd_fold_product_terminal * S ((S (l)) * ff_v_lmd_fold_product) + (P))) /\ forall ff_i_lmd_fold_product. (exists ff_lt_lmd_fold_product_bound. ff_lt_lmd_fold_product_bound + S ff_i_lmd_fold_product = l) -> exists ff_p_lmd_fold_product ff_r_lmd_fold_product ff_s_lmd_fold_product. ((((exists ff_h_lmd_fold_product_factor. ff_h_lmd_fold_product_factor + S (ff_p_lmd_fold_product) = S ((S (ff_i_lmd_fold_product)) * c)) /\ exists ff_q_lmd_fold_product_factor. b = ff_q_lmd_fold_product_factor * S ((S (ff_i_lmd_fold_product)) * c) + (ff_p_lmd_fold_product))) /\ ((((exists ff_h_lmd_fold_product_partial. ff_h_lmd_fold_product_partial + S (ff_r_lmd_fold_product) = S ((S (ff_i_lmd_fold_product)) * ff_v_lmd_fold_product)) /\ exists ff_q_lmd_fold_product_partial. ff_u_lmd_fold_product = ff_q_lmd_fold_product_partial * S ((S (ff_i_lmd_fold_product)) * ff_v_lmd_fold_product) + (ff_r_lmd_fold_product))) /\ ((((exists ff_h_lmd_fold_product_successor. ff_h_lmd_fold_product_successor + S (ff_s_lmd_fold_product) = S ((S (S ff_i_lmd_fold_product)) * ff_v_lmd_fold_product)) /\ exists ff_q_lmd_fold_product_successor. ff_u_lmd_fold_product = ff_q_lmd_fold_product_successor * S ((S (S ff_i_lmd_fold_product)) * ff_v_lmd_fold_product) + (ff_s_lmd_fold_product))) /\ ff_s_lmd_fold_product = ff_r_lmd_fold_product * ff_p_lmd_fold_product)))))) -> (((exists ff_h_lmd_fold_start. ff_h_lmd_fold_start + S (n) = S ((S (0)) * t)) /\ exists ff_q_lmd_fold_start. z = ff_q_lmd_fold_start * S ((S (0)) * t) + (n))) -> (((exists ff_h_lmd_fold_terminal. ff_h_lmd_fold_terminal + S (k) = S ((S (l)) * t)) /\ exists ff_q_lmd_fold_terminal. z = ff_q_lmd_fold_terminal * S ((S (l)) * t) + (k))) -> (forall lmd_step_index_fold_trace lmd_step_source_fold_trace lmd_step_successor_fold_trace lmd_step_factor_fold_trace. (exists lmd_gap_fold_trace_bound. lmd_gap_fold_trace_bound + S (lmd_step_index_fold_trace) = (l)) -> (((exists ff_h_lmd_fold_trace_source. ff_h_lmd_fold_trace_source + S (lmd_step_source_fold_trace) = S ((S (lmd_step_index_fold_trace)) * t)) /\ exists ff_q_lmd_fold_trace_source. z = ff_q_lmd_fold_trace_source * S ((S (lmd_step_index_fold_trace)) * t) + (lmd_step_source_fold_trace))) -> (((exists ff_h_lmd_fold_trace_successor. ff_h_lmd_fold_trace_successor + S (lmd_step_successor_fold_trace) = S ((S (S lmd_step_index_fold_trace)) * t)) /\ exists ff_q_lmd_fold_trace_successor. z = ff_q_lmd_fold_trace_successor * S ((S (S lmd_step_index_fold_trace)) * t) + (lmd_step_successor_fold_trace))) -> (((exists ff_h_lmd_fold_trace_factor. ff_h_lmd_fold_trace_factor + S (lmd_step_factor_fold_trace) = S ((S (lmd_step_index_fold_trace)) * c)) /\ exists ff_q_lmd_fold_trace_factor. b = ff_q_lmd_fold_trace_factor * S ((S (lmd_step_index_fold_trace)) * c) + (lmd_step_factor_fold_trace))) -> (exists lmd_mod_left_fold_trace_congruence lmd_mod_right_fold_trace_congruence. (lmd_step_source_fold_trace) + (p) * lmd_mod_left_fold_trace_congruence = (lmd_step_successor_fold_trace * lmd_step_factor_fold_trace) + (p) * lmd_mod_right_fold_trace_congruence)) -> (exists lmd_mod_left_fold_result lmd_mod_right_fold_result. (n) + (p) * lmd_mod_left_fold_result = (k * P) + (p) * lmd_mod_right_fold_result)Constructive proof overview
Generated structural guide
Any beta-coded chain of pointwise backward modular recurrences folds into the exact terminal value times the entire beta-coded finite product.
The unchanged tactic script uses 13 declared prerequisites and contains 143 exact native proof lines.
dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged
Historical empty-context replay experiment only; that experiment persisted no certificate and granted no release authority. Current checked use follows separately sealed, independently verified proof bundles; there is no Stable promotion.
Proof neighborhood
Direct dependencies
beta_product_zero Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized mul_one Stable theorem; checked-use authorized mod_eq_refl Stable theorem; checked-use authorized beta_product_succ_decompose Stable theorem; checked-use authorized beta_at_exists Stable theorem; checked-use authorized lt_of_lt_of_le Stable theorem; checked-use authorized le_succ_self Stable theorem; checked-use authorized zero_add Stable theorem; checked-use authorized mod_eq_mul_right Stable theorem; checked-use authorized mod_eq_trans Stable theorem; checked-use authorized mul_assoc Stable theorem; checked-use authorized mul_comm Stable 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.
01Fix variables and assumptionsL1–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro l
02Induction on lL2–11
03Fix variables and assumptionsL12–14
04Establish honeL15–20
05Establish hequalL21–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
06Establish hrightL30–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul one.
07Fix variables and assumptionsL40–49
08Fix variables and assumptionsL50–51
09Establish hdecompositionL52–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
10Separate the logical casesL59–62
11Establish hmiddleL63–67
Establish this local claim before using it. It is not an additional assumption.
- L63
have hmiddle : exists q. (((exists ff_h_lmd_fold_middle. ff_h_lmd_fold_middle + S (q) = S ((S (l)) * t)) /\ exists ff_q_lmd_fold_middle. z = ff_q_lmd_fold_middle * S ((S (l)) * t) + (q))) - L64
specialize beta_at_exists z - L65
specialize beta_at_exists t - L66
specialize beta_at_exists l - L67
exact beta_at_exists
12Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
cases hmiddle
13Establish hrestrictedL69–78
Establish this local claim before using it. It is not an additional assumption.
- L69
have hrestricted : ∀ lmd_step_index_fold_restricted. ∀ lmd_step_source_fold_restricted. ∀ lmd_step_successor_fold_restricted. ∀ lmd_step_factor_fold_restricted. Lt(lmd_step_index_fold_restricted,l) → BetaAt(z,t,lmd_step_index_fold_restricted,lmd_step_source_fold_restricted) → BetaAt(z,t,S lmd_step_index_fold_restricted,lmd_step_successor_fold_restricted) → BetaAt(b,c,lmd_step_index_fold_restricted,lmd_step_factor_fold_restricted) → ModEq(p,lmd_step_source_fold_restricted,lmd_step_successor_fold_restricted · lmd_step_factor_fold_restricted)Definitions: LtModEqBetaAt - L70
intro i - L71
intro A - L72
intro K - L73
intro D - L74
intro hi - L75
intro hA - L76
intro hK - L77
intro hD - L78
specialize htrace i
14Use earlier factsL79–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Use earlier factsL89–92
16Establish hbeforeL93–102
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L93
have hbefore : (exists lmd_mod_left_fold_before lmd_mod_right_fold_before. (n) + (p) * lmd_mod_left_fold_before = (x2 * x1) + (p) * lmd_mod_right_fold_before) - L94
specialize IH p - L95
specialize IH b - L96
specialize IH c - L97
specialize IH z - L98
specialize IH t - L99
specialize IH n - L100
specialize IH x2 - L101
specialize IH x1 - L102
apply IH
17Use earlier factsL103–106
18Establish hlastL107–112
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply htrace.
19Construct an explicit witnessL113–113
Supply the displayed value, then prove that it has the required property.
- L113
exists 0
20Use earlier factsL114–117
21Establish hscaledL118–124
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul right.
- L118
have hscaled : (exists lmd_mod_left_fold_scaled lmd_mod_right_fold_scaled. (x2 * x1) + (p) * lmd_mod_left_fold_scaled = ((k * x) * x1) + (p) * lmd_mod_right_fold_scaled) - L119
specialize mod_eq_mul_right p - L120
specialize mod_eq_mul_right x2 - L121
specialize mod_eq_mul_right (k * x) - L122
specialize mod_eq_mul_right x1 - L123
apply mod_eq_mul_right - L124
exact hlast
22Establish hcombinedL125–132
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L125
have hcombined : (exists lmd_mod_left_fold_combined lmd_mod_right_fold_combined. (n) + (p) * lmd_mod_left_fold_combined = ((k * x) * x1) + (p) * lmd_mod_right_fold_combined) - L126
specialize mod_eq_trans p - L127
specialize mod_eq_trans n - L128
specialize mod_eq_trans (x2 * x1) - L129
specialize mod_eq_trans ((k * x) * x1) - L130
apply mod_eq_trans - L131
exact hbefore - L132
exact hscaled
23Establish htargetL133–142
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul assoc.
24Use earlier factsL143–143
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L143
exact hcombined
Original exact command ledger · 143 lines
- 0001
intro l - 0002
induction l - 0003
intro p - 0004
intro b - 0005
intro c - 0006
intro z - 0007
intro t - 0008
intro n - 0009
intro k - 0010
intro P - 0011
intro hproduct - 0012
intro hstart - 0013
intro hterminal - 0014
intro htrace - 0015
have hone : P = 1 - 0016
specialize beta_product_zero b - 0017
specialize beta_product_zero c - 0018
specialize beta_product_zero P - 0019
apply beta_product_zero - 0020
exact hproduct - 0021
have hequal : n = k - 0022
specialize beta_at_unique z - 0023
specialize beta_at_unique t - 0024
specialize beta_at_unique 0 - 0025
specialize beta_at_unique n - 0026
specialize beta_at_unique k - 0027
apply beta_at_unique - 0028
exact hstart - 0029
exact hterminal - 0030
have hright : k * P = n - 0031
rewrite hone - 0032
trans k - 0033
apply mul_one - 0034
symm - 0035
exact hequal - 0036
rewrite hright - 0037
specialize mod_eq_refl p - 0038
specialize mod_eq_refl n - 0039
exact mod_eq_refl - 0040
intro p - 0041
intro b - 0042
intro c - 0043
intro z - 0044
intro t - 0045
intro n - 0046
intro k - 0047
intro P - 0048
intro hproduct - 0049
intro hstart - 0050
intro hterminal - 0051
intro htrace - 0052
have hdecomposition : exists D R. ((((exists ff_h_lmd_fold_last_factor. ff_h_lmd_fold_last_factor + S (D) = S ((S (l)) * c)) /\ exists ff_q_lmd_fold_last_factor. b = ff_q_lmd_fold_last_factor * S ((S (l)) * c) + (D))) /\ ((exists ff_u_lmd_fold_previous ff_v_lmd_fold_previous. ((((exists ff_h_lmd_fold_previous_start. ff_h_lmd_fold_previous_start + S (1) = S ((S (0)) * ff_v_lmd_fold_previous)) /\ exists ff_q_lmd_fold_previous_start. ff_u_lmd_fold_previous = ff_q_lmd_fold_previous_start * S ((S (0)) * ff_v_lmd_fold_previous) + (1))) /\ ((((exists ff_h_lmd_fold_previous_terminal. ff_h_lmd_fold_previous_terminal + S (R) = S ((S (l)) * ff_v_lmd_fold_previous)) /\ exists ff_q_lmd_fold_previous_terminal. ff_u_lmd_fold_previous = ff_q_lmd_fold_previous_terminal * S ((S (l)) * ff_v_lmd_fold_previous) + (R))) /\ forall ff_i_lmd_fold_previous. (exists ff_lt_lmd_fold_previous_bound. ff_lt_lmd_fold_previous_bound + S ff_i_lmd_fold_previous = l) -> exists ff_p_lmd_fold_previous ff_r_lmd_fold_previous ff_s_lmd_fold_previous. ((((exists ff_h_lmd_fold_previous_factor. ff_h_lmd_fold_previous_factor + S (ff_p_lmd_fold_previous) = S ((S (ff_i_lmd_fold_previous)) * c)) /\ exists ff_q_lmd_fold_previous_factor. b = ff_q_lmd_fold_previous_factor * S ((S (ff_i_lmd_fold_previous)) * c) + (ff_p_lmd_fold_previous))) /\ ((((exists ff_h_lmd_fold_previous_partial. ff_h_lmd_fold_previous_partial + S (ff_r_lmd_fold_previous) = S ((S (ff_i_lmd_fold_previous)) * ff_v_lmd_fold_previous)) /\ exists ff_q_lmd_fold_previous_partial. ff_u_lmd_fold_previous = ff_q_lmd_fold_previous_partial * S ((S (ff_i_lmd_fold_previous)) * ff_v_lmd_fold_previous) + (ff_r_lmd_fold_previous))) /\ ((((exists ff_h_lmd_fold_previous_successor. ff_h_lmd_fold_previous_successor + S (ff_s_lmd_fold_previous) = S ((S (S ff_i_lmd_fold_previous)) * ff_v_lmd_fold_previous)) /\ exists ff_q_lmd_fold_previous_successor. ff_u_lmd_fold_previous = ff_q_lmd_fold_previous_successor * S ((S (S ff_i_lmd_fold_previous)) * ff_v_lmd_fold_previous) + (ff_s_lmd_fold_previous))) /\ ff_s_lmd_fold_previous = ff_r_lmd_fold_previous * ff_p_lmd_fold_previous)))))) /\ P = R * D)) - 0053
specialize beta_product_succ_decompose b - 0054
specialize beta_product_succ_decompose c - 0055
specialize beta_product_succ_decompose l - 0056
specialize beta_product_succ_decompose P - 0057
apply beta_product_succ_decompose - 0058
exact hproduct - 0059
cases hdecomposition - 0060
cases hdecomposition_witness - 0061
cases hdecomposition_witness_witness - 0062
cases hdecomposition_witness_witness_right - 0063
have hmiddle : exists q. (((exists ff_h_lmd_fold_middle. ff_h_lmd_fold_middle + S (q) = S ((S (l)) * t)) /\ exists ff_q_lmd_fold_middle. z = ff_q_lmd_fold_middle * S ((S (l)) * t) + (q))) - 0064
specialize beta_at_exists z - 0065
specialize beta_at_exists t - 0066
specialize beta_at_exists l - 0067
exact beta_at_exists - 0068
cases hmiddle - 0069
have hrestricted : forall lmd_step_index_fold_restricted lmd_step_source_fold_restricted lmd_step_successor_fold_restricted lmd_step_factor_fold_restricted. (exists lmd_gap_fold_restricted_bound. lmd_gap_fold_restricted_bound + S (lmd_step_index_fold_restricted) = (l)) -> (((exists ff_h_lmd_fold_restricted_source. ff_h_lmd_fold_restricted_source + S (lmd_step_source_fold_restricted) = S ((S (lmd_step_index_fold_restricted)) * t)) /\ exists ff_q_lmd_fold_restricted_source. z = ff_q_lmd_fold_restricted_source * S ((S (lmd_step_index_fold_restricted)) * t) + (lmd_step_source_fold_restricted))) -> (((exists ff_h_lmd_fold_restricted_successor. ff_h_lmd_fold_restricted_successor + S (lmd_step_successor_fold_restricted) = S ((S (S lmd_step_index_fold_restricted)) * t)) /\ exists ff_q_lmd_fold_restricted_successor. z = ff_q_lmd_fold_restricted_successor * S ((S (S lmd_step_index_fold_restricted)) * t) + (lmd_step_successor_fold_restricted))) -> (((exists ff_h_lmd_fold_restricted_factor. ff_h_lmd_fold_restricted_factor + S (lmd_step_factor_fold_restricted) = S ((S (lmd_step_index_fold_restricted)) * c)) /\ exists ff_q_lmd_fold_restricted_factor. b = ff_q_lmd_fold_restricted_factor * S ((S (lmd_step_index_fold_restricted)) * c) + (lmd_step_factor_fold_restricted))) -> (exists lmd_mod_left_fold_restricted_congruence lmd_mod_right_fold_restricted_congruence. (lmd_step_source_fold_restricted) + (p) * lmd_mod_left_fold_restricted_congruence = (lmd_step_successor_fold_restricted * lmd_step_factor_fold_restricted) + (p) * lmd_mod_right_fold_restricted_congruence) - 0070
intro i - 0071
intro A - 0072
intro K - 0073
intro D - 0074
intro hi - 0075
intro hA - 0076
intro hK - 0077
intro hD - 0078
specialize htrace i - 0079
specialize htrace A - 0080
specialize htrace K - 0081
specialize htrace D - 0082
apply htrace - 0083
specialize lt_of_lt_of_le i - 0084
specialize lt_of_lt_of_le l - 0085
specialize lt_of_lt_of_le (S l) - 0086
apply lt_of_lt_of_le - 0087
exact hi - 0088
specialize le_succ_self l - 0089
exact le_succ_self - 0090
exact hA - 0091
exact hK - 0092
exact hD - 0093
have hbefore : (exists lmd_mod_left_fold_before lmd_mod_right_fold_before. (n) + (p) * lmd_mod_left_fold_before = (x2 * x1) + (p) * lmd_mod_right_fold_before) - 0094
specialize IH p - 0095
specialize IH b - 0096
specialize IH c - 0097
specialize IH z - 0098
specialize IH t - 0099
specialize IH n - 0100
specialize IH x2 - 0101
specialize IH x1 - 0102
apply IH - 0103
exact hdecomposition_witness_witness_right_left - 0104
exact hstart - 0105
exact hmiddle_witness - 0106
exact hrestricted - 0107
have hlast : (exists lmd_mod_left_fold_last lmd_mod_right_fold_last. (x2) + (p) * lmd_mod_left_fold_last = (k * x) + (p) * lmd_mod_right_fold_last) - 0108
specialize htrace l - 0109
specialize htrace x2 - 0110
specialize htrace k - 0111
specialize htrace x - 0112
apply htrace - 0113
exists 0 - 0114
apply zero_add - 0115
exact hmiddle_witness - 0116
exact hterminal - 0117
exact hdecomposition_witness_witness_left - 0118
have hscaled : (exists lmd_mod_left_fold_scaled lmd_mod_right_fold_scaled. (x2 * x1) + (p) * lmd_mod_left_fold_scaled = ((k * x) * x1) + (p) * lmd_mod_right_fold_scaled) - 0119
specialize mod_eq_mul_right p - 0120
specialize mod_eq_mul_right x2 - 0121
specialize mod_eq_mul_right (k * x) - 0122
specialize mod_eq_mul_right x1 - 0123
apply mod_eq_mul_right - 0124
exact hlast - 0125
have hcombined : (exists lmd_mod_left_fold_combined lmd_mod_right_fold_combined. (n) + (p) * lmd_mod_left_fold_combined = ((k * x) * x1) + (p) * lmd_mod_right_fold_combined) - 0126
specialize mod_eq_trans p - 0127
specialize mod_eq_trans n - 0128
specialize mod_eq_trans (x2 * x1) - 0129
specialize mod_eq_trans ((k * x) * x1) - 0130
apply mod_eq_trans - 0131
exact hbefore - 0132
exact hscaled - 0133
have htarget : (k * x) * x1 = k * P - 0134
trans k * (x * x1) - 0135
apply mul_assoc - 0136
trans k * (x1 * x) - 0137
congr - 0138
refl - 0139
apply mul_comm - 0140
rewrite hdecomposition_witness_witness_right_right - 0141
refl - 0142
rewrite <- htarget - 0143
exact hcombined