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 PA statement
forall b c d e l n q. (forall i a z. (exists bppl_bound. bppl_bound + S i = l) -> (((exists ff_h_bppl_left. ff_h_bppl_left + S (a) = S ((S (i)) * c)) /\ exists ff_q_bppl_left. b = ff_q_bppl_left * S ((S (i)) * c) + (a))) -> (((exists ff_h_bppl_right. ff_h_bppl_right + S (z) = S ((S (i)) * e)) /\ exists ff_q_bppl_right. d = ff_q_bppl_right * S ((S (i)) * e) + (z))) -> exists bppl_factor_gap. bppl_factor_gap + a = z) -> (exists ff_u_bppl_left_product ff_v_bppl_left_product. ((((exists ff_h_bppl_left_product_start. ff_h_bppl_left_product_start + S (1) = S ((S (0)) * ff_v_bppl_left_product)) /\ exists ff_q_bppl_left_product_start. ff_u_bppl_left_product = ff_q_bppl_left_product_start * S ((S (0)) * ff_v_bppl_left_product) + (1))) /\ ((((exists ff_h_bppl_left_product_terminal. ff_h_bppl_left_product_terminal + S (n) = S ((S (l)) * ff_v_bppl_left_product)) /\ exists ff_q_bppl_left_product_terminal. ff_u_bppl_left_product = ff_q_bppl_left_product_terminal * S ((S (l)) * ff_v_bppl_left_product) + (n))) /\ forall ff_i_bppl_left_product. (exists ff_lt_bppl_left_product_bound. ff_lt_bppl_left_product_bound + S ff_i_bppl_left_product = l) -> exists ff_p_bppl_left_product ff_r_bppl_left_product ff_s_bppl_left_product. ((((exists ff_h_bppl_left_product_factor. ff_h_bppl_left_product_factor + S (ff_p_bppl_left_product) = S ((S (ff_i_bppl_left_product)) * c)) /\ exists ff_q_bppl_left_product_factor. b = ff_q_bppl_left_product_factor * S ((S (ff_i_bppl_left_product)) * c) + (ff_p_bppl_left_product))) /\ ((((exists ff_h_bppl_left_product_partial. ff_h_bppl_left_product_partial + S (ff_r_bppl_left_product) = S ((S (ff_i_bppl_left_product)) * ff_v_bppl_left_product)) /\ exists ff_q_bppl_left_product_partial. ff_u_bppl_left_product = ff_q_bppl_left_product_partial * S ((S (ff_i_bppl_left_product)) * ff_v_bppl_left_product) + (ff_r_bppl_left_product))) /\ ((((exists ff_h_bppl_left_product_successor. ff_h_bppl_left_product_successor + S (ff_s_bppl_left_product) = S ((S (S ff_i_bppl_left_product)) * ff_v_bppl_left_product)) /\ exists ff_q_bppl_left_product_successor. ff_u_bppl_left_product = ff_q_bppl_left_product_successor * S ((S (S ff_i_bppl_left_product)) * ff_v_bppl_left_product) + (ff_s_bppl_left_product))) /\ ff_s_bppl_left_product = ff_r_bppl_left_product * ff_p_bppl_left_product)))))) -> (exists ff_u_bppl_right_product ff_v_bppl_right_product. ((((exists ff_h_bppl_right_product_start. ff_h_bppl_right_product_start + S (1) = S ((S (0)) * ff_v_bppl_right_product)) /\ exists ff_q_bppl_right_product_start. ff_u_bppl_right_product = ff_q_bppl_right_product_start * S ((S (0)) * ff_v_bppl_right_product) + (1))) /\ ((((exists ff_h_bppl_right_product_terminal. ff_h_bppl_right_product_terminal + S (q) = S ((S (l)) * ff_v_bppl_right_product)) /\ exists ff_q_bppl_right_product_terminal. ff_u_bppl_right_product = ff_q_bppl_right_product_terminal * S ((S (l)) * ff_v_bppl_right_product) + (q))) /\ forall ff_i_bppl_right_product. (exists ff_lt_bppl_right_product_bound. ff_lt_bppl_right_product_bound + S ff_i_bppl_right_product = l) -> exists ff_p_bppl_right_product ff_r_bppl_right_product ff_s_bppl_right_product. ((((exists ff_h_bppl_right_product_factor. ff_h_bppl_right_product_factor + S (ff_p_bppl_right_product) = S ((S (ff_i_bppl_right_product)) * e)) /\ exists ff_q_bppl_right_product_factor. d = ff_q_bppl_right_product_factor * S ((S (ff_i_bppl_right_product)) * e) + (ff_p_bppl_right_product))) /\ ((((exists ff_h_bppl_right_product_partial. ff_h_bppl_right_product_partial + S (ff_r_bppl_right_product) = S ((S (ff_i_bppl_right_product)) * ff_v_bppl_right_product)) /\ exists ff_q_bppl_right_product_partial. ff_u_bppl_right_product = ff_q_bppl_right_product_partial * S ((S (ff_i_bppl_right_product)) * ff_v_bppl_right_product) + (ff_r_bppl_right_product))) /\ ((((exists ff_h_bppl_right_product_successor. ff_h_bppl_right_product_successor + S (ff_s_bppl_right_product) = S ((S (S ff_i_bppl_right_product)) * ff_v_bppl_right_product)) /\ exists ff_q_bppl_right_product_successor. ff_u_bppl_right_product = ff_q_bppl_right_product_successor * S ((S (S ff_i_bppl_right_product)) * ff_v_bppl_right_product) + (ff_s_bppl_right_product))) /\ ff_s_bppl_right_product = ff_r_bppl_right_product * ff_p_bppl_right_product)))))) -> exists bppl_result_gap. bppl_result_gap + n = qStructural proof guide
Pointwise bounded decoded prefixes have ordered finite products.
Direct prerequisites: beta_product_zero, beta_product_succ_decompose, le_succ, le_refl, mul_le_mul. The authored body proceeds by structural induction (1), case analysis (8), intermediate claims (8), equality transport (4).
Proof neighborhood
Direct dependencies
BT005I beta_product_zero BT005J beta_product_succ_decompose BT0018 le_succ BT000E le_refl BT00PV mul_le_mulDirect dependents
Formal native tactic body
Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing 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 (5)
01Fix variables and assumptionsL1–4
02Induction on lL5–10
03Establish hn1L11–16
04Establish hq1L17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
05Fix variables and assumptionsL27–31
06Establish hndL32–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
07Separate the logical casesL39–42
08Establish hqdL43–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
09Separate the logical casesL50–53
10Establish hpw_prefixL54–63
Establish this local claim before using it. It is not an additional assumption.
- L54
have hpw_prefix : forall i a z. (exists bppl_prefix_bound. bppl_prefix_bound + S i = l) -> (((exists ff_h_bppl_prefix_left. ff_h_bppl_prefix_left + S (a) = S ((S (i)) * c)) /\ exists ff_q_bppl_prefix_left. b = ff_q_bppl_prefix_left * S ((S (i)) * c) + (a))) -> (((exists ff_h_bppl_prefix_right. ff_h_bppl_prefix_right + S (z) = S ((S (i)) * e)) /\ exists ff_q_bppl_prefix_right. d = ff_q_bppl_prefix_right * S ((S (i)) * e) + (z))) -> exists bppl_prefix_factor_gap. bppl_prefix_factor_gap + a = z - L55
intro i - L56
intro a - L57
intro z - L58
intro hi - L59
intro ha - L60
intro hz - L61
specialize hpw i - L62
specialize hpw a - L63
specialize hpw z
11Use earlier factsL64–70
12Establish hprefixL71–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
13Establish hentryL78–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpw.
14Establish hfoldL87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul.
15Use earlier factsL97–97
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact hfold
Original exact command ledger · 97 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
induction l - 0006
intro n - 0007
intro q - 0008
intro hpw - 0009
intro hn - 0010
intro hq - 0011
have hn1 : n = 1 - 0012
specialize beta_product_zero b - 0013
specialize beta_product_zero c - 0014
specialize beta_product_zero n - 0015
apply beta_product_zero - 0016
exact hn - 0017
have hq1 : q = 1 - 0018
specialize beta_product_zero d - 0019
specialize beta_product_zero e - 0020
specialize beta_product_zero q - 0021
apply beta_product_zero - 0022
exact hq - 0023
rewrite hn1 - 0024
rewrite hq1 - 0025
specialize le_refl 1 - 0026
exact le_refl - 0027
intro n - 0028
intro q - 0029
intro hpw - 0030
intro hn - 0031
intro hq - 0032
have hnd : exists a r. (((exists ff_h_bppl_left_decomposition_entry. ff_h_bppl_left_decomposition_entry + S (a) = S ((S (l)) * c)) /\ exists ff_q_bppl_left_decomposition_entry. b = ff_q_bppl_left_decomposition_entry * S ((S (l)) * c) + (a))) /\ ((exists ff_u_bppl_left_decomposition_product ff_v_bppl_left_decomposition_product. ((((exists ff_h_bppl_left_decomposition_product_start. ff_h_bppl_left_decomposition_product_start + S (1) = S ((S (0)) * ff_v_bppl_left_decomposition_product)) /\ exists ff_q_bppl_left_decomposition_product_start. ff_u_bppl_left_decomposition_product = ff_q_bppl_left_decomposition_product_start * S ((S (0)) * ff_v_bppl_left_decomposition_product) + (1))) /\ ((((exists ff_h_bppl_left_decomposition_product_terminal. ff_h_bppl_left_decomposition_product_terminal + S (r) = S ((S (l)) * ff_v_bppl_left_decomposition_product)) /\ exists ff_q_bppl_left_decomposition_product_terminal. ff_u_bppl_left_decomposition_product = ff_q_bppl_left_decomposition_product_terminal * S ((S (l)) * ff_v_bppl_left_decomposition_product) + (r))) /\ forall ff_i_bppl_left_decomposition_product. (exists ff_lt_bppl_left_decomposition_product_bound. ff_lt_bppl_left_decomposition_product_bound + S ff_i_bppl_left_decomposition_product = l) -> exists ff_p_bppl_left_decomposition_product ff_r_bppl_left_decomposition_product ff_s_bppl_left_decomposition_product. ((((exists ff_h_bppl_left_decomposition_product_factor. ff_h_bppl_left_decomposition_product_factor + S (ff_p_bppl_left_decomposition_product) = S ((S (ff_i_bppl_left_decomposition_product)) * c)) /\ exists ff_q_bppl_left_decomposition_product_factor. b = ff_q_bppl_left_decomposition_product_factor * S ((S (ff_i_bppl_left_decomposition_product)) * c) + (ff_p_bppl_left_decomposition_product))) /\ ((((exists ff_h_bppl_left_decomposition_product_partial. ff_h_bppl_left_decomposition_product_partial + S (ff_r_bppl_left_decomposition_product) = S ((S (ff_i_bppl_left_decomposition_product)) * ff_v_bppl_left_decomposition_product)) /\ exists ff_q_bppl_left_decomposition_product_partial. ff_u_bppl_left_decomposition_product = ff_q_bppl_left_decomposition_product_partial * S ((S (ff_i_bppl_left_decomposition_product)) * ff_v_bppl_left_decomposition_product) + (ff_r_bppl_left_decomposition_product))) /\ ((((exists ff_h_bppl_left_decomposition_product_successor. ff_h_bppl_left_decomposition_product_successor + S (ff_s_bppl_left_decomposition_product) = S ((S (S ff_i_bppl_left_decomposition_product)) * ff_v_bppl_left_decomposition_product)) /\ exists ff_q_bppl_left_decomposition_product_successor. ff_u_bppl_left_decomposition_product = ff_q_bppl_left_decomposition_product_successor * S ((S (S ff_i_bppl_left_decomposition_product)) * ff_v_bppl_left_decomposition_product) + (ff_s_bppl_left_decomposition_product))) /\ ff_s_bppl_left_decomposition_product = ff_r_bppl_left_decomposition_product * ff_p_bppl_left_decomposition_product)))))) /\ n = r * a) - 0033
specialize beta_product_succ_decompose b - 0034
specialize beta_product_succ_decompose c - 0035
specialize beta_product_succ_decompose l - 0036
specialize beta_product_succ_decompose n - 0037
apply beta_product_succ_decompose - 0038
exact hn - 0039
cases hnd - 0040
cases hnd_witness - 0041
cases hnd_witness_witness - 0042
cases hnd_witness_witness_right - 0043
have hqd : exists a r. (((exists ff_h_bppl_right_decomposition_entry. ff_h_bppl_right_decomposition_entry + S (a) = S ((S (l)) * e)) /\ exists ff_q_bppl_right_decomposition_entry. d = ff_q_bppl_right_decomposition_entry * S ((S (l)) * e) + (a))) /\ ((exists ff_u_bppl_right_decomposition_product ff_v_bppl_right_decomposition_product. ((((exists ff_h_bppl_right_decomposition_product_start. ff_h_bppl_right_decomposition_product_start + S (1) = S ((S (0)) * ff_v_bppl_right_decomposition_product)) /\ exists ff_q_bppl_right_decomposition_product_start. ff_u_bppl_right_decomposition_product = ff_q_bppl_right_decomposition_product_start * S ((S (0)) * ff_v_bppl_right_decomposition_product) + (1))) /\ ((((exists ff_h_bppl_right_decomposition_product_terminal. ff_h_bppl_right_decomposition_product_terminal + S (r) = S ((S (l)) * ff_v_bppl_right_decomposition_product)) /\ exists ff_q_bppl_right_decomposition_product_terminal. ff_u_bppl_right_decomposition_product = ff_q_bppl_right_decomposition_product_terminal * S ((S (l)) * ff_v_bppl_right_decomposition_product) + (r))) /\ forall ff_i_bppl_right_decomposition_product. (exists ff_lt_bppl_right_decomposition_product_bound. ff_lt_bppl_right_decomposition_product_bound + S ff_i_bppl_right_decomposition_product = l) -> exists ff_p_bppl_right_decomposition_product ff_r_bppl_right_decomposition_product ff_s_bppl_right_decomposition_product. ((((exists ff_h_bppl_right_decomposition_product_factor. ff_h_bppl_right_decomposition_product_factor + S (ff_p_bppl_right_decomposition_product) = S ((S (ff_i_bppl_right_decomposition_product)) * e)) /\ exists ff_q_bppl_right_decomposition_product_factor. d = ff_q_bppl_right_decomposition_product_factor * S ((S (ff_i_bppl_right_decomposition_product)) * e) + (ff_p_bppl_right_decomposition_product))) /\ ((((exists ff_h_bppl_right_decomposition_product_partial. ff_h_bppl_right_decomposition_product_partial + S (ff_r_bppl_right_decomposition_product) = S ((S (ff_i_bppl_right_decomposition_product)) * ff_v_bppl_right_decomposition_product)) /\ exists ff_q_bppl_right_decomposition_product_partial. ff_u_bppl_right_decomposition_product = ff_q_bppl_right_decomposition_product_partial * S ((S (ff_i_bppl_right_decomposition_product)) * ff_v_bppl_right_decomposition_product) + (ff_r_bppl_right_decomposition_product))) /\ ((((exists ff_h_bppl_right_decomposition_product_successor. ff_h_bppl_right_decomposition_product_successor + S (ff_s_bppl_right_decomposition_product) = S ((S (S ff_i_bppl_right_decomposition_product)) * ff_v_bppl_right_decomposition_product)) /\ exists ff_q_bppl_right_decomposition_product_successor. ff_u_bppl_right_decomposition_product = ff_q_bppl_right_decomposition_product_successor * S ((S (S ff_i_bppl_right_decomposition_product)) * ff_v_bppl_right_decomposition_product) + (ff_s_bppl_right_decomposition_product))) /\ ff_s_bppl_right_decomposition_product = ff_r_bppl_right_decomposition_product * ff_p_bppl_right_decomposition_product)))))) /\ q = r * a) - 0044
specialize beta_product_succ_decompose d - 0045
specialize beta_product_succ_decompose e - 0046
specialize beta_product_succ_decompose l - 0047
specialize beta_product_succ_decompose q - 0048
apply beta_product_succ_decompose - 0049
exact hq - 0050
cases hqd - 0051
cases hqd_witness - 0052
cases hqd_witness_witness - 0053
cases hqd_witness_witness_right - 0054
have hpw_prefix : forall i a z. (exists bppl_prefix_bound. bppl_prefix_bound + S i = l) -> (((exists ff_h_bppl_prefix_left. ff_h_bppl_prefix_left + S (a) = S ((S (i)) * c)) /\ exists ff_q_bppl_prefix_left. b = ff_q_bppl_prefix_left * S ((S (i)) * c) + (a))) -> (((exists ff_h_bppl_prefix_right. ff_h_bppl_prefix_right + S (z) = S ((S (i)) * e)) /\ exists ff_q_bppl_prefix_right. d = ff_q_bppl_prefix_right * S ((S (i)) * e) + (z))) -> exists bppl_prefix_factor_gap. bppl_prefix_factor_gap + a = z - 0055
intro i - 0056
intro a - 0057
intro z - 0058
intro hi - 0059
intro ha - 0060
intro hz - 0061
specialize hpw i - 0062
specialize hpw a - 0063
specialize hpw z - 0064
apply hpw - 0065
specialize le_succ (S i) - 0066
specialize le_succ l - 0067
apply le_succ - 0068
exact hi - 0069
exact ha - 0070
exact hz - 0071
have hprefix : exists k. k + x1 = x3 - 0072
specialize IH x1 - 0073
specialize IH x3 - 0074
apply IH - 0075
exact hpw_prefix - 0076
exact hnd_witness_witness_right_left - 0077
exact hqd_witness_witness_right_left - 0078
have hentry : exists k. k + x = x2 - 0079
specialize hpw l - 0080
specialize hpw x - 0081
specialize hpw x2 - 0082
apply hpw - 0083
specialize le_refl (S l) - 0084
exact le_refl - 0085
exact hnd_witness_witness_left - 0086
exact hqd_witness_witness_left - 0087
have hfold : exists k. k + (x1 * x) = (x3 * x2) - 0088
specialize mul_le_mul x1 - 0089
specialize mul_le_mul x3 - 0090
specialize mul_le_mul x - 0091
specialize mul_le_mul x2 - 0092
apply mul_le_mul - 0093
exact hprefix - 0094
exact hentry - 0095
rewrite hnd_witness_witness_right_right - 0096
rewrite hqd_witness_witness_right_right - 0097
exact hfold