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 expanded first-order arithmetic statement
forall p ab ac bb bc cb cc L A B C. (exists fs_u_pfc_distribution_sum_a fs_v_pfc_distribution_sum_a. ((((exists fs_h_pfc_distribution_sum_a_body_start. fs_h_pfc_distribution_sum_a_body_start + S (0) = S ((S (0)) * fs_v_pfc_distribution_sum_a)) /\ exists fs_q_pfc_distribution_sum_a_body_start. fs_u_pfc_distribution_sum_a = fs_q_pfc_distribution_sum_a_body_start * S ((S (0)) * fs_v_pfc_distribution_sum_a) + (0))) /\ ((((exists fs_h_pfc_distribution_sum_a_body_terminal. fs_h_pfc_distribution_sum_a_body_terminal + S (A) = S ((S (L)) * fs_v_pfc_distribution_sum_a)) /\ exists fs_q_pfc_distribution_sum_a_body_terminal. fs_u_pfc_distribution_sum_a = fs_q_pfc_distribution_sum_a_body_terminal * S ((S (L)) * fs_v_pfc_distribution_sum_a) + (A))) /\ forall fs_i_pfc_distribution_sum_a_body_steps. (exists fs_lt_pfc_distribution_sum_a_body_steps_bound. fs_lt_pfc_distribution_sum_a_body_steps_bound + S fs_i_pfc_distribution_sum_a_body_steps = L) -> exists fs_a_pfc_distribution_sum_a_body_steps fs_r_pfc_distribution_sum_a_body_steps fs_s_pfc_distribution_sum_a_body_steps. ((((exists fs_h_pfc_distribution_sum_a_body_steps_summand. fs_h_pfc_distribution_sum_a_body_steps_summand + S (fs_a_pfc_distribution_sum_a_body_steps) = S ((S (fs_i_pfc_distribution_sum_a_body_steps)) * ac)) /\ exists fs_q_pfc_distribution_sum_a_body_steps_summand. ab = fs_q_pfc_distribution_sum_a_body_steps_summand * S ((S (fs_i_pfc_distribution_sum_a_body_steps)) * ac) + (fs_a_pfc_distribution_sum_a_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_a_body_steps_partial. fs_h_pfc_distribution_sum_a_body_steps_partial + S (fs_r_pfc_distribution_sum_a_body_steps) = S ((S (fs_i_pfc_distribution_sum_a_body_steps)) * fs_v_pfc_distribution_sum_a)) /\ exists fs_q_pfc_distribution_sum_a_body_steps_partial. fs_u_pfc_distribution_sum_a = fs_q_pfc_distribution_sum_a_body_steps_partial * S ((S (fs_i_pfc_distribution_sum_a_body_steps)) * fs_v_pfc_distribution_sum_a) + (fs_r_pfc_distribution_sum_a_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_a_body_steps_successor. fs_h_pfc_distribution_sum_a_body_steps_successor + S (fs_s_pfc_distribution_sum_a_body_steps) = S ((S (S fs_i_pfc_distribution_sum_a_body_steps)) * fs_v_pfc_distribution_sum_a)) /\ exists fs_q_pfc_distribution_sum_a_body_steps_successor. fs_u_pfc_distribution_sum_a = fs_q_pfc_distribution_sum_a_body_steps_successor * S ((S (S fs_i_pfc_distribution_sum_a_body_steps)) * fs_v_pfc_distribution_sum_a) + (fs_s_pfc_distribution_sum_a_body_steps))) /\ fs_s_pfc_distribution_sum_a_body_steps = fs_r_pfc_distribution_sum_a_body_steps + fs_a_pfc_distribution_sum_a_body_steps)))))) -> (exists fs_u_pfc_distribution_sum_b fs_v_pfc_distribution_sum_b. ((((exists fs_h_pfc_distribution_sum_b_body_start. fs_h_pfc_distribution_sum_b_body_start + S (0) = S ((S (0)) * fs_v_pfc_distribution_sum_b)) /\ exists fs_q_pfc_distribution_sum_b_body_start. fs_u_pfc_distribution_sum_b = fs_q_pfc_distribution_sum_b_body_start * S ((S (0)) * fs_v_pfc_distribution_sum_b) + (0))) /\ ((((exists fs_h_pfc_distribution_sum_b_body_terminal. fs_h_pfc_distribution_sum_b_body_terminal + S (B) = S ((S (L)) * fs_v_pfc_distribution_sum_b)) /\ exists fs_q_pfc_distribution_sum_b_body_terminal. fs_u_pfc_distribution_sum_b = fs_q_pfc_distribution_sum_b_body_terminal * S ((S (L)) * fs_v_pfc_distribution_sum_b) + (B))) /\ forall fs_i_pfc_distribution_sum_b_body_steps. (exists fs_lt_pfc_distribution_sum_b_body_steps_bound. fs_lt_pfc_distribution_sum_b_body_steps_bound + S fs_i_pfc_distribution_sum_b_body_steps = L) -> exists fs_a_pfc_distribution_sum_b_body_steps fs_r_pfc_distribution_sum_b_body_steps fs_s_pfc_distribution_sum_b_body_steps. ((((exists fs_h_pfc_distribution_sum_b_body_steps_summand. fs_h_pfc_distribution_sum_b_body_steps_summand + S (fs_a_pfc_distribution_sum_b_body_steps) = S ((S (fs_i_pfc_distribution_sum_b_body_steps)) * bc)) /\ exists fs_q_pfc_distribution_sum_b_body_steps_summand. bb = fs_q_pfc_distribution_sum_b_body_steps_summand * S ((S (fs_i_pfc_distribution_sum_b_body_steps)) * bc) + (fs_a_pfc_distribution_sum_b_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_b_body_steps_partial. fs_h_pfc_distribution_sum_b_body_steps_partial + S (fs_r_pfc_distribution_sum_b_body_steps) = S ((S (fs_i_pfc_distribution_sum_b_body_steps)) * fs_v_pfc_distribution_sum_b)) /\ exists fs_q_pfc_distribution_sum_b_body_steps_partial. fs_u_pfc_distribution_sum_b = fs_q_pfc_distribution_sum_b_body_steps_partial * S ((S (fs_i_pfc_distribution_sum_b_body_steps)) * fs_v_pfc_distribution_sum_b) + (fs_r_pfc_distribution_sum_b_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_b_body_steps_successor. fs_h_pfc_distribution_sum_b_body_steps_successor + S (fs_s_pfc_distribution_sum_b_body_steps) = S ((S (S fs_i_pfc_distribution_sum_b_body_steps)) * fs_v_pfc_distribution_sum_b)) /\ exists fs_q_pfc_distribution_sum_b_body_steps_successor. fs_u_pfc_distribution_sum_b = fs_q_pfc_distribution_sum_b_body_steps_successor * S ((S (S fs_i_pfc_distribution_sum_b_body_steps)) * fs_v_pfc_distribution_sum_b) + (fs_s_pfc_distribution_sum_b_body_steps))) /\ fs_s_pfc_distribution_sum_b_body_steps = fs_r_pfc_distribution_sum_b_body_steps + fs_a_pfc_distribution_sum_b_body_steps)))))) -> (exists fs_u_pfc_distribution_sum_c fs_v_pfc_distribution_sum_c. ((((exists fs_h_pfc_distribution_sum_c_body_start. fs_h_pfc_distribution_sum_c_body_start + S (0) = S ((S (0)) * fs_v_pfc_distribution_sum_c)) /\ exists fs_q_pfc_distribution_sum_c_body_start. fs_u_pfc_distribution_sum_c = fs_q_pfc_distribution_sum_c_body_start * S ((S (0)) * fs_v_pfc_distribution_sum_c) + (0))) /\ ((((exists fs_h_pfc_distribution_sum_c_body_terminal. fs_h_pfc_distribution_sum_c_body_terminal + S (C) = S ((S (L)) * fs_v_pfc_distribution_sum_c)) /\ exists fs_q_pfc_distribution_sum_c_body_terminal. fs_u_pfc_distribution_sum_c = fs_q_pfc_distribution_sum_c_body_terminal * S ((S (L)) * fs_v_pfc_distribution_sum_c) + (C))) /\ forall fs_i_pfc_distribution_sum_c_body_steps. (exists fs_lt_pfc_distribution_sum_c_body_steps_bound. fs_lt_pfc_distribution_sum_c_body_steps_bound + S fs_i_pfc_distribution_sum_c_body_steps = L) -> exists fs_a_pfc_distribution_sum_c_body_steps fs_r_pfc_distribution_sum_c_body_steps fs_s_pfc_distribution_sum_c_body_steps. ((((exists fs_h_pfc_distribution_sum_c_body_steps_summand. fs_h_pfc_distribution_sum_c_body_steps_summand + S (fs_a_pfc_distribution_sum_c_body_steps) = S ((S (fs_i_pfc_distribution_sum_c_body_steps)) * cc)) /\ exists fs_q_pfc_distribution_sum_c_body_steps_summand. cb = fs_q_pfc_distribution_sum_c_body_steps_summand * S ((S (fs_i_pfc_distribution_sum_c_body_steps)) * cc) + (fs_a_pfc_distribution_sum_c_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_c_body_steps_partial. fs_h_pfc_distribution_sum_c_body_steps_partial + S (fs_r_pfc_distribution_sum_c_body_steps) = S ((S (fs_i_pfc_distribution_sum_c_body_steps)) * fs_v_pfc_distribution_sum_c)) /\ exists fs_q_pfc_distribution_sum_c_body_steps_partial. fs_u_pfc_distribution_sum_c = fs_q_pfc_distribution_sum_c_body_steps_partial * S ((S (fs_i_pfc_distribution_sum_c_body_steps)) * fs_v_pfc_distribution_sum_c) + (fs_r_pfc_distribution_sum_c_body_steps))) /\ ((((exists fs_h_pfc_distribution_sum_c_body_steps_successor. fs_h_pfc_distribution_sum_c_body_steps_successor + S (fs_s_pfc_distribution_sum_c_body_steps) = S ((S (S fs_i_pfc_distribution_sum_c_body_steps)) * fs_v_pfc_distribution_sum_c)) /\ exists fs_q_pfc_distribution_sum_c_body_steps_successor. fs_u_pfc_distribution_sum_c = fs_q_pfc_distribution_sum_c_body_steps_successor * S ((S (S fs_i_pfc_distribution_sum_c_body_steps)) * fs_v_pfc_distribution_sum_c) + (fs_s_pfc_distribution_sum_c_body_steps))) /\ fs_s_pfc_distribution_sum_c_body_steps = fs_r_pfc_distribution_sum_c_body_steps + fs_a_pfc_distribution_sum_c_body_steps)))))) -> (forall i a b c. (exists pfa_gap_distribution_sum_pointwise_bound. pfa_gap_distribution_sum_pointwise_bound + S (i) = (L)) -> (((exists ff_h_pfp_distribution_sum_pointwise_a. ff_h_pfp_distribution_sum_pointwise_a + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_distribution_sum_pointwise_a. ab = ff_q_pfp_distribution_sum_pointwise_a * S ((S (i)) * ac) + (a))) -> (((exists ff_h_pfp_distribution_sum_pointwise_b. ff_h_pfp_distribution_sum_pointwise_b + S (b) = S ((S (i)) * bc)) /\ exists ff_q_pfp_distribution_sum_pointwise_b. bb = ff_q_pfp_distribution_sum_pointwise_b * S ((S (i)) * bc) + (b))) -> (((exists ff_h_pfp_distribution_sum_pointwise_c. ff_h_pfp_distribution_sum_pointwise_c + S (c) = S ((S (i)) * cc)) /\ exists ff_q_pfp_distribution_sum_pointwise_c. cb = ff_q_pfp_distribution_sum_pointwise_c * S ((S (i)) * cc) + (c))) -> (exists pfa_offset_left_distribution_sum_pointwise_value pfa_offset_right_distribution_sum_pointwise_value. (a+b) + (p) * pfa_offset_left_distribution_sum_pointwise_value = (c) + (p) * pfa_offset_right_distribution_sum_pointwise_value)) -> (exists pfa_offset_left_distribution_sum_result pfa_offset_right_distribution_sum_result. (A+B) + (p) * pfa_offset_left_distribution_sum_result = (C) + (p) * pfa_offset_right_distribution_sum_result)Constructive proof overview
Generated structural guide
Actual pointwise additive congruences lift by finite induction to the three actual Sum endpoints, for every modulus and also for the empty prefix.
The unchanged tactic script uses 7 declared prerequisites and contains 152 exact native proof lines.
Alpha v34 checked-use · first admitted v33 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_sum_zero Alpha theorem; checked-use authorized beta_sum_succ_decompose Alpha theorem; checked-use authorized le_succ Alpha theorem; checked-use authorized le_refl Alpha theorem; checked-use authorized mod_eq_add Alpha theorem; checked-use authorized add_assoc Alpha theorem; checked-use authorized add_comm 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–7
02Induction on LL8–15
03Establish hAL16–21
04Establish hBL22–27
05Establish hCL28–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
06Construct an explicit witnessL37–38
07Calculate and transport equalitiesL39–39
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L39
simp
08Fix variables and assumptionsL40–46
09Establish hdaL47–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
10Separate the logical casesL54–57
11Establish hdbL58–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
12Separate the logical casesL65–68
13Establish hdcL69–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
14Separate the logical casesL76–79
15Establish hprefixL80–89
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L80
have hprefix : exists pfa_offset_left_distribution_sum_prefix pfa_offset_right_distribution_sum_prefix. (x1+x3) + (p) * pfa_offset_left_distribution_sum_prefix = (x5) + (p) * pfa_offset_right_distribution_sum_prefix - L81
specialize IH (x1) - L82
specialize IH (x3) - L83
specialize IH (x5) - L84
apply IH - L85
exact hda_witness_witness_right_left - L86
exact hdb_witness_witness_right_left - L87
exact hdc_witness_witness_right_left - L88
intro i - L89
intro a
16Fix variables and assumptionsL90–95
17Use earlier factsL96–105
18Use earlier factsL106–107
19Establish hlastL108–117
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpw.
- L108
have hlast : exists pfa_offset_left_distribution_sum_last pfa_offset_right_distribution_sum_last. (x+x2) + (p) * pfa_offset_left_distribution_sum_last = (x4) + (p) * pfa_offset_right_distribution_sum_last - L109
specialize hpw (L) - L110
specialize hpw (x) - L111
specialize hpw (x2) - L112
specialize hpw (x4) - L113
apply hpw - L114
specialize le_refl (S L) - L115
apply le_refl - L116
exact hda_witness_witness_left - L117
exact hdb_witness_witness_left
20Use earlier factsL118–118
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L118
exact hdc_witness_witness_left
21Establish hcombinedL119–127
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L119
have hcombined : exists pfa_offset_left_distribution_sum_combined pfa_offset_right_distribution_sum_combined. ((x1+x3)+(x+x2)) + (p) * pfa_offset_left_distribution_sum_combined = (x5+x4) + (p) * pfa_offset_right_distribution_sum_combined - L120
specialize mod_eq_add (p) - L121
specialize mod_eq_add (x1+x3) - L122
specialize mod_eq_add (x5) - L123
specialize mod_eq_add (x+x2) - L124
specialize mod_eq_add (x4) - L125
apply mod_eq_add - L126
exact hprefix - L127
exact hlast
22Establish hshuffleL128–137
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
23Calculate and transport equalitiesL138–139
24Use earlier factsL140–140
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L140
apply add_comm
25Calculate and transport equalitiesL141–144
26Use earlier factsL145–145
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L145
apply add_assoc
27Calculate and transport equalitiesL146–146
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L146
symm
28Use earlier factsL147–147
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L147
apply add_assoc
29Calculate and transport equalitiesL148–151
30Use earlier factsL152–152
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L152
exact hcombined
Original exact command ledger · 152 lines
- 0001
intro p - 0002
intro ab - 0003
intro ac - 0004
intro bb - 0005
intro bc - 0006
intro cb - 0007
intro cc - 0008
induction L - 0009
intro A - 0010
intro B - 0011
intro C - 0012
intro ha - 0013
intro hb - 0014
intro hc - 0015
intro hpw - 0016
have hA : A=0 - 0017
specialize beta_sum_zero (ab) - 0018
specialize beta_sum_zero (ac) - 0019
specialize beta_sum_zero (A) - 0020
apply beta_sum_zero - 0021
exact ha - 0022
have hB : B=0 - 0023
specialize beta_sum_zero (bb) - 0024
specialize beta_sum_zero (bc) - 0025
specialize beta_sum_zero (B) - 0026
apply beta_sum_zero - 0027
exact hb - 0028
have hC : C=0 - 0029
specialize beta_sum_zero (cb) - 0030
specialize beta_sum_zero (cc) - 0031
specialize beta_sum_zero (C) - 0032
apply beta_sum_zero - 0033
exact hc - 0034
rewrite hA - 0035
rewrite hB - 0036
rewrite hC - 0037
exists 0 - 0038
exists 0 - 0039
simp - 0040
intro A - 0041
intro B - 0042
intro C - 0043
intro ha - 0044
intro hb - 0045
intro hc - 0046
intro hpw - 0047
have hda : exists a r. ((((exists ff_h_pfp_hda_entry. ff_h_pfp_hda_entry + S (a) = S ((S (L)) * ac)) /\ exists ff_q_pfp_hda_entry. ab = ff_q_pfp_hda_entry * S ((S (L)) * ac) + (a))) /\ (((exists fs_u_pfc_hda_prefix fs_v_pfc_hda_prefix. ((((exists fs_h_pfc_hda_prefix_body_start. fs_h_pfc_hda_prefix_body_start + S (0) = S ((S (0)) * fs_v_pfc_hda_prefix)) /\ exists fs_q_pfc_hda_prefix_body_start. fs_u_pfc_hda_prefix = fs_q_pfc_hda_prefix_body_start * S ((S (0)) * fs_v_pfc_hda_prefix) + (0))) /\ ((((exists fs_h_pfc_hda_prefix_body_terminal. fs_h_pfc_hda_prefix_body_terminal + S (r) = S ((S (L)) * fs_v_pfc_hda_prefix)) /\ exists fs_q_pfc_hda_prefix_body_terminal. fs_u_pfc_hda_prefix = fs_q_pfc_hda_prefix_body_terminal * S ((S (L)) * fs_v_pfc_hda_prefix) + (r))) /\ forall fs_i_pfc_hda_prefix_body_steps. (exists fs_lt_pfc_hda_prefix_body_steps_bound. fs_lt_pfc_hda_prefix_body_steps_bound + S fs_i_pfc_hda_prefix_body_steps = L) -> exists fs_a_pfc_hda_prefix_body_steps fs_r_pfc_hda_prefix_body_steps fs_s_pfc_hda_prefix_body_steps. ((((exists fs_h_pfc_hda_prefix_body_steps_summand. fs_h_pfc_hda_prefix_body_steps_summand + S (fs_a_pfc_hda_prefix_body_steps) = S ((S (fs_i_pfc_hda_prefix_body_steps)) * ac)) /\ exists fs_q_pfc_hda_prefix_body_steps_summand. ab = fs_q_pfc_hda_prefix_body_steps_summand * S ((S (fs_i_pfc_hda_prefix_body_steps)) * ac) + (fs_a_pfc_hda_prefix_body_steps))) /\ ((((exists fs_h_pfc_hda_prefix_body_steps_partial. fs_h_pfc_hda_prefix_body_steps_partial + S (fs_r_pfc_hda_prefix_body_steps) = S ((S (fs_i_pfc_hda_prefix_body_steps)) * fs_v_pfc_hda_prefix)) /\ exists fs_q_pfc_hda_prefix_body_steps_partial. fs_u_pfc_hda_prefix = fs_q_pfc_hda_prefix_body_steps_partial * S ((S (fs_i_pfc_hda_prefix_body_steps)) * fs_v_pfc_hda_prefix) + (fs_r_pfc_hda_prefix_body_steps))) /\ ((((exists fs_h_pfc_hda_prefix_body_steps_successor. fs_h_pfc_hda_prefix_body_steps_successor + S (fs_s_pfc_hda_prefix_body_steps) = S ((S (S fs_i_pfc_hda_prefix_body_steps)) * fs_v_pfc_hda_prefix)) /\ exists fs_q_pfc_hda_prefix_body_steps_successor. fs_u_pfc_hda_prefix = fs_q_pfc_hda_prefix_body_steps_successor * S ((S (S fs_i_pfc_hda_prefix_body_steps)) * fs_v_pfc_hda_prefix) + (fs_s_pfc_hda_prefix_body_steps))) /\ fs_s_pfc_hda_prefix_body_steps = fs_r_pfc_hda_prefix_body_steps + fs_a_pfc_hda_prefix_body_steps)))))) /\ ((A=r+a))))) - 0048
specialize beta_sum_succ_decompose (ab) - 0049
specialize beta_sum_succ_decompose (ac) - 0050
specialize beta_sum_succ_decompose (L) - 0051
specialize beta_sum_succ_decompose (A) - 0052
apply beta_sum_succ_decompose - 0053
exact ha - 0054
cases hda - 0055
cases hda_witness - 0056
cases hda_witness_witness - 0057
cases hda_witness_witness_right - 0058
have hdb : exists a r. ((((exists ff_h_pfp_hdb_entry. ff_h_pfp_hdb_entry + S (a) = S ((S (L)) * bc)) /\ exists ff_q_pfp_hdb_entry. bb = ff_q_pfp_hdb_entry * S ((S (L)) * bc) + (a))) /\ (((exists fs_u_pfc_hdb_prefix fs_v_pfc_hdb_prefix. ((((exists fs_h_pfc_hdb_prefix_body_start. fs_h_pfc_hdb_prefix_body_start + S (0) = S ((S (0)) * fs_v_pfc_hdb_prefix)) /\ exists fs_q_pfc_hdb_prefix_body_start. fs_u_pfc_hdb_prefix = fs_q_pfc_hdb_prefix_body_start * S ((S (0)) * fs_v_pfc_hdb_prefix) + (0))) /\ ((((exists fs_h_pfc_hdb_prefix_body_terminal. fs_h_pfc_hdb_prefix_body_terminal + S (r) = S ((S (L)) * fs_v_pfc_hdb_prefix)) /\ exists fs_q_pfc_hdb_prefix_body_terminal. fs_u_pfc_hdb_prefix = fs_q_pfc_hdb_prefix_body_terminal * S ((S (L)) * fs_v_pfc_hdb_prefix) + (r))) /\ forall fs_i_pfc_hdb_prefix_body_steps. (exists fs_lt_pfc_hdb_prefix_body_steps_bound. fs_lt_pfc_hdb_prefix_body_steps_bound + S fs_i_pfc_hdb_prefix_body_steps = L) -> exists fs_a_pfc_hdb_prefix_body_steps fs_r_pfc_hdb_prefix_body_steps fs_s_pfc_hdb_prefix_body_steps. ((((exists fs_h_pfc_hdb_prefix_body_steps_summand. fs_h_pfc_hdb_prefix_body_steps_summand + S (fs_a_pfc_hdb_prefix_body_steps) = S ((S (fs_i_pfc_hdb_prefix_body_steps)) * bc)) /\ exists fs_q_pfc_hdb_prefix_body_steps_summand. bb = fs_q_pfc_hdb_prefix_body_steps_summand * S ((S (fs_i_pfc_hdb_prefix_body_steps)) * bc) + (fs_a_pfc_hdb_prefix_body_steps))) /\ ((((exists fs_h_pfc_hdb_prefix_body_steps_partial. fs_h_pfc_hdb_prefix_body_steps_partial + S (fs_r_pfc_hdb_prefix_body_steps) = S ((S (fs_i_pfc_hdb_prefix_body_steps)) * fs_v_pfc_hdb_prefix)) /\ exists fs_q_pfc_hdb_prefix_body_steps_partial. fs_u_pfc_hdb_prefix = fs_q_pfc_hdb_prefix_body_steps_partial * S ((S (fs_i_pfc_hdb_prefix_body_steps)) * fs_v_pfc_hdb_prefix) + (fs_r_pfc_hdb_prefix_body_steps))) /\ ((((exists fs_h_pfc_hdb_prefix_body_steps_successor. fs_h_pfc_hdb_prefix_body_steps_successor + S (fs_s_pfc_hdb_prefix_body_steps) = S ((S (S fs_i_pfc_hdb_prefix_body_steps)) * fs_v_pfc_hdb_prefix)) /\ exists fs_q_pfc_hdb_prefix_body_steps_successor. fs_u_pfc_hdb_prefix = fs_q_pfc_hdb_prefix_body_steps_successor * S ((S (S fs_i_pfc_hdb_prefix_body_steps)) * fs_v_pfc_hdb_prefix) + (fs_s_pfc_hdb_prefix_body_steps))) /\ fs_s_pfc_hdb_prefix_body_steps = fs_r_pfc_hdb_prefix_body_steps + fs_a_pfc_hdb_prefix_body_steps)))))) /\ ((B=r+a))))) - 0059
specialize beta_sum_succ_decompose (bb) - 0060
specialize beta_sum_succ_decompose (bc) - 0061
specialize beta_sum_succ_decompose (L) - 0062
specialize beta_sum_succ_decompose (B) - 0063
apply beta_sum_succ_decompose - 0064
exact hb - 0065
cases hdb - 0066
cases hdb_witness - 0067
cases hdb_witness_witness - 0068
cases hdb_witness_witness_right - 0069
have hdc : exists a r. ((((exists ff_h_pfp_hdc_entry. ff_h_pfp_hdc_entry + S (a) = S ((S (L)) * cc)) /\ exists ff_q_pfp_hdc_entry. cb = ff_q_pfp_hdc_entry * S ((S (L)) * cc) + (a))) /\ (((exists fs_u_pfc_hdc_prefix fs_v_pfc_hdc_prefix. ((((exists fs_h_pfc_hdc_prefix_body_start. fs_h_pfc_hdc_prefix_body_start + S (0) = S ((S (0)) * fs_v_pfc_hdc_prefix)) /\ exists fs_q_pfc_hdc_prefix_body_start. fs_u_pfc_hdc_prefix = fs_q_pfc_hdc_prefix_body_start * S ((S (0)) * fs_v_pfc_hdc_prefix) + (0))) /\ ((((exists fs_h_pfc_hdc_prefix_body_terminal. fs_h_pfc_hdc_prefix_body_terminal + S (r) = S ((S (L)) * fs_v_pfc_hdc_prefix)) /\ exists fs_q_pfc_hdc_prefix_body_terminal. fs_u_pfc_hdc_prefix = fs_q_pfc_hdc_prefix_body_terminal * S ((S (L)) * fs_v_pfc_hdc_prefix) + (r))) /\ forall fs_i_pfc_hdc_prefix_body_steps. (exists fs_lt_pfc_hdc_prefix_body_steps_bound. fs_lt_pfc_hdc_prefix_body_steps_bound + S fs_i_pfc_hdc_prefix_body_steps = L) -> exists fs_a_pfc_hdc_prefix_body_steps fs_r_pfc_hdc_prefix_body_steps fs_s_pfc_hdc_prefix_body_steps. ((((exists fs_h_pfc_hdc_prefix_body_steps_summand. fs_h_pfc_hdc_prefix_body_steps_summand + S (fs_a_pfc_hdc_prefix_body_steps) = S ((S (fs_i_pfc_hdc_prefix_body_steps)) * cc)) /\ exists fs_q_pfc_hdc_prefix_body_steps_summand. cb = fs_q_pfc_hdc_prefix_body_steps_summand * S ((S (fs_i_pfc_hdc_prefix_body_steps)) * cc) + (fs_a_pfc_hdc_prefix_body_steps))) /\ ((((exists fs_h_pfc_hdc_prefix_body_steps_partial. fs_h_pfc_hdc_prefix_body_steps_partial + S (fs_r_pfc_hdc_prefix_body_steps) = S ((S (fs_i_pfc_hdc_prefix_body_steps)) * fs_v_pfc_hdc_prefix)) /\ exists fs_q_pfc_hdc_prefix_body_steps_partial. fs_u_pfc_hdc_prefix = fs_q_pfc_hdc_prefix_body_steps_partial * S ((S (fs_i_pfc_hdc_prefix_body_steps)) * fs_v_pfc_hdc_prefix) + (fs_r_pfc_hdc_prefix_body_steps))) /\ ((((exists fs_h_pfc_hdc_prefix_body_steps_successor. fs_h_pfc_hdc_prefix_body_steps_successor + S (fs_s_pfc_hdc_prefix_body_steps) = S ((S (S fs_i_pfc_hdc_prefix_body_steps)) * fs_v_pfc_hdc_prefix)) /\ exists fs_q_pfc_hdc_prefix_body_steps_successor. fs_u_pfc_hdc_prefix = fs_q_pfc_hdc_prefix_body_steps_successor * S ((S (S fs_i_pfc_hdc_prefix_body_steps)) * fs_v_pfc_hdc_prefix) + (fs_s_pfc_hdc_prefix_body_steps))) /\ fs_s_pfc_hdc_prefix_body_steps = fs_r_pfc_hdc_prefix_body_steps + fs_a_pfc_hdc_prefix_body_steps)))))) /\ ((C=r+a))))) - 0070
specialize beta_sum_succ_decompose (cb) - 0071
specialize beta_sum_succ_decompose (cc) - 0072
specialize beta_sum_succ_decompose (L) - 0073
specialize beta_sum_succ_decompose (C) - 0074
apply beta_sum_succ_decompose - 0075
exact hc - 0076
cases hdc - 0077
cases hdc_witness - 0078
cases hdc_witness_witness - 0079
cases hdc_witness_witness_right - 0080
have hprefix : exists pfa_offset_left_distribution_sum_prefix pfa_offset_right_distribution_sum_prefix. (x1+x3) + (p) * pfa_offset_left_distribution_sum_prefix = (x5) + (p) * pfa_offset_right_distribution_sum_prefix - 0081
specialize IH (x1) - 0082
specialize IH (x3) - 0083
specialize IH (x5) - 0084
apply IH - 0085
exact hda_witness_witness_right_left - 0086
exact hdb_witness_witness_right_left - 0087
exact hdc_witness_witness_right_left - 0088
intro i - 0089
intro a - 0090
intro b - 0091
intro c - 0092
intro hi - 0093
intro hea - 0094
intro heb - 0095
intro hec - 0096
specialize hpw (i) - 0097
specialize hpw (a) - 0098
specialize hpw (b) - 0099
specialize hpw (c) - 0100
apply hpw - 0101
specialize le_succ (S i) - 0102
specialize le_succ (L) - 0103
apply le_succ - 0104
exact hi - 0105
exact hea - 0106
exact heb - 0107
exact hec - 0108
have hlast : exists pfa_offset_left_distribution_sum_last pfa_offset_right_distribution_sum_last. (x+x2) + (p) * pfa_offset_left_distribution_sum_last = (x4) + (p) * pfa_offset_right_distribution_sum_last - 0109
specialize hpw (L) - 0110
specialize hpw (x) - 0111
specialize hpw (x2) - 0112
specialize hpw (x4) - 0113
apply hpw - 0114
specialize le_refl (S L) - 0115
apply le_refl - 0116
exact hda_witness_witness_left - 0117
exact hdb_witness_witness_left - 0118
exact hdc_witness_witness_left - 0119
have hcombined : exists pfa_offset_left_distribution_sum_combined pfa_offset_right_distribution_sum_combined. ((x1+x3)+(x+x2)) + (p) * pfa_offset_left_distribution_sum_combined = (x5+x4) + (p) * pfa_offset_right_distribution_sum_combined - 0120
specialize mod_eq_add (p) - 0121
specialize mod_eq_add (x1+x3) - 0122
specialize mod_eq_add (x5) - 0123
specialize mod_eq_add (x+x2) - 0124
specialize mod_eq_add (x4) - 0125
apply mod_eq_add - 0126
exact hprefix - 0127
exact hlast - 0128
have hshuffle : (x1+x)+(x3+x2)=(x1+x3)+(x+x2) - 0129
trans x1+(x+(x3+x2)) - 0130
apply add_assoc - 0131
trans x1+((x+x3)+x2) - 0132
congr - 0133
refl - 0134
symm - 0135
apply add_assoc - 0136
trans x1+((x3+x)+x2) - 0137
congr - 0138
refl - 0139
congr - 0140
apply add_comm - 0141
refl - 0142
trans x1+(x3+(x+x2)) - 0143
congr - 0144
refl - 0145
apply add_assoc - 0146
symm - 0147
apply add_assoc - 0148
rewrite hda_witness_witness_right_right - 0149
rewrite hdb_witness_witness_right_right - 0150
rewrite hdc_witness_witness_right_right - 0151
rewrite hshuffle - 0152
exact hcombined