WS001C

signed_prefix_sum_scalar_multiply

Every actual prefix sum commutes with multiplication by an arbitrary canonical signed scalar, via genuine successor sums and distributivity; zero length and negative scalars are included.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

Operation tables contain actual beta-coded entries and compare represented signed values, not encodings. The strict sum window is i<l and the separately certified endpoint i=l is unused. Rectangular Fubini and full finite signed Möbius inversion are separate, now-admitted families.

Exact theorem in conservative defined notation

∀ l. ∀ a. ∀ F. ∀ G. ∀ b. ∀ c. ArithScale(a,F,G,l)SignedPrefixSum(F,l,b)SignedPrefixSum(G,l,c)SignedMul(a,b,c)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall l a F G b c. (((exists dst_positive_code_scalar_pointwiseinput_table dst_positive_scale_scalar_pointwiseinput_table dst_negative_code_scalar_pointwiseinput_table dst_negative_scale_scalar_pointwiseinput_table. (((F) = (((((dst_positive_code_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table)) * S ((dst_positive_code_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table)) + ((dst_positive_scale_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table))) + (((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) * S ((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) + ((dst_negative_scale_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)))) * S ((((dst_positive_code_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table)) * S ((dst_positive_code_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table)) + ((dst_positive_scale_scalar_pointwiseinput_table) + (dst_positive_scale_scalar_pointwiseinput_table))) + (((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) * S ((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) + ((dst_negative_scale_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)))) + ((((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) * S ((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) + ((dst_negative_scale_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table))) + (((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) * S ((dst_negative_code_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)) + ((dst_negative_scale_scalar_pointwiseinput_table) + (dst_negative_scale_scalar_pointwiseinput_table)))))) /\ (forall dst_index_scalar_pointwiseinput_table. (exists pvs_le_gap_scalar_pointwiseinput_tabledomain. pvs_le_gap_scalar_pointwiseinput_tabledomain + (dst_index_scalar_pointwiseinput_table) = (l)) -> exists dst_positive_scalar_pointwiseinput_table dst_negative_scalar_pointwiseinput_table dst_value_scalar_pointwiseinput_table. ((((exists ff_h_pvs_scalar_pointwiseinput_tableentrypositive. ff_h_pvs_scalar_pointwiseinput_tableentrypositive + S (dst_positive_scalar_pointwiseinput_table) = S ((S (dst_index_scalar_pointwiseinput_table)) * dst_positive_scale_scalar_pointwiseinput_table)) /\ exists ff_q_pvs_scalar_pointwiseinput_tableentrypositive. dst_positive_code_scalar_pointwiseinput_table = ff_q_pvs_scalar_pointwiseinput_tableentrypositive * S ((S (dst_index_scalar_pointwiseinput_table)) * dst_positive_scale_scalar_pointwiseinput_table) + (dst_positive_scalar_pointwiseinput_table))) /\ (((((exists ff_h_pvs_scalar_pointwiseinput_tableentrynegative. ff_h_pvs_scalar_pointwiseinput_tableentrynegative + S (dst_negative_scalar_pointwiseinput_table) = S ((S (dst_index_scalar_pointwiseinput_table)) * dst_negative_scale_scalar_pointwiseinput_table)) /\ exists ff_q_pvs_scalar_pointwiseinput_tableentrynegative. dst_negative_code_scalar_pointwiseinput_table = ff_q_pvs_scalar_pointwiseinput_tableentrynegative * S ((S (dst_index_scalar_pointwiseinput_table)) * dst_negative_scale_scalar_pointwiseinput_table) + (dst_negative_scalar_pointwiseinput_table))) /\ (exists ge_balance_positive_scalar_pointwiseinput_tableentryvalue ge_balance_negative_scalar_pointwiseinput_tableentryvalue. (((((dst_value_scalar_pointwiseinput_table) = 2 * (ge_balance_positive_scalar_pointwiseinput_tableentryvalue) /\ (ge_balance_negative_scalar_pointwiseinput_tableentryvalue) = 0) \/ exists ge_signed_half_scalar_pointwiseinput_tableentryvaluedecode. (((dst_value_scalar_pointwiseinput_table) = 2 * ge_signed_half_scalar_pointwiseinput_tableentryvaluedecode + 1 /\ (ge_balance_positive_scalar_pointwiseinput_tableentryvalue) = 0) /\ (ge_balance_negative_scalar_pointwiseinput_tableentryvalue) = S ge_signed_half_scalar_pointwiseinput_tableentryvaluedecode))) /\ ((dst_positive_scalar_pointwiseinput_table) + ge_balance_negative_scalar_pointwiseinput_tableentryvalue = (dst_negative_scalar_pointwiseinput_table) + ge_balance_positive_scalar_pointwiseinput_tableentryvalue))))))))) /\ (((exists dst_positive_code_scalar_pointwiseoutput_table dst_positive_scale_scalar_pointwiseoutput_table dst_negative_code_scalar_pointwiseoutput_table dst_negative_scale_scalar_pointwiseoutput_table. (((G) = (((((dst_positive_code_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table)) * S ((dst_positive_code_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table)) + ((dst_positive_scale_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table))) + (((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) * S ((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) + ((dst_negative_scale_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)))) * S ((((dst_positive_code_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table)) * S ((dst_positive_code_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table)) + ((dst_positive_scale_scalar_pointwiseoutput_table) + (dst_positive_scale_scalar_pointwiseoutput_table))) + (((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) * S ((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) + ((dst_negative_scale_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)))) + ((((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) * S ((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) + ((dst_negative_scale_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table))) + (((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) * S ((dst_negative_code_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)) + ((dst_negative_scale_scalar_pointwiseoutput_table) + (dst_negative_scale_scalar_pointwiseoutput_table)))))) /\ (forall dst_index_scalar_pointwiseoutput_table. (exists pvs_le_gap_scalar_pointwiseoutput_tabledomain. pvs_le_gap_scalar_pointwiseoutput_tabledomain + (dst_index_scalar_pointwiseoutput_table) = (l)) -> exists dst_positive_scalar_pointwiseoutput_table dst_negative_scalar_pointwiseoutput_table dst_value_scalar_pointwiseoutput_table. ((((exists ff_h_pvs_scalar_pointwiseoutput_tableentrypositive. ff_h_pvs_scalar_pointwiseoutput_tableentrypositive + S (dst_positive_scalar_pointwiseoutput_table) = S ((S (dst_index_scalar_pointwiseoutput_table)) * dst_positive_scale_scalar_pointwiseoutput_table)) /\ exists ff_q_pvs_scalar_pointwiseoutput_tableentrypositive. dst_positive_code_scalar_pointwiseoutput_table = ff_q_pvs_scalar_pointwiseoutput_tableentrypositive * S ((S (dst_index_scalar_pointwiseoutput_table)) * dst_positive_scale_scalar_pointwiseoutput_table) + (dst_positive_scalar_pointwiseoutput_table))) /\ (((((exists ff_h_pvs_scalar_pointwiseoutput_tableentrynegative. ff_h_pvs_scalar_pointwiseoutput_tableentrynegative + S (dst_negative_scalar_pointwiseoutput_table) = S ((S (dst_index_scalar_pointwiseoutput_table)) * dst_negative_scale_scalar_pointwiseoutput_table)) /\ exists ff_q_pvs_scalar_pointwiseoutput_tableentrynegative. dst_negative_code_scalar_pointwiseoutput_table = ff_q_pvs_scalar_pointwiseoutput_tableentrynegative * S ((S (dst_index_scalar_pointwiseoutput_table)) * dst_negative_scale_scalar_pointwiseoutput_table) + (dst_negative_scalar_pointwiseoutput_table))) /\ (exists ge_balance_positive_scalar_pointwiseoutput_tableentryvalue ge_balance_negative_scalar_pointwiseoutput_tableentryvalue. (((((dst_value_scalar_pointwiseoutput_table) = 2 * (ge_balance_positive_scalar_pointwiseoutput_tableentryvalue) /\ (ge_balance_negative_scalar_pointwiseoutput_tableentryvalue) = 0) \/ exists ge_signed_half_scalar_pointwiseoutput_tableentryvaluedecode. (((dst_value_scalar_pointwiseoutput_table) = 2 * ge_signed_half_scalar_pointwiseoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_scalar_pointwiseoutput_tableentryvalue) = 0) /\ (ge_balance_negative_scalar_pointwiseoutput_tableentryvalue) = S ge_signed_half_scalar_pointwiseoutput_tableentryvaluedecode))) /\ ((dst_positive_scalar_pointwiseoutput_table) + ge_balance_negative_scalar_pointwiseoutput_tableentryvalue = (dst_negative_scalar_pointwiseoutput_table) + ge_balance_positive_scalar_pointwiseoutput_tableentryvalue))))))))) /\ (forall sto_index_scalar_pointwiseentries. (exists pvs_gap_scalar_pointwiseentriesbound. pvs_gap_scalar_pointwiseentriesbound + S (sto_index_scalar_pointwiseentries) = (l)) -> exists sto_input_scalar_pointwiseentries sto_output_scalar_pointwiseentries. ((exists dst_positive_code_scalar_pointwiseentriesentryinput dst_positive_scale_scalar_pointwiseentriesentryinput dst_negative_code_scalar_pointwiseentriesentryinput dst_negative_scale_scalar_pointwiseentriesentryinput dst_positive_scalar_pointwiseentriesentryinput dst_negative_scalar_pointwiseentriesentryinput. (((F) = (((((dst_positive_code_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput)) * S ((dst_positive_code_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput)) + ((dst_positive_scale_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput))) + (((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) * S ((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) + ((dst_negative_scale_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)))) * S ((((dst_positive_code_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput)) * S ((dst_positive_code_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput)) + ((dst_positive_scale_scalar_pointwiseentriesentryinput) + (dst_positive_scale_scalar_pointwiseentriesentryinput))) + (((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) * S ((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) + ((dst_negative_scale_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)))) + ((((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) * S ((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) + ((dst_negative_scale_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput))) + (((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) * S ((dst_negative_code_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)) + ((dst_negative_scale_scalar_pointwiseentriesentryinput) + (dst_negative_scale_scalar_pointwiseentriesentryinput)))))) /\ (((((exists ff_h_pvs_scalar_pointwiseentriesentryinputpositive. ff_h_pvs_scalar_pointwiseentriesentryinputpositive + S (dst_positive_scalar_pointwiseentriesentryinput) = S ((S (sto_index_scalar_pointwiseentries)) * dst_positive_scale_scalar_pointwiseentriesentryinput)) /\ exists ff_q_pvs_scalar_pointwiseentriesentryinputpositive. dst_positive_code_scalar_pointwiseentriesentryinput = ff_q_pvs_scalar_pointwiseentriesentryinputpositive * S ((S (sto_index_scalar_pointwiseentries)) * dst_positive_scale_scalar_pointwiseentriesentryinput) + (dst_positive_scalar_pointwiseentriesentryinput))) /\ (((((exists ff_h_pvs_scalar_pointwiseentriesentryinputnegative. ff_h_pvs_scalar_pointwiseentriesentryinputnegative + S (dst_negative_scalar_pointwiseentriesentryinput) = S ((S (sto_index_scalar_pointwiseentries)) * dst_negative_scale_scalar_pointwiseentriesentryinput)) /\ exists ff_q_pvs_scalar_pointwiseentriesentryinputnegative. dst_negative_code_scalar_pointwiseentriesentryinput = ff_q_pvs_scalar_pointwiseentriesentryinputnegative * S ((S (sto_index_scalar_pointwiseentries)) * dst_negative_scale_scalar_pointwiseentriesentryinput) + (dst_negative_scalar_pointwiseentriesentryinput))) /\ (exists ge_balance_positive_scalar_pointwiseentriesentryinputvalue ge_balance_negative_scalar_pointwiseentriesentryinputvalue. (((((sto_input_scalar_pointwiseentries) = 2 * (ge_balance_positive_scalar_pointwiseentriesentryinputvalue) /\ (ge_balance_negative_scalar_pointwiseentriesentryinputvalue) = 0) \/ exists ge_signed_half_scalar_pointwiseentriesentryinputvaluedecode. (((sto_input_scalar_pointwiseentries) = 2 * ge_signed_half_scalar_pointwiseentriesentryinputvaluedecode + 1 /\ (ge_balance_positive_scalar_pointwiseentriesentryinputvalue) = 0) /\ (ge_balance_negative_scalar_pointwiseentriesentryinputvalue) = S ge_signed_half_scalar_pointwiseentriesentryinputvaluedecode))) /\ ((dst_positive_scalar_pointwiseentriesentryinput) + ge_balance_negative_scalar_pointwiseentriesentryinputvalue = (dst_negative_scalar_pointwiseentriesentryinput) + ge_balance_positive_scalar_pointwiseentriesentryinputvalue))))))))) /\ (((exists dst_positive_code_scalar_pointwiseentriesentryoutput dst_positive_scale_scalar_pointwiseentriesentryoutput dst_negative_code_scalar_pointwiseentriesentryoutput dst_negative_scale_scalar_pointwiseentriesentryoutput dst_positive_scalar_pointwiseentriesentryoutput dst_negative_scalar_pointwiseentriesentryoutput. (((G) = (((((dst_positive_code_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_positive_code_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput)) + ((dst_positive_scale_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput))) + (((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) + ((dst_negative_scale_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)))) * S ((((dst_positive_code_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_positive_code_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput)) + ((dst_positive_scale_scalar_pointwiseentriesentryoutput) + (dst_positive_scale_scalar_pointwiseentriesentryoutput))) + (((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) + ((dst_negative_scale_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)))) + ((((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) + ((dst_negative_scale_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput))) + (((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) * S ((dst_negative_code_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)) + ((dst_negative_scale_scalar_pointwiseentriesentryoutput) + (dst_negative_scale_scalar_pointwiseentriesentryoutput)))))) /\ (((((exists ff_h_pvs_scalar_pointwiseentriesentryoutputpositive. ff_h_pvs_scalar_pointwiseentriesentryoutputpositive + S (dst_positive_scalar_pointwiseentriesentryoutput) = S ((S (sto_index_scalar_pointwiseentries)) * dst_positive_scale_scalar_pointwiseentriesentryoutput)) /\ exists ff_q_pvs_scalar_pointwiseentriesentryoutputpositive. dst_positive_code_scalar_pointwiseentriesentryoutput = ff_q_pvs_scalar_pointwiseentriesentryoutputpositive * S ((S (sto_index_scalar_pointwiseentries)) * dst_positive_scale_scalar_pointwiseentriesentryoutput) + (dst_positive_scalar_pointwiseentriesentryoutput))) /\ (((((exists ff_h_pvs_scalar_pointwiseentriesentryoutputnegative. ff_h_pvs_scalar_pointwiseentriesentryoutputnegative + S (dst_negative_scalar_pointwiseentriesentryoutput) = S ((S (sto_index_scalar_pointwiseentries)) * dst_negative_scale_scalar_pointwiseentriesentryoutput)) /\ exists ff_q_pvs_scalar_pointwiseentriesentryoutputnegative. dst_negative_code_scalar_pointwiseentriesentryoutput = ff_q_pvs_scalar_pointwiseentriesentryoutputnegative * S ((S (sto_index_scalar_pointwiseentries)) * dst_negative_scale_scalar_pointwiseentriesentryoutput) + (dst_negative_scalar_pointwiseentriesentryoutput))) /\ (exists ge_balance_positive_scalar_pointwiseentriesentryoutputvalue ge_balance_negative_scalar_pointwiseentriesentryoutputvalue. (((((sto_output_scalar_pointwiseentries) = 2 * (ge_balance_positive_scalar_pointwiseentriesentryoutputvalue) /\ (ge_balance_negative_scalar_pointwiseentriesentryoutputvalue) = 0) \/ exists ge_signed_half_scalar_pointwiseentriesentryoutputvaluedecode. (((sto_output_scalar_pointwiseentries) = 2 * ge_signed_half_scalar_pointwiseentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_scalar_pointwiseentriesentryoutputvalue) = 0) /\ (ge_balance_negative_scalar_pointwiseentriesentryoutputvalue) = S ge_signed_half_scalar_pointwiseentriesentryoutputvaluedecode))) /\ ((dst_positive_scalar_pointwiseentriesentryoutput) + ge_balance_negative_scalar_pointwiseentriesentryoutputvalue = (dst_negative_scalar_pointwiseentriesentryoutput) + ge_balance_positive_scalar_pointwiseentriesentryoutputvalue))))))))) /\ (exists sto_ap_scalar_pointwiseentriesentryoperation sto_an_scalar_pointwiseentriesentryoperation sto_bp_scalar_pointwiseentriesentryoperation sto_bn_scalar_pointwiseentriesentryoperation sto_cp_scalar_pointwiseentriesentryoperation sto_cn_scalar_pointwiseentriesentryoperation. (((((a) = 2 * (sto_ap_scalar_pointwiseentriesentryoperation) /\ (sto_an_scalar_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_scalar_pointwiseentriesentryoperationleft. (((a) = 2 * ge_signed_half_scalar_pointwiseentriesentryoperationleft + 1 /\ (sto_ap_scalar_pointwiseentriesentryoperation) = 0) /\ (sto_an_scalar_pointwiseentriesentryoperation) = S ge_signed_half_scalar_pointwiseentriesentryoperationleft))) /\ ((((((sto_input_scalar_pointwiseentries) = 2 * (sto_bp_scalar_pointwiseentriesentryoperation) /\ (sto_bn_scalar_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_scalar_pointwiseentriesentryoperationright. (((sto_input_scalar_pointwiseentries) = 2 * ge_signed_half_scalar_pointwiseentriesentryoperationright + 1 /\ (sto_bp_scalar_pointwiseentriesentryoperation) = 0) /\ (sto_bn_scalar_pointwiseentriesentryoperation) = S ge_signed_half_scalar_pointwiseentriesentryoperationright))) /\ ((((((sto_output_scalar_pointwiseentries) = 2 * (sto_cp_scalar_pointwiseentriesentryoperation) /\ (sto_cn_scalar_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_scalar_pointwiseentriesentryoperationoutput. (((sto_output_scalar_pointwiseentries) = 2 * ge_signed_half_scalar_pointwiseentriesentryoperationoutput + 1 /\ (sto_cp_scalar_pointwiseentriesentryoperation) = 0) /\ (sto_cn_scalar_pointwiseentriesentryoperation) = S ge_signed_half_scalar_pointwiseentriesentryoperationoutput))) /\ ((sto_ap_scalar_pointwiseentriesentryoperation * sto_bp_scalar_pointwiseentriesentryoperation + sto_an_scalar_pointwiseentriesentryoperation * sto_bn_scalar_pointwiseentriesentryoperation) + sto_cn_scalar_pointwiseentriesentryoperation = (sto_ap_scalar_pointwiseentriesentryoperation * sto_bn_scalar_pointwiseentriesentryoperation + sto_an_scalar_pointwiseentriesentryoperation * sto_bp_scalar_pointwiseentriesentryoperation) + sto_cp_scalar_pointwiseentriesentryoperation))))))))))))))) -> (exists dst_positive_code_scalar_source_sum dst_positive_scale_scalar_source_sum dst_negative_code_scalar_source_sum dst_negative_scale_scalar_source_sum dst_positive_sum_scalar_source_sum dst_negative_sum_scalar_source_sum. (((F) = (((((dst_positive_code_scalar_source_sum) + (dst_positive_scale_scalar_source_sum)) * S ((dst_positive_code_scalar_source_sum) + (dst_positive_scale_scalar_source_sum)) + ((dst_positive_scale_scalar_source_sum) + (dst_positive_scale_scalar_source_sum))) + (((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) * S ((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) + ((dst_negative_scale_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)))) * S ((((dst_positive_code_scalar_source_sum) + (dst_positive_scale_scalar_source_sum)) * S ((dst_positive_code_scalar_source_sum) + (dst_positive_scale_scalar_source_sum)) + ((dst_positive_scale_scalar_source_sum) + (dst_positive_scale_scalar_source_sum))) + (((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) * S ((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) + ((dst_negative_scale_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)))) + ((((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) * S ((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) + ((dst_negative_scale_scalar_source_sum) + (dst_negative_scale_scalar_source_sum))) + (((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) * S ((dst_negative_code_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)) + ((dst_negative_scale_scalar_source_sum) + (dst_negative_scale_scalar_source_sum)))))) /\ (((exists fs_u_dst_scalar_source_sumpositive fs_v_dst_scalar_source_sumpositive. ((((exists fs_h_dst_scalar_source_sumpositive_body_start. fs_h_dst_scalar_source_sumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_source_sumpositive)) /\ exists fs_q_dst_scalar_source_sumpositive_body_start. fs_u_dst_scalar_source_sumpositive = fs_q_dst_scalar_source_sumpositive_body_start * S ((S (0)) * fs_v_dst_scalar_source_sumpositive) + (0))) /\ ((((exists fs_h_dst_scalar_source_sumpositive_body_terminal. fs_h_dst_scalar_source_sumpositive_body_terminal + S (dst_positive_sum_scalar_source_sum) = S ((S (l)) * fs_v_dst_scalar_source_sumpositive)) /\ exists fs_q_dst_scalar_source_sumpositive_body_terminal. fs_u_dst_scalar_source_sumpositive = fs_q_dst_scalar_source_sumpositive_body_terminal * S ((S (l)) * fs_v_dst_scalar_source_sumpositive) + (dst_positive_sum_scalar_source_sum))) /\ forall fs_i_dst_scalar_source_sumpositive_body_steps. (exists fs_lt_dst_scalar_source_sumpositive_body_steps_bound. fs_lt_dst_scalar_source_sumpositive_body_steps_bound + S fs_i_dst_scalar_source_sumpositive_body_steps = l) -> exists fs_a_dst_scalar_source_sumpositive_body_steps fs_r_dst_scalar_source_sumpositive_body_steps fs_s_dst_scalar_source_sumpositive_body_steps. ((((exists fs_h_dst_scalar_source_sumpositive_body_steps_summand. fs_h_dst_scalar_source_sumpositive_body_steps_summand + S (fs_a_dst_scalar_source_sumpositive_body_steps) = S ((S (fs_i_dst_scalar_source_sumpositive_body_steps)) * dst_positive_scale_scalar_source_sum)) /\ exists fs_q_dst_scalar_source_sumpositive_body_steps_summand. dst_positive_code_scalar_source_sum = fs_q_dst_scalar_source_sumpositive_body_steps_summand * S ((S (fs_i_dst_scalar_source_sumpositive_body_steps)) * dst_positive_scale_scalar_source_sum) + (fs_a_dst_scalar_source_sumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_source_sumpositive_body_steps_partial. fs_h_dst_scalar_source_sumpositive_body_steps_partial + S (fs_r_dst_scalar_source_sumpositive_body_steps) = S ((S (fs_i_dst_scalar_source_sumpositive_body_steps)) * fs_v_dst_scalar_source_sumpositive)) /\ exists fs_q_dst_scalar_source_sumpositive_body_steps_partial. fs_u_dst_scalar_source_sumpositive = fs_q_dst_scalar_source_sumpositive_body_steps_partial * S ((S (fs_i_dst_scalar_source_sumpositive_body_steps)) * fs_v_dst_scalar_source_sumpositive) + (fs_r_dst_scalar_source_sumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_source_sumpositive_body_steps_successor. fs_h_dst_scalar_source_sumpositive_body_steps_successor + S (fs_s_dst_scalar_source_sumpositive_body_steps) = S ((S (S fs_i_dst_scalar_source_sumpositive_body_steps)) * fs_v_dst_scalar_source_sumpositive)) /\ exists fs_q_dst_scalar_source_sumpositive_body_steps_successor. fs_u_dst_scalar_source_sumpositive = fs_q_dst_scalar_source_sumpositive_body_steps_successor * S ((S (S fs_i_dst_scalar_source_sumpositive_body_steps)) * fs_v_dst_scalar_source_sumpositive) + (fs_s_dst_scalar_source_sumpositive_body_steps))) /\ fs_s_dst_scalar_source_sumpositive_body_steps = fs_r_dst_scalar_source_sumpositive_body_steps + fs_a_dst_scalar_source_sumpositive_body_steps)))))) /\ (((exists fs_u_dst_scalar_source_sumnegative fs_v_dst_scalar_source_sumnegative. ((((exists fs_h_dst_scalar_source_sumnegative_body_start. fs_h_dst_scalar_source_sumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_source_sumnegative)) /\ exists fs_q_dst_scalar_source_sumnegative_body_start. fs_u_dst_scalar_source_sumnegative = fs_q_dst_scalar_source_sumnegative_body_start * S ((S (0)) * fs_v_dst_scalar_source_sumnegative) + (0))) /\ ((((exists fs_h_dst_scalar_source_sumnegative_body_terminal. fs_h_dst_scalar_source_sumnegative_body_terminal + S (dst_negative_sum_scalar_source_sum) = S ((S (l)) * fs_v_dst_scalar_source_sumnegative)) /\ exists fs_q_dst_scalar_source_sumnegative_body_terminal. fs_u_dst_scalar_source_sumnegative = fs_q_dst_scalar_source_sumnegative_body_terminal * S ((S (l)) * fs_v_dst_scalar_source_sumnegative) + (dst_negative_sum_scalar_source_sum))) /\ forall fs_i_dst_scalar_source_sumnegative_body_steps. (exists fs_lt_dst_scalar_source_sumnegative_body_steps_bound. fs_lt_dst_scalar_source_sumnegative_body_steps_bound + S fs_i_dst_scalar_source_sumnegative_body_steps = l) -> exists fs_a_dst_scalar_source_sumnegative_body_steps fs_r_dst_scalar_source_sumnegative_body_steps fs_s_dst_scalar_source_sumnegative_body_steps. ((((exists fs_h_dst_scalar_source_sumnegative_body_steps_summand. fs_h_dst_scalar_source_sumnegative_body_steps_summand + S (fs_a_dst_scalar_source_sumnegative_body_steps) = S ((S (fs_i_dst_scalar_source_sumnegative_body_steps)) * dst_negative_scale_scalar_source_sum)) /\ exists fs_q_dst_scalar_source_sumnegative_body_steps_summand. dst_negative_code_scalar_source_sum = fs_q_dst_scalar_source_sumnegative_body_steps_summand * S ((S (fs_i_dst_scalar_source_sumnegative_body_steps)) * dst_negative_scale_scalar_source_sum) + (fs_a_dst_scalar_source_sumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_source_sumnegative_body_steps_partial. fs_h_dst_scalar_source_sumnegative_body_steps_partial + S (fs_r_dst_scalar_source_sumnegative_body_steps) = S ((S (fs_i_dst_scalar_source_sumnegative_body_steps)) * fs_v_dst_scalar_source_sumnegative)) /\ exists fs_q_dst_scalar_source_sumnegative_body_steps_partial. fs_u_dst_scalar_source_sumnegative = fs_q_dst_scalar_source_sumnegative_body_steps_partial * S ((S (fs_i_dst_scalar_source_sumnegative_body_steps)) * fs_v_dst_scalar_source_sumnegative) + (fs_r_dst_scalar_source_sumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_source_sumnegative_body_steps_successor. fs_h_dst_scalar_source_sumnegative_body_steps_successor + S (fs_s_dst_scalar_source_sumnegative_body_steps) = S ((S (S fs_i_dst_scalar_source_sumnegative_body_steps)) * fs_v_dst_scalar_source_sumnegative)) /\ exists fs_q_dst_scalar_source_sumnegative_body_steps_successor. fs_u_dst_scalar_source_sumnegative = fs_q_dst_scalar_source_sumnegative_body_steps_successor * S ((S (S fs_i_dst_scalar_source_sumnegative_body_steps)) * fs_v_dst_scalar_source_sumnegative) + (fs_s_dst_scalar_source_sumnegative_body_steps))) /\ fs_s_dst_scalar_source_sumnegative_body_steps = fs_r_dst_scalar_source_sumnegative_body_steps + fs_a_dst_scalar_source_sumnegative_body_steps)))))) /\ (exists ge_balance_positive_scalar_source_sumresult ge_balance_negative_scalar_source_sumresult. (((((b) = 2 * (ge_balance_positive_scalar_source_sumresult) /\ (ge_balance_negative_scalar_source_sumresult) = 0) \/ exists ge_signed_half_scalar_source_sumresultdecode. (((b) = 2 * ge_signed_half_scalar_source_sumresultdecode + 1 /\ (ge_balance_positive_scalar_source_sumresult) = 0) /\ (ge_balance_negative_scalar_source_sumresult) = S ge_signed_half_scalar_source_sumresultdecode))) /\ ((dst_positive_sum_scalar_source_sum) + ge_balance_negative_scalar_source_sumresult = (dst_negative_sum_scalar_source_sum) + ge_balance_positive_scalar_source_sumresult))))))))) -> (exists dst_positive_code_scalar_output_sum dst_positive_scale_scalar_output_sum dst_negative_code_scalar_output_sum dst_negative_scale_scalar_output_sum dst_positive_sum_scalar_output_sum dst_negative_sum_scalar_output_sum. (((G) = (((((dst_positive_code_scalar_output_sum) + (dst_positive_scale_scalar_output_sum)) * S ((dst_positive_code_scalar_output_sum) + (dst_positive_scale_scalar_output_sum)) + ((dst_positive_scale_scalar_output_sum) + (dst_positive_scale_scalar_output_sum))) + (((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) * S ((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) + ((dst_negative_scale_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)))) * S ((((dst_positive_code_scalar_output_sum) + (dst_positive_scale_scalar_output_sum)) * S ((dst_positive_code_scalar_output_sum) + (dst_positive_scale_scalar_output_sum)) + ((dst_positive_scale_scalar_output_sum) + (dst_positive_scale_scalar_output_sum))) + (((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) * S ((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) + ((dst_negative_scale_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)))) + ((((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) * S ((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) + ((dst_negative_scale_scalar_output_sum) + (dst_negative_scale_scalar_output_sum))) + (((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) * S ((dst_negative_code_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)) + ((dst_negative_scale_scalar_output_sum) + (dst_negative_scale_scalar_output_sum)))))) /\ (((exists fs_u_dst_scalar_output_sumpositive fs_v_dst_scalar_output_sumpositive. ((((exists fs_h_dst_scalar_output_sumpositive_body_start. fs_h_dst_scalar_output_sumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_output_sumpositive)) /\ exists fs_q_dst_scalar_output_sumpositive_body_start. fs_u_dst_scalar_output_sumpositive = fs_q_dst_scalar_output_sumpositive_body_start * S ((S (0)) * fs_v_dst_scalar_output_sumpositive) + (0))) /\ ((((exists fs_h_dst_scalar_output_sumpositive_body_terminal. fs_h_dst_scalar_output_sumpositive_body_terminal + S (dst_positive_sum_scalar_output_sum) = S ((S (l)) * fs_v_dst_scalar_output_sumpositive)) /\ exists fs_q_dst_scalar_output_sumpositive_body_terminal. fs_u_dst_scalar_output_sumpositive = fs_q_dst_scalar_output_sumpositive_body_terminal * S ((S (l)) * fs_v_dst_scalar_output_sumpositive) + (dst_positive_sum_scalar_output_sum))) /\ forall fs_i_dst_scalar_output_sumpositive_body_steps. (exists fs_lt_dst_scalar_output_sumpositive_body_steps_bound. fs_lt_dst_scalar_output_sumpositive_body_steps_bound + S fs_i_dst_scalar_output_sumpositive_body_steps = l) -> exists fs_a_dst_scalar_output_sumpositive_body_steps fs_r_dst_scalar_output_sumpositive_body_steps fs_s_dst_scalar_output_sumpositive_body_steps. ((((exists fs_h_dst_scalar_output_sumpositive_body_steps_summand. fs_h_dst_scalar_output_sumpositive_body_steps_summand + S (fs_a_dst_scalar_output_sumpositive_body_steps) = S ((S (fs_i_dst_scalar_output_sumpositive_body_steps)) * dst_positive_scale_scalar_output_sum)) /\ exists fs_q_dst_scalar_output_sumpositive_body_steps_summand. dst_positive_code_scalar_output_sum = fs_q_dst_scalar_output_sumpositive_body_steps_summand * S ((S (fs_i_dst_scalar_output_sumpositive_body_steps)) * dst_positive_scale_scalar_output_sum) + (fs_a_dst_scalar_output_sumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_output_sumpositive_body_steps_partial. fs_h_dst_scalar_output_sumpositive_body_steps_partial + S (fs_r_dst_scalar_output_sumpositive_body_steps) = S ((S (fs_i_dst_scalar_output_sumpositive_body_steps)) * fs_v_dst_scalar_output_sumpositive)) /\ exists fs_q_dst_scalar_output_sumpositive_body_steps_partial. fs_u_dst_scalar_output_sumpositive = fs_q_dst_scalar_output_sumpositive_body_steps_partial * S ((S (fs_i_dst_scalar_output_sumpositive_body_steps)) * fs_v_dst_scalar_output_sumpositive) + (fs_r_dst_scalar_output_sumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_output_sumpositive_body_steps_successor. fs_h_dst_scalar_output_sumpositive_body_steps_successor + S (fs_s_dst_scalar_output_sumpositive_body_steps) = S ((S (S fs_i_dst_scalar_output_sumpositive_body_steps)) * fs_v_dst_scalar_output_sumpositive)) /\ exists fs_q_dst_scalar_output_sumpositive_body_steps_successor. fs_u_dst_scalar_output_sumpositive = fs_q_dst_scalar_output_sumpositive_body_steps_successor * S ((S (S fs_i_dst_scalar_output_sumpositive_body_steps)) * fs_v_dst_scalar_output_sumpositive) + (fs_s_dst_scalar_output_sumpositive_body_steps))) /\ fs_s_dst_scalar_output_sumpositive_body_steps = fs_r_dst_scalar_output_sumpositive_body_steps + fs_a_dst_scalar_output_sumpositive_body_steps)))))) /\ (((exists fs_u_dst_scalar_output_sumnegative fs_v_dst_scalar_output_sumnegative. ((((exists fs_h_dst_scalar_output_sumnegative_body_start. fs_h_dst_scalar_output_sumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_output_sumnegative)) /\ exists fs_q_dst_scalar_output_sumnegative_body_start. fs_u_dst_scalar_output_sumnegative = fs_q_dst_scalar_output_sumnegative_body_start * S ((S (0)) * fs_v_dst_scalar_output_sumnegative) + (0))) /\ ((((exists fs_h_dst_scalar_output_sumnegative_body_terminal. fs_h_dst_scalar_output_sumnegative_body_terminal + S (dst_negative_sum_scalar_output_sum) = S ((S (l)) * fs_v_dst_scalar_output_sumnegative)) /\ exists fs_q_dst_scalar_output_sumnegative_body_terminal. fs_u_dst_scalar_output_sumnegative = fs_q_dst_scalar_output_sumnegative_body_terminal * S ((S (l)) * fs_v_dst_scalar_output_sumnegative) + (dst_negative_sum_scalar_output_sum))) /\ forall fs_i_dst_scalar_output_sumnegative_body_steps. (exists fs_lt_dst_scalar_output_sumnegative_body_steps_bound. fs_lt_dst_scalar_output_sumnegative_body_steps_bound + S fs_i_dst_scalar_output_sumnegative_body_steps = l) -> exists fs_a_dst_scalar_output_sumnegative_body_steps fs_r_dst_scalar_output_sumnegative_body_steps fs_s_dst_scalar_output_sumnegative_body_steps. ((((exists fs_h_dst_scalar_output_sumnegative_body_steps_summand. fs_h_dst_scalar_output_sumnegative_body_steps_summand + S (fs_a_dst_scalar_output_sumnegative_body_steps) = S ((S (fs_i_dst_scalar_output_sumnegative_body_steps)) * dst_negative_scale_scalar_output_sum)) /\ exists fs_q_dst_scalar_output_sumnegative_body_steps_summand. dst_negative_code_scalar_output_sum = fs_q_dst_scalar_output_sumnegative_body_steps_summand * S ((S (fs_i_dst_scalar_output_sumnegative_body_steps)) * dst_negative_scale_scalar_output_sum) + (fs_a_dst_scalar_output_sumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_output_sumnegative_body_steps_partial. fs_h_dst_scalar_output_sumnegative_body_steps_partial + S (fs_r_dst_scalar_output_sumnegative_body_steps) = S ((S (fs_i_dst_scalar_output_sumnegative_body_steps)) * fs_v_dst_scalar_output_sumnegative)) /\ exists fs_q_dst_scalar_output_sumnegative_body_steps_partial. fs_u_dst_scalar_output_sumnegative = fs_q_dst_scalar_output_sumnegative_body_steps_partial * S ((S (fs_i_dst_scalar_output_sumnegative_body_steps)) * fs_v_dst_scalar_output_sumnegative) + (fs_r_dst_scalar_output_sumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_output_sumnegative_body_steps_successor. fs_h_dst_scalar_output_sumnegative_body_steps_successor + S (fs_s_dst_scalar_output_sumnegative_body_steps) = S ((S (S fs_i_dst_scalar_output_sumnegative_body_steps)) * fs_v_dst_scalar_output_sumnegative)) /\ exists fs_q_dst_scalar_output_sumnegative_body_steps_successor. fs_u_dst_scalar_output_sumnegative = fs_q_dst_scalar_output_sumnegative_body_steps_successor * S ((S (S fs_i_dst_scalar_output_sumnegative_body_steps)) * fs_v_dst_scalar_output_sumnegative) + (fs_s_dst_scalar_output_sumnegative_body_steps))) /\ fs_s_dst_scalar_output_sumnegative_body_steps = fs_r_dst_scalar_output_sumnegative_body_steps + fs_a_dst_scalar_output_sumnegative_body_steps)))))) /\ (exists ge_balance_positive_scalar_output_sumresult ge_balance_negative_scalar_output_sumresult. (((((c) = 2 * (ge_balance_positive_scalar_output_sumresult) /\ (ge_balance_negative_scalar_output_sumresult) = 0) \/ exists ge_signed_half_scalar_output_sumresultdecode. (((c) = 2 * ge_signed_half_scalar_output_sumresultdecode + 1 /\ (ge_balance_positive_scalar_output_sumresult) = 0) /\ (ge_balance_negative_scalar_output_sumresult) = S ge_signed_half_scalar_output_sumresultdecode))) /\ ((dst_positive_sum_scalar_output_sum) + ge_balance_negative_scalar_output_sumresult = (dst_negative_sum_scalar_output_sum) + ge_balance_positive_scalar_output_sumresult))))))))) -> (exists sto_ap_scalar_sum_result sto_an_scalar_sum_result sto_bp_scalar_sum_result sto_bn_scalar_sum_result sto_cp_scalar_sum_result sto_cn_scalar_sum_result. (((((a) = 2 * (sto_ap_scalar_sum_result) /\ (sto_an_scalar_sum_result) = 0) \/ exists ge_signed_half_scalar_sum_resultleft. (((a) = 2 * ge_signed_half_scalar_sum_resultleft + 1 /\ (sto_ap_scalar_sum_result) = 0) /\ (sto_an_scalar_sum_result) = S ge_signed_half_scalar_sum_resultleft))) /\ ((((((b) = 2 * (sto_bp_scalar_sum_result) /\ (sto_bn_scalar_sum_result) = 0) \/ exists ge_signed_half_scalar_sum_resultright. (((b) = 2 * ge_signed_half_scalar_sum_resultright + 1 /\ (sto_bp_scalar_sum_result) = 0) /\ (sto_bn_scalar_sum_result) = S ge_signed_half_scalar_sum_resultright))) /\ ((((((c) = 2 * (sto_cp_scalar_sum_result) /\ (sto_cn_scalar_sum_result) = 0) \/ exists ge_signed_half_scalar_sum_resultoutput. (((c) = 2 * ge_signed_half_scalar_sum_resultoutput + 1 /\ (sto_cp_scalar_sum_result) = 0) /\ (sto_cn_scalar_sum_result) = S ge_signed_half_scalar_sum_resultoutput))) /\ ((sto_ap_scalar_sum_result * sto_bp_scalar_sum_result + sto_an_scalar_sum_result * sto_bn_scalar_sum_result) + sto_cn_scalar_sum_result = (sto_ap_scalar_sum_result * sto_bn_scalar_sum_result + sto_an_scalar_sum_result * sto_bp_scalar_sum_result) + sto_cp_scalar_sum_result)))))))

Complete tactic proof in conservative notation

All 94 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

94 script commands · 14 reading checkpoints · 6 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (3)
01Induction on lL1–9

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L1
    induction l
  2. L2
    intro a
  3. L3
    intro F
  4. L4
    intro G
  5. L5
    intro b
  6. L6
    intro c
  7. L7
    intro hpoint
  8. L8
    intro hF
  9. L9
    intro hG
02Establish hbL10–14

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum empty value.

  1. L10
    have hb : b = 0
  2. L11
    specialize divisor_signed_sum_empty_value (F)
  3. L12
    specialize divisor_signed_sum_empty_value (b)
  4. L13
    apply divisor_signed_sum_empty_value
  5. L14
    exact hF
03Establish hcL15–24

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum empty value.

  1. L15
    have hc : c = 0
  2. L16
    specialize divisor_signed_sum_empty_value (G)
  3. L17
    specialize divisor_signed_sum_empty_value (c)
  4. L18
    apply divisor_signed_sum_empty_value
  5. L19
    exact hG
  6. L20
    rewrite hb
  7. L21
    rewrite hb
  8. L22
    rewrite hc
  9. L23
    rewrite hc
  10. L24
    specialize signed_mul_zero_right (a)
04Use earlier factsL25–25

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L25
    apply signed_mul_zero_right
05Fix variables and assumptionsL26–33

Work with arbitrary variables or the premises of the current implication.

  1. L26
    intro a
  2. L27
    intro F
  3. L28
    intro G
  4. L29
    intro b
  5. L30
    intro c
  6. L31
    intro hpoint
  7. L32
    intro hF
  8. L33
    intro hG
06Establish hdFL34–39

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum successor decompose.

  1. L34
    have hdF : ∃ ssl_prefix_scalar_step_F. ∃ ssl_entry_scalar_step_F. SignedPrefixSum(F,l,ssl_prefix_scalar_step_F) ∧ (ArithAt(F,l,ssl_entry_scalar_step_F) ∧ SignedAdd(ssl_prefix_scalar_step_F,ssl_entry_scalar_step_F,b))Definitions: SignedPrefixSum(F,l,ssl_prefix_scalar_step_F)ArithAt(F,l,ssl_entry_scalar_step_F)SignedAdd(ssl_prefix_scalar_step_F,ssl_entry_scalar_step_F,b)Original native command in the exact edition
  2. L35
    specialize divisor_signed_sum_successor_decompose (F)
  3. L36
    specialize divisor_signed_sum_successor_decompose (l)
  4. L37
    specialize divisor_signed_sum_successor_decompose (b)
  5. L38
    apply divisor_signed_sum_successor_decompose
  6. L39
    exact hF
07Separate the logical casesL40–43

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L40
    cases hdF
  2. L41
    cases hdF_witness
  3. L42
    cases hdF_witness_witness
  4. L43
    cases hdF_witness_witness_right
08Establish hdGL44–49

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum successor decompose.

  1. L44
    have hdG : ∃ ssl_prefix_scalar_step_G. ∃ ssl_entry_scalar_step_G. SignedPrefixSum(G,l,ssl_prefix_scalar_step_G) ∧ (ArithAt(G,l,ssl_entry_scalar_step_G) ∧ SignedAdd(ssl_prefix_scalar_step_G,ssl_entry_scalar_step_G,c))Definitions: SignedPrefixSum(G,l,ssl_prefix_scalar_step_G)ArithAt(G,l,ssl_entry_scalar_step_G)SignedAdd(ssl_prefix_scalar_step_G,ssl_entry_scalar_step_G,c)Original native command in the exact edition
  2. L45
    specialize divisor_signed_sum_successor_decompose (G)
  3. L46
    specialize divisor_signed_sum_successor_decompose (l)
  4. L47
    specialize divisor_signed_sum_successor_decompose (c)
  5. L48
    apply divisor_signed_sum_successor_decompose
  6. L49
    exact hG
09Separate the logical casesL50–53

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L50
    cases hdG
  2. L51
    cases hdG_witness
  3. L52
    cases hdG_witness_witness
  4. L53
    cases hdG_witness_witness_right
10Establish hpL54–63

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.

  1. L54
  2. L55
    specialize IH (a)
  3. L56
    specialize IH (F)
  4. L57
    specialize IH (G)
  5. L58
    specialize IH (x)
  6. L59
    specialize IH (x2)
  7. L60
    apply IH
  8. L61
    specialize signed_table_scalar_restrict (a)
  9. L62
    specialize signed_table_scalar_restrict (F)
  10. L63
    specialize signed_table_scalar_restrict (G)
11Use earlier factsL64–68

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L64
    specialize signed_table_scalar_restrict (l)
  2. L65
    apply signed_table_scalar_restrict
  3. L66
    exact hpoint
  4. L67
    exact hdF_witness_witness_left
  5. L68
    exact hdG_witness_witness_left
12Establish heL69–78

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed table scalar lookup.

  1. L69
  2. L70
    specialize signed_table_scalar_lookup (a)
  3. L71
    specialize signed_table_scalar_lookup (F)
  4. L72
    specialize signed_table_scalar_lookup (G)
  5. L73
    specialize signed_table_scalar_lookup (S l)
  6. L74
    specialize signed_table_scalar_lookup (l)
  7. L75
    specialize signed_table_scalar_lookup (x1)
  8. L76
    specialize signed_table_scalar_lookup (x3)
  9. L77
    apply signed_table_scalar_lookup
  10. L78
    exact hpoint
13Use earlier factsL79–88

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L79
    specialize le_refl (S l)
  2. L80
    apply le_refl
  3. L81
    exact hdF_witness_witness_right_left
  4. L82
    exact hdG_witness_witness_right_left
  5. L83
    specialize signed_table_scalar_add_intro (a)
  6. L84
    specialize signed_table_scalar_add_intro (x)
  7. L85
    specialize signed_table_scalar_add_intro (x1)
  8. L86
    specialize signed_table_scalar_add_intro (b)
  9. L87
    specialize signed_table_scalar_add_intro (x2)
  10. L88
    specialize signed_table_scalar_add_intro (x3)
14Use earlier factsL89–94

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L89
    specialize signed_table_scalar_add_intro (c)
  2. L90
    apply signed_table_scalar_add_intro
  3. L91
    exact hdF_witness_witness_right_right
  4. L92
    exact hp
  5. L93
    exact he
  6. L94
    exact hdG_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 94 lines
  1. 0001induction l
  2. 0002intro a
  3. 0003intro F
  4. 0004intro G
  5. 0005intro b
  6. 0006intro c
  7. 0007intro hpoint
  8. 0008intro hF
  9. 0009intro hG
  10. 0010have hb : b = 0
  11. 0011specialize divisor_signed_sum_empty_value (F)
  12. 0012specialize divisor_signed_sum_empty_value (b)
  13. 0013apply divisor_signed_sum_empty_value
  14. 0014exact hF
  15. 0015have hc : c = 0
  16. 0016specialize divisor_signed_sum_empty_value (G)
  17. 0017specialize divisor_signed_sum_empty_value (c)
  18. 0018apply divisor_signed_sum_empty_value
  19. 0019exact hG
  20. 0020rewrite hb
  21. 0021rewrite hb
  22. 0022rewrite hc
  23. 0023rewrite hc
  24. 0024specialize signed_mul_zero_right (a)
  25. 0025apply signed_mul_zero_right
  26. 0026intro a
  27. 0027intro F
  28. 0028intro G
  29. 0029intro b
  30. 0030intro c
  31. 0031intro hpoint
  32. 0032intro hF
  33. 0033intro hG
  34. 0034have hdF : ∃ ssl_prefix_scalar_step_F. ∃ ssl_entry_scalar_step_F. SignedPrefixSum(F,l,ssl_prefix_scalar_step_F) ∧ (ArithAt(F,l,ssl_entry_scalar_step_F)SignedAdd(ssl_prefix_scalar_step_F,ssl_entry_scalar_step_F,b))
  35. 0035specialize divisor_signed_sum_successor_decompose (F)
  36. 0036specialize divisor_signed_sum_successor_decompose (l)
  37. 0037specialize divisor_signed_sum_successor_decompose (b)
  38. 0038apply divisor_signed_sum_successor_decompose
  39. 0039exact hF
  40. 0040cases hdF
  41. 0041cases hdF_witness
  42. 0042cases hdF_witness_witness
  43. 0043cases hdF_witness_witness_right
  44. 0044have hdG : ∃ ssl_prefix_scalar_step_G. ∃ ssl_entry_scalar_step_G. SignedPrefixSum(G,l,ssl_prefix_scalar_step_G) ∧ (ArithAt(G,l,ssl_entry_scalar_step_G)SignedAdd(ssl_prefix_scalar_step_G,ssl_entry_scalar_step_G,c))
  45. 0045specialize divisor_signed_sum_successor_decompose (G)
  46. 0046specialize divisor_signed_sum_successor_decompose (l)
  47. 0047specialize divisor_signed_sum_successor_decompose (c)
  48. 0048apply divisor_signed_sum_successor_decompose
  49. 0049exact hG
  50. 0050cases hdG
  51. 0051cases hdG_witness
  52. 0052cases hdG_witness_witness
  53. 0053cases hdG_witness_witness_right
  54. 0054have hp : SignedMul(a,x,x2)
  55. 0055specialize IH (a)
  56. 0056specialize IH (F)
  57. 0057specialize IH (G)
  58. 0058specialize IH (x)
  59. 0059specialize IH (x2)
  60. 0060apply IH
  61. 0061specialize signed_table_scalar_restrict (a)
  62. 0062specialize signed_table_scalar_restrict (F)
  63. 0063specialize signed_table_scalar_restrict (G)
  64. 0064specialize signed_table_scalar_restrict (l)
  65. 0065apply signed_table_scalar_restrict
  66. 0066exact hpoint
  67. 0067exact hdF_witness_witness_left
  68. 0068exact hdG_witness_witness_left
  69. 0069have he : SignedMul(a,x1,x3)
  70. 0070specialize signed_table_scalar_lookup (a)
  71. 0071specialize signed_table_scalar_lookup (F)
  72. 0072specialize signed_table_scalar_lookup (G)
  73. 0073specialize signed_table_scalar_lookup (S l)
  74. 0074specialize signed_table_scalar_lookup (l)
  75. 0075specialize signed_table_scalar_lookup (x1)
  76. 0076specialize signed_table_scalar_lookup (x3)
  77. 0077apply signed_table_scalar_lookup
  78. 0078exact hpoint
  79. 0079specialize le_refl (S l)
  80. 0080apply le_refl
  81. 0081exact hdF_witness_witness_right_left
  82. 0082exact hdG_witness_witness_right_left
  83. 0083specialize signed_table_scalar_add_intro (a)
  84. 0084specialize signed_table_scalar_add_intro (x)
  85. 0085specialize signed_table_scalar_add_intro (x1)
  86. 0086specialize signed_table_scalar_add_intro (b)
  87. 0087specialize signed_table_scalar_add_intro (x2)
  88. 0088specialize signed_table_scalar_add_intro (x3)
  89. 0089specialize signed_table_scalar_add_intro (c)
  90. 0090apply signed_table_scalar_add_intro
  91. 0091exact hdF_witness_witness_right_right
  92. 0092exact hp
  93. 0093exact he
  94. 0094exact hdG_witness_witness_right_right