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
∀ k. ∀ b. ∀ c. ∀ z. ∀ d. ∀ i. ∀ x. ∀ y. ∀ p. ∀ q. Lt(i,k) → BetaAt(b,c,i,x) → BetaAt(z,d,i,y) → (∀ n. ∀ m. Lt(n,k) → ¬n = i → BetaAt(b,c,n,m) → BetaAt(z,d,n,m)) → Sum(b,c,k,p) → Sum(z,d,k,q) → q + x = p + yEvery purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
8 occurrences
In local proof propositions
10 occurrences
Exact expanded native-PA statement
forall k b c z d i x y p q. (exists h. h + S i = k) -> (((exists ff_h_balance_old_i. ff_h_balance_old_i + S (x) = S ((S (i)) * c)) /\ exists ff_q_balance_old_i. b = ff_q_balance_old_i * S ((S (i)) * c) + (x))) -> (((exists ff_h_balance_new_i. ff_h_balance_new_i + S (y) = S ((S (i)) * d)) /\ exists ff_q_balance_new_i. z = ff_q_balance_new_i * S ((S (i)) * d) + (y))) -> (forall j a. (exists h. h + S j = k) -> ~(j = i) -> (((exists ff_h_balance_old_j. ff_h_balance_old_j + S (a) = S ((S (j)) * c)) /\ exists ff_q_balance_old_j. b = ff_q_balance_old_j * S ((S (j)) * c) + (a))) -> (((exists ff_h_balance_new_j. ff_h_balance_new_j + S (a) = S ((S (j)) * d)) /\ exists ff_q_balance_new_j. z = ff_q_balance_new_j * S ((S (j)) * d) + (a)))) -> (exists ff_u_balance_old ff_v_balance_old. ((((exists ff_h_balance_old_start. ff_h_balance_old_start + S (0) = S ((S (0)) * ff_v_balance_old)) /\ exists ff_q_balance_old_start. ff_u_balance_old = ff_q_balance_old_start * S ((S (0)) * ff_v_balance_old) + (0))) /\ ((((exists ff_h_balance_old_terminal. ff_h_balance_old_terminal + S (p) = S ((S (k)) * ff_v_balance_old)) /\ exists ff_q_balance_old_terminal. ff_u_balance_old = ff_q_balance_old_terminal * S ((S (k)) * ff_v_balance_old) + (p))) /\ forall ff_i_balance_old. (exists ff_lt_balance_old_bound. ff_lt_balance_old_bound + S ff_i_balance_old = k) -> exists ff_a_balance_old ff_r_balance_old ff_s_balance_old. ((((exists ff_h_balance_old_summand. ff_h_balance_old_summand + S (ff_a_balance_old) = S ((S (ff_i_balance_old)) * c)) /\ exists ff_q_balance_old_summand. b = ff_q_balance_old_summand * S ((S (ff_i_balance_old)) * c) + (ff_a_balance_old))) /\ ((((exists ff_h_balance_old_partial. ff_h_balance_old_partial + S (ff_r_balance_old) = S ((S (ff_i_balance_old)) * ff_v_balance_old)) /\ exists ff_q_balance_old_partial. ff_u_balance_old = ff_q_balance_old_partial * S ((S (ff_i_balance_old)) * ff_v_balance_old) + (ff_r_balance_old))) /\ ((((exists ff_h_balance_old_successor. ff_h_balance_old_successor + S (ff_s_balance_old) = S ((S (S ff_i_balance_old)) * ff_v_balance_old)) /\ exists ff_q_balance_old_successor. ff_u_balance_old = ff_q_balance_old_successor * S ((S (S ff_i_balance_old)) * ff_v_balance_old) + (ff_s_balance_old))) /\ ff_s_balance_old = ff_r_balance_old + ff_a_balance_old)))))) -> (exists ff_u_balance_new ff_v_balance_new. ((((exists ff_h_balance_new_start. ff_h_balance_new_start + S (0) = S ((S (0)) * ff_v_balance_new)) /\ exists ff_q_balance_new_start. ff_u_balance_new = ff_q_balance_new_start * S ((S (0)) * ff_v_balance_new) + (0))) /\ ((((exists ff_h_balance_new_terminal. ff_h_balance_new_terminal + S (q) = S ((S (k)) * ff_v_balance_new)) /\ exists ff_q_balance_new_terminal. ff_u_balance_new = ff_q_balance_new_terminal * S ((S (k)) * ff_v_balance_new) + (q))) /\ forall ff_i_balance_new. (exists ff_lt_balance_new_bound. ff_lt_balance_new_bound + S ff_i_balance_new = k) -> exists ff_a_balance_new ff_r_balance_new ff_s_balance_new. ((((exists ff_h_balance_new_summand. ff_h_balance_new_summand + S (ff_a_balance_new) = S ((S (ff_i_balance_new)) * d)) /\ exists ff_q_balance_new_summand. z = ff_q_balance_new_summand * S ((S (ff_i_balance_new)) * d) + (ff_a_balance_new))) /\ ((((exists ff_h_balance_new_partial. ff_h_balance_new_partial + S (ff_r_balance_new) = S ((S (ff_i_balance_new)) * ff_v_balance_new)) /\ exists ff_q_balance_new_partial. ff_u_balance_new = ff_q_balance_new_partial * S ((S (ff_i_balance_new)) * ff_v_balance_new) + (ff_r_balance_new))) /\ ((((exists ff_h_balance_new_successor. ff_h_balance_new_successor + S (ff_s_balance_new) = S ((S (S ff_i_balance_new)) * ff_v_balance_new)) /\ exists ff_q_balance_new_successor. ff_u_balance_new = ff_q_balance_new_successor * S ((S (S ff_i_balance_new)) * ff_v_balance_new) + (ff_s_balance_new))) /\ ff_s_balance_new = ff_r_balance_new + ff_a_balance_new)))))) -> q + x = p + yProof neighborhood
Direct theorem prerequisites
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA003D finite_lt_succ_eq_or_lt PA003Y beta_sum_succ_decompose PA00CT beta_sum_transport_prefix PA006K beta_sum_trace_functional PA002F beta_at_unique PA0009 add_assoc PA000F add_comm PA002O le_succ PA001A le_refl PA0010 lt_irrefl_expandedDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (10)
01Induction on kL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hi
03Separate the logical casesL12–13
04Establish hsiL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
05Fix variables and assumptionsL24–33
06Fix variables and assumptionsL34–36
07Establish hisplitL37–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
08Establish hold_decompL42–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L42
have hold_decomp : ∃ a. ∃ r. BetaAt(b,c,k,a) ∧ (Sum(b,c,k,r) ∧ p = r + a)Definitions: BetaAt(b,c,k,a)Sum(b,c,k,r)Original native command in the exact edition - L43
specialize beta_sum_succ_decompose b - L44
specialize beta_sum_succ_decompose c - L45
specialize beta_sum_succ_decompose k - L46
specialize beta_sum_succ_decompose p - L47
apply beta_sum_succ_decompose - L48
exact hproduct_old
09Establish hnew_decompL49–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L49
have hnew_decomp : ∃ a. ∃ r. BetaAt(z,d,k,a) ∧ (Sum(z,d,k,r) ∧ q = r + a)Definitions: BetaAt(z,d,k,a)Sum(z,d,k,r)Original native command in the exact edition - L50
specialize beta_sum_succ_decompose z - L51
specialize beta_sum_succ_decompose d - L52
specialize beta_sum_succ_decompose k - L53
specialize beta_sum_succ_decompose q - L54
apply beta_sum_succ_decompose - L55
exact hproduct_new
10Separate the logical casesL56–64
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
11Establish haxL65–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L65
have hax : x1 = x - L66
specialize beta_at_unique b - L67
specialize beta_at_unique c - L68
specialize beta_at_unique k - L69
specialize beta_at_unique x1 - L70
specialize beta_at_unique x - L71
apply beta_at_unique - L72
exact hold_decomp_witness_witness_left - L73
rewrite hisplit_left at hold_i - L74
rewrite hisplit_left at hold_i
12Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hold_i
13Establish hbyL76–85
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L76
have hby : x3 = y - L77
specialize beta_at_unique z - L78
specialize beta_at_unique d - L79
specialize beta_at_unique k - L80
specialize beta_at_unique x3 - L81
specialize beta_at_unique y - L82
apply beta_at_unique - L83
exact hnew_decomp_witness_witness_left - L84
rewrite hisplit_left at hnew_i - L85
rewrite hisplit_left at hnew_i
14Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
exact hnew_i
15Establish hprefix_transportL87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum transport prefix.
- L87
have hprefix_transport : Sum(z,d,k,x2)Definitions: Sum(z,d,k,x2)Original native command in the exact edition - L88
specialize beta_sum_transport_prefix b - L89
specialize beta_sum_transport_prefix c - L90
specialize beta_sum_transport_prefix z - L91
specialize beta_sum_transport_prefix d - L92
specialize beta_sum_transport_prefix k - L93
specialize beta_sum_transport_prefix x2 - L94
apply beta_sum_transport_prefix - L95
exact hold_decomp_witness_witness_right_left - L96
intro j
16Fix variables and assumptionsL97–99
17Use earlier factsL100–106
18Fix variables and assumptionsL107–107
Work with arbitrary variables or the premises of the current implication.
- L107
intro hjk
19Use earlier factsL108–109
20Calculate and transport equalitiesL110–111
21Use earlier factsL112–113
22Separate the logical casesL114–117
23Calculate and transport equalitiesL118–126
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
24Use earlier factsL127–136
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L127
specialize beta_sum_trace_functional z - L128
specialize beta_sum_trace_functional d - L129
specialize beta_sum_trace_functional k - L130
specialize beta_sum_trace_functional x2 - L131
specialize beta_sum_trace_functional x5 - L132
specialize beta_sum_trace_functional x6 - L133
specialize beta_sum_trace_functional x4 - L134
specialize beta_sum_trace_functional x7 - L135
specialize beta_sum_trace_functional x8 - L136
apply beta_sum_trace_functional
25Use earlier factsL137–138
26Calculate and transport equalitiesL139–140
27Establish hkiL141–146
28Establish hlast_newL147–154
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpreserve.
- L147
have hlast_new : BetaAt(z,d,k,x1)Definitions: BetaAt(z,d,k,x1)Original native command in the exact edition - L148
specialize hpreserve k - L149
specialize hpreserve x1 - L150
apply hpreserve - L151
specialize le_refl (S k) - L152
exact le_refl - L153
exact hki - L154
exact hold_decomp_witness_witness_left
29Establish hlast_eqL155–163
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
30Establish hprefix_preserveL164–173
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpreserve.
- L164
have hprefix_preserve : ∀ j. ∀ a. Lt(j,k) → ¬j = i → BetaAt(b,c,j,a) → BetaAt(z,d,j,a)Definitions: Lt(j,k)BetaAt(b,c,j,a)BetaAt(z,d,j,a)Original native command in the exact edition - L165
intro j - L166
intro a - L167
intro hj - L168
intro hji - L169
intro hold - L170
specialize hpreserve j - L171
specialize hpreserve a - L172
apply hpreserve - L173
specialize le_succ (S j)
31Use earlier factsL174–178
32Establish hbalanceL179–188
33Use earlier factsL189–195
34Calculate and transport equalitiesL196–202
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
Original defined command ledger · 202 lines
- 0001
induction k - 0002
intro b - 0003
intro c - 0004
intro z - 0005
intro d - 0006
intro i - 0007
intro x - 0008
intro y - 0009
intro p - 0010
intro q - 0011
intro hi - 0012
exfalso - 0013
cases hi - 0014
have hsi : S i = 0 - 0015
specialize add_eq_zero_right x1 - 0016
specialize add_eq_zero_right (S i) - 0017
apply add_eq_zero_right - 0018
exact hi_witness - 0019
specialize succ_ne_zero i - 0020
apply succ_ne_zero - 0021
exact hsi - 0022
intro b - 0023
intro c - 0024
intro z - 0025
intro d - 0026
intro i - 0027
intro x - 0028
intro y - 0029
intro p - 0030
intro q - 0031
intro hi - 0032
intro hold_i - 0033
intro hnew_i - 0034
intro hpreserve - 0035
intro hproduct_old - 0036
intro hproduct_new - 0037
have hisplit : i = k ∨ Lt(i,k)Exact native replay line
have hisplit : i = k \/ exists h. h + S i = k - 0038
specialize finite_lt_succ_eq_or_lt k - 0039
specialize finite_lt_succ_eq_or_lt i - 0040
apply finite_lt_succ_eq_or_lt - 0041
exact hi - 0042
have hold_decomp : ∃ a. ∃ r. BetaAt(b,c,k,a) ∧ (Sum(b,c,k,r) ∧ p = r + a)Exact native replay line
have hold_decomp : exists a r. (((exists ff_h_balance_old_last. ff_h_balance_old_last + S (a) = S ((S (k)) * c)) /\ exists ff_q_balance_old_last. b = ff_q_balance_old_last * S ((S (k)) * c) + (a))) /\ ((exists ff_u_balance_old_prefix ff_v_balance_old_prefix. ((((exists ff_h_balance_old_prefix_start. ff_h_balance_old_prefix_start + S (0) = S ((S (0)) * ff_v_balance_old_prefix)) /\ exists ff_q_balance_old_prefix_start. ff_u_balance_old_prefix = ff_q_balance_old_prefix_start * S ((S (0)) * ff_v_balance_old_prefix) + (0))) /\ ((((exists ff_h_balance_old_prefix_terminal. ff_h_balance_old_prefix_terminal + S (r) = S ((S (k)) * ff_v_balance_old_prefix)) /\ exists ff_q_balance_old_prefix_terminal. ff_u_balance_old_prefix = ff_q_balance_old_prefix_terminal * S ((S (k)) * ff_v_balance_old_prefix) + (r))) /\ forall ff_i_balance_old_prefix. (exists ff_lt_balance_old_prefix_bound. ff_lt_balance_old_prefix_bound + S ff_i_balance_old_prefix = k) -> exists ff_a_balance_old_prefix ff_r_balance_old_prefix ff_s_balance_old_prefix. ((((exists ff_h_balance_old_prefix_summand. ff_h_balance_old_prefix_summand + S (ff_a_balance_old_prefix) = S ((S (ff_i_balance_old_prefix)) * c)) /\ exists ff_q_balance_old_prefix_summand. b = ff_q_balance_old_prefix_summand * S ((S (ff_i_balance_old_prefix)) * c) + (ff_a_balance_old_prefix))) /\ ((((exists ff_h_balance_old_prefix_partial. ff_h_balance_old_prefix_partial + S (ff_r_balance_old_prefix) = S ((S (ff_i_balance_old_prefix)) * ff_v_balance_old_prefix)) /\ exists ff_q_balance_old_prefix_partial. ff_u_balance_old_prefix = ff_q_balance_old_prefix_partial * S ((S (ff_i_balance_old_prefix)) * ff_v_balance_old_prefix) + (ff_r_balance_old_prefix))) /\ ((((exists ff_h_balance_old_prefix_successor. ff_h_balance_old_prefix_successor + S (ff_s_balance_old_prefix) = S ((S (S ff_i_balance_old_prefix)) * ff_v_balance_old_prefix)) /\ exists ff_q_balance_old_prefix_successor. ff_u_balance_old_prefix = ff_q_balance_old_prefix_successor * S ((S (S ff_i_balance_old_prefix)) * ff_v_balance_old_prefix) + (ff_s_balance_old_prefix))) /\ ff_s_balance_old_prefix = ff_r_balance_old_prefix + ff_a_balance_old_prefix)))))) /\ p = r + a) - 0043
specialize beta_sum_succ_decompose b - 0044
specialize beta_sum_succ_decompose c - 0045
specialize beta_sum_succ_decompose k - 0046
specialize beta_sum_succ_decompose p - 0047
apply beta_sum_succ_decompose - 0048
exact hproduct_old - 0049
have hnew_decomp : ∃ a. ∃ r. BetaAt(z,d,k,a) ∧ (Sum(z,d,k,r) ∧ q = r + a)Exact native replay line
have hnew_decomp : exists a r. (((exists ff_h_balance_new_last. ff_h_balance_new_last + S (a) = S ((S (k)) * d)) /\ exists ff_q_balance_new_last. z = ff_q_balance_new_last * S ((S (k)) * d) + (a))) /\ ((exists ff_u_balance_new_prefix ff_v_balance_new_prefix. ((((exists ff_h_balance_new_prefix_start. ff_h_balance_new_prefix_start + S (0) = S ((S (0)) * ff_v_balance_new_prefix)) /\ exists ff_q_balance_new_prefix_start. ff_u_balance_new_prefix = ff_q_balance_new_prefix_start * S ((S (0)) * ff_v_balance_new_prefix) + (0))) /\ ((((exists ff_h_balance_new_prefix_terminal. ff_h_balance_new_prefix_terminal + S (r) = S ((S (k)) * ff_v_balance_new_prefix)) /\ exists ff_q_balance_new_prefix_terminal. ff_u_balance_new_prefix = ff_q_balance_new_prefix_terminal * S ((S (k)) * ff_v_balance_new_prefix) + (r))) /\ forall ff_i_balance_new_prefix. (exists ff_lt_balance_new_prefix_bound. ff_lt_balance_new_prefix_bound + S ff_i_balance_new_prefix = k) -> exists ff_a_balance_new_prefix ff_r_balance_new_prefix ff_s_balance_new_prefix. ((((exists ff_h_balance_new_prefix_summand. ff_h_balance_new_prefix_summand + S (ff_a_balance_new_prefix) = S ((S (ff_i_balance_new_prefix)) * d)) /\ exists ff_q_balance_new_prefix_summand. z = ff_q_balance_new_prefix_summand * S ((S (ff_i_balance_new_prefix)) * d) + (ff_a_balance_new_prefix))) /\ ((((exists ff_h_balance_new_prefix_partial. ff_h_balance_new_prefix_partial + S (ff_r_balance_new_prefix) = S ((S (ff_i_balance_new_prefix)) * ff_v_balance_new_prefix)) /\ exists ff_q_balance_new_prefix_partial. ff_u_balance_new_prefix = ff_q_balance_new_prefix_partial * S ((S (ff_i_balance_new_prefix)) * ff_v_balance_new_prefix) + (ff_r_balance_new_prefix))) /\ ((((exists ff_h_balance_new_prefix_successor. ff_h_balance_new_prefix_successor + S (ff_s_balance_new_prefix) = S ((S (S ff_i_balance_new_prefix)) * ff_v_balance_new_prefix)) /\ exists ff_q_balance_new_prefix_successor. ff_u_balance_new_prefix = ff_q_balance_new_prefix_successor * S ((S (S ff_i_balance_new_prefix)) * ff_v_balance_new_prefix) + (ff_s_balance_new_prefix))) /\ ff_s_balance_new_prefix = ff_r_balance_new_prefix + ff_a_balance_new_prefix)))))) /\ q = r + a) - 0050
specialize beta_sum_succ_decompose z - 0051
specialize beta_sum_succ_decompose d - 0052
specialize beta_sum_succ_decompose k - 0053
specialize beta_sum_succ_decompose q - 0054
apply beta_sum_succ_decompose - 0055
exact hproduct_new - 0056
cases hold_decomp - 0057
cases hold_decomp_witness - 0058
cases hold_decomp_witness_witness - 0059
cases hold_decomp_witness_witness_right - 0060
cases hnew_decomp - 0061
cases hnew_decomp_witness - 0062
cases hnew_decomp_witness_witness - 0063
cases hnew_decomp_witness_witness_right - 0064
cases hisplit - 0065
have hax : x1 = x - 0066
specialize beta_at_unique b - 0067
specialize beta_at_unique c - 0068
specialize beta_at_unique k - 0069
specialize beta_at_unique x1 - 0070
specialize beta_at_unique x - 0071
apply beta_at_unique - 0072
exact hold_decomp_witness_witness_left - 0073
rewrite hisplit_left at hold_i - 0074
rewrite hisplit_left at hold_i - 0075
exact hold_i - 0076
have hby : x3 = y - 0077
specialize beta_at_unique z - 0078
specialize beta_at_unique d - 0079
specialize beta_at_unique k - 0080
specialize beta_at_unique x3 - 0081
specialize beta_at_unique y - 0082
apply beta_at_unique - 0083
exact hnew_decomp_witness_witness_left - 0084
rewrite hisplit_left at hnew_i - 0085
rewrite hisplit_left at hnew_i - 0086
exact hnew_i - 0087
have hprefix_transport : Sum(z,d,k,x2)Exact native replay line
have hprefix_transport : exists ff_u_balance_transported_prefix ff_v_balance_transported_prefix. ((((exists ff_h_balance_transported_prefix_start. ff_h_balance_transported_prefix_start + S (0) = S ((S (0)) * ff_v_balance_transported_prefix)) /\ exists ff_q_balance_transported_prefix_start. ff_u_balance_transported_prefix = ff_q_balance_transported_prefix_start * S ((S (0)) * ff_v_balance_transported_prefix) + (0))) /\ ((((exists ff_h_balance_transported_prefix_terminal. ff_h_balance_transported_prefix_terminal + S (x2) = S ((S (k)) * ff_v_balance_transported_prefix)) /\ exists ff_q_balance_transported_prefix_terminal. ff_u_balance_transported_prefix = ff_q_balance_transported_prefix_terminal * S ((S (k)) * ff_v_balance_transported_prefix) + (x2))) /\ forall ff_i_balance_transported_prefix. (exists ff_lt_balance_transported_prefix_bound. ff_lt_balance_transported_prefix_bound + S ff_i_balance_transported_prefix = k) -> exists ff_a_balance_transported_prefix ff_r_balance_transported_prefix ff_s_balance_transported_prefix. ((((exists ff_h_balance_transported_prefix_summand. ff_h_balance_transported_prefix_summand + S (ff_a_balance_transported_prefix) = S ((S (ff_i_balance_transported_prefix)) * d)) /\ exists ff_q_balance_transported_prefix_summand. z = ff_q_balance_transported_prefix_summand * S ((S (ff_i_balance_transported_prefix)) * d) + (ff_a_balance_transported_prefix))) /\ ((((exists ff_h_balance_transported_prefix_partial. ff_h_balance_transported_prefix_partial + S (ff_r_balance_transported_prefix) = S ((S (ff_i_balance_transported_prefix)) * ff_v_balance_transported_prefix)) /\ exists ff_q_balance_transported_prefix_partial. ff_u_balance_transported_prefix = ff_q_balance_transported_prefix_partial * S ((S (ff_i_balance_transported_prefix)) * ff_v_balance_transported_prefix) + (ff_r_balance_transported_prefix))) /\ ((((exists ff_h_balance_transported_prefix_successor. ff_h_balance_transported_prefix_successor + S (ff_s_balance_transported_prefix) = S ((S (S ff_i_balance_transported_prefix)) * ff_v_balance_transported_prefix)) /\ exists ff_q_balance_transported_prefix_successor. ff_u_balance_transported_prefix = ff_q_balance_transported_prefix_successor * S ((S (S ff_i_balance_transported_prefix)) * ff_v_balance_transported_prefix) + (ff_s_balance_transported_prefix))) /\ ff_s_balance_transported_prefix = ff_r_balance_transported_prefix + ff_a_balance_transported_prefix))))) - 0088
specialize beta_sum_transport_prefix b - 0089
specialize beta_sum_transport_prefix c - 0090
specialize beta_sum_transport_prefix z - 0091
specialize beta_sum_transport_prefix d - 0092
specialize beta_sum_transport_prefix k - 0093
specialize beta_sum_transport_prefix x2 - 0094
apply beta_sum_transport_prefix - 0095
exact hold_decomp_witness_witness_right_left - 0096
intro j - 0097
intro a - 0098
intro hj - 0099
intro hold - 0100
specialize hpreserve j - 0101
specialize hpreserve a - 0102
apply hpreserve - 0103
specialize le_succ (S j) - 0104
specialize le_succ k - 0105
apply le_succ - 0106
exact hj - 0107
intro hjk - 0108
specialize lt_irrefl_expanded k - 0109
apply lt_irrefl_expanded - 0110
rewrite hjk at hj - 0111
rewrite hisplit_left at hj - 0112
exact hj - 0113
exact hold - 0114
cases hprefix_transport - 0115
cases hprefix_transport_witness - 0116
cases hnew_decomp_witness_witness_right_left - 0117
cases hnew_decomp_witness_witness_right_left_witness - 0118
rewrite hold_decomp_witness_witness_right_right - 0119
rewrite hnew_decomp_witness_witness_right_right - 0120
rewrite hax - 0121
rewrite hby - 0122
trans (x4 + x) + y - 0123
simp [add_assoc, add_comm] - 0124
congr - 0125
congr - 0126
symm - 0127
specialize beta_sum_trace_functional z - 0128
specialize beta_sum_trace_functional d - 0129
specialize beta_sum_trace_functional k - 0130
specialize beta_sum_trace_functional x2 - 0131
specialize beta_sum_trace_functional x5 - 0132
specialize beta_sum_trace_functional x6 - 0133
specialize beta_sum_trace_functional x4 - 0134
specialize beta_sum_trace_functional x7 - 0135
specialize beta_sum_trace_functional x8 - 0136
apply beta_sum_trace_functional - 0137
exact hprefix_transport_witness_witness - 0138
exact hnew_decomp_witness_witness_right_left_witness_witness - 0139
refl - 0140
refl - 0141
have hki : ~(k = i) - 0142
intro hki_eq - 0143
specialize lt_irrefl_expanded k - 0144
apply lt_irrefl_expanded - 0145
rewrite <- hki_eq at hisplit_right - 0146
exact hisplit_right - 0147
have hlast_new : BetaAt(z,d,k,x1)Exact native replay line
have hlast_new : ((exists h. h + S x1 = S ((S k) * d)) /\ exists w. z = w * S ((S k) * d) + x1) - 0148
specialize hpreserve k - 0149
specialize hpreserve x1 - 0150
apply hpreserve - 0151
specialize le_refl (S k) - 0152
exact le_refl - 0153
exact hki - 0154
exact hold_decomp_witness_witness_left - 0155
have hlast_eq : x3 = x1 - 0156
specialize beta_at_unique z - 0157
specialize beta_at_unique d - 0158
specialize beta_at_unique k - 0159
specialize beta_at_unique x3 - 0160
specialize beta_at_unique x1 - 0161
apply beta_at_unique - 0162
exact hnew_decomp_witness_witness_left - 0163
exact hlast_new - 0164
have hprefix_preserve : ∀ j. ∀ a. Lt(j,k) → ¬j = i → BetaAt(b,c,j,a) → BetaAt(z,d,j,a)Exact native replay line
have hprefix_preserve : forall j a. (exists h. h + S j = k) -> ~(j = i) -> ((exists h. h + S a = S ((S j) * c)) /\ exists w. b = w * S ((S j) * c) + a) -> ((exists h. h + S a = S ((S j) * d)) /\ exists w. z = w * S ((S j) * d) + a) - 0165
intro j - 0166
intro a - 0167
intro hj - 0168
intro hji - 0169
intro hold - 0170
specialize hpreserve j - 0171
specialize hpreserve a - 0172
apply hpreserve - 0173
specialize le_succ (S j) - 0174
specialize le_succ k - 0175
apply le_succ - 0176
exact hj - 0177
exact hji - 0178
exact hold - 0179
have hbalance : x4 + x = x2 + y - 0180
specialize IH b - 0181
specialize IH c - 0182
specialize IH z - 0183
specialize IH d - 0184
specialize IH i - 0185
specialize IH x - 0186
specialize IH y - 0187
specialize IH x2 - 0188
specialize IH x4 - 0189
apply IH - 0190
exact hisplit_right - 0191
exact hold_i - 0192
exact hnew_i - 0193
exact hprefix_preserve - 0194
exact hold_decomp_witness_witness_right_left - 0195
exact hnew_decomp_witness_witness_right_left - 0196
rewrite hold_decomp_witness_witness_right_right - 0197
rewrite hnew_decomp_witness_witness_right_right - 0198
rewrite hlast_eq - 0199
trans (x4 + x) + x1 - 0200
simp [add_assoc, add_comm] - 0201
rewrite hbalance - 0202
simp [add_assoc, add_comm]