WS001C

signed_prefix_sum_scalar_multiply

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

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.

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 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)))))))

Constructive proof overview

Generated structural guide

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.

The unchanged tactic script uses 7 declared prerequisites and contains 94 exact native proof lines.

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

Proof neighborhood

Direct dependencies

divisor_signed_sum_empty_value Alpha theorem; checked-use authorized signed_mul_zero_right Alpha theorem; checked-use authorized divisor_signed_sum_successor_decompose Alpha theorem; checked-use authorized WS000C signed_table_scalar_restrict WS000B signed_table_scalar_lookup le_refl Stable theorem; checked-use authorized WS001A signed_table_scalar_add_intro

Direct 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

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.

Named ingredients (3)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

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: SignedAddArithAtSignedPrefixSum
  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: SignedAddArithAtSignedPrefixSum
  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
    have hp : SignedMul(a,x,x2)Definitions: SignedMul
  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
    have he : SignedMul(a,x1,x3)Definitions: SignedMul
  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 exact 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 : exists ssl_prefix_scalar_step_F ssl_entry_scalar_step_F. ((exists dst_positive_code_scalar_step_Fsum dst_positive_scale_scalar_step_Fsum dst_negative_code_scalar_step_Fsum dst_negative_scale_scalar_step_Fsum dst_positive_sum_scalar_step_Fsum dst_negative_sum_scalar_step_Fsum. (((F) = (((((dst_positive_code_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum)) * S ((dst_positive_code_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum)) + ((dst_positive_scale_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum))) + (((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) * S ((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) + ((dst_negative_scale_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)))) * S ((((dst_positive_code_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum)) * S ((dst_positive_code_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum)) + ((dst_positive_scale_scalar_step_Fsum) + (dst_positive_scale_scalar_step_Fsum))) + (((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) * S ((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) + ((dst_negative_scale_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)))) + ((((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) * S ((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) + ((dst_negative_scale_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum))) + (((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) * S ((dst_negative_code_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)) + ((dst_negative_scale_scalar_step_Fsum) + (dst_negative_scale_scalar_step_Fsum)))))) /\ (((exists fs_u_dst_scalar_step_Fsumpositive fs_v_dst_scalar_step_Fsumpositive. ((((exists fs_h_dst_scalar_step_Fsumpositive_body_start. fs_h_dst_scalar_step_Fsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_step_Fsumpositive)) /\ exists fs_q_dst_scalar_step_Fsumpositive_body_start. fs_u_dst_scalar_step_Fsumpositive = fs_q_dst_scalar_step_Fsumpositive_body_start * S ((S (0)) * fs_v_dst_scalar_step_Fsumpositive) + (0))) /\ ((((exists fs_h_dst_scalar_step_Fsumpositive_body_terminal. fs_h_dst_scalar_step_Fsumpositive_body_terminal + S (dst_positive_sum_scalar_step_Fsum) = S ((S (l)) * fs_v_dst_scalar_step_Fsumpositive)) /\ exists fs_q_dst_scalar_step_Fsumpositive_body_terminal. fs_u_dst_scalar_step_Fsumpositive = fs_q_dst_scalar_step_Fsumpositive_body_terminal * S ((S (l)) * fs_v_dst_scalar_step_Fsumpositive) + (dst_positive_sum_scalar_step_Fsum))) /\ forall fs_i_dst_scalar_step_Fsumpositive_body_steps. (exists fs_lt_dst_scalar_step_Fsumpositive_body_steps_bound. fs_lt_dst_scalar_step_Fsumpositive_body_steps_bound + S fs_i_dst_scalar_step_Fsumpositive_body_steps = l) -> exists fs_a_dst_scalar_step_Fsumpositive_body_steps fs_r_dst_scalar_step_Fsumpositive_body_steps fs_s_dst_scalar_step_Fsumpositive_body_steps. ((((exists fs_h_dst_scalar_step_Fsumpositive_body_steps_summand. fs_h_dst_scalar_step_Fsumpositive_body_steps_summand + S (fs_a_dst_scalar_step_Fsumpositive_body_steps) = S ((S (fs_i_dst_scalar_step_Fsumpositive_body_steps)) * dst_positive_scale_scalar_step_Fsum)) /\ exists fs_q_dst_scalar_step_Fsumpositive_body_steps_summand. dst_positive_code_scalar_step_Fsum = fs_q_dst_scalar_step_Fsumpositive_body_steps_summand * S ((S (fs_i_dst_scalar_step_Fsumpositive_body_steps)) * dst_positive_scale_scalar_step_Fsum) + (fs_a_dst_scalar_step_Fsumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Fsumpositive_body_steps_partial. fs_h_dst_scalar_step_Fsumpositive_body_steps_partial + S (fs_r_dst_scalar_step_Fsumpositive_body_steps) = S ((S (fs_i_dst_scalar_step_Fsumpositive_body_steps)) * fs_v_dst_scalar_step_Fsumpositive)) /\ exists fs_q_dst_scalar_step_Fsumpositive_body_steps_partial. fs_u_dst_scalar_step_Fsumpositive = fs_q_dst_scalar_step_Fsumpositive_body_steps_partial * S ((S (fs_i_dst_scalar_step_Fsumpositive_body_steps)) * fs_v_dst_scalar_step_Fsumpositive) + (fs_r_dst_scalar_step_Fsumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Fsumpositive_body_steps_successor. fs_h_dst_scalar_step_Fsumpositive_body_steps_successor + S (fs_s_dst_scalar_step_Fsumpositive_body_steps) = S ((S (S fs_i_dst_scalar_step_Fsumpositive_body_steps)) * fs_v_dst_scalar_step_Fsumpositive)) /\ exists fs_q_dst_scalar_step_Fsumpositive_body_steps_successor. fs_u_dst_scalar_step_Fsumpositive = fs_q_dst_scalar_step_Fsumpositive_body_steps_successor * S ((S (S fs_i_dst_scalar_step_Fsumpositive_body_steps)) * fs_v_dst_scalar_step_Fsumpositive) + (fs_s_dst_scalar_step_Fsumpositive_body_steps))) /\ fs_s_dst_scalar_step_Fsumpositive_body_steps = fs_r_dst_scalar_step_Fsumpositive_body_steps + fs_a_dst_scalar_step_Fsumpositive_body_steps)))))) /\ (((exists fs_u_dst_scalar_step_Fsumnegative fs_v_dst_scalar_step_Fsumnegative. ((((exists fs_h_dst_scalar_step_Fsumnegative_body_start. fs_h_dst_scalar_step_Fsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_step_Fsumnegative)) /\ exists fs_q_dst_scalar_step_Fsumnegative_body_start. fs_u_dst_scalar_step_Fsumnegative = fs_q_dst_scalar_step_Fsumnegative_body_start * S ((S (0)) * fs_v_dst_scalar_step_Fsumnegative) + (0))) /\ ((((exists fs_h_dst_scalar_step_Fsumnegative_body_terminal. fs_h_dst_scalar_step_Fsumnegative_body_terminal + S (dst_negative_sum_scalar_step_Fsum) = S ((S (l)) * fs_v_dst_scalar_step_Fsumnegative)) /\ exists fs_q_dst_scalar_step_Fsumnegative_body_terminal. fs_u_dst_scalar_step_Fsumnegative = fs_q_dst_scalar_step_Fsumnegative_body_terminal * S ((S (l)) * fs_v_dst_scalar_step_Fsumnegative) + (dst_negative_sum_scalar_step_Fsum))) /\ forall fs_i_dst_scalar_step_Fsumnegative_body_steps. (exists fs_lt_dst_scalar_step_Fsumnegative_body_steps_bound. fs_lt_dst_scalar_step_Fsumnegative_body_steps_bound + S fs_i_dst_scalar_step_Fsumnegative_body_steps = l) -> exists fs_a_dst_scalar_step_Fsumnegative_body_steps fs_r_dst_scalar_step_Fsumnegative_body_steps fs_s_dst_scalar_step_Fsumnegative_body_steps. ((((exists fs_h_dst_scalar_step_Fsumnegative_body_steps_summand. fs_h_dst_scalar_step_Fsumnegative_body_steps_summand + S (fs_a_dst_scalar_step_Fsumnegative_body_steps) = S ((S (fs_i_dst_scalar_step_Fsumnegative_body_steps)) * dst_negative_scale_scalar_step_Fsum)) /\ exists fs_q_dst_scalar_step_Fsumnegative_body_steps_summand. dst_negative_code_scalar_step_Fsum = fs_q_dst_scalar_step_Fsumnegative_body_steps_summand * S ((S (fs_i_dst_scalar_step_Fsumnegative_body_steps)) * dst_negative_scale_scalar_step_Fsum) + (fs_a_dst_scalar_step_Fsumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Fsumnegative_body_steps_partial. fs_h_dst_scalar_step_Fsumnegative_body_steps_partial + S (fs_r_dst_scalar_step_Fsumnegative_body_steps) = S ((S (fs_i_dst_scalar_step_Fsumnegative_body_steps)) * fs_v_dst_scalar_step_Fsumnegative)) /\ exists fs_q_dst_scalar_step_Fsumnegative_body_steps_partial. fs_u_dst_scalar_step_Fsumnegative = fs_q_dst_scalar_step_Fsumnegative_body_steps_partial * S ((S (fs_i_dst_scalar_step_Fsumnegative_body_steps)) * fs_v_dst_scalar_step_Fsumnegative) + (fs_r_dst_scalar_step_Fsumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Fsumnegative_body_steps_successor. fs_h_dst_scalar_step_Fsumnegative_body_steps_successor + S (fs_s_dst_scalar_step_Fsumnegative_body_steps) = S ((S (S fs_i_dst_scalar_step_Fsumnegative_body_steps)) * fs_v_dst_scalar_step_Fsumnegative)) /\ exists fs_q_dst_scalar_step_Fsumnegative_body_steps_successor. fs_u_dst_scalar_step_Fsumnegative = fs_q_dst_scalar_step_Fsumnegative_body_steps_successor * S ((S (S fs_i_dst_scalar_step_Fsumnegative_body_steps)) * fs_v_dst_scalar_step_Fsumnegative) + (fs_s_dst_scalar_step_Fsumnegative_body_steps))) /\ fs_s_dst_scalar_step_Fsumnegative_body_steps = fs_r_dst_scalar_step_Fsumnegative_body_steps + fs_a_dst_scalar_step_Fsumnegative_body_steps)))))) /\ (exists ge_balance_positive_scalar_step_Fsumresult ge_balance_negative_scalar_step_Fsumresult. (((((ssl_prefix_scalar_step_F) = 2 * (ge_balance_positive_scalar_step_Fsumresult) /\ (ge_balance_negative_scalar_step_Fsumresult) = 0) \/ exists ge_signed_half_scalar_step_Fsumresultdecode. (((ssl_prefix_scalar_step_F) = 2 * ge_signed_half_scalar_step_Fsumresultdecode + 1 /\ (ge_balance_positive_scalar_step_Fsumresult) = 0) /\ (ge_balance_negative_scalar_step_Fsumresult) = S ge_signed_half_scalar_step_Fsumresultdecode))) /\ ((dst_positive_sum_scalar_step_Fsum) + ge_balance_negative_scalar_step_Fsumresult = (dst_negative_sum_scalar_step_Fsum) + ge_balance_positive_scalar_step_Fsumresult))))))))) /\ (((exists dst_positive_code_scalar_step_Fentry dst_positive_scale_scalar_step_Fentry dst_negative_code_scalar_step_Fentry dst_negative_scale_scalar_step_Fentry dst_positive_scalar_step_Fentry dst_negative_scalar_step_Fentry. (((F) = (((((dst_positive_code_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry)) * S ((dst_positive_code_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry)) + ((dst_positive_scale_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry))) + (((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) * S ((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) + ((dst_negative_scale_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)))) * S ((((dst_positive_code_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry)) * S ((dst_positive_code_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry)) + ((dst_positive_scale_scalar_step_Fentry) + (dst_positive_scale_scalar_step_Fentry))) + (((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) * S ((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) + ((dst_negative_scale_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)))) + ((((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) * S ((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) + ((dst_negative_scale_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry))) + (((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) * S ((dst_negative_code_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)) + ((dst_negative_scale_scalar_step_Fentry) + (dst_negative_scale_scalar_step_Fentry)))))) /\ (((((exists ff_h_pvs_scalar_step_Fentrypositive. ff_h_pvs_scalar_step_Fentrypositive + S (dst_positive_scalar_step_Fentry) = S ((S (l)) * dst_positive_scale_scalar_step_Fentry)) /\ exists ff_q_pvs_scalar_step_Fentrypositive. dst_positive_code_scalar_step_Fentry = ff_q_pvs_scalar_step_Fentrypositive * S ((S (l)) * dst_positive_scale_scalar_step_Fentry) + (dst_positive_scalar_step_Fentry))) /\ (((((exists ff_h_pvs_scalar_step_Fentrynegative. ff_h_pvs_scalar_step_Fentrynegative + S (dst_negative_scalar_step_Fentry) = S ((S (l)) * dst_negative_scale_scalar_step_Fentry)) /\ exists ff_q_pvs_scalar_step_Fentrynegative. dst_negative_code_scalar_step_Fentry = ff_q_pvs_scalar_step_Fentrynegative * S ((S (l)) * dst_negative_scale_scalar_step_Fentry) + (dst_negative_scalar_step_Fentry))) /\ (exists ge_balance_positive_scalar_step_Fentryvalue ge_balance_negative_scalar_step_Fentryvalue. (((((ssl_entry_scalar_step_F) = 2 * (ge_balance_positive_scalar_step_Fentryvalue) /\ (ge_balance_negative_scalar_step_Fentryvalue) = 0) \/ exists ge_signed_half_scalar_step_Fentryvaluedecode. (((ssl_entry_scalar_step_F) = 2 * ge_signed_half_scalar_step_Fentryvaluedecode + 1 /\ (ge_balance_positive_scalar_step_Fentryvalue) = 0) /\ (ge_balance_negative_scalar_step_Fentryvalue) = S ge_signed_half_scalar_step_Fentryvaluedecode))) /\ ((dst_positive_scalar_step_Fentry) + ge_balance_negative_scalar_step_Fentryvalue = (dst_negative_scalar_step_Fentry) + ge_balance_positive_scalar_step_Fentryvalue))))))))) /\ (exists dsa_ap_scalar_step_Faddition dsa_an_scalar_step_Faddition dsa_bp_scalar_step_Faddition dsa_bn_scalar_step_Faddition dsa_cp_scalar_step_Faddition dsa_cn_scalar_step_Faddition. (((((ssl_prefix_scalar_step_F) = 2 * (dsa_ap_scalar_step_Faddition) /\ (dsa_an_scalar_step_Faddition) = 0) \/ exists ge_signed_half_scalar_step_Fadditionleft. (((ssl_prefix_scalar_step_F) = 2 * ge_signed_half_scalar_step_Fadditionleft + 1 /\ (dsa_ap_scalar_step_Faddition) = 0) /\ (dsa_an_scalar_step_Faddition) = S ge_signed_half_scalar_step_Fadditionleft))) /\ ((((((ssl_entry_scalar_step_F) = 2 * (dsa_bp_scalar_step_Faddition) /\ (dsa_bn_scalar_step_Faddition) = 0) \/ exists ge_signed_half_scalar_step_Fadditionright. (((ssl_entry_scalar_step_F) = 2 * ge_signed_half_scalar_step_Fadditionright + 1 /\ (dsa_bp_scalar_step_Faddition) = 0) /\ (dsa_bn_scalar_step_Faddition) = S ge_signed_half_scalar_step_Fadditionright))) /\ ((((((b) = 2 * (dsa_cp_scalar_step_Faddition) /\ (dsa_cn_scalar_step_Faddition) = 0) \/ exists ge_signed_half_scalar_step_Fadditionoutput. (((b) = 2 * ge_signed_half_scalar_step_Fadditionoutput + 1 /\ (dsa_cp_scalar_step_Faddition) = 0) /\ (dsa_cn_scalar_step_Faddition) = S ge_signed_half_scalar_step_Fadditionoutput))) /\ ((dsa_ap_scalar_step_Faddition + dsa_bp_scalar_step_Faddition) + dsa_cn_scalar_step_Faddition = (dsa_an_scalar_step_Faddition + dsa_bn_scalar_step_Faddition) + dsa_cp_scalar_step_Faddition))))))))))
  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 : exists ssl_prefix_scalar_step_G ssl_entry_scalar_step_G. ((exists dst_positive_code_scalar_step_Gsum dst_positive_scale_scalar_step_Gsum dst_negative_code_scalar_step_Gsum dst_negative_scale_scalar_step_Gsum dst_positive_sum_scalar_step_Gsum dst_negative_sum_scalar_step_Gsum. (((G) = (((((dst_positive_code_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum)) * S ((dst_positive_code_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum)) + ((dst_positive_scale_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum))) + (((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) * S ((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) + ((dst_negative_scale_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)))) * S ((((dst_positive_code_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum)) * S ((dst_positive_code_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum)) + ((dst_positive_scale_scalar_step_Gsum) + (dst_positive_scale_scalar_step_Gsum))) + (((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) * S ((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) + ((dst_negative_scale_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)))) + ((((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) * S ((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) + ((dst_negative_scale_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum))) + (((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) * S ((dst_negative_code_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)) + ((dst_negative_scale_scalar_step_Gsum) + (dst_negative_scale_scalar_step_Gsum)))))) /\ (((exists fs_u_dst_scalar_step_Gsumpositive fs_v_dst_scalar_step_Gsumpositive. ((((exists fs_h_dst_scalar_step_Gsumpositive_body_start. fs_h_dst_scalar_step_Gsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_step_Gsumpositive)) /\ exists fs_q_dst_scalar_step_Gsumpositive_body_start. fs_u_dst_scalar_step_Gsumpositive = fs_q_dst_scalar_step_Gsumpositive_body_start * S ((S (0)) * fs_v_dst_scalar_step_Gsumpositive) + (0))) /\ ((((exists fs_h_dst_scalar_step_Gsumpositive_body_terminal. fs_h_dst_scalar_step_Gsumpositive_body_terminal + S (dst_positive_sum_scalar_step_Gsum) = S ((S (l)) * fs_v_dst_scalar_step_Gsumpositive)) /\ exists fs_q_dst_scalar_step_Gsumpositive_body_terminal. fs_u_dst_scalar_step_Gsumpositive = fs_q_dst_scalar_step_Gsumpositive_body_terminal * S ((S (l)) * fs_v_dst_scalar_step_Gsumpositive) + (dst_positive_sum_scalar_step_Gsum))) /\ forall fs_i_dst_scalar_step_Gsumpositive_body_steps. (exists fs_lt_dst_scalar_step_Gsumpositive_body_steps_bound. fs_lt_dst_scalar_step_Gsumpositive_body_steps_bound + S fs_i_dst_scalar_step_Gsumpositive_body_steps = l) -> exists fs_a_dst_scalar_step_Gsumpositive_body_steps fs_r_dst_scalar_step_Gsumpositive_body_steps fs_s_dst_scalar_step_Gsumpositive_body_steps. ((((exists fs_h_dst_scalar_step_Gsumpositive_body_steps_summand. fs_h_dst_scalar_step_Gsumpositive_body_steps_summand + S (fs_a_dst_scalar_step_Gsumpositive_body_steps) = S ((S (fs_i_dst_scalar_step_Gsumpositive_body_steps)) * dst_positive_scale_scalar_step_Gsum)) /\ exists fs_q_dst_scalar_step_Gsumpositive_body_steps_summand. dst_positive_code_scalar_step_Gsum = fs_q_dst_scalar_step_Gsumpositive_body_steps_summand * S ((S (fs_i_dst_scalar_step_Gsumpositive_body_steps)) * dst_positive_scale_scalar_step_Gsum) + (fs_a_dst_scalar_step_Gsumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Gsumpositive_body_steps_partial. fs_h_dst_scalar_step_Gsumpositive_body_steps_partial + S (fs_r_dst_scalar_step_Gsumpositive_body_steps) = S ((S (fs_i_dst_scalar_step_Gsumpositive_body_steps)) * fs_v_dst_scalar_step_Gsumpositive)) /\ exists fs_q_dst_scalar_step_Gsumpositive_body_steps_partial. fs_u_dst_scalar_step_Gsumpositive = fs_q_dst_scalar_step_Gsumpositive_body_steps_partial * S ((S (fs_i_dst_scalar_step_Gsumpositive_body_steps)) * fs_v_dst_scalar_step_Gsumpositive) + (fs_r_dst_scalar_step_Gsumpositive_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Gsumpositive_body_steps_successor. fs_h_dst_scalar_step_Gsumpositive_body_steps_successor + S (fs_s_dst_scalar_step_Gsumpositive_body_steps) = S ((S (S fs_i_dst_scalar_step_Gsumpositive_body_steps)) * fs_v_dst_scalar_step_Gsumpositive)) /\ exists fs_q_dst_scalar_step_Gsumpositive_body_steps_successor. fs_u_dst_scalar_step_Gsumpositive = fs_q_dst_scalar_step_Gsumpositive_body_steps_successor * S ((S (S fs_i_dst_scalar_step_Gsumpositive_body_steps)) * fs_v_dst_scalar_step_Gsumpositive) + (fs_s_dst_scalar_step_Gsumpositive_body_steps))) /\ fs_s_dst_scalar_step_Gsumpositive_body_steps = fs_r_dst_scalar_step_Gsumpositive_body_steps + fs_a_dst_scalar_step_Gsumpositive_body_steps)))))) /\ (((exists fs_u_dst_scalar_step_Gsumnegative fs_v_dst_scalar_step_Gsumnegative. ((((exists fs_h_dst_scalar_step_Gsumnegative_body_start. fs_h_dst_scalar_step_Gsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_scalar_step_Gsumnegative)) /\ exists fs_q_dst_scalar_step_Gsumnegative_body_start. fs_u_dst_scalar_step_Gsumnegative = fs_q_dst_scalar_step_Gsumnegative_body_start * S ((S (0)) * fs_v_dst_scalar_step_Gsumnegative) + (0))) /\ ((((exists fs_h_dst_scalar_step_Gsumnegative_body_terminal. fs_h_dst_scalar_step_Gsumnegative_body_terminal + S (dst_negative_sum_scalar_step_Gsum) = S ((S (l)) * fs_v_dst_scalar_step_Gsumnegative)) /\ exists fs_q_dst_scalar_step_Gsumnegative_body_terminal. fs_u_dst_scalar_step_Gsumnegative = fs_q_dst_scalar_step_Gsumnegative_body_terminal * S ((S (l)) * fs_v_dst_scalar_step_Gsumnegative) + (dst_negative_sum_scalar_step_Gsum))) /\ forall fs_i_dst_scalar_step_Gsumnegative_body_steps. (exists fs_lt_dst_scalar_step_Gsumnegative_body_steps_bound. fs_lt_dst_scalar_step_Gsumnegative_body_steps_bound + S fs_i_dst_scalar_step_Gsumnegative_body_steps = l) -> exists fs_a_dst_scalar_step_Gsumnegative_body_steps fs_r_dst_scalar_step_Gsumnegative_body_steps fs_s_dst_scalar_step_Gsumnegative_body_steps. ((((exists fs_h_dst_scalar_step_Gsumnegative_body_steps_summand. fs_h_dst_scalar_step_Gsumnegative_body_steps_summand + S (fs_a_dst_scalar_step_Gsumnegative_body_steps) = S ((S (fs_i_dst_scalar_step_Gsumnegative_body_steps)) * dst_negative_scale_scalar_step_Gsum)) /\ exists fs_q_dst_scalar_step_Gsumnegative_body_steps_summand. dst_negative_code_scalar_step_Gsum = fs_q_dst_scalar_step_Gsumnegative_body_steps_summand * S ((S (fs_i_dst_scalar_step_Gsumnegative_body_steps)) * dst_negative_scale_scalar_step_Gsum) + (fs_a_dst_scalar_step_Gsumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Gsumnegative_body_steps_partial. fs_h_dst_scalar_step_Gsumnegative_body_steps_partial + S (fs_r_dst_scalar_step_Gsumnegative_body_steps) = S ((S (fs_i_dst_scalar_step_Gsumnegative_body_steps)) * fs_v_dst_scalar_step_Gsumnegative)) /\ exists fs_q_dst_scalar_step_Gsumnegative_body_steps_partial. fs_u_dst_scalar_step_Gsumnegative = fs_q_dst_scalar_step_Gsumnegative_body_steps_partial * S ((S (fs_i_dst_scalar_step_Gsumnegative_body_steps)) * fs_v_dst_scalar_step_Gsumnegative) + (fs_r_dst_scalar_step_Gsumnegative_body_steps))) /\ ((((exists fs_h_dst_scalar_step_Gsumnegative_body_steps_successor. fs_h_dst_scalar_step_Gsumnegative_body_steps_successor + S (fs_s_dst_scalar_step_Gsumnegative_body_steps) = S ((S (S fs_i_dst_scalar_step_Gsumnegative_body_steps)) * fs_v_dst_scalar_step_Gsumnegative)) /\ exists fs_q_dst_scalar_step_Gsumnegative_body_steps_successor. fs_u_dst_scalar_step_Gsumnegative = fs_q_dst_scalar_step_Gsumnegative_body_steps_successor * S ((S (S fs_i_dst_scalar_step_Gsumnegative_body_steps)) * fs_v_dst_scalar_step_Gsumnegative) + (fs_s_dst_scalar_step_Gsumnegative_body_steps))) /\ fs_s_dst_scalar_step_Gsumnegative_body_steps = fs_r_dst_scalar_step_Gsumnegative_body_steps + fs_a_dst_scalar_step_Gsumnegative_body_steps)))))) /\ (exists ge_balance_positive_scalar_step_Gsumresult ge_balance_negative_scalar_step_Gsumresult. (((((ssl_prefix_scalar_step_G) = 2 * (ge_balance_positive_scalar_step_Gsumresult) /\ (ge_balance_negative_scalar_step_Gsumresult) = 0) \/ exists ge_signed_half_scalar_step_Gsumresultdecode. (((ssl_prefix_scalar_step_G) = 2 * ge_signed_half_scalar_step_Gsumresultdecode + 1 /\ (ge_balance_positive_scalar_step_Gsumresult) = 0) /\ (ge_balance_negative_scalar_step_Gsumresult) = S ge_signed_half_scalar_step_Gsumresultdecode))) /\ ((dst_positive_sum_scalar_step_Gsum) + ge_balance_negative_scalar_step_Gsumresult = (dst_negative_sum_scalar_step_Gsum) + ge_balance_positive_scalar_step_Gsumresult))))))))) /\ (((exists dst_positive_code_scalar_step_Gentry dst_positive_scale_scalar_step_Gentry dst_negative_code_scalar_step_Gentry dst_negative_scale_scalar_step_Gentry dst_positive_scalar_step_Gentry dst_negative_scalar_step_Gentry. (((G) = (((((dst_positive_code_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry)) * S ((dst_positive_code_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry)) + ((dst_positive_scale_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry))) + (((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) * S ((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) + ((dst_negative_scale_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)))) * S ((((dst_positive_code_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry)) * S ((dst_positive_code_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry)) + ((dst_positive_scale_scalar_step_Gentry) + (dst_positive_scale_scalar_step_Gentry))) + (((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) * S ((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) + ((dst_negative_scale_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)))) + ((((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) * S ((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) + ((dst_negative_scale_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry))) + (((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) * S ((dst_negative_code_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)) + ((dst_negative_scale_scalar_step_Gentry) + (dst_negative_scale_scalar_step_Gentry)))))) /\ (((((exists ff_h_pvs_scalar_step_Gentrypositive. ff_h_pvs_scalar_step_Gentrypositive + S (dst_positive_scalar_step_Gentry) = S ((S (l)) * dst_positive_scale_scalar_step_Gentry)) /\ exists ff_q_pvs_scalar_step_Gentrypositive. dst_positive_code_scalar_step_Gentry = ff_q_pvs_scalar_step_Gentrypositive * S ((S (l)) * dst_positive_scale_scalar_step_Gentry) + (dst_positive_scalar_step_Gentry))) /\ (((((exists ff_h_pvs_scalar_step_Gentrynegative. ff_h_pvs_scalar_step_Gentrynegative + S (dst_negative_scalar_step_Gentry) = S ((S (l)) * dst_negative_scale_scalar_step_Gentry)) /\ exists ff_q_pvs_scalar_step_Gentrynegative. dst_negative_code_scalar_step_Gentry = ff_q_pvs_scalar_step_Gentrynegative * S ((S (l)) * dst_negative_scale_scalar_step_Gentry) + (dst_negative_scalar_step_Gentry))) /\ (exists ge_balance_positive_scalar_step_Gentryvalue ge_balance_negative_scalar_step_Gentryvalue. (((((ssl_entry_scalar_step_G) = 2 * (ge_balance_positive_scalar_step_Gentryvalue) /\ (ge_balance_negative_scalar_step_Gentryvalue) = 0) \/ exists ge_signed_half_scalar_step_Gentryvaluedecode. (((ssl_entry_scalar_step_G) = 2 * ge_signed_half_scalar_step_Gentryvaluedecode + 1 /\ (ge_balance_positive_scalar_step_Gentryvalue) = 0) /\ (ge_balance_negative_scalar_step_Gentryvalue) = S ge_signed_half_scalar_step_Gentryvaluedecode))) /\ ((dst_positive_scalar_step_Gentry) + ge_balance_negative_scalar_step_Gentryvalue = (dst_negative_scalar_step_Gentry) + ge_balance_positive_scalar_step_Gentryvalue))))))))) /\ (exists dsa_ap_scalar_step_Gaddition dsa_an_scalar_step_Gaddition dsa_bp_scalar_step_Gaddition dsa_bn_scalar_step_Gaddition dsa_cp_scalar_step_Gaddition dsa_cn_scalar_step_Gaddition. (((((ssl_prefix_scalar_step_G) = 2 * (dsa_ap_scalar_step_Gaddition) /\ (dsa_an_scalar_step_Gaddition) = 0) \/ exists ge_signed_half_scalar_step_Gadditionleft. (((ssl_prefix_scalar_step_G) = 2 * ge_signed_half_scalar_step_Gadditionleft + 1 /\ (dsa_ap_scalar_step_Gaddition) = 0) /\ (dsa_an_scalar_step_Gaddition) = S ge_signed_half_scalar_step_Gadditionleft))) /\ ((((((ssl_entry_scalar_step_G) = 2 * (dsa_bp_scalar_step_Gaddition) /\ (dsa_bn_scalar_step_Gaddition) = 0) \/ exists ge_signed_half_scalar_step_Gadditionright. (((ssl_entry_scalar_step_G) = 2 * ge_signed_half_scalar_step_Gadditionright + 1 /\ (dsa_bp_scalar_step_Gaddition) = 0) /\ (dsa_bn_scalar_step_Gaddition) = S ge_signed_half_scalar_step_Gadditionright))) /\ ((((((c) = 2 * (dsa_cp_scalar_step_Gaddition) /\ (dsa_cn_scalar_step_Gaddition) = 0) \/ exists ge_signed_half_scalar_step_Gadditionoutput. (((c) = 2 * ge_signed_half_scalar_step_Gadditionoutput + 1 /\ (dsa_cp_scalar_step_Gaddition) = 0) /\ (dsa_cn_scalar_step_Gaddition) = S ge_signed_half_scalar_step_Gadditionoutput))) /\ ((dsa_ap_scalar_step_Gaddition + dsa_bp_scalar_step_Gaddition) + dsa_cn_scalar_step_Gaddition = (dsa_an_scalar_step_Gaddition + dsa_bn_scalar_step_Gaddition) + dsa_cp_scalar_step_Gaddition))))))))))
  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 : exists sto_ap_scalar_prefix sto_an_scalar_prefix sto_bp_scalar_prefix sto_bn_scalar_prefix sto_cp_scalar_prefix sto_cn_scalar_prefix. (((((a) = 2 * (sto_ap_scalar_prefix) /\ (sto_an_scalar_prefix) = 0) \/ exists ge_signed_half_scalar_prefixleft. (((a) = 2 * ge_signed_half_scalar_prefixleft + 1 /\ (sto_ap_scalar_prefix) = 0) /\ (sto_an_scalar_prefix) = S ge_signed_half_scalar_prefixleft))) /\ ((((((x) = 2 * (sto_bp_scalar_prefix) /\ (sto_bn_scalar_prefix) = 0) \/ exists ge_signed_half_scalar_prefixright. (((x) = 2 * ge_signed_half_scalar_prefixright + 1 /\ (sto_bp_scalar_prefix) = 0) /\ (sto_bn_scalar_prefix) = S ge_signed_half_scalar_prefixright))) /\ ((((((x2) = 2 * (sto_cp_scalar_prefix) /\ (sto_cn_scalar_prefix) = 0) \/ exists ge_signed_half_scalar_prefixoutput. (((x2) = 2 * ge_signed_half_scalar_prefixoutput + 1 /\ (sto_cp_scalar_prefix) = 0) /\ (sto_cn_scalar_prefix) = S ge_signed_half_scalar_prefixoutput))) /\ ((sto_ap_scalar_prefix * sto_bp_scalar_prefix + sto_an_scalar_prefix * sto_bn_scalar_prefix) + sto_cn_scalar_prefix = (sto_ap_scalar_prefix * sto_bn_scalar_prefix + sto_an_scalar_prefix * sto_bp_scalar_prefix) + sto_cp_scalar_prefix))))))
  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 : exists sto_ap_scalar_last sto_an_scalar_last sto_bp_scalar_last sto_bn_scalar_last sto_cp_scalar_last sto_cn_scalar_last. (((((a) = 2 * (sto_ap_scalar_last) /\ (sto_an_scalar_last) = 0) \/ exists ge_signed_half_scalar_lastleft. (((a) = 2 * ge_signed_half_scalar_lastleft + 1 /\ (sto_ap_scalar_last) = 0) /\ (sto_an_scalar_last) = S ge_signed_half_scalar_lastleft))) /\ ((((((x1) = 2 * (sto_bp_scalar_last) /\ (sto_bn_scalar_last) = 0) \/ exists ge_signed_half_scalar_lastright. (((x1) = 2 * ge_signed_half_scalar_lastright + 1 /\ (sto_bp_scalar_last) = 0) /\ (sto_bn_scalar_last) = S ge_signed_half_scalar_lastright))) /\ ((((((x3) = 2 * (sto_cp_scalar_last) /\ (sto_cn_scalar_last) = 0) \/ exists ge_signed_half_scalar_lastoutput. (((x3) = 2 * ge_signed_half_scalar_lastoutput + 1 /\ (sto_cp_scalar_last) = 0) /\ (sto_cn_scalar_last) = S ge_signed_half_scalar_lastoutput))) /\ ((sto_ap_scalar_last * sto_bp_scalar_last + sto_an_scalar_last * sto_bn_scalar_last) + sto_cn_scalar_last = (sto_ap_scalar_last * sto_bn_scalar_last + sto_an_scalar_last * sto_bp_scalar_last) + sto_cp_scalar_last))))))
  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