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. ∀ z. ∀ d. ∀ l. ∀ m. ∀ n. (∀ x. ∀ y. Lt(x,m) → BetaAt(b,c,l + x,y) → BetaAt(z,d,x,y)) → Product(b,c,l + m,n) → ∃ x. ∃ y. Product(b,c,l,x) ∧ (Product(z,d,m,y) ∧ n = x · y)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
6 occurrences
In local proof propositions
8 occurrences
Exact expanded native-PA statement
forall b c z d l m n. (forall i a. (exists fps_bound_bps_split_shift. fps_bound_bps_split_shift + S i = m) -> (((exists fps_height_bps_split_shift_source. fps_height_bps_split_shift_source + S (a) = S ((S (l + i)) * c)) /\ exists fps_quotient_bps_split_shift_source. b = fps_quotient_bps_split_shift_source * S ((S (l + i)) * c) + (a))) -> (((exists fps_height_bps_split_shift_suffix. fps_height_bps_split_shift_suffix + S (a) = S ((S (i)) * d)) /\ exists fps_quotient_bps_split_shift_suffix. z = fps_quotient_bps_split_shift_suffix * S ((S (i)) * d) + (a)))) -> (exists fps_accumulator_bps_split_total fps_scale_bps_split_total. ((((exists fps_height_bps_split_total_start. fps_height_bps_split_total_start + S (1) = S ((S (0)) * fps_scale_bps_split_total)) /\ exists fps_quotient_bps_split_total_start. fps_accumulator_bps_split_total = fps_quotient_bps_split_total_start * S ((S (0)) * fps_scale_bps_split_total) + (1))) /\ ((((exists fps_height_bps_split_total_terminal. fps_height_bps_split_total_terminal + S (n) = S ((S (l + m)) * fps_scale_bps_split_total)) /\ exists fps_quotient_bps_split_total_terminal. fps_accumulator_bps_split_total = fps_quotient_bps_split_total_terminal * S ((S (l + m)) * fps_scale_bps_split_total) + (n))) /\ forall fps_index_bps_split_total. (exists fps_gap_bps_split_total_bound. fps_gap_bps_split_total_bound + S fps_index_bps_split_total = l + m) -> exists fps_factor_bps_split_total fps_partial_bps_split_total fps_successor_bps_split_total. ((((exists fps_height_bps_split_total_factor. fps_height_bps_split_total_factor + S (fps_factor_bps_split_total) = S ((S (fps_index_bps_split_total)) * c)) /\ exists fps_quotient_bps_split_total_factor. b = fps_quotient_bps_split_total_factor * S ((S (fps_index_bps_split_total)) * c) + (fps_factor_bps_split_total))) /\ ((((exists fps_height_bps_split_total_partial. fps_height_bps_split_total_partial + S (fps_partial_bps_split_total) = S ((S (fps_index_bps_split_total)) * fps_scale_bps_split_total)) /\ exists fps_quotient_bps_split_total_partial. fps_accumulator_bps_split_total = fps_quotient_bps_split_total_partial * S ((S (fps_index_bps_split_total)) * fps_scale_bps_split_total) + (fps_partial_bps_split_total))) /\ ((((exists fps_height_bps_split_total_successor. fps_height_bps_split_total_successor + S (fps_successor_bps_split_total) = S ((S (S fps_index_bps_split_total)) * fps_scale_bps_split_total)) /\ exists fps_quotient_bps_split_total_successor. fps_accumulator_bps_split_total = fps_quotient_bps_split_total_successor * S ((S (S fps_index_bps_split_total)) * fps_scale_bps_split_total) + (fps_successor_bps_split_total))) /\ fps_successor_bps_split_total = fps_partial_bps_split_total * fps_factor_bps_split_total)))))) -> exists p q. (exists ff_u_bps_split_prefix ff_v_bps_split_prefix. ((((exists ff_h_bps_split_prefix_start. ff_h_bps_split_prefix_start + S (1) = S ((S (0)) * ff_v_bps_split_prefix)) /\ exists ff_q_bps_split_prefix_start. ff_u_bps_split_prefix = ff_q_bps_split_prefix_start * S ((S (0)) * ff_v_bps_split_prefix) + (1))) /\ ((((exists ff_h_bps_split_prefix_terminal. ff_h_bps_split_prefix_terminal + S (p) = S ((S (l)) * ff_v_bps_split_prefix)) /\ exists ff_q_bps_split_prefix_terminal. ff_u_bps_split_prefix = ff_q_bps_split_prefix_terminal * S ((S (l)) * ff_v_bps_split_prefix) + (p))) /\ forall ff_i_bps_split_prefix. (exists ff_lt_bps_split_prefix_bound. ff_lt_bps_split_prefix_bound + S ff_i_bps_split_prefix = l) -> exists ff_p_bps_split_prefix ff_r_bps_split_prefix ff_s_bps_split_prefix. ((((exists ff_h_bps_split_prefix_factor. ff_h_bps_split_prefix_factor + S (ff_p_bps_split_prefix) = S ((S (ff_i_bps_split_prefix)) * c)) /\ exists ff_q_bps_split_prefix_factor. b = ff_q_bps_split_prefix_factor * S ((S (ff_i_bps_split_prefix)) * c) + (ff_p_bps_split_prefix))) /\ ((((exists ff_h_bps_split_prefix_partial. ff_h_bps_split_prefix_partial + S (ff_r_bps_split_prefix) = S ((S (ff_i_bps_split_prefix)) * ff_v_bps_split_prefix)) /\ exists ff_q_bps_split_prefix_partial. ff_u_bps_split_prefix = ff_q_bps_split_prefix_partial * S ((S (ff_i_bps_split_prefix)) * ff_v_bps_split_prefix) + (ff_r_bps_split_prefix))) /\ ((((exists ff_h_bps_split_prefix_successor. ff_h_bps_split_prefix_successor + S (ff_s_bps_split_prefix) = S ((S (S ff_i_bps_split_prefix)) * ff_v_bps_split_prefix)) /\ exists ff_q_bps_split_prefix_successor. ff_u_bps_split_prefix = ff_q_bps_split_prefix_successor * S ((S (S ff_i_bps_split_prefix)) * ff_v_bps_split_prefix) + (ff_s_bps_split_prefix))) /\ ff_s_bps_split_prefix = ff_r_bps_split_prefix * ff_p_bps_split_prefix)))))) /\ ((exists ff_u_bps_split_suffix ff_v_bps_split_suffix. ((((exists ff_h_bps_split_suffix_start. ff_h_bps_split_suffix_start + S (1) = S ((S (0)) * ff_v_bps_split_suffix)) /\ exists ff_q_bps_split_suffix_start. ff_u_bps_split_suffix = ff_q_bps_split_suffix_start * S ((S (0)) * ff_v_bps_split_suffix) + (1))) /\ ((((exists ff_h_bps_split_suffix_terminal. ff_h_bps_split_suffix_terminal + S (q) = S ((S (m)) * ff_v_bps_split_suffix)) /\ exists ff_q_bps_split_suffix_terminal. ff_u_bps_split_suffix = ff_q_bps_split_suffix_terminal * S ((S (m)) * ff_v_bps_split_suffix) + (q))) /\ forall ff_i_bps_split_suffix. (exists ff_lt_bps_split_suffix_bound. ff_lt_bps_split_suffix_bound + S ff_i_bps_split_suffix = m) -> exists ff_p_bps_split_suffix ff_r_bps_split_suffix ff_s_bps_split_suffix. ((((exists ff_h_bps_split_suffix_factor. ff_h_bps_split_suffix_factor + S (ff_p_bps_split_suffix) = S ((S (ff_i_bps_split_suffix)) * d)) /\ exists ff_q_bps_split_suffix_factor. z = ff_q_bps_split_suffix_factor * S ((S (ff_i_bps_split_suffix)) * d) + (ff_p_bps_split_suffix))) /\ ((((exists ff_h_bps_split_suffix_partial. ff_h_bps_split_suffix_partial + S (ff_r_bps_split_suffix) = S ((S (ff_i_bps_split_suffix)) * ff_v_bps_split_suffix)) /\ exists ff_q_bps_split_suffix_partial. ff_u_bps_split_suffix = ff_q_bps_split_suffix_partial * S ((S (ff_i_bps_split_suffix)) * ff_v_bps_split_suffix) + (ff_r_bps_split_suffix))) /\ ((((exists ff_h_bps_split_suffix_successor. ff_h_bps_split_suffix_successor + S (ff_s_bps_split_suffix) = S ((S (S ff_i_bps_split_suffix)) * ff_v_bps_split_suffix)) /\ exists ff_q_bps_split_suffix_successor. ff_u_bps_split_suffix = ff_q_bps_split_suffix_successor * S ((S (S ff_i_bps_split_suffix)) * ff_v_bps_split_suffix) + (ff_s_bps_split_suffix))) /\ ff_s_bps_split_suffix = ff_r_bps_split_suffix * ff_p_bps_split_suffix)))))) /\ n = p * q)Proof neighborhood
Direct theorem prerequisites
BT005F beta_product_exists BT005I beta_product_zero BT005J beta_product_succ_decompose BT005K beta_product_succ_append BT0018 le_succ BT000E le_refl BT000A mul_one BT0008 mul_assocDirect 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 (8)
01Fix variables and assumptionsL1–5
02Induction on mL6–12
03Separate the logical casesL13–15
04Establish hqoneL16–20
05Construct an explicit witnessL21–22
06Use earlier factsL23–23
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L23
exact beta_product_exists_witness_witness_witness
07Construct an explicit witnessL24–25
08Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
split
09Establish hbaseL27–32
10Separate the logical casesL33–33
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L33
split
11Construct an explicit witnessL34–35
12Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact beta_product_exists_witness_witness_witness
13Calculate and transport equalitiesL37–37
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L37
rewrite hqone
14Use earlier factsL38–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L38
specialize mul_one n
15Calculate and transport equalitiesL39–39
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L39
symm
16Use earlier factsL40–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L40
exact mul_one
17Fix variables and assumptionsL41–43
18Establish hlengthL44–48
19Establish hdecompositionL49–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
- L49
have hdecomposition : ∃ a. ∃ r. BetaAt(b,c,l + m,a) ∧ (Product(b,c,l + m,r) ∧ n = r · a)Definitions: BetaAt(b,c,l + m,a)Product(b,c,l + m,r)Original native command in the exact edition - L50
specialize beta_product_succ_decompose b - L51
specialize beta_product_succ_decompose c - L52
specialize beta_product_succ_decompose (l + m) - L53
specialize beta_product_succ_decompose n - L54
apply beta_product_succ_decompose - L55
exact htotal
20Separate the logical casesL56–59
21Establish hprefix_shiftL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hshift.
- L60
have hprefix_shift : ∀ i. ∀ a. Lt(i,m) → BetaAt(b,c,l + i,a) → BetaAt(z,d,i,a)Definitions: Lt(i,m)BetaAt(b,c,l + i,a)BetaAt(z,d,i,a)Original native command in the exact edition - L61
intro i - L62
intro a - L63
intro hi - L64
intro ha - L65
specialize hshift i - L66
specialize hshift a - L67
apply hshift - L68
specialize le_succ (S i) - L69
specialize le_succ m
22Use earlier factsL70–72
23Establish hrecursiveL73–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L73
have hrecursive : ∃ p. ∃ q. Product(b,c,l,p) ∧ (Product(z,d,m,q) ∧ x1 = p · q)Definitions: Product(b,c,l,p)Product(z,d,m,q)Original native command in the exact edition - L74
specialize IH x1 - L75
apply IH - L76
exact hprefix_shift - L77
exact hdecomposition_witness_witness_right_left
24Separate the logical casesL78–81
25Establish hsuffix_lastL82–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hshift.
- L82
have hsuffix_last : BetaAt(z,d,m,x)Definitions: BetaAt(z,d,m,x)Original native command in the exact edition - L83
specialize hshift m - L84
specialize hshift x - L85
apply hshift - L86
specialize le_refl (S m) - L87
exact le_refl - L88
exact hdecomposition_witness_witness_left
26Construct an explicit witnessL89–90
27Separate the logical casesL91–91
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L91
split
28Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hrecursive_witness_witness_left
29Separate the logical casesL93–93
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L93
split
30Use earlier factsL94–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
specialize beta_product_succ_append z - L95
specialize beta_product_succ_append d - L96
specialize beta_product_succ_append m - L97
specialize beta_product_succ_append x3 - L98
specialize beta_product_succ_append x - L99
apply beta_product_succ_append - L100
exact hrecursive_witness_witness_right_left - L101
exact hsuffix_last
31Calculate and transport equalitiesL102–103
Original defined command ledger · 107 lines
- 0001
intro b - 0002
intro c - 0003
intro z - 0004
intro d - 0005
intro l - 0006
induction m - 0007
intro n - 0008
intro hshift - 0009
intro htotal - 0010
specialize beta_product_exists z - 0011
specialize beta_product_exists d - 0012
specialize beta_product_exists 0 - 0013
cases beta_product_exists - 0014
cases beta_product_exists_witness - 0015
cases beta_product_exists_witness_witness - 0016
have hqone : x = 1 - 0017
specialize beta_product_zero z - 0018
specialize beta_product_zero d - 0019
specialize beta_product_zero x - 0020
apply beta_product_zero - 0021
exists x1 - 0022
exists x2 - 0023
exact beta_product_exists_witness_witness_witness - 0024
exists n - 0025
exists x - 0026
split - 0027
have hbase : l + 0 = l - 0028
apply PA3 - 0029
rewrite hbase at htotal - 0030
rewrite hbase at htotal - 0031
rewrite hbase at htotal - 0032
exact htotal - 0033
split - 0034
exists x1 - 0035
exists x2 - 0036
exact beta_product_exists_witness_witness_witness - 0037
rewrite hqone - 0038
specialize mul_one n - 0039
symm - 0040
exact mul_one - 0041
intro n - 0042
intro hshift - 0043
intro htotal - 0044
have hlength : l + S m = S (l + m) - 0045
apply PA4 - 0046
rewrite hlength at htotal - 0047
rewrite hlength at htotal - 0048
rewrite hlength at htotal - 0049
have hdecomposition : ∃ a. ∃ r. BetaAt(b,c,l + m,a) ∧ (Product(b,c,l + m,r) ∧ n = r · a)Exact native replay line
have hdecomposition : exists a r. (((exists fps_height_bps_split_last. fps_height_bps_split_last + S (a) = S ((S (l + m)) * c)) /\ exists fps_quotient_bps_split_last. b = fps_quotient_bps_split_last * S ((S (l + m)) * c) + (a))) /\ ((exists fps_accumulator_bps_split_previous_total fps_scale_bps_split_previous_total. ((((exists fps_height_bps_split_previous_total_start. fps_height_bps_split_previous_total_start + S (1) = S ((S (0)) * fps_scale_bps_split_previous_total)) /\ exists fps_quotient_bps_split_previous_total_start. fps_accumulator_bps_split_previous_total = fps_quotient_bps_split_previous_total_start * S ((S (0)) * fps_scale_bps_split_previous_total) + (1))) /\ ((((exists fps_height_bps_split_previous_total_terminal. fps_height_bps_split_previous_total_terminal + S (r) = S ((S (l + m)) * fps_scale_bps_split_previous_total)) /\ exists fps_quotient_bps_split_previous_total_terminal. fps_accumulator_bps_split_previous_total = fps_quotient_bps_split_previous_total_terminal * S ((S (l + m)) * fps_scale_bps_split_previous_total) + (r))) /\ forall fps_index_bps_split_previous_total. (exists fps_gap_bps_split_previous_total_bound. fps_gap_bps_split_previous_total_bound + S fps_index_bps_split_previous_total = l + m) -> exists fps_factor_bps_split_previous_total fps_partial_bps_split_previous_total fps_successor_bps_split_previous_total. ((((exists fps_height_bps_split_previous_total_factor. fps_height_bps_split_previous_total_factor + S (fps_factor_bps_split_previous_total) = S ((S (fps_index_bps_split_previous_total)) * c)) /\ exists fps_quotient_bps_split_previous_total_factor. b = fps_quotient_bps_split_previous_total_factor * S ((S (fps_index_bps_split_previous_total)) * c) + (fps_factor_bps_split_previous_total))) /\ ((((exists fps_height_bps_split_previous_total_partial. fps_height_bps_split_previous_total_partial + S (fps_partial_bps_split_previous_total) = S ((S (fps_index_bps_split_previous_total)) * fps_scale_bps_split_previous_total)) /\ exists fps_quotient_bps_split_previous_total_partial. fps_accumulator_bps_split_previous_total = fps_quotient_bps_split_previous_total_partial * S ((S (fps_index_bps_split_previous_total)) * fps_scale_bps_split_previous_total) + (fps_partial_bps_split_previous_total))) /\ ((((exists fps_height_bps_split_previous_total_successor. fps_height_bps_split_previous_total_successor + S (fps_successor_bps_split_previous_total) = S ((S (S fps_index_bps_split_previous_total)) * fps_scale_bps_split_previous_total)) /\ exists fps_quotient_bps_split_previous_total_successor. fps_accumulator_bps_split_previous_total = fps_quotient_bps_split_previous_total_successor * S ((S (S fps_index_bps_split_previous_total)) * fps_scale_bps_split_previous_total) + (fps_successor_bps_split_previous_total))) /\ fps_successor_bps_split_previous_total = fps_partial_bps_split_previous_total * fps_factor_bps_split_previous_total)))))) /\ n = r * a) - 0050
specialize beta_product_succ_decompose b - 0051
specialize beta_product_succ_decompose c - 0052
specialize beta_product_succ_decompose (l + m) - 0053
specialize beta_product_succ_decompose n - 0054
apply beta_product_succ_decompose - 0055
exact htotal - 0056
cases hdecomposition - 0057
cases hdecomposition_witness - 0058
cases hdecomposition_witness_witness - 0059
cases hdecomposition_witness_witness_right - 0060
have hprefix_shift : ∀ i. ∀ a. Lt(i,m) → BetaAt(b,c,l + i,a) → BetaAt(z,d,i,a)Exact native replay line
have hprefix_shift : forall i a. (exists fps_bound_bps_split_previous_shift. fps_bound_bps_split_previous_shift + S i = m) -> (((exists fps_height_bps_split_previous_shift_source. fps_height_bps_split_previous_shift_source + S (a) = S ((S (l + i)) * c)) /\ exists fps_quotient_bps_split_previous_shift_source. b = fps_quotient_bps_split_previous_shift_source * S ((S (l + i)) * c) + (a))) -> (((exists fps_height_bps_split_previous_shift_suffix. fps_height_bps_split_previous_shift_suffix + S (a) = S ((S (i)) * d)) /\ exists fps_quotient_bps_split_previous_shift_suffix. z = fps_quotient_bps_split_previous_shift_suffix * S ((S (i)) * d) + (a))) - 0061
intro i - 0062
intro a - 0063
intro hi - 0064
intro ha - 0065
specialize hshift i - 0066
specialize hshift a - 0067
apply hshift - 0068
specialize le_succ (S i) - 0069
specialize le_succ m - 0070
apply le_succ - 0071
exact hi - 0072
exact ha - 0073
have hrecursive : ∃ p. ∃ q. Product(b,c,l,p) ∧ (Product(z,d,m,q) ∧ x1 = p · q)Exact native replay line
have hrecursive : exists p q. (exists ff_u_bps_split_recursive_prefix ff_v_bps_split_recursive_prefix. ((((exists ff_h_bps_split_recursive_prefix_start. ff_h_bps_split_recursive_prefix_start + S (1) = S ((S (0)) * ff_v_bps_split_recursive_prefix)) /\ exists ff_q_bps_split_recursive_prefix_start. ff_u_bps_split_recursive_prefix = ff_q_bps_split_recursive_prefix_start * S ((S (0)) * ff_v_bps_split_recursive_prefix) + (1))) /\ ((((exists ff_h_bps_split_recursive_prefix_terminal. ff_h_bps_split_recursive_prefix_terminal + S (p) = S ((S (l)) * ff_v_bps_split_recursive_prefix)) /\ exists ff_q_bps_split_recursive_prefix_terminal. ff_u_bps_split_recursive_prefix = ff_q_bps_split_recursive_prefix_terminal * S ((S (l)) * ff_v_bps_split_recursive_prefix) + (p))) /\ forall ff_i_bps_split_recursive_prefix. (exists ff_lt_bps_split_recursive_prefix_bound. ff_lt_bps_split_recursive_prefix_bound + S ff_i_bps_split_recursive_prefix = l) -> exists ff_p_bps_split_recursive_prefix ff_r_bps_split_recursive_prefix ff_s_bps_split_recursive_prefix. ((((exists ff_h_bps_split_recursive_prefix_factor. ff_h_bps_split_recursive_prefix_factor + S (ff_p_bps_split_recursive_prefix) = S ((S (ff_i_bps_split_recursive_prefix)) * c)) /\ exists ff_q_bps_split_recursive_prefix_factor. b = ff_q_bps_split_recursive_prefix_factor * S ((S (ff_i_bps_split_recursive_prefix)) * c) + (ff_p_bps_split_recursive_prefix))) /\ ((((exists ff_h_bps_split_recursive_prefix_partial. ff_h_bps_split_recursive_prefix_partial + S (ff_r_bps_split_recursive_prefix) = S ((S (ff_i_bps_split_recursive_prefix)) * ff_v_bps_split_recursive_prefix)) /\ exists ff_q_bps_split_recursive_prefix_partial. ff_u_bps_split_recursive_prefix = ff_q_bps_split_recursive_prefix_partial * S ((S (ff_i_bps_split_recursive_prefix)) * ff_v_bps_split_recursive_prefix) + (ff_r_bps_split_recursive_prefix))) /\ ((((exists ff_h_bps_split_recursive_prefix_successor. ff_h_bps_split_recursive_prefix_successor + S (ff_s_bps_split_recursive_prefix) = S ((S (S ff_i_bps_split_recursive_prefix)) * ff_v_bps_split_recursive_prefix)) /\ exists ff_q_bps_split_recursive_prefix_successor. ff_u_bps_split_recursive_prefix = ff_q_bps_split_recursive_prefix_successor * S ((S (S ff_i_bps_split_recursive_prefix)) * ff_v_bps_split_recursive_prefix) + (ff_s_bps_split_recursive_prefix))) /\ ff_s_bps_split_recursive_prefix = ff_r_bps_split_recursive_prefix * ff_p_bps_split_recursive_prefix)))))) /\ ((exists ff_u_bps_split_recursive_suffix ff_v_bps_split_recursive_suffix. ((((exists ff_h_bps_split_recursive_suffix_start. ff_h_bps_split_recursive_suffix_start + S (1) = S ((S (0)) * ff_v_bps_split_recursive_suffix)) /\ exists ff_q_bps_split_recursive_suffix_start. ff_u_bps_split_recursive_suffix = ff_q_bps_split_recursive_suffix_start * S ((S (0)) * ff_v_bps_split_recursive_suffix) + (1))) /\ ((((exists ff_h_bps_split_recursive_suffix_terminal. ff_h_bps_split_recursive_suffix_terminal + S (q) = S ((S (m)) * ff_v_bps_split_recursive_suffix)) /\ exists ff_q_bps_split_recursive_suffix_terminal. ff_u_bps_split_recursive_suffix = ff_q_bps_split_recursive_suffix_terminal * S ((S (m)) * ff_v_bps_split_recursive_suffix) + (q))) /\ forall ff_i_bps_split_recursive_suffix. (exists ff_lt_bps_split_recursive_suffix_bound. ff_lt_bps_split_recursive_suffix_bound + S ff_i_bps_split_recursive_suffix = m) -> exists ff_p_bps_split_recursive_suffix ff_r_bps_split_recursive_suffix ff_s_bps_split_recursive_suffix. ((((exists ff_h_bps_split_recursive_suffix_factor. ff_h_bps_split_recursive_suffix_factor + S (ff_p_bps_split_recursive_suffix) = S ((S (ff_i_bps_split_recursive_suffix)) * d)) /\ exists ff_q_bps_split_recursive_suffix_factor. z = ff_q_bps_split_recursive_suffix_factor * S ((S (ff_i_bps_split_recursive_suffix)) * d) + (ff_p_bps_split_recursive_suffix))) /\ ((((exists ff_h_bps_split_recursive_suffix_partial. ff_h_bps_split_recursive_suffix_partial + S (ff_r_bps_split_recursive_suffix) = S ((S (ff_i_bps_split_recursive_suffix)) * ff_v_bps_split_recursive_suffix)) /\ exists ff_q_bps_split_recursive_suffix_partial. ff_u_bps_split_recursive_suffix = ff_q_bps_split_recursive_suffix_partial * S ((S (ff_i_bps_split_recursive_suffix)) * ff_v_bps_split_recursive_suffix) + (ff_r_bps_split_recursive_suffix))) /\ ((((exists ff_h_bps_split_recursive_suffix_successor. ff_h_bps_split_recursive_suffix_successor + S (ff_s_bps_split_recursive_suffix) = S ((S (S ff_i_bps_split_recursive_suffix)) * ff_v_bps_split_recursive_suffix)) /\ exists ff_q_bps_split_recursive_suffix_successor. ff_u_bps_split_recursive_suffix = ff_q_bps_split_recursive_suffix_successor * S ((S (S ff_i_bps_split_recursive_suffix)) * ff_v_bps_split_recursive_suffix) + (ff_s_bps_split_recursive_suffix))) /\ ff_s_bps_split_recursive_suffix = ff_r_bps_split_recursive_suffix * ff_p_bps_split_recursive_suffix)))))) /\ x1 = p * q) - 0074
specialize IH x1 - 0075
apply IH - 0076
exact hprefix_shift - 0077
exact hdecomposition_witness_witness_right_left - 0078
cases hrecursive - 0079
cases hrecursive_witness - 0080
cases hrecursive_witness_witness - 0081
cases hrecursive_witness_witness_right - 0082
have hsuffix_last : BetaAt(z,d,m,x)Exact native replay line
have hsuffix_last : ((exists ff_h_bps_split_suffix_last. ff_h_bps_split_suffix_last + S (x) = S ((S (m)) * d)) /\ exists ff_q_bps_split_suffix_last. z = ff_q_bps_split_suffix_last * S ((S (m)) * d) + (x)) - 0083
specialize hshift m - 0084
specialize hshift x - 0085
apply hshift - 0086
specialize le_refl (S m) - 0087
exact le_refl - 0088
exact hdecomposition_witness_witness_left - 0089
exists x2 - 0090
exists x3 * x - 0091
split - 0092
exact hrecursive_witness_witness_left - 0093
split - 0094
specialize beta_product_succ_append z - 0095
specialize beta_product_succ_append d - 0096
specialize beta_product_succ_append m - 0097
specialize beta_product_succ_append x3 - 0098
specialize beta_product_succ_append x - 0099
apply beta_product_succ_append - 0100
exact hrecursive_witness_witness_right_left - 0101
exact hsuffix_last - 0102
rewrite hdecomposition_witness_witness_right_right - 0103
rewrite hrecursive_witness_witness_right_right - 0104
specialize mul_assoc x2 - 0105
specialize mul_assoc x3 - 0106
specialize mul_assoc x - 0107
exact mul_assoc