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 ab ac bb bc cb cc db dc eb ec fb fc pb pc qb qc rb rc l. (forall ff_index_mcp_add_ics_interchange_first ff_left_mcp_add_ics_interchange_first ff_right_mcp_add_ics_interchange_first ff_target_mcp_add_ics_interchange_first. (exists mcp_gap_ics_interchange_first_bound. mcp_gap_ics_interchange_first_bound + S (ff_index_mcp_add_ics_interchange_first) = (l)) -> (((exists fs_h_mcp_ics_interchange_first_left. fs_h_mcp_ics_interchange_first_left + S (ff_left_mcp_add_ics_interchange_first) = S ((S (ff_index_mcp_add_ics_interchange_first)) * ac)) /\ exists fs_q_mcp_ics_interchange_first_left. ab = fs_q_mcp_ics_interchange_first_left * S ((S (ff_index_mcp_add_ics_interchange_first)) * ac) + (ff_left_mcp_add_ics_interchange_first))) -> (((exists fs_h_mcp_ics_interchange_first_right. fs_h_mcp_ics_interchange_first_right + S (ff_right_mcp_add_ics_interchange_first) = S ((S (ff_index_mcp_add_ics_interchange_first)) * bc)) /\ exists fs_q_mcp_ics_interchange_first_right. bb = fs_q_mcp_ics_interchange_first_right * S ((S (ff_index_mcp_add_ics_interchange_first)) * bc) + (ff_right_mcp_add_ics_interchange_first))) -> (((exists fs_h_mcp_ics_interchange_first_target. fs_h_mcp_ics_interchange_first_target + S (ff_target_mcp_add_ics_interchange_first) = S ((S (ff_index_mcp_add_ics_interchange_first)) * pc)) /\ exists fs_q_mcp_ics_interchange_first_target. pb = fs_q_mcp_ics_interchange_first_target * S ((S (ff_index_mcp_add_ics_interchange_first)) * pc) + (ff_target_mcp_add_ics_interchange_first))) -> ff_target_mcp_add_ics_interchange_first = ff_left_mcp_add_ics_interchange_first + ff_right_mcp_add_ics_interchange_first) -> (forall ff_index_mcp_add_ics_interchange_second ff_left_mcp_add_ics_interchange_second ff_right_mcp_add_ics_interchange_second ff_target_mcp_add_ics_interchange_second. (exists mcp_gap_ics_interchange_second_bound. mcp_gap_ics_interchange_second_bound + S (ff_index_mcp_add_ics_interchange_second) = (l)) -> (((exists fs_h_mcp_ics_interchange_second_left. fs_h_mcp_ics_interchange_second_left + S (ff_left_mcp_add_ics_interchange_second) = S ((S (ff_index_mcp_add_ics_interchange_second)) * cc)) /\ exists fs_q_mcp_ics_interchange_second_left. cb = fs_q_mcp_ics_interchange_second_left * S ((S (ff_index_mcp_add_ics_interchange_second)) * cc) + (ff_left_mcp_add_ics_interchange_second))) -> (((exists fs_h_mcp_ics_interchange_second_right. fs_h_mcp_ics_interchange_second_right + S (ff_right_mcp_add_ics_interchange_second) = S ((S (ff_index_mcp_add_ics_interchange_second)) * dc)) /\ exists fs_q_mcp_ics_interchange_second_right. db = fs_q_mcp_ics_interchange_second_right * S ((S (ff_index_mcp_add_ics_interchange_second)) * dc) + (ff_right_mcp_add_ics_interchange_second))) -> (((exists fs_h_mcp_ics_interchange_second_target. fs_h_mcp_ics_interchange_second_target + S (ff_target_mcp_add_ics_interchange_second) = S ((S (ff_index_mcp_add_ics_interchange_second)) * qc)) /\ exists fs_q_mcp_ics_interchange_second_target. qb = fs_q_mcp_ics_interchange_second_target * S ((S (ff_index_mcp_add_ics_interchange_second)) * qc) + (ff_target_mcp_add_ics_interchange_second))) -> ff_target_mcp_add_ics_interchange_second = ff_left_mcp_add_ics_interchange_second + ff_right_mcp_add_ics_interchange_second) -> (forall ff_index_mcp_add_ics_interchange_total ff_left_mcp_add_ics_interchange_total ff_right_mcp_add_ics_interchange_total ff_target_mcp_add_ics_interchange_total. (exists mcp_gap_ics_interchange_total_bound. mcp_gap_ics_interchange_total_bound + S (ff_index_mcp_add_ics_interchange_total) = (l)) -> (((exists fs_h_mcp_ics_interchange_total_left. fs_h_mcp_ics_interchange_total_left + S (ff_left_mcp_add_ics_interchange_total) = S ((S (ff_index_mcp_add_ics_interchange_total)) * ec)) /\ exists fs_q_mcp_ics_interchange_total_left. eb = fs_q_mcp_ics_interchange_total_left * S ((S (ff_index_mcp_add_ics_interchange_total)) * ec) + (ff_left_mcp_add_ics_interchange_total))) -> (((exists fs_h_mcp_ics_interchange_total_right. fs_h_mcp_ics_interchange_total_right + S (ff_right_mcp_add_ics_interchange_total) = S ((S (ff_index_mcp_add_ics_interchange_total)) * fc)) /\ exists fs_q_mcp_ics_interchange_total_right. fb = fs_q_mcp_ics_interchange_total_right * S ((S (ff_index_mcp_add_ics_interchange_total)) * fc) + (ff_right_mcp_add_ics_interchange_total))) -> (((exists fs_h_mcp_ics_interchange_total_target. fs_h_mcp_ics_interchange_total_target + S (ff_target_mcp_add_ics_interchange_total) = S ((S (ff_index_mcp_add_ics_interchange_total)) * rc)) /\ exists fs_q_mcp_ics_interchange_total_target. rb = fs_q_mcp_ics_interchange_total_target * S ((S (ff_index_mcp_add_ics_interchange_total)) * rc) + (ff_target_mcp_add_ics_interchange_total))) -> ff_target_mcp_add_ics_interchange_total = ff_left_mcp_add_ics_interchange_total + ff_right_mcp_add_ics_interchange_total) -> (forall ff_index_mcp_add_ics_interchange_vertical_first ff_left_mcp_add_ics_interchange_vertical_first ff_right_mcp_add_ics_interchange_vertical_first ff_target_mcp_add_ics_interchange_vertical_first. (exists mcp_gap_ics_interchange_vertical_first_bound. mcp_gap_ics_interchange_vertical_first_bound + S (ff_index_mcp_add_ics_interchange_vertical_first) = (l)) -> (((exists fs_h_mcp_ics_interchange_vertical_first_left. fs_h_mcp_ics_interchange_vertical_first_left + S (ff_left_mcp_add_ics_interchange_vertical_first) = S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * ac)) /\ exists fs_q_mcp_ics_interchange_vertical_first_left. ab = fs_q_mcp_ics_interchange_vertical_first_left * S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * ac) + (ff_left_mcp_add_ics_interchange_vertical_first))) -> (((exists fs_h_mcp_ics_interchange_vertical_first_right. fs_h_mcp_ics_interchange_vertical_first_right + S (ff_right_mcp_add_ics_interchange_vertical_first) = S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * cc)) /\ exists fs_q_mcp_ics_interchange_vertical_first_right. cb = fs_q_mcp_ics_interchange_vertical_first_right * S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * cc) + (ff_right_mcp_add_ics_interchange_vertical_first))) -> (((exists fs_h_mcp_ics_interchange_vertical_first_target. fs_h_mcp_ics_interchange_vertical_first_target + S (ff_target_mcp_add_ics_interchange_vertical_first) = S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * ec)) /\ exists fs_q_mcp_ics_interchange_vertical_first_target. eb = fs_q_mcp_ics_interchange_vertical_first_target * S ((S (ff_index_mcp_add_ics_interchange_vertical_first)) * ec) + (ff_target_mcp_add_ics_interchange_vertical_first))) -> ff_target_mcp_add_ics_interchange_vertical_first = ff_left_mcp_add_ics_interchange_vertical_first + ff_right_mcp_add_ics_interchange_vertical_first) -> (forall ff_index_mcp_add_ics_interchange_vertical_second ff_left_mcp_add_ics_interchange_vertical_second ff_right_mcp_add_ics_interchange_vertical_second ff_target_mcp_add_ics_interchange_vertical_second. (exists mcp_gap_ics_interchange_vertical_second_bound. mcp_gap_ics_interchange_vertical_second_bound + S (ff_index_mcp_add_ics_interchange_vertical_second) = (l)) -> (((exists fs_h_mcp_ics_interchange_vertical_second_left. fs_h_mcp_ics_interchange_vertical_second_left + S (ff_left_mcp_add_ics_interchange_vertical_second) = S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * bc)) /\ exists fs_q_mcp_ics_interchange_vertical_second_left. bb = fs_q_mcp_ics_interchange_vertical_second_left * S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * bc) + (ff_left_mcp_add_ics_interchange_vertical_second))) -> (((exists fs_h_mcp_ics_interchange_vertical_second_right. fs_h_mcp_ics_interchange_vertical_second_right + S (ff_right_mcp_add_ics_interchange_vertical_second) = S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * dc)) /\ exists fs_q_mcp_ics_interchange_vertical_second_right. db = fs_q_mcp_ics_interchange_vertical_second_right * S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * dc) + (ff_right_mcp_add_ics_interchange_vertical_second))) -> (((exists fs_h_mcp_ics_interchange_vertical_second_target. fs_h_mcp_ics_interchange_vertical_second_target + S (ff_target_mcp_add_ics_interchange_vertical_second) = S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * fc)) /\ exists fs_q_mcp_ics_interchange_vertical_second_target. fb = fs_q_mcp_ics_interchange_vertical_second_target * S ((S (ff_index_mcp_add_ics_interchange_vertical_second)) * fc) + (ff_target_mcp_add_ics_interchange_vertical_second))) -> ff_target_mcp_add_ics_interchange_vertical_second = ff_left_mcp_add_ics_interchange_vertical_second + ff_right_mcp_add_ics_interchange_vertical_second) -> (forall ff_index_mcp_add_ics_interchange_result ff_left_mcp_add_ics_interchange_result ff_right_mcp_add_ics_interchange_result ff_target_mcp_add_ics_interchange_result. (exists mcp_gap_ics_interchange_result_bound. mcp_gap_ics_interchange_result_bound + S (ff_index_mcp_add_ics_interchange_result) = (l)) -> (((exists fs_h_mcp_ics_interchange_result_left. fs_h_mcp_ics_interchange_result_left + S (ff_left_mcp_add_ics_interchange_result) = S ((S (ff_index_mcp_add_ics_interchange_result)) * pc)) /\ exists fs_q_mcp_ics_interchange_result_left. pb = fs_q_mcp_ics_interchange_result_left * S ((S (ff_index_mcp_add_ics_interchange_result)) * pc) + (ff_left_mcp_add_ics_interchange_result))) -> (((exists fs_h_mcp_ics_interchange_result_right. fs_h_mcp_ics_interchange_result_right + S (ff_right_mcp_add_ics_interchange_result) = S ((S (ff_index_mcp_add_ics_interchange_result)) * qc)) /\ exists fs_q_mcp_ics_interchange_result_right. qb = fs_q_mcp_ics_interchange_result_right * S ((S (ff_index_mcp_add_ics_interchange_result)) * qc) + (ff_right_mcp_add_ics_interchange_result))) -> (((exists fs_h_mcp_ics_interchange_result_target. fs_h_mcp_ics_interchange_result_target + S (ff_target_mcp_add_ics_interchange_result) = S ((S (ff_index_mcp_add_ics_interchange_result)) * rc)) /\ exists fs_q_mcp_ics_interchange_result_target. rb = fs_q_mcp_ics_interchange_result_target * S ((S (ff_index_mcp_add_ics_interchange_result)) * rc) + (ff_target_mcp_add_ics_interchange_result))) -> ff_target_mcp_add_ics_interchange_result = ff_left_mcp_add_ics_interchange_result + ff_right_mcp_add_ics_interchange_result)Constructive proof overview
Generated structural guide
Five actual pointwise sum relations imply the regrouped sixth relation at every coordinate, with no assumption about canonical beta encodings.
The unchanged tactic script uses 2 declared prerequisites and contains 131 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_at_exists Stable theorem; checked-use authorized add_shuffle_middle Alpha 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–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–30
04Fix variables and assumptionsL31–32
05Establish ha0L33–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L33
have ha0 : exists value. (((exists fs_h_ics_interchange_value0. fs_h_ics_interchange_value0 + S (value) = S ((S (i)) * ac)) /\ exists fs_q_ics_interchange_value0. ab = fs_q_ics_interchange_value0 * S ((S (i)) * ac) + (value))) - L34
specialize beta_at_exists (ab) - L35
specialize beta_at_exists (ac) - L36
specialize beta_at_exists (i) - L37
apply beta_at_exists
06Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
cases ha0
07Establish ha1L39–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L39
have ha1 : exists value. (((exists fs_h_ics_interchange_value1. fs_h_ics_interchange_value1 + S (value) = S ((S (i)) * bc)) /\ exists fs_q_ics_interchange_value1. bb = fs_q_ics_interchange_value1 * S ((S (i)) * bc) + (value))) - L40
specialize beta_at_exists (bb) - L41
specialize beta_at_exists (bc) - L42
specialize beta_at_exists (i) - L43
apply beta_at_exists
08Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
cases ha1
09Establish ha2L45–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L45
have ha2 : exists value. (((exists fs_h_ics_interchange_value2. fs_h_ics_interchange_value2 + S (value) = S ((S (i)) * cc)) /\ exists fs_q_ics_interchange_value2. cb = fs_q_ics_interchange_value2 * S ((S (i)) * cc) + (value))) - L46
specialize beta_at_exists (cb) - L47
specialize beta_at_exists (cc) - L48
specialize beta_at_exists (i) - L49
apply beta_at_exists
10Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
cases ha2
11Establish ha3L51–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L51
have ha3 : exists value. (((exists fs_h_ics_interchange_value3. fs_h_ics_interchange_value3 + S (value) = S ((S (i)) * dc)) /\ exists fs_q_ics_interchange_value3. db = fs_q_ics_interchange_value3 * S ((S (i)) * dc) + (value))) - L52
specialize beta_at_exists (db) - L53
specialize beta_at_exists (dc) - L54
specialize beta_at_exists (i) - L55
apply beta_at_exists
12Separate the logical casesL56–56
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L56
cases ha3
13Establish ha4L57–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L57
have ha4 : exists value. (((exists fs_h_ics_interchange_value4. fs_h_ics_interchange_value4 + S (value) = S ((S (i)) * ec)) /\ exists fs_q_ics_interchange_value4. eb = fs_q_ics_interchange_value4 * S ((S (i)) * ec) + (value))) - L58
specialize beta_at_exists (eb) - L59
specialize beta_at_exists (ec) - L60
specialize beta_at_exists (i) - L61
apply beta_at_exists
14Separate the logical casesL62–62
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L62
cases ha4
15Establish ha5L63–67
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L63
have ha5 : exists value. (((exists fs_h_ics_interchange_value5. fs_h_ics_interchange_value5 + S (value) = S ((S (i)) * fc)) /\ exists fs_q_ics_interchange_value5. fb = fs_q_ics_interchange_value5 * S ((S (i)) * fc) + (value))) - L64
specialize beta_at_exists (fb) - L65
specialize beta_at_exists (fc) - L66
specialize beta_at_exists (i) - L67
apply beta_at_exists
16Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
cases ha5
17Establish heqvL69–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfirst.
18Establish heqwL79–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsecond.
19Establish heqzL89–98
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply htotal.
20Establish heqleftL99–108
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hleft.
21Establish heqrightL109–118
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hright.
22Calculate and transport equalitiesL119–119
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L119
trans x4 + x5
23Use earlier factsL120–120
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L120
exact heqz
24Calculate and transport equalitiesL121–122
25Use earlier factsL123–124
26Calculate and transport equalitiesL125–125
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L125
trans (x + x1) + (x2 + x3)
27Use earlier factsL126–126
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L126
apply add_shuffle_middle
28Calculate and transport equalitiesL127–128
29Use earlier factsL129–129
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L129
exact heqv
30Calculate and transport equalitiesL130–130
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L130
symm
31Use earlier factsL131–131
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L131
exact heqw
Original exact command ledger · 131 lines
- 0001
intro ab - 0002
intro ac - 0003
intro bb - 0004
intro bc - 0005
intro cb - 0006
intro cc - 0007
intro db - 0008
intro dc - 0009
intro eb - 0010
intro ec - 0011
intro fb - 0012
intro fc - 0013
intro pb - 0014
intro pc - 0015
intro qb - 0016
intro qc - 0017
intro rb - 0018
intro rc - 0019
intro l - 0020
intro hfirst - 0021
intro hsecond - 0022
intro htotal - 0023
intro hleft - 0024
intro hright - 0025
intro i - 0026
intro v - 0027
intro w - 0028
intro z - 0029
intro hi - 0030
intro hv - 0031
intro hw - 0032
intro hz - 0033
have ha0 : exists value. (((exists fs_h_ics_interchange_value0. fs_h_ics_interchange_value0 + S (value) = S ((S (i)) * ac)) /\ exists fs_q_ics_interchange_value0. ab = fs_q_ics_interchange_value0 * S ((S (i)) * ac) + (value))) - 0034
specialize beta_at_exists (ab) - 0035
specialize beta_at_exists (ac) - 0036
specialize beta_at_exists (i) - 0037
apply beta_at_exists - 0038
cases ha0 - 0039
have ha1 : exists value. (((exists fs_h_ics_interchange_value1. fs_h_ics_interchange_value1 + S (value) = S ((S (i)) * bc)) /\ exists fs_q_ics_interchange_value1. bb = fs_q_ics_interchange_value1 * S ((S (i)) * bc) + (value))) - 0040
specialize beta_at_exists (bb) - 0041
specialize beta_at_exists (bc) - 0042
specialize beta_at_exists (i) - 0043
apply beta_at_exists - 0044
cases ha1 - 0045
have ha2 : exists value. (((exists fs_h_ics_interchange_value2. fs_h_ics_interchange_value2 + S (value) = S ((S (i)) * cc)) /\ exists fs_q_ics_interchange_value2. cb = fs_q_ics_interchange_value2 * S ((S (i)) * cc) + (value))) - 0046
specialize beta_at_exists (cb) - 0047
specialize beta_at_exists (cc) - 0048
specialize beta_at_exists (i) - 0049
apply beta_at_exists - 0050
cases ha2 - 0051
have ha3 : exists value. (((exists fs_h_ics_interchange_value3. fs_h_ics_interchange_value3 + S (value) = S ((S (i)) * dc)) /\ exists fs_q_ics_interchange_value3. db = fs_q_ics_interchange_value3 * S ((S (i)) * dc) + (value))) - 0052
specialize beta_at_exists (db) - 0053
specialize beta_at_exists (dc) - 0054
specialize beta_at_exists (i) - 0055
apply beta_at_exists - 0056
cases ha3 - 0057
have ha4 : exists value. (((exists fs_h_ics_interchange_value4. fs_h_ics_interchange_value4 + S (value) = S ((S (i)) * ec)) /\ exists fs_q_ics_interchange_value4. eb = fs_q_ics_interchange_value4 * S ((S (i)) * ec) + (value))) - 0058
specialize beta_at_exists (eb) - 0059
specialize beta_at_exists (ec) - 0060
specialize beta_at_exists (i) - 0061
apply beta_at_exists - 0062
cases ha4 - 0063
have ha5 : exists value. (((exists fs_h_ics_interchange_value5. fs_h_ics_interchange_value5 + S (value) = S ((S (i)) * fc)) /\ exists fs_q_ics_interchange_value5. fb = fs_q_ics_interchange_value5 * S ((S (i)) * fc) + (value))) - 0064
specialize beta_at_exists (fb) - 0065
specialize beta_at_exists (fc) - 0066
specialize beta_at_exists (i) - 0067
apply beta_at_exists - 0068
cases ha5 - 0069
have heqv : v = x + x1 - 0070
specialize hfirst (i) - 0071
specialize hfirst (x) - 0072
specialize hfirst (x1) - 0073
specialize hfirst (v) - 0074
apply hfirst - 0075
exact hi - 0076
exact ha0_witness - 0077
exact ha1_witness - 0078
exact hv - 0079
have heqw : w = x2 + x3 - 0080
specialize hsecond (i) - 0081
specialize hsecond (x2) - 0082
specialize hsecond (x3) - 0083
specialize hsecond (w) - 0084
apply hsecond - 0085
exact hi - 0086
exact ha2_witness - 0087
exact ha3_witness - 0088
exact hw - 0089
have heqz : z = x4 + x5 - 0090
specialize htotal (i) - 0091
specialize htotal (x4) - 0092
specialize htotal (x5) - 0093
specialize htotal (z) - 0094
apply htotal - 0095
exact hi - 0096
exact ha4_witness - 0097
exact ha5_witness - 0098
exact hz - 0099
have heqleft : x4 = x + x2 - 0100
specialize hleft (i) - 0101
specialize hleft (x) - 0102
specialize hleft (x2) - 0103
specialize hleft (x4) - 0104
apply hleft - 0105
exact hi - 0106
exact ha0_witness - 0107
exact ha2_witness - 0108
exact ha4_witness - 0109
have heqright : x5 = x1 + x3 - 0110
specialize hright (i) - 0111
specialize hright (x1) - 0112
specialize hright (x3) - 0113
specialize hright (x5) - 0114
apply hright - 0115
exact hi - 0116
exact ha1_witness - 0117
exact ha3_witness - 0118
exact ha5_witness - 0119
trans x4 + x5 - 0120
exact heqz - 0121
trans (x + x2) + (x1 + x3) - 0122
congr - 0123
exact heqleft - 0124
exact heqright - 0125
trans (x + x1) + (x2 + x3) - 0126
apply add_shuffle_middle - 0127
congr - 0128
symm - 0129
exact heqv - 0130
symm - 0131
exact heqw