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.
Statement with defined notation
∀ b. ∀ c. ∀ d. ∀ e. ∀ l. ∀ n. ∀ q. (∀ x. ∀ y. ∀ z. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(d,e,x,z) → Le(y,z)) → Product(b,c,l,n) → Product(d,e,l,q) → Le(n,q)Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
7 occurrences
In local proof propositions
11 occurrences
Exact expanded native-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 = qProof neighborhood
Direct theorem prerequisites
BT005I beta_product_zero BT005J beta_product_succ_decompose BT0018 le_succ BT000E le_refl BT00PV mul_le_mulDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic 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 (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.
- L32
have hnd : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Product(b,c,l,r) ∧ n = r · a)Definitions: BetaAt(b,c,l,a)Product(b,c,l,r)Original native command in the exact edition - L33
specialize beta_product_succ_decompose b - L34
specialize beta_product_succ_decompose c - L35
specialize beta_product_succ_decompose l - L36
specialize beta_product_succ_decompose n - L37
apply beta_product_succ_decompose - L38
exact hn
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.
- L43
have hqd : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Product(d,e,l,r) ∧ q = r · a)Definitions: BetaAt(d,e,l,a)Product(d,e,l,r)Original native command in the exact edition - L44
specialize beta_product_succ_decompose d - L45
specialize beta_product_succ_decompose e - L46
specialize beta_product_succ_decompose l - L47
specialize beta_product_succ_decompose q - L48
apply beta_product_succ_decompose - L49
exact hq
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 : ∀ i. ∀ a. ∀ z. Lt(i,l) → BetaAt(b,c,i,a) → BetaAt(d,e,i,z) → Le(a,z)Definitions: Lt(i,l)BetaAt(b,c,i,a)BetaAt(d,e,i,z)Le(a,z)Original native command in the exact edition - 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.
- L87
have hfold : Le(x1 · x,x3 · x2)Definitions: Le(x1 · x,x3 · x2)Original native command in the exact edition - L88
specialize mul_le_mul x1 - L89
specialize mul_le_mul x3 - L90
specialize mul_le_mul x - L91
specialize mul_le_mul x2 - L92
apply mul_le_mul - L93
exact hprefix - L94
exact hentry - L95
rewrite hnd_witness_witness_right_right - L96
rewrite hqd_witness_witness_right_right
15Use earlier factsL97–97
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact hfold
Original defined 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 : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Product(b,c,l,r) ∧ n = r · a)Exact native replay line
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 : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Product(d,e,l,r) ∧ q = r · a)Exact native replay line
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 : ∀ i. ∀ a. ∀ z. Lt(i,l) → BetaAt(b,c,i,a) → BetaAt(d,e,i,z) → Le(a,z)Exact native replay line
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 : Le(x1,x3)Exact native replay line
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 : Le(x,x2)Exact native replay line
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 : Le(x1 · x,x3 · x2)Exact native replay line
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