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 k ab ac bb bc L u v. (exists fs_u_pfc_scalar_sum_source fs_v_pfc_scalar_sum_source. ((((exists fs_h_pfc_scalar_sum_source_body_start. fs_h_pfc_scalar_sum_source_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_sum_source)) /\ exists fs_q_pfc_scalar_sum_source_body_start. fs_u_pfc_scalar_sum_source = fs_q_pfc_scalar_sum_source_body_start * S ((S (0)) * fs_v_pfc_scalar_sum_source) + (0))) /\ ((((exists fs_h_pfc_scalar_sum_source_body_terminal. fs_h_pfc_scalar_sum_source_body_terminal + S (u) = S ((S (L)) * fs_v_pfc_scalar_sum_source)) /\ exists fs_q_pfc_scalar_sum_source_body_terminal. fs_u_pfc_scalar_sum_source = fs_q_pfc_scalar_sum_source_body_terminal * S ((S (L)) * fs_v_pfc_scalar_sum_source) + (u))) /\ forall fs_i_pfc_scalar_sum_source_body_steps. (exists fs_lt_pfc_scalar_sum_source_body_steps_bound. fs_lt_pfc_scalar_sum_source_body_steps_bound + S fs_i_pfc_scalar_sum_source_body_steps = L) -> exists fs_a_pfc_scalar_sum_source_body_steps fs_r_pfc_scalar_sum_source_body_steps fs_s_pfc_scalar_sum_source_body_steps. ((((exists fs_h_pfc_scalar_sum_source_body_steps_summand. fs_h_pfc_scalar_sum_source_body_steps_summand + S (fs_a_pfc_scalar_sum_source_body_steps) = S ((S (fs_i_pfc_scalar_sum_source_body_steps)) * ac)) /\ exists fs_q_pfc_scalar_sum_source_body_steps_summand. ab = fs_q_pfc_scalar_sum_source_body_steps_summand * S ((S (fs_i_pfc_scalar_sum_source_body_steps)) * ac) + (fs_a_pfc_scalar_sum_source_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_source_body_steps_partial. fs_h_pfc_scalar_sum_source_body_steps_partial + S (fs_r_pfc_scalar_sum_source_body_steps) = S ((S (fs_i_pfc_scalar_sum_source_body_steps)) * fs_v_pfc_scalar_sum_source)) /\ exists fs_q_pfc_scalar_sum_source_body_steps_partial. fs_u_pfc_scalar_sum_source = fs_q_pfc_scalar_sum_source_body_steps_partial * S ((S (fs_i_pfc_scalar_sum_source_body_steps)) * fs_v_pfc_scalar_sum_source) + (fs_r_pfc_scalar_sum_source_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_source_body_steps_successor. fs_h_pfc_scalar_sum_source_body_steps_successor + S (fs_s_pfc_scalar_sum_source_body_steps) = S ((S (S fs_i_pfc_scalar_sum_source_body_steps)) * fs_v_pfc_scalar_sum_source)) /\ exists fs_q_pfc_scalar_sum_source_body_steps_successor. fs_u_pfc_scalar_sum_source = fs_q_pfc_scalar_sum_source_body_steps_successor * S ((S (S fs_i_pfc_scalar_sum_source_body_steps)) * fs_v_pfc_scalar_sum_source) + (fs_s_pfc_scalar_sum_source_body_steps))) /\ fs_s_pfc_scalar_sum_source_body_steps = fs_r_pfc_scalar_sum_source_body_steps + fs_a_pfc_scalar_sum_source_body_steps)))))) -> (exists fs_u_pfc_scalar_sum_target fs_v_pfc_scalar_sum_target. ((((exists fs_h_pfc_scalar_sum_target_body_start. fs_h_pfc_scalar_sum_target_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_sum_target)) /\ exists fs_q_pfc_scalar_sum_target_body_start. fs_u_pfc_scalar_sum_target = fs_q_pfc_scalar_sum_target_body_start * S ((S (0)) * fs_v_pfc_scalar_sum_target) + (0))) /\ ((((exists fs_h_pfc_scalar_sum_target_body_terminal. fs_h_pfc_scalar_sum_target_body_terminal + S (v) = S ((S (L)) * fs_v_pfc_scalar_sum_target)) /\ exists fs_q_pfc_scalar_sum_target_body_terminal. fs_u_pfc_scalar_sum_target = fs_q_pfc_scalar_sum_target_body_terminal * S ((S (L)) * fs_v_pfc_scalar_sum_target) + (v))) /\ forall fs_i_pfc_scalar_sum_target_body_steps. (exists fs_lt_pfc_scalar_sum_target_body_steps_bound. fs_lt_pfc_scalar_sum_target_body_steps_bound + S fs_i_pfc_scalar_sum_target_body_steps = L) -> exists fs_a_pfc_scalar_sum_target_body_steps fs_r_pfc_scalar_sum_target_body_steps fs_s_pfc_scalar_sum_target_body_steps. ((((exists fs_h_pfc_scalar_sum_target_body_steps_summand. fs_h_pfc_scalar_sum_target_body_steps_summand + S (fs_a_pfc_scalar_sum_target_body_steps) = S ((S (fs_i_pfc_scalar_sum_target_body_steps)) * bc)) /\ exists fs_q_pfc_scalar_sum_target_body_steps_summand. bb = fs_q_pfc_scalar_sum_target_body_steps_summand * S ((S (fs_i_pfc_scalar_sum_target_body_steps)) * bc) + (fs_a_pfc_scalar_sum_target_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_target_body_steps_partial. fs_h_pfc_scalar_sum_target_body_steps_partial + S (fs_r_pfc_scalar_sum_target_body_steps) = S ((S (fs_i_pfc_scalar_sum_target_body_steps)) * fs_v_pfc_scalar_sum_target)) /\ exists fs_q_pfc_scalar_sum_target_body_steps_partial. fs_u_pfc_scalar_sum_target = fs_q_pfc_scalar_sum_target_body_steps_partial * S ((S (fs_i_pfc_scalar_sum_target_body_steps)) * fs_v_pfc_scalar_sum_target) + (fs_r_pfc_scalar_sum_target_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_target_body_steps_successor. fs_h_pfc_scalar_sum_target_body_steps_successor + S (fs_s_pfc_scalar_sum_target_body_steps) = S ((S (S fs_i_pfc_scalar_sum_target_body_steps)) * fs_v_pfc_scalar_sum_target)) /\ exists fs_q_pfc_scalar_sum_target_body_steps_successor. fs_u_pfc_scalar_sum_target = fs_q_pfc_scalar_sum_target_body_steps_successor * S ((S (S fs_i_pfc_scalar_sum_target_body_steps)) * fs_v_pfc_scalar_sum_target) + (fs_s_pfc_scalar_sum_target_body_steps))) /\ fs_s_pfc_scalar_sum_target_body_steps = fs_r_pfc_scalar_sum_target_body_steps + fs_a_pfc_scalar_sum_target_body_steps)))))) -> (forall pfscalar_index_scalar_sum_points pfscalar_source_scalar_sum_points pfscalar_target_scalar_sum_points. (exists pfa_gap_scalar_sum_pointsindex. pfa_gap_scalar_sum_pointsindex + S (pfscalar_index_scalar_sum_points) = (L)) -> (((exists ff_h_pfp_scalar_sum_pointssource. ff_h_pfp_scalar_sum_pointssource + S (pfscalar_source_scalar_sum_points) = S ((S (pfscalar_index_scalar_sum_points)) * ac)) /\ exists ff_q_pfp_scalar_sum_pointssource. ab = ff_q_pfp_scalar_sum_pointssource * S ((S (pfscalar_index_scalar_sum_points)) * ac) + (pfscalar_source_scalar_sum_points))) -> (((exists ff_h_pfp_scalar_sum_pointstarget. ff_h_pfp_scalar_sum_pointstarget + S (pfscalar_target_scalar_sum_points) = S ((S (pfscalar_index_scalar_sum_points)) * bc)) /\ exists ff_q_pfp_scalar_sum_pointstarget. bb = ff_q_pfp_scalar_sum_pointstarget * S ((S (pfscalar_index_scalar_sum_points)) * bc) + (pfscalar_target_scalar_sum_points))) -> (exists pfa_offset_left_scalar_sum_pointscongruence pfa_offset_right_scalar_sum_pointscongruence. ((k)*pfscalar_source_scalar_sum_points) + (p) * pfa_offset_left_scalar_sum_pointscongruence = (pfscalar_target_scalar_sum_points) + (p) * pfa_offset_right_scalar_sum_pointscongruence)) -> (exists pfa_offset_left_scalar_sum_result pfa_offset_right_scalar_sum_result. (k*u) + (p) * pfa_offset_left_scalar_sum_result = (v) + (p) * pfa_offset_right_scalar_sum_result)Constructive proof overview
Generated structural guide
Pointwise scalar congruences lift through two actual natural Sum traces at every modulus, including zero and the empty length; no new sum witness is assumed equal to a desired total.
The unchanged tactic script uses 6 declared prerequisites and contains 102 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · 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 mul_add 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–6
02Induction on LL7–12
03Establish hu0L13–18
04Establish hv0L19–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
05Construct an explicit witnessL27–28
06Calculate and transport equalitiesL29–29
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L29
simp
07Fix variables and assumptionsL30–34
08Establish hfirstL35–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
09Separate the logical casesL42–45
10Establish hsecondL46–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
11Separate the logical casesL53–56
12Establish hprefixL57–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L57
have hprefix : exists pfa_offset_left_scalar_sum_prefix_congruence pfa_offset_right_scalar_sum_prefix_congruence. (k*x1) + (p) * pfa_offset_left_scalar_sum_prefix_congruence = (x3) + (p) * pfa_offset_right_scalar_sum_prefix_congruence - L58
specialize IH (x1) - L59
specialize IH (x3) - L60
apply IH - L61
exact hfirst_witness_witness_right_left - L62
exact hsecond_witness_witness_right_left - L63
intro i - L64
intro a - L65
intro b - L66
intro hi
13Fix variables and assumptionsL67–68
14Use earlier factsL69–78
15Establish hlastL79–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hw.
- L79
have hlast : exists pfa_offset_left_scalar_sum_last_congruence pfa_offset_right_scalar_sum_last_congruence. (k*x) + (p) * pfa_offset_left_scalar_sum_last_congruence = (x2) + (p) * pfa_offset_right_scalar_sum_last_congruence - L80
specialize hw (L) - L81
specialize hw (x) - L82
specialize hw (x2) - L83
apply hw - L84
specialize le_refl (S L) - L85
apply le_refl - L86
exact hfirst_witness_witness_left - L87
exact hsecond_witness_witness_left
16Establish hcombinedL88–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L88
have hcombined : exists pfa_offset_left_scalar_sum_combined pfa_offset_right_scalar_sum_combined. (k*x1+k*x) + (p) * pfa_offset_left_scalar_sum_combined = (x3+x2) + (p) * pfa_offset_right_scalar_sum_combined - L89
specialize mod_eq_add (p) - L90
specialize mod_eq_add (k*x1) - L91
specialize mod_eq_add (x3) - L92
specialize mod_eq_add (k*x) - L93
specialize mod_eq_add (x2) - L94
apply mod_eq_add - L95
exact hprefix - L96
exact hlast - L97
rewrite hfirst_witness_witness_right_right
17Calculate and transport equalitiesL98–98
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L98
rewrite hsecond_witness_witness_right_right
Original exact command ledger · 102 lines
- 0001
intro p - 0002
intro k - 0003
intro ab - 0004
intro ac - 0005
intro bb - 0006
intro bc - 0007
induction L - 0008
intro u - 0009
intro v - 0010
intro hu - 0011
intro hv - 0012
intro hw - 0013
have hu0 : u=0 - 0014
specialize beta_sum_zero (ab) - 0015
specialize beta_sum_zero (ac) - 0016
specialize beta_sum_zero (u) - 0017
apply beta_sum_zero - 0018
exact hu - 0019
have hv0 : v=0 - 0020
specialize beta_sum_zero (bb) - 0021
specialize beta_sum_zero (bc) - 0022
specialize beta_sum_zero (v) - 0023
apply beta_sum_zero - 0024
exact hv - 0025
rewrite hu0 - 0026
rewrite hv0 - 0027
exists 0 - 0028
exists 0 - 0029
simp - 0030
intro u - 0031
intro v - 0032
intro hu - 0033
intro hv - 0034
intro hw - 0035
have hfirst : exists a n. ((((exists ff_h_pfp_scalar_sum_old_last. ff_h_pfp_scalar_sum_old_last + S (a) = S ((S (L)) * ac)) /\ exists ff_q_pfp_scalar_sum_old_last. ab = ff_q_pfp_scalar_sum_old_last * S ((S (L)) * ac) + (a))) /\ (((exists fs_u_pfc_scalar_sum_old_prefix fs_v_pfc_scalar_sum_old_prefix. ((((exists fs_h_pfc_scalar_sum_old_prefix_body_start. fs_h_pfc_scalar_sum_old_prefix_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_sum_old_prefix)) /\ exists fs_q_pfc_scalar_sum_old_prefix_body_start. fs_u_pfc_scalar_sum_old_prefix = fs_q_pfc_scalar_sum_old_prefix_body_start * S ((S (0)) * fs_v_pfc_scalar_sum_old_prefix) + (0))) /\ ((((exists fs_h_pfc_scalar_sum_old_prefix_body_terminal. fs_h_pfc_scalar_sum_old_prefix_body_terminal + S (n) = S ((S (L)) * fs_v_pfc_scalar_sum_old_prefix)) /\ exists fs_q_pfc_scalar_sum_old_prefix_body_terminal. fs_u_pfc_scalar_sum_old_prefix = fs_q_pfc_scalar_sum_old_prefix_body_terminal * S ((S (L)) * fs_v_pfc_scalar_sum_old_prefix) + (n))) /\ forall fs_i_pfc_scalar_sum_old_prefix_body_steps. (exists fs_lt_pfc_scalar_sum_old_prefix_body_steps_bound. fs_lt_pfc_scalar_sum_old_prefix_body_steps_bound + S fs_i_pfc_scalar_sum_old_prefix_body_steps = L) -> exists fs_a_pfc_scalar_sum_old_prefix_body_steps fs_r_pfc_scalar_sum_old_prefix_body_steps fs_s_pfc_scalar_sum_old_prefix_body_steps. ((((exists fs_h_pfc_scalar_sum_old_prefix_body_steps_summand. fs_h_pfc_scalar_sum_old_prefix_body_steps_summand + S (fs_a_pfc_scalar_sum_old_prefix_body_steps) = S ((S (fs_i_pfc_scalar_sum_old_prefix_body_steps)) * ac)) /\ exists fs_q_pfc_scalar_sum_old_prefix_body_steps_summand. ab = fs_q_pfc_scalar_sum_old_prefix_body_steps_summand * S ((S (fs_i_pfc_scalar_sum_old_prefix_body_steps)) * ac) + (fs_a_pfc_scalar_sum_old_prefix_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_old_prefix_body_steps_partial. fs_h_pfc_scalar_sum_old_prefix_body_steps_partial + S (fs_r_pfc_scalar_sum_old_prefix_body_steps) = S ((S (fs_i_pfc_scalar_sum_old_prefix_body_steps)) * fs_v_pfc_scalar_sum_old_prefix)) /\ exists fs_q_pfc_scalar_sum_old_prefix_body_steps_partial. fs_u_pfc_scalar_sum_old_prefix = fs_q_pfc_scalar_sum_old_prefix_body_steps_partial * S ((S (fs_i_pfc_scalar_sum_old_prefix_body_steps)) * fs_v_pfc_scalar_sum_old_prefix) + (fs_r_pfc_scalar_sum_old_prefix_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_old_prefix_body_steps_successor. fs_h_pfc_scalar_sum_old_prefix_body_steps_successor + S (fs_s_pfc_scalar_sum_old_prefix_body_steps) = S ((S (S fs_i_pfc_scalar_sum_old_prefix_body_steps)) * fs_v_pfc_scalar_sum_old_prefix)) /\ exists fs_q_pfc_scalar_sum_old_prefix_body_steps_successor. fs_u_pfc_scalar_sum_old_prefix = fs_q_pfc_scalar_sum_old_prefix_body_steps_successor * S ((S (S fs_i_pfc_scalar_sum_old_prefix_body_steps)) * fs_v_pfc_scalar_sum_old_prefix) + (fs_s_pfc_scalar_sum_old_prefix_body_steps))) /\ fs_s_pfc_scalar_sum_old_prefix_body_steps = fs_r_pfc_scalar_sum_old_prefix_body_steps + fs_a_pfc_scalar_sum_old_prefix_body_steps)))))) /\ ((u=n+a))))) - 0036
specialize beta_sum_succ_decompose (ab) - 0037
specialize beta_sum_succ_decompose (ac) - 0038
specialize beta_sum_succ_decompose (L) - 0039
specialize beta_sum_succ_decompose (u) - 0040
apply beta_sum_succ_decompose - 0041
exact hu - 0042
cases hfirst - 0043
cases hfirst_witness - 0044
cases hfirst_witness_witness - 0045
cases hfirst_witness_witness_right - 0046
have hsecond : exists a n. ((((exists ff_h_pfp_scalar_sum_new_last. ff_h_pfp_scalar_sum_new_last + S (a) = S ((S (L)) * bc)) /\ exists ff_q_pfp_scalar_sum_new_last. bb = ff_q_pfp_scalar_sum_new_last * S ((S (L)) * bc) + (a))) /\ (((exists fs_u_pfc_scalar_sum_new_prefix fs_v_pfc_scalar_sum_new_prefix. ((((exists fs_h_pfc_scalar_sum_new_prefix_body_start. fs_h_pfc_scalar_sum_new_prefix_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_sum_new_prefix)) /\ exists fs_q_pfc_scalar_sum_new_prefix_body_start. fs_u_pfc_scalar_sum_new_prefix = fs_q_pfc_scalar_sum_new_prefix_body_start * S ((S (0)) * fs_v_pfc_scalar_sum_new_prefix) + (0))) /\ ((((exists fs_h_pfc_scalar_sum_new_prefix_body_terminal. fs_h_pfc_scalar_sum_new_prefix_body_terminal + S (n) = S ((S (L)) * fs_v_pfc_scalar_sum_new_prefix)) /\ exists fs_q_pfc_scalar_sum_new_prefix_body_terminal. fs_u_pfc_scalar_sum_new_prefix = fs_q_pfc_scalar_sum_new_prefix_body_terminal * S ((S (L)) * fs_v_pfc_scalar_sum_new_prefix) + (n))) /\ forall fs_i_pfc_scalar_sum_new_prefix_body_steps. (exists fs_lt_pfc_scalar_sum_new_prefix_body_steps_bound. fs_lt_pfc_scalar_sum_new_prefix_body_steps_bound + S fs_i_pfc_scalar_sum_new_prefix_body_steps = L) -> exists fs_a_pfc_scalar_sum_new_prefix_body_steps fs_r_pfc_scalar_sum_new_prefix_body_steps fs_s_pfc_scalar_sum_new_prefix_body_steps. ((((exists fs_h_pfc_scalar_sum_new_prefix_body_steps_summand. fs_h_pfc_scalar_sum_new_prefix_body_steps_summand + S (fs_a_pfc_scalar_sum_new_prefix_body_steps) = S ((S (fs_i_pfc_scalar_sum_new_prefix_body_steps)) * bc)) /\ exists fs_q_pfc_scalar_sum_new_prefix_body_steps_summand. bb = fs_q_pfc_scalar_sum_new_prefix_body_steps_summand * S ((S (fs_i_pfc_scalar_sum_new_prefix_body_steps)) * bc) + (fs_a_pfc_scalar_sum_new_prefix_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_new_prefix_body_steps_partial. fs_h_pfc_scalar_sum_new_prefix_body_steps_partial + S (fs_r_pfc_scalar_sum_new_prefix_body_steps) = S ((S (fs_i_pfc_scalar_sum_new_prefix_body_steps)) * fs_v_pfc_scalar_sum_new_prefix)) /\ exists fs_q_pfc_scalar_sum_new_prefix_body_steps_partial. fs_u_pfc_scalar_sum_new_prefix = fs_q_pfc_scalar_sum_new_prefix_body_steps_partial * S ((S (fs_i_pfc_scalar_sum_new_prefix_body_steps)) * fs_v_pfc_scalar_sum_new_prefix) + (fs_r_pfc_scalar_sum_new_prefix_body_steps))) /\ ((((exists fs_h_pfc_scalar_sum_new_prefix_body_steps_successor. fs_h_pfc_scalar_sum_new_prefix_body_steps_successor + S (fs_s_pfc_scalar_sum_new_prefix_body_steps) = S ((S (S fs_i_pfc_scalar_sum_new_prefix_body_steps)) * fs_v_pfc_scalar_sum_new_prefix)) /\ exists fs_q_pfc_scalar_sum_new_prefix_body_steps_successor. fs_u_pfc_scalar_sum_new_prefix = fs_q_pfc_scalar_sum_new_prefix_body_steps_successor * S ((S (S fs_i_pfc_scalar_sum_new_prefix_body_steps)) * fs_v_pfc_scalar_sum_new_prefix) + (fs_s_pfc_scalar_sum_new_prefix_body_steps))) /\ fs_s_pfc_scalar_sum_new_prefix_body_steps = fs_r_pfc_scalar_sum_new_prefix_body_steps + fs_a_pfc_scalar_sum_new_prefix_body_steps)))))) /\ ((v=n+a))))) - 0047
specialize beta_sum_succ_decompose (bb) - 0048
specialize beta_sum_succ_decompose (bc) - 0049
specialize beta_sum_succ_decompose (L) - 0050
specialize beta_sum_succ_decompose (v) - 0051
apply beta_sum_succ_decompose - 0052
exact hv - 0053
cases hsecond - 0054
cases hsecond_witness - 0055
cases hsecond_witness_witness - 0056
cases hsecond_witness_witness_right - 0057
have hprefix : exists pfa_offset_left_scalar_sum_prefix_congruence pfa_offset_right_scalar_sum_prefix_congruence. (k*x1) + (p) * pfa_offset_left_scalar_sum_prefix_congruence = (x3) + (p) * pfa_offset_right_scalar_sum_prefix_congruence - 0058
specialize IH (x1) - 0059
specialize IH (x3) - 0060
apply IH - 0061
exact hfirst_witness_witness_right_left - 0062
exact hsecond_witness_witness_right_left - 0063
intro i - 0064
intro a - 0065
intro b - 0066
intro hi - 0067
intro ha - 0068
intro hb - 0069
specialize hw (i) - 0070
specialize hw (a) - 0071
specialize hw (b) - 0072
apply hw - 0073
specialize le_succ (S i) - 0074
specialize le_succ (L) - 0075
apply le_succ - 0076
exact hi - 0077
exact ha - 0078
exact hb - 0079
have hlast : exists pfa_offset_left_scalar_sum_last_congruence pfa_offset_right_scalar_sum_last_congruence. (k*x) + (p) * pfa_offset_left_scalar_sum_last_congruence = (x2) + (p) * pfa_offset_right_scalar_sum_last_congruence - 0080
specialize hw (L) - 0081
specialize hw (x) - 0082
specialize hw (x2) - 0083
apply hw - 0084
specialize le_refl (S L) - 0085
apply le_refl - 0086
exact hfirst_witness_witness_left - 0087
exact hsecond_witness_witness_left - 0088
have hcombined : exists pfa_offset_left_scalar_sum_combined pfa_offset_right_scalar_sum_combined. (k*x1+k*x) + (p) * pfa_offset_left_scalar_sum_combined = (x3+x2) + (p) * pfa_offset_right_scalar_sum_combined - 0089
specialize mod_eq_add (p) - 0090
specialize mod_eq_add (k*x1) - 0091
specialize mod_eq_add (x3) - 0092
specialize mod_eq_add (k*x) - 0093
specialize mod_eq_add (x2) - 0094
apply mod_eq_add - 0095
exact hprefix - 0096
exact hlast - 0097
rewrite hfirst_witness_witness_right_right - 0098
rewrite hsecond_witness_witness_right_right - 0099
have hdistribute : k*(x1+x)=k*x1+k*x - 0100
apply mul_add - 0101
rewrite hdistribute - 0102
exact hcombined