WS001B

signed_prefix_sum_pointwise_add

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

Ordinary prefix induction proves that the actual sum of a witnessed pointwise table addition is the canonical signed sum of the two actual prefix sums, including length zero.

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 F G H a b c. (((exists dst_positive_code_linearity_pointwiseleft_table dst_positive_scale_linearity_pointwiseleft_table dst_negative_code_linearity_pointwiseleft_table dst_negative_scale_linearity_pointwiseleft_table. (((F) = (((((dst_positive_code_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table)) * S ((dst_positive_code_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table)) + ((dst_positive_scale_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table))) + (((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) * S ((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) + ((dst_negative_scale_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)))) * S ((((dst_positive_code_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table)) * S ((dst_positive_code_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table)) + ((dst_positive_scale_linearity_pointwiseleft_table) + (dst_positive_scale_linearity_pointwiseleft_table))) + (((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) * S ((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) + ((dst_negative_scale_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)))) + ((((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) * S ((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) + ((dst_negative_scale_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table))) + (((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) * S ((dst_negative_code_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)) + ((dst_negative_scale_linearity_pointwiseleft_table) + (dst_negative_scale_linearity_pointwiseleft_table)))))) /\ (forall dst_index_linearity_pointwiseleft_table. (exists pvs_le_gap_linearity_pointwiseleft_tabledomain. pvs_le_gap_linearity_pointwiseleft_tabledomain + (dst_index_linearity_pointwiseleft_table) = (l)) -> exists dst_positive_linearity_pointwiseleft_table dst_negative_linearity_pointwiseleft_table dst_value_linearity_pointwiseleft_table. ((((exists ff_h_pvs_linearity_pointwiseleft_tableentrypositive. ff_h_pvs_linearity_pointwiseleft_tableentrypositive + S (dst_positive_linearity_pointwiseleft_table) = S ((S (dst_index_linearity_pointwiseleft_table)) * dst_positive_scale_linearity_pointwiseleft_table)) /\ exists ff_q_pvs_linearity_pointwiseleft_tableentrypositive. dst_positive_code_linearity_pointwiseleft_table = ff_q_pvs_linearity_pointwiseleft_tableentrypositive * S ((S (dst_index_linearity_pointwiseleft_table)) * dst_positive_scale_linearity_pointwiseleft_table) + (dst_positive_linearity_pointwiseleft_table))) /\ (((((exists ff_h_pvs_linearity_pointwiseleft_tableentrynegative. ff_h_pvs_linearity_pointwiseleft_tableentrynegative + S (dst_negative_linearity_pointwiseleft_table) = S ((S (dst_index_linearity_pointwiseleft_table)) * dst_negative_scale_linearity_pointwiseleft_table)) /\ exists ff_q_pvs_linearity_pointwiseleft_tableentrynegative. dst_negative_code_linearity_pointwiseleft_table = ff_q_pvs_linearity_pointwiseleft_tableentrynegative * S ((S (dst_index_linearity_pointwiseleft_table)) * dst_negative_scale_linearity_pointwiseleft_table) + (dst_negative_linearity_pointwiseleft_table))) /\ (exists ge_balance_positive_linearity_pointwiseleft_tableentryvalue ge_balance_negative_linearity_pointwiseleft_tableentryvalue. (((((dst_value_linearity_pointwiseleft_table) = 2 * (ge_balance_positive_linearity_pointwiseleft_tableentryvalue) /\ (ge_balance_negative_linearity_pointwiseleft_tableentryvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseleft_tableentryvaluedecode. (((dst_value_linearity_pointwiseleft_table) = 2 * ge_signed_half_linearity_pointwiseleft_tableentryvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseleft_tableentryvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseleft_tableentryvalue) = S ge_signed_half_linearity_pointwiseleft_tableentryvaluedecode))) /\ ((dst_positive_linearity_pointwiseleft_table) + ge_balance_negative_linearity_pointwiseleft_tableentryvalue = (dst_negative_linearity_pointwiseleft_table) + ge_balance_positive_linearity_pointwiseleft_tableentryvalue))))))))) /\ (((exists dst_positive_code_linearity_pointwiseright_table dst_positive_scale_linearity_pointwiseright_table dst_negative_code_linearity_pointwiseright_table dst_negative_scale_linearity_pointwiseright_table. (((G) = (((((dst_positive_code_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table)) * S ((dst_positive_code_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table)) + ((dst_positive_scale_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table))) + (((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) * S ((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) + ((dst_negative_scale_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)))) * S ((((dst_positive_code_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table)) * S ((dst_positive_code_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table)) + ((dst_positive_scale_linearity_pointwiseright_table) + (dst_positive_scale_linearity_pointwiseright_table))) + (((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) * S ((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) + ((dst_negative_scale_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)))) + ((((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) * S ((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) + ((dst_negative_scale_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table))) + (((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) * S ((dst_negative_code_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)) + ((dst_negative_scale_linearity_pointwiseright_table) + (dst_negative_scale_linearity_pointwiseright_table)))))) /\ (forall dst_index_linearity_pointwiseright_table. (exists pvs_le_gap_linearity_pointwiseright_tabledomain. pvs_le_gap_linearity_pointwiseright_tabledomain + (dst_index_linearity_pointwiseright_table) = (l)) -> exists dst_positive_linearity_pointwiseright_table dst_negative_linearity_pointwiseright_table dst_value_linearity_pointwiseright_table. ((((exists ff_h_pvs_linearity_pointwiseright_tableentrypositive. ff_h_pvs_linearity_pointwiseright_tableentrypositive + S (dst_positive_linearity_pointwiseright_table) = S ((S (dst_index_linearity_pointwiseright_table)) * dst_positive_scale_linearity_pointwiseright_table)) /\ exists ff_q_pvs_linearity_pointwiseright_tableentrypositive. dst_positive_code_linearity_pointwiseright_table = ff_q_pvs_linearity_pointwiseright_tableentrypositive * S ((S (dst_index_linearity_pointwiseright_table)) * dst_positive_scale_linearity_pointwiseright_table) + (dst_positive_linearity_pointwiseright_table))) /\ (((((exists ff_h_pvs_linearity_pointwiseright_tableentrynegative. ff_h_pvs_linearity_pointwiseright_tableentrynegative + S (dst_negative_linearity_pointwiseright_table) = S ((S (dst_index_linearity_pointwiseright_table)) * dst_negative_scale_linearity_pointwiseright_table)) /\ exists ff_q_pvs_linearity_pointwiseright_tableentrynegative. dst_negative_code_linearity_pointwiseright_table = ff_q_pvs_linearity_pointwiseright_tableentrynegative * S ((S (dst_index_linearity_pointwiseright_table)) * dst_negative_scale_linearity_pointwiseright_table) + (dst_negative_linearity_pointwiseright_table))) /\ (exists ge_balance_positive_linearity_pointwiseright_tableentryvalue ge_balance_negative_linearity_pointwiseright_tableentryvalue. (((((dst_value_linearity_pointwiseright_table) = 2 * (ge_balance_positive_linearity_pointwiseright_tableentryvalue) /\ (ge_balance_negative_linearity_pointwiseright_tableentryvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseright_tableentryvaluedecode. (((dst_value_linearity_pointwiseright_table) = 2 * ge_signed_half_linearity_pointwiseright_tableentryvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseright_tableentryvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseright_tableentryvalue) = S ge_signed_half_linearity_pointwiseright_tableentryvaluedecode))) /\ ((dst_positive_linearity_pointwiseright_table) + ge_balance_negative_linearity_pointwiseright_tableentryvalue = (dst_negative_linearity_pointwiseright_table) + ge_balance_positive_linearity_pointwiseright_tableentryvalue))))))))) /\ (((exists dst_positive_code_linearity_pointwiseoutput_table dst_positive_scale_linearity_pointwiseoutput_table dst_negative_code_linearity_pointwiseoutput_table dst_negative_scale_linearity_pointwiseoutput_table. (((H) = (((((dst_positive_code_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table)) * S ((dst_positive_code_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table)) + ((dst_positive_scale_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table))) + (((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) * S ((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) + ((dst_negative_scale_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)))) * S ((((dst_positive_code_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table)) * S ((dst_positive_code_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table)) + ((dst_positive_scale_linearity_pointwiseoutput_table) + (dst_positive_scale_linearity_pointwiseoutput_table))) + (((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) * S ((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) + ((dst_negative_scale_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)))) + ((((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) * S ((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) + ((dst_negative_scale_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table))) + (((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) * S ((dst_negative_code_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)) + ((dst_negative_scale_linearity_pointwiseoutput_table) + (dst_negative_scale_linearity_pointwiseoutput_table)))))) /\ (forall dst_index_linearity_pointwiseoutput_table. (exists pvs_le_gap_linearity_pointwiseoutput_tabledomain. pvs_le_gap_linearity_pointwiseoutput_tabledomain + (dst_index_linearity_pointwiseoutput_table) = (l)) -> exists dst_positive_linearity_pointwiseoutput_table dst_negative_linearity_pointwiseoutput_table dst_value_linearity_pointwiseoutput_table. ((((exists ff_h_pvs_linearity_pointwiseoutput_tableentrypositive. ff_h_pvs_linearity_pointwiseoutput_tableentrypositive + S (dst_positive_linearity_pointwiseoutput_table) = S ((S (dst_index_linearity_pointwiseoutput_table)) * dst_positive_scale_linearity_pointwiseoutput_table)) /\ exists ff_q_pvs_linearity_pointwiseoutput_tableentrypositive. dst_positive_code_linearity_pointwiseoutput_table = ff_q_pvs_linearity_pointwiseoutput_tableentrypositive * S ((S (dst_index_linearity_pointwiseoutput_table)) * dst_positive_scale_linearity_pointwiseoutput_table) + (dst_positive_linearity_pointwiseoutput_table))) /\ (((((exists ff_h_pvs_linearity_pointwiseoutput_tableentrynegative. ff_h_pvs_linearity_pointwiseoutput_tableentrynegative + S (dst_negative_linearity_pointwiseoutput_table) = S ((S (dst_index_linearity_pointwiseoutput_table)) * dst_negative_scale_linearity_pointwiseoutput_table)) /\ exists ff_q_pvs_linearity_pointwiseoutput_tableentrynegative. dst_negative_code_linearity_pointwiseoutput_table = ff_q_pvs_linearity_pointwiseoutput_tableentrynegative * S ((S (dst_index_linearity_pointwiseoutput_table)) * dst_negative_scale_linearity_pointwiseoutput_table) + (dst_negative_linearity_pointwiseoutput_table))) /\ (exists ge_balance_positive_linearity_pointwiseoutput_tableentryvalue ge_balance_negative_linearity_pointwiseoutput_tableentryvalue. (((((dst_value_linearity_pointwiseoutput_table) = 2 * (ge_balance_positive_linearity_pointwiseoutput_tableentryvalue) /\ (ge_balance_negative_linearity_pointwiseoutput_tableentryvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseoutput_tableentryvaluedecode. (((dst_value_linearity_pointwiseoutput_table) = 2 * ge_signed_half_linearity_pointwiseoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseoutput_tableentryvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseoutput_tableentryvalue) = S ge_signed_half_linearity_pointwiseoutput_tableentryvaluedecode))) /\ ((dst_positive_linearity_pointwiseoutput_table) + ge_balance_negative_linearity_pointwiseoutput_tableentryvalue = (dst_negative_linearity_pointwiseoutput_table) + ge_balance_positive_linearity_pointwiseoutput_tableentryvalue))))))))) /\ (forall sto_index_linearity_pointwiseentries. (exists pvs_gap_linearity_pointwiseentriesbound. pvs_gap_linearity_pointwiseentriesbound + S (sto_index_linearity_pointwiseentries) = (l)) -> exists sto_left_linearity_pointwiseentries sto_right_linearity_pointwiseentries sto_output_linearity_pointwiseentries. ((exists dst_positive_code_linearity_pointwiseentriesentryleft dst_positive_scale_linearity_pointwiseentriesentryleft dst_negative_code_linearity_pointwiseentriesentryleft dst_negative_scale_linearity_pointwiseentriesentryleft dst_positive_linearity_pointwiseentriesentryleft dst_negative_linearity_pointwiseentriesentryleft. (((F) = (((((dst_positive_code_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft)) * S ((dst_positive_code_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft)) + ((dst_positive_scale_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft))) + (((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) * S ((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) + ((dst_negative_scale_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)))) * S ((((dst_positive_code_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft)) * S ((dst_positive_code_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft)) + ((dst_positive_scale_linearity_pointwiseentriesentryleft) + (dst_positive_scale_linearity_pointwiseentriesentryleft))) + (((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) * S ((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) + ((dst_negative_scale_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)))) + ((((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) * S ((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) + ((dst_negative_scale_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft))) + (((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) * S ((dst_negative_code_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)) + ((dst_negative_scale_linearity_pointwiseentriesentryleft) + (dst_negative_scale_linearity_pointwiseentriesentryleft)))))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryleftpositive. ff_h_pvs_linearity_pointwiseentriesentryleftpositive + S (dst_positive_linearity_pointwiseentriesentryleft) = S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryleft)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryleftpositive. dst_positive_code_linearity_pointwiseentriesentryleft = ff_q_pvs_linearity_pointwiseentriesentryleftpositive * S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryleft) + (dst_positive_linearity_pointwiseentriesentryleft))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryleftnegative. ff_h_pvs_linearity_pointwiseentriesentryleftnegative + S (dst_negative_linearity_pointwiseentriesentryleft) = S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryleft)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryleftnegative. dst_negative_code_linearity_pointwiseentriesentryleft = ff_q_pvs_linearity_pointwiseentriesentryleftnegative * S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryleft) + (dst_negative_linearity_pointwiseentriesentryleft))) /\ (exists ge_balance_positive_linearity_pointwiseentriesentryleftvalue ge_balance_negative_linearity_pointwiseentriesentryleftvalue. (((((sto_left_linearity_pointwiseentries) = 2 * (ge_balance_positive_linearity_pointwiseentriesentryleftvalue) /\ (ge_balance_negative_linearity_pointwiseentriesentryleftvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryleftvaluedecode. (((sto_left_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryleftvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseentriesentryleftvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseentriesentryleftvalue) = S ge_signed_half_linearity_pointwiseentriesentryleftvaluedecode))) /\ ((dst_positive_linearity_pointwiseentriesentryleft) + ge_balance_negative_linearity_pointwiseentriesentryleftvalue = (dst_negative_linearity_pointwiseentriesentryleft) + ge_balance_positive_linearity_pointwiseentriesentryleftvalue))))))))) /\ (((exists dst_positive_code_linearity_pointwiseentriesentryright dst_positive_scale_linearity_pointwiseentriesentryright dst_negative_code_linearity_pointwiseentriesentryright dst_negative_scale_linearity_pointwiseentriesentryright dst_positive_linearity_pointwiseentriesentryright dst_negative_linearity_pointwiseentriesentryright. (((G) = (((((dst_positive_code_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright)) * S ((dst_positive_code_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright)) + ((dst_positive_scale_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright))) + (((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) * S ((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) + ((dst_negative_scale_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)))) * S ((((dst_positive_code_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright)) * S ((dst_positive_code_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright)) + ((dst_positive_scale_linearity_pointwiseentriesentryright) + (dst_positive_scale_linearity_pointwiseentriesentryright))) + (((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) * S ((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) + ((dst_negative_scale_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)))) + ((((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) * S ((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) + ((dst_negative_scale_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright))) + (((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) * S ((dst_negative_code_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)) + ((dst_negative_scale_linearity_pointwiseentriesentryright) + (dst_negative_scale_linearity_pointwiseentriesentryright)))))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryrightpositive. ff_h_pvs_linearity_pointwiseentriesentryrightpositive + S (dst_positive_linearity_pointwiseentriesentryright) = S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryright)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryrightpositive. dst_positive_code_linearity_pointwiseentriesentryright = ff_q_pvs_linearity_pointwiseentriesentryrightpositive * S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryright) + (dst_positive_linearity_pointwiseentriesentryright))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryrightnegative. ff_h_pvs_linearity_pointwiseentriesentryrightnegative + S (dst_negative_linearity_pointwiseentriesentryright) = S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryright)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryrightnegative. dst_negative_code_linearity_pointwiseentriesentryright = ff_q_pvs_linearity_pointwiseentriesentryrightnegative * S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryright) + (dst_negative_linearity_pointwiseentriesentryright))) /\ (exists ge_balance_positive_linearity_pointwiseentriesentryrightvalue ge_balance_negative_linearity_pointwiseentriesentryrightvalue. (((((sto_right_linearity_pointwiseentries) = 2 * (ge_balance_positive_linearity_pointwiseentriesentryrightvalue) /\ (ge_balance_negative_linearity_pointwiseentriesentryrightvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryrightvaluedecode. (((sto_right_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryrightvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseentriesentryrightvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseentriesentryrightvalue) = S ge_signed_half_linearity_pointwiseentriesentryrightvaluedecode))) /\ ((dst_positive_linearity_pointwiseentriesentryright) + ge_balance_negative_linearity_pointwiseentriesentryrightvalue = (dst_negative_linearity_pointwiseentriesentryright) + ge_balance_positive_linearity_pointwiseentriesentryrightvalue))))))))) /\ (((exists dst_positive_code_linearity_pointwiseentriesentryoutput dst_positive_scale_linearity_pointwiseentriesentryoutput dst_negative_code_linearity_pointwiseentriesentryoutput dst_negative_scale_linearity_pointwiseentriesentryoutput dst_positive_linearity_pointwiseentriesentryoutput dst_negative_linearity_pointwiseentriesentryoutput. (((H) = (((((dst_positive_code_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_positive_code_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput)) + ((dst_positive_scale_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput))) + (((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) + ((dst_negative_scale_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)))) * S ((((dst_positive_code_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_positive_code_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput)) + ((dst_positive_scale_linearity_pointwiseentriesentryoutput) + (dst_positive_scale_linearity_pointwiseentriesentryoutput))) + (((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) + ((dst_negative_scale_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)))) + ((((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) + ((dst_negative_scale_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput))) + (((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) * S ((dst_negative_code_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)) + ((dst_negative_scale_linearity_pointwiseentriesentryoutput) + (dst_negative_scale_linearity_pointwiseentriesentryoutput)))))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryoutputpositive. ff_h_pvs_linearity_pointwiseentriesentryoutputpositive + S (dst_positive_linearity_pointwiseentriesentryoutput) = S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryoutput)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryoutputpositive. dst_positive_code_linearity_pointwiseentriesentryoutput = ff_q_pvs_linearity_pointwiseentriesentryoutputpositive * S ((S (sto_index_linearity_pointwiseentries)) * dst_positive_scale_linearity_pointwiseentriesentryoutput) + (dst_positive_linearity_pointwiseentriesentryoutput))) /\ (((((exists ff_h_pvs_linearity_pointwiseentriesentryoutputnegative. ff_h_pvs_linearity_pointwiseentriesentryoutputnegative + S (dst_negative_linearity_pointwiseentriesentryoutput) = S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryoutput)) /\ exists ff_q_pvs_linearity_pointwiseentriesentryoutputnegative. dst_negative_code_linearity_pointwiseentriesentryoutput = ff_q_pvs_linearity_pointwiseentriesentryoutputnegative * S ((S (sto_index_linearity_pointwiseentries)) * dst_negative_scale_linearity_pointwiseentriesentryoutput) + (dst_negative_linearity_pointwiseentriesentryoutput))) /\ (exists ge_balance_positive_linearity_pointwiseentriesentryoutputvalue ge_balance_negative_linearity_pointwiseentriesentryoutputvalue. (((((sto_output_linearity_pointwiseentries) = 2 * (ge_balance_positive_linearity_pointwiseentriesentryoutputvalue) /\ (ge_balance_negative_linearity_pointwiseentriesentryoutputvalue) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryoutputvaluedecode. (((sto_output_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_linearity_pointwiseentriesentryoutputvalue) = 0) /\ (ge_balance_negative_linearity_pointwiseentriesentryoutputvalue) = S ge_signed_half_linearity_pointwiseentriesentryoutputvaluedecode))) /\ ((dst_positive_linearity_pointwiseentriesentryoutput) + ge_balance_negative_linearity_pointwiseentriesentryoutputvalue = (dst_negative_linearity_pointwiseentriesentryoutput) + ge_balance_positive_linearity_pointwiseentriesentryoutputvalue))))))))) /\ (exists dsa_ap_linearity_pointwiseentriesentryoperation dsa_an_linearity_pointwiseentriesentryoperation dsa_bp_linearity_pointwiseentriesentryoperation dsa_bn_linearity_pointwiseentriesentryoperation dsa_cp_linearity_pointwiseentriesentryoperation dsa_cn_linearity_pointwiseentriesentryoperation. (((((sto_left_linearity_pointwiseentries) = 2 * (dsa_ap_linearity_pointwiseentriesentryoperation) /\ (dsa_an_linearity_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryoperationleft. (((sto_left_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryoperationleft + 1 /\ (dsa_ap_linearity_pointwiseentriesentryoperation) = 0) /\ (dsa_an_linearity_pointwiseentriesentryoperation) = S ge_signed_half_linearity_pointwiseentriesentryoperationleft))) /\ ((((((sto_right_linearity_pointwiseentries) = 2 * (dsa_bp_linearity_pointwiseentriesentryoperation) /\ (dsa_bn_linearity_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryoperationright. (((sto_right_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryoperationright + 1 /\ (dsa_bp_linearity_pointwiseentriesentryoperation) = 0) /\ (dsa_bn_linearity_pointwiseentriesentryoperation) = S ge_signed_half_linearity_pointwiseentriesentryoperationright))) /\ ((((((sto_output_linearity_pointwiseentries) = 2 * (dsa_cp_linearity_pointwiseentriesentryoperation) /\ (dsa_cn_linearity_pointwiseentriesentryoperation) = 0) \/ exists ge_signed_half_linearity_pointwiseentriesentryoperationoutput. (((sto_output_linearity_pointwiseentries) = 2 * ge_signed_half_linearity_pointwiseentriesentryoperationoutput + 1 /\ (dsa_cp_linearity_pointwiseentriesentryoperation) = 0) /\ (dsa_cn_linearity_pointwiseentriesentryoperation) = S ge_signed_half_linearity_pointwiseentriesentryoperationoutput))) /\ ((dsa_ap_linearity_pointwiseentriesentryoperation + dsa_bp_linearity_pointwiseentriesentryoperation) + dsa_cn_linearity_pointwiseentriesentryoperation = (dsa_an_linearity_pointwiseentriesentryoperation + dsa_bn_linearity_pointwiseentriesentryoperation) + dsa_cp_linearity_pointwiseentriesentryoperation))))))))))))))))))) -> (exists dst_positive_code_linearity_first dst_positive_scale_linearity_first dst_negative_code_linearity_first dst_negative_scale_linearity_first dst_positive_sum_linearity_first dst_negative_sum_linearity_first. (((F) = (((((dst_positive_code_linearity_first) + (dst_positive_scale_linearity_first)) * S ((dst_positive_code_linearity_first) + (dst_positive_scale_linearity_first)) + ((dst_positive_scale_linearity_first) + (dst_positive_scale_linearity_first))) + (((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) * S ((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) + ((dst_negative_scale_linearity_first) + (dst_negative_scale_linearity_first)))) * S ((((dst_positive_code_linearity_first) + (dst_positive_scale_linearity_first)) * S ((dst_positive_code_linearity_first) + (dst_positive_scale_linearity_first)) + ((dst_positive_scale_linearity_first) + (dst_positive_scale_linearity_first))) + (((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) * S ((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) + ((dst_negative_scale_linearity_first) + (dst_negative_scale_linearity_first)))) + ((((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) * S ((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) + ((dst_negative_scale_linearity_first) + (dst_negative_scale_linearity_first))) + (((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) * S ((dst_negative_code_linearity_first) + (dst_negative_scale_linearity_first)) + ((dst_negative_scale_linearity_first) + (dst_negative_scale_linearity_first)))))) /\ (((exists fs_u_dst_linearity_firstpositive fs_v_dst_linearity_firstpositive. ((((exists fs_h_dst_linearity_firstpositive_body_start. fs_h_dst_linearity_firstpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_firstpositive)) /\ exists fs_q_dst_linearity_firstpositive_body_start. fs_u_dst_linearity_firstpositive = fs_q_dst_linearity_firstpositive_body_start * S ((S (0)) * fs_v_dst_linearity_firstpositive) + (0))) /\ ((((exists fs_h_dst_linearity_firstpositive_body_terminal. fs_h_dst_linearity_firstpositive_body_terminal + S (dst_positive_sum_linearity_first) = S ((S (l)) * fs_v_dst_linearity_firstpositive)) /\ exists fs_q_dst_linearity_firstpositive_body_terminal. fs_u_dst_linearity_firstpositive = fs_q_dst_linearity_firstpositive_body_terminal * S ((S (l)) * fs_v_dst_linearity_firstpositive) + (dst_positive_sum_linearity_first))) /\ forall fs_i_dst_linearity_firstpositive_body_steps. (exists fs_lt_dst_linearity_firstpositive_body_steps_bound. fs_lt_dst_linearity_firstpositive_body_steps_bound + S fs_i_dst_linearity_firstpositive_body_steps = l) -> exists fs_a_dst_linearity_firstpositive_body_steps fs_r_dst_linearity_firstpositive_body_steps fs_s_dst_linearity_firstpositive_body_steps. ((((exists fs_h_dst_linearity_firstpositive_body_steps_summand. fs_h_dst_linearity_firstpositive_body_steps_summand + S (fs_a_dst_linearity_firstpositive_body_steps) = S ((S (fs_i_dst_linearity_firstpositive_body_steps)) * dst_positive_scale_linearity_first)) /\ exists fs_q_dst_linearity_firstpositive_body_steps_summand. dst_positive_code_linearity_first = fs_q_dst_linearity_firstpositive_body_steps_summand * S ((S (fs_i_dst_linearity_firstpositive_body_steps)) * dst_positive_scale_linearity_first) + (fs_a_dst_linearity_firstpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_firstpositive_body_steps_partial. fs_h_dst_linearity_firstpositive_body_steps_partial + S (fs_r_dst_linearity_firstpositive_body_steps) = S ((S (fs_i_dst_linearity_firstpositive_body_steps)) * fs_v_dst_linearity_firstpositive)) /\ exists fs_q_dst_linearity_firstpositive_body_steps_partial. fs_u_dst_linearity_firstpositive = fs_q_dst_linearity_firstpositive_body_steps_partial * S ((S (fs_i_dst_linearity_firstpositive_body_steps)) * fs_v_dst_linearity_firstpositive) + (fs_r_dst_linearity_firstpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_firstpositive_body_steps_successor. fs_h_dst_linearity_firstpositive_body_steps_successor + S (fs_s_dst_linearity_firstpositive_body_steps) = S ((S (S fs_i_dst_linearity_firstpositive_body_steps)) * fs_v_dst_linearity_firstpositive)) /\ exists fs_q_dst_linearity_firstpositive_body_steps_successor. fs_u_dst_linearity_firstpositive = fs_q_dst_linearity_firstpositive_body_steps_successor * S ((S (S fs_i_dst_linearity_firstpositive_body_steps)) * fs_v_dst_linearity_firstpositive) + (fs_s_dst_linearity_firstpositive_body_steps))) /\ fs_s_dst_linearity_firstpositive_body_steps = fs_r_dst_linearity_firstpositive_body_steps + fs_a_dst_linearity_firstpositive_body_steps)))))) /\ (((exists fs_u_dst_linearity_firstnegative fs_v_dst_linearity_firstnegative. ((((exists fs_h_dst_linearity_firstnegative_body_start. fs_h_dst_linearity_firstnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_firstnegative)) /\ exists fs_q_dst_linearity_firstnegative_body_start. fs_u_dst_linearity_firstnegative = fs_q_dst_linearity_firstnegative_body_start * S ((S (0)) * fs_v_dst_linearity_firstnegative) + (0))) /\ ((((exists fs_h_dst_linearity_firstnegative_body_terminal. fs_h_dst_linearity_firstnegative_body_terminal + S (dst_negative_sum_linearity_first) = S ((S (l)) * fs_v_dst_linearity_firstnegative)) /\ exists fs_q_dst_linearity_firstnegative_body_terminal. fs_u_dst_linearity_firstnegative = fs_q_dst_linearity_firstnegative_body_terminal * S ((S (l)) * fs_v_dst_linearity_firstnegative) + (dst_negative_sum_linearity_first))) /\ forall fs_i_dst_linearity_firstnegative_body_steps. (exists fs_lt_dst_linearity_firstnegative_body_steps_bound. fs_lt_dst_linearity_firstnegative_body_steps_bound + S fs_i_dst_linearity_firstnegative_body_steps = l) -> exists fs_a_dst_linearity_firstnegative_body_steps fs_r_dst_linearity_firstnegative_body_steps fs_s_dst_linearity_firstnegative_body_steps. ((((exists fs_h_dst_linearity_firstnegative_body_steps_summand. fs_h_dst_linearity_firstnegative_body_steps_summand + S (fs_a_dst_linearity_firstnegative_body_steps) = S ((S (fs_i_dst_linearity_firstnegative_body_steps)) * dst_negative_scale_linearity_first)) /\ exists fs_q_dst_linearity_firstnegative_body_steps_summand. dst_negative_code_linearity_first = fs_q_dst_linearity_firstnegative_body_steps_summand * S ((S (fs_i_dst_linearity_firstnegative_body_steps)) * dst_negative_scale_linearity_first) + (fs_a_dst_linearity_firstnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_firstnegative_body_steps_partial. fs_h_dst_linearity_firstnegative_body_steps_partial + S (fs_r_dst_linearity_firstnegative_body_steps) = S ((S (fs_i_dst_linearity_firstnegative_body_steps)) * fs_v_dst_linearity_firstnegative)) /\ exists fs_q_dst_linearity_firstnegative_body_steps_partial. fs_u_dst_linearity_firstnegative = fs_q_dst_linearity_firstnegative_body_steps_partial * S ((S (fs_i_dst_linearity_firstnegative_body_steps)) * fs_v_dst_linearity_firstnegative) + (fs_r_dst_linearity_firstnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_firstnegative_body_steps_successor. fs_h_dst_linearity_firstnegative_body_steps_successor + S (fs_s_dst_linearity_firstnegative_body_steps) = S ((S (S fs_i_dst_linearity_firstnegative_body_steps)) * fs_v_dst_linearity_firstnegative)) /\ exists fs_q_dst_linearity_firstnegative_body_steps_successor. fs_u_dst_linearity_firstnegative = fs_q_dst_linearity_firstnegative_body_steps_successor * S ((S (S fs_i_dst_linearity_firstnegative_body_steps)) * fs_v_dst_linearity_firstnegative) + (fs_s_dst_linearity_firstnegative_body_steps))) /\ fs_s_dst_linearity_firstnegative_body_steps = fs_r_dst_linearity_firstnegative_body_steps + fs_a_dst_linearity_firstnegative_body_steps)))))) /\ (exists ge_balance_positive_linearity_firstresult ge_balance_negative_linearity_firstresult. (((((a) = 2 * (ge_balance_positive_linearity_firstresult) /\ (ge_balance_negative_linearity_firstresult) = 0) \/ exists ge_signed_half_linearity_firstresultdecode. (((a) = 2 * ge_signed_half_linearity_firstresultdecode + 1 /\ (ge_balance_positive_linearity_firstresult) = 0) /\ (ge_balance_negative_linearity_firstresult) = S ge_signed_half_linearity_firstresultdecode))) /\ ((dst_positive_sum_linearity_first) + ge_balance_negative_linearity_firstresult = (dst_negative_sum_linearity_first) + ge_balance_positive_linearity_firstresult))))))))) -> (exists dst_positive_code_linearity_second dst_positive_scale_linearity_second dst_negative_code_linearity_second dst_negative_scale_linearity_second dst_positive_sum_linearity_second dst_negative_sum_linearity_second. (((G) = (((((dst_positive_code_linearity_second) + (dst_positive_scale_linearity_second)) * S ((dst_positive_code_linearity_second) + (dst_positive_scale_linearity_second)) + ((dst_positive_scale_linearity_second) + (dst_positive_scale_linearity_second))) + (((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) * S ((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) + ((dst_negative_scale_linearity_second) + (dst_negative_scale_linearity_second)))) * S ((((dst_positive_code_linearity_second) + (dst_positive_scale_linearity_second)) * S ((dst_positive_code_linearity_second) + (dst_positive_scale_linearity_second)) + ((dst_positive_scale_linearity_second) + (dst_positive_scale_linearity_second))) + (((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) * S ((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) + ((dst_negative_scale_linearity_second) + (dst_negative_scale_linearity_second)))) + ((((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) * S ((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) + ((dst_negative_scale_linearity_second) + (dst_negative_scale_linearity_second))) + (((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) * S ((dst_negative_code_linearity_second) + (dst_negative_scale_linearity_second)) + ((dst_negative_scale_linearity_second) + (dst_negative_scale_linearity_second)))))) /\ (((exists fs_u_dst_linearity_secondpositive fs_v_dst_linearity_secondpositive. ((((exists fs_h_dst_linearity_secondpositive_body_start. fs_h_dst_linearity_secondpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_secondpositive)) /\ exists fs_q_dst_linearity_secondpositive_body_start. fs_u_dst_linearity_secondpositive = fs_q_dst_linearity_secondpositive_body_start * S ((S (0)) * fs_v_dst_linearity_secondpositive) + (0))) /\ ((((exists fs_h_dst_linearity_secondpositive_body_terminal. fs_h_dst_linearity_secondpositive_body_terminal + S (dst_positive_sum_linearity_second) = S ((S (l)) * fs_v_dst_linearity_secondpositive)) /\ exists fs_q_dst_linearity_secondpositive_body_terminal. fs_u_dst_linearity_secondpositive = fs_q_dst_linearity_secondpositive_body_terminal * S ((S (l)) * fs_v_dst_linearity_secondpositive) + (dst_positive_sum_linearity_second))) /\ forall fs_i_dst_linearity_secondpositive_body_steps. (exists fs_lt_dst_linearity_secondpositive_body_steps_bound. fs_lt_dst_linearity_secondpositive_body_steps_bound + S fs_i_dst_linearity_secondpositive_body_steps = l) -> exists fs_a_dst_linearity_secondpositive_body_steps fs_r_dst_linearity_secondpositive_body_steps fs_s_dst_linearity_secondpositive_body_steps. ((((exists fs_h_dst_linearity_secondpositive_body_steps_summand. fs_h_dst_linearity_secondpositive_body_steps_summand + S (fs_a_dst_linearity_secondpositive_body_steps) = S ((S (fs_i_dst_linearity_secondpositive_body_steps)) * dst_positive_scale_linearity_second)) /\ exists fs_q_dst_linearity_secondpositive_body_steps_summand. dst_positive_code_linearity_second = fs_q_dst_linearity_secondpositive_body_steps_summand * S ((S (fs_i_dst_linearity_secondpositive_body_steps)) * dst_positive_scale_linearity_second) + (fs_a_dst_linearity_secondpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_secondpositive_body_steps_partial. fs_h_dst_linearity_secondpositive_body_steps_partial + S (fs_r_dst_linearity_secondpositive_body_steps) = S ((S (fs_i_dst_linearity_secondpositive_body_steps)) * fs_v_dst_linearity_secondpositive)) /\ exists fs_q_dst_linearity_secondpositive_body_steps_partial. fs_u_dst_linearity_secondpositive = fs_q_dst_linearity_secondpositive_body_steps_partial * S ((S (fs_i_dst_linearity_secondpositive_body_steps)) * fs_v_dst_linearity_secondpositive) + (fs_r_dst_linearity_secondpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_secondpositive_body_steps_successor. fs_h_dst_linearity_secondpositive_body_steps_successor + S (fs_s_dst_linearity_secondpositive_body_steps) = S ((S (S fs_i_dst_linearity_secondpositive_body_steps)) * fs_v_dst_linearity_secondpositive)) /\ exists fs_q_dst_linearity_secondpositive_body_steps_successor. fs_u_dst_linearity_secondpositive = fs_q_dst_linearity_secondpositive_body_steps_successor * S ((S (S fs_i_dst_linearity_secondpositive_body_steps)) * fs_v_dst_linearity_secondpositive) + (fs_s_dst_linearity_secondpositive_body_steps))) /\ fs_s_dst_linearity_secondpositive_body_steps = fs_r_dst_linearity_secondpositive_body_steps + fs_a_dst_linearity_secondpositive_body_steps)))))) /\ (((exists fs_u_dst_linearity_secondnegative fs_v_dst_linearity_secondnegative. ((((exists fs_h_dst_linearity_secondnegative_body_start. fs_h_dst_linearity_secondnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_secondnegative)) /\ exists fs_q_dst_linearity_secondnegative_body_start. fs_u_dst_linearity_secondnegative = fs_q_dst_linearity_secondnegative_body_start * S ((S (0)) * fs_v_dst_linearity_secondnegative) + (0))) /\ ((((exists fs_h_dst_linearity_secondnegative_body_terminal. fs_h_dst_linearity_secondnegative_body_terminal + S (dst_negative_sum_linearity_second) = S ((S (l)) * fs_v_dst_linearity_secondnegative)) /\ exists fs_q_dst_linearity_secondnegative_body_terminal. fs_u_dst_linearity_secondnegative = fs_q_dst_linearity_secondnegative_body_terminal * S ((S (l)) * fs_v_dst_linearity_secondnegative) + (dst_negative_sum_linearity_second))) /\ forall fs_i_dst_linearity_secondnegative_body_steps. (exists fs_lt_dst_linearity_secondnegative_body_steps_bound. fs_lt_dst_linearity_secondnegative_body_steps_bound + S fs_i_dst_linearity_secondnegative_body_steps = l) -> exists fs_a_dst_linearity_secondnegative_body_steps fs_r_dst_linearity_secondnegative_body_steps fs_s_dst_linearity_secondnegative_body_steps. ((((exists fs_h_dst_linearity_secondnegative_body_steps_summand. fs_h_dst_linearity_secondnegative_body_steps_summand + S (fs_a_dst_linearity_secondnegative_body_steps) = S ((S (fs_i_dst_linearity_secondnegative_body_steps)) * dst_negative_scale_linearity_second)) /\ exists fs_q_dst_linearity_secondnegative_body_steps_summand. dst_negative_code_linearity_second = fs_q_dst_linearity_secondnegative_body_steps_summand * S ((S (fs_i_dst_linearity_secondnegative_body_steps)) * dst_negative_scale_linearity_second) + (fs_a_dst_linearity_secondnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_secondnegative_body_steps_partial. fs_h_dst_linearity_secondnegative_body_steps_partial + S (fs_r_dst_linearity_secondnegative_body_steps) = S ((S (fs_i_dst_linearity_secondnegative_body_steps)) * fs_v_dst_linearity_secondnegative)) /\ exists fs_q_dst_linearity_secondnegative_body_steps_partial. fs_u_dst_linearity_secondnegative = fs_q_dst_linearity_secondnegative_body_steps_partial * S ((S (fs_i_dst_linearity_secondnegative_body_steps)) * fs_v_dst_linearity_secondnegative) + (fs_r_dst_linearity_secondnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_secondnegative_body_steps_successor. fs_h_dst_linearity_secondnegative_body_steps_successor + S (fs_s_dst_linearity_secondnegative_body_steps) = S ((S (S fs_i_dst_linearity_secondnegative_body_steps)) * fs_v_dst_linearity_secondnegative)) /\ exists fs_q_dst_linearity_secondnegative_body_steps_successor. fs_u_dst_linearity_secondnegative = fs_q_dst_linearity_secondnegative_body_steps_successor * S ((S (S fs_i_dst_linearity_secondnegative_body_steps)) * fs_v_dst_linearity_secondnegative) + (fs_s_dst_linearity_secondnegative_body_steps))) /\ fs_s_dst_linearity_secondnegative_body_steps = fs_r_dst_linearity_secondnegative_body_steps + fs_a_dst_linearity_secondnegative_body_steps)))))) /\ (exists ge_balance_positive_linearity_secondresult ge_balance_negative_linearity_secondresult. (((((b) = 2 * (ge_balance_positive_linearity_secondresult) /\ (ge_balance_negative_linearity_secondresult) = 0) \/ exists ge_signed_half_linearity_secondresultdecode. (((b) = 2 * ge_signed_half_linearity_secondresultdecode + 1 /\ (ge_balance_positive_linearity_secondresult) = 0) /\ (ge_balance_negative_linearity_secondresult) = S ge_signed_half_linearity_secondresultdecode))) /\ ((dst_positive_sum_linearity_second) + ge_balance_negative_linearity_secondresult = (dst_negative_sum_linearity_second) + ge_balance_positive_linearity_secondresult))))))))) -> (exists dst_positive_code_linearity_output dst_positive_scale_linearity_output dst_negative_code_linearity_output dst_negative_scale_linearity_output dst_positive_sum_linearity_output dst_negative_sum_linearity_output. (((H) = (((((dst_positive_code_linearity_output) + (dst_positive_scale_linearity_output)) * S ((dst_positive_code_linearity_output) + (dst_positive_scale_linearity_output)) + ((dst_positive_scale_linearity_output) + (dst_positive_scale_linearity_output))) + (((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) * S ((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) + ((dst_negative_scale_linearity_output) + (dst_negative_scale_linearity_output)))) * S ((((dst_positive_code_linearity_output) + (dst_positive_scale_linearity_output)) * S ((dst_positive_code_linearity_output) + (dst_positive_scale_linearity_output)) + ((dst_positive_scale_linearity_output) + (dst_positive_scale_linearity_output))) + (((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) * S ((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) + ((dst_negative_scale_linearity_output) + (dst_negative_scale_linearity_output)))) + ((((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) * S ((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) + ((dst_negative_scale_linearity_output) + (dst_negative_scale_linearity_output))) + (((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) * S ((dst_negative_code_linearity_output) + (dst_negative_scale_linearity_output)) + ((dst_negative_scale_linearity_output) + (dst_negative_scale_linearity_output)))))) /\ (((exists fs_u_dst_linearity_outputpositive fs_v_dst_linearity_outputpositive. ((((exists fs_h_dst_linearity_outputpositive_body_start. fs_h_dst_linearity_outputpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_outputpositive)) /\ exists fs_q_dst_linearity_outputpositive_body_start. fs_u_dst_linearity_outputpositive = fs_q_dst_linearity_outputpositive_body_start * S ((S (0)) * fs_v_dst_linearity_outputpositive) + (0))) /\ ((((exists fs_h_dst_linearity_outputpositive_body_terminal. fs_h_dst_linearity_outputpositive_body_terminal + S (dst_positive_sum_linearity_output) = S ((S (l)) * fs_v_dst_linearity_outputpositive)) /\ exists fs_q_dst_linearity_outputpositive_body_terminal. fs_u_dst_linearity_outputpositive = fs_q_dst_linearity_outputpositive_body_terminal * S ((S (l)) * fs_v_dst_linearity_outputpositive) + (dst_positive_sum_linearity_output))) /\ forall fs_i_dst_linearity_outputpositive_body_steps. (exists fs_lt_dst_linearity_outputpositive_body_steps_bound. fs_lt_dst_linearity_outputpositive_body_steps_bound + S fs_i_dst_linearity_outputpositive_body_steps = l) -> exists fs_a_dst_linearity_outputpositive_body_steps fs_r_dst_linearity_outputpositive_body_steps fs_s_dst_linearity_outputpositive_body_steps. ((((exists fs_h_dst_linearity_outputpositive_body_steps_summand. fs_h_dst_linearity_outputpositive_body_steps_summand + S (fs_a_dst_linearity_outputpositive_body_steps) = S ((S (fs_i_dst_linearity_outputpositive_body_steps)) * dst_positive_scale_linearity_output)) /\ exists fs_q_dst_linearity_outputpositive_body_steps_summand. dst_positive_code_linearity_output = fs_q_dst_linearity_outputpositive_body_steps_summand * S ((S (fs_i_dst_linearity_outputpositive_body_steps)) * dst_positive_scale_linearity_output) + (fs_a_dst_linearity_outputpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_outputpositive_body_steps_partial. fs_h_dst_linearity_outputpositive_body_steps_partial + S (fs_r_dst_linearity_outputpositive_body_steps) = S ((S (fs_i_dst_linearity_outputpositive_body_steps)) * fs_v_dst_linearity_outputpositive)) /\ exists fs_q_dst_linearity_outputpositive_body_steps_partial. fs_u_dst_linearity_outputpositive = fs_q_dst_linearity_outputpositive_body_steps_partial * S ((S (fs_i_dst_linearity_outputpositive_body_steps)) * fs_v_dst_linearity_outputpositive) + (fs_r_dst_linearity_outputpositive_body_steps))) /\ ((((exists fs_h_dst_linearity_outputpositive_body_steps_successor. fs_h_dst_linearity_outputpositive_body_steps_successor + S (fs_s_dst_linearity_outputpositive_body_steps) = S ((S (S fs_i_dst_linearity_outputpositive_body_steps)) * fs_v_dst_linearity_outputpositive)) /\ exists fs_q_dst_linearity_outputpositive_body_steps_successor. fs_u_dst_linearity_outputpositive = fs_q_dst_linearity_outputpositive_body_steps_successor * S ((S (S fs_i_dst_linearity_outputpositive_body_steps)) * fs_v_dst_linearity_outputpositive) + (fs_s_dst_linearity_outputpositive_body_steps))) /\ fs_s_dst_linearity_outputpositive_body_steps = fs_r_dst_linearity_outputpositive_body_steps + fs_a_dst_linearity_outputpositive_body_steps)))))) /\ (((exists fs_u_dst_linearity_outputnegative fs_v_dst_linearity_outputnegative. ((((exists fs_h_dst_linearity_outputnegative_body_start. fs_h_dst_linearity_outputnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_linearity_outputnegative)) /\ exists fs_q_dst_linearity_outputnegative_body_start. fs_u_dst_linearity_outputnegative = fs_q_dst_linearity_outputnegative_body_start * S ((S (0)) * fs_v_dst_linearity_outputnegative) + (0))) /\ ((((exists fs_h_dst_linearity_outputnegative_body_terminal. fs_h_dst_linearity_outputnegative_body_terminal + S (dst_negative_sum_linearity_output) = S ((S (l)) * fs_v_dst_linearity_outputnegative)) /\ exists fs_q_dst_linearity_outputnegative_body_terminal. fs_u_dst_linearity_outputnegative = fs_q_dst_linearity_outputnegative_body_terminal * S ((S (l)) * fs_v_dst_linearity_outputnegative) + (dst_negative_sum_linearity_output))) /\ forall fs_i_dst_linearity_outputnegative_body_steps. (exists fs_lt_dst_linearity_outputnegative_body_steps_bound. fs_lt_dst_linearity_outputnegative_body_steps_bound + S fs_i_dst_linearity_outputnegative_body_steps = l) -> exists fs_a_dst_linearity_outputnegative_body_steps fs_r_dst_linearity_outputnegative_body_steps fs_s_dst_linearity_outputnegative_body_steps. ((((exists fs_h_dst_linearity_outputnegative_body_steps_summand. fs_h_dst_linearity_outputnegative_body_steps_summand + S (fs_a_dst_linearity_outputnegative_body_steps) = S ((S (fs_i_dst_linearity_outputnegative_body_steps)) * dst_negative_scale_linearity_output)) /\ exists fs_q_dst_linearity_outputnegative_body_steps_summand. dst_negative_code_linearity_output = fs_q_dst_linearity_outputnegative_body_steps_summand * S ((S (fs_i_dst_linearity_outputnegative_body_steps)) * dst_negative_scale_linearity_output) + (fs_a_dst_linearity_outputnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_outputnegative_body_steps_partial. fs_h_dst_linearity_outputnegative_body_steps_partial + S (fs_r_dst_linearity_outputnegative_body_steps) = S ((S (fs_i_dst_linearity_outputnegative_body_steps)) * fs_v_dst_linearity_outputnegative)) /\ exists fs_q_dst_linearity_outputnegative_body_steps_partial. fs_u_dst_linearity_outputnegative = fs_q_dst_linearity_outputnegative_body_steps_partial * S ((S (fs_i_dst_linearity_outputnegative_body_steps)) * fs_v_dst_linearity_outputnegative) + (fs_r_dst_linearity_outputnegative_body_steps))) /\ ((((exists fs_h_dst_linearity_outputnegative_body_steps_successor. fs_h_dst_linearity_outputnegative_body_steps_successor + S (fs_s_dst_linearity_outputnegative_body_steps) = S ((S (S fs_i_dst_linearity_outputnegative_body_steps)) * fs_v_dst_linearity_outputnegative)) /\ exists fs_q_dst_linearity_outputnegative_body_steps_successor. fs_u_dst_linearity_outputnegative = fs_q_dst_linearity_outputnegative_body_steps_successor * S ((S (S fs_i_dst_linearity_outputnegative_body_steps)) * fs_v_dst_linearity_outputnegative) + (fs_s_dst_linearity_outputnegative_body_steps))) /\ fs_s_dst_linearity_outputnegative_body_steps = fs_r_dst_linearity_outputnegative_body_steps + fs_a_dst_linearity_outputnegative_body_steps)))))) /\ (exists ge_balance_positive_linearity_outputresult ge_balance_negative_linearity_outputresult. (((((c) = 2 * (ge_balance_positive_linearity_outputresult) /\ (ge_balance_negative_linearity_outputresult) = 0) \/ exists ge_signed_half_linearity_outputresultdecode. (((c) = 2 * ge_signed_half_linearity_outputresultdecode + 1 /\ (ge_balance_positive_linearity_outputresult) = 0) /\ (ge_balance_negative_linearity_outputresult) = S ge_signed_half_linearity_outputresultdecode))) /\ ((dst_positive_sum_linearity_output) + ge_balance_negative_linearity_outputresult = (dst_negative_sum_linearity_output) + ge_balance_positive_linearity_outputresult))))))))) -> (exists dsa_ap_linearity_result dsa_an_linearity_result dsa_bp_linearity_result dsa_bn_linearity_result dsa_cp_linearity_result dsa_cn_linearity_result. (((((a) = 2 * (dsa_ap_linearity_result) /\ (dsa_an_linearity_result) = 0) \/ exists ge_signed_half_linearity_resultleft. (((a) = 2 * ge_signed_half_linearity_resultleft + 1 /\ (dsa_ap_linearity_result) = 0) /\ (dsa_an_linearity_result) = S ge_signed_half_linearity_resultleft))) /\ ((((((b) = 2 * (dsa_bp_linearity_result) /\ (dsa_bn_linearity_result) = 0) \/ exists ge_signed_half_linearity_resultright. (((b) = 2 * ge_signed_half_linearity_resultright + 1 /\ (dsa_bp_linearity_result) = 0) /\ (dsa_bn_linearity_result) = S ge_signed_half_linearity_resultright))) /\ ((((((c) = 2 * (dsa_cp_linearity_result) /\ (dsa_cn_linearity_result) = 0) \/ exists ge_signed_half_linearity_resultoutput. (((c) = 2 * ge_signed_half_linearity_resultoutput + 1 /\ (dsa_cp_linearity_result) = 0) /\ (dsa_cn_linearity_result) = S ge_signed_half_linearity_resultoutput))) /\ ((dsa_ap_linearity_result + dsa_bp_linearity_result) + dsa_cn_linearity_result = (dsa_an_linearity_result + dsa_bn_linearity_result) + dsa_cp_linearity_result)))))))

Constructive proof overview

Generated structural guide

Ordinary prefix induction proves that the actual sum of a witnessed pointwise table addition is the canonical signed sum of the two actual prefix sums, including length zero.

The unchanged tactic script uses 7 declared prerequisites and contains 122 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_add_zero_left Alpha theorem; checked-use authorized divisor_signed_sum_successor_decompose Alpha theorem; checked-use authorized WS0004 signed_table_add_restrict WS0003 signed_table_add_lookup le_refl Stable theorem; checked-use authorized WS0019 signed_table_add_medial

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

122 script commands · 20 reading checkpoints · 8 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–10

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 F
  3. L3
    intro G
  4. L4
    intro H
  5. L5
    intro a
  6. L6
    intro b
  7. L7
    intro c
  8. L8
    intro hpoint
  9. L9
    intro hF
  10. L10
    intro hG
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hH
03Establish haL12–16

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

  1. L12
    have ha : a = 0
  2. L13
    specialize divisor_signed_sum_empty_value (F)
  3. L14
    specialize divisor_signed_sum_empty_value (a)
  4. L15
    apply divisor_signed_sum_empty_value
  5. L16
    exact hF
04Establish hbL17–21

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

  1. L17
    have hb : b = 0
  2. L18
    specialize divisor_signed_sum_empty_value (G)
  3. L19
    specialize divisor_signed_sum_empty_value (b)
  4. L20
    apply divisor_signed_sum_empty_value
  5. L21
    exact hG
05Establish hcL22–31

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

  1. L22
    have hc : c = 0
  2. L23
    specialize divisor_signed_sum_empty_value (H)
  3. L24
    specialize divisor_signed_sum_empty_value (c)
  4. L25
    apply divisor_signed_sum_empty_value
  5. L26
    exact hH
  6. L27
    rewrite ha
  7. L28
    rewrite ha
  8. L29
    rewrite hb
  9. L30
    rewrite hb
  10. L31
    rewrite hc
06Calculate and transport equalitiesL32–32

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L32
    rewrite hc
07Use earlier factsL33–34

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

  1. L33
    specialize signed_add_zero_left (0)
  2. L34
    apply signed_add_zero_left
08Fix variables and assumptionsL35–44

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

  1. L35
    intro F
  2. L36
    intro G
  3. L37
    intro H
  4. L38
    intro a
  5. L39
    intro b
  6. L40
    intro c
  7. L41
    intro hpoint
  8. L42
    intro hF
  9. L43
    intro hG
  10. L44
    intro hH
09Establish hdFL45–50

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

  1. L45
    have hdF : ∃ ssl_prefix_add_step_F. ∃ ssl_entry_add_step_F. SignedPrefixSum(F,l,ssl_prefix_add_step_F) ∧ (ArithAt(F,l,ssl_entry_add_step_F) ∧ SignedAdd(ssl_prefix_add_step_F,ssl_entry_add_step_F,a))Definitions: SignedAddArithAtSignedPrefixSum
  2. L46
    specialize divisor_signed_sum_successor_decompose (F)
  3. L47
    specialize divisor_signed_sum_successor_decompose (l)
  4. L48
    specialize divisor_signed_sum_successor_decompose (a)
  5. L49
    apply divisor_signed_sum_successor_decompose
  6. L50
    exact hF
10Separate the logical casesL51–54

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

  1. L51
    cases hdF
  2. L52
    cases hdF_witness
  3. L53
    cases hdF_witness_witness
  4. L54
    cases hdF_witness_witness_right
11Establish hdGL55–60

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

  1. L55
    have hdG : ∃ ssl_prefix_add_step_G. ∃ ssl_entry_add_step_G. SignedPrefixSum(G,l,ssl_prefix_add_step_G) ∧ (ArithAt(G,l,ssl_entry_add_step_G) ∧ SignedAdd(ssl_prefix_add_step_G,ssl_entry_add_step_G,b))Definitions: SignedAddArithAtSignedPrefixSum
  2. L56
    specialize divisor_signed_sum_successor_decompose (G)
  3. L57
    specialize divisor_signed_sum_successor_decompose (l)
  4. L58
    specialize divisor_signed_sum_successor_decompose (b)
  5. L59
    apply divisor_signed_sum_successor_decompose
  6. L60
    exact hG
12Separate the logical casesL61–64

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

  1. L61
    cases hdG
  2. L62
    cases hdG_witness
  3. L63
    cases hdG_witness_witness
  4. L64
    cases hdG_witness_witness_right
13Establish hdHL65–70

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

  1. L65
    have hdH : ∃ ssl_prefix_add_step_H. ∃ ssl_entry_add_step_H. SignedPrefixSum(H,l,ssl_prefix_add_step_H) ∧ (ArithAt(H,l,ssl_entry_add_step_H) ∧ SignedAdd(ssl_prefix_add_step_H,ssl_entry_add_step_H,c))Definitions: SignedAddArithAtSignedPrefixSum
  2. L66
    specialize divisor_signed_sum_successor_decompose (H)
  3. L67
    specialize divisor_signed_sum_successor_decompose (l)
  4. L68
    specialize divisor_signed_sum_successor_decompose (c)
  5. L69
    apply divisor_signed_sum_successor_decompose
  6. L70
    exact hH
14Separate the logical casesL71–74

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

  1. L71
    cases hdH
  2. L72
    cases hdH_witness
  3. L73
    cases hdH_witness_witness
  4. L74
    cases hdH_witness_witness_right
15Establish hpL75–84

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

  1. L75
    have hp : SignedAdd(x,x2,x4)Definitions: SignedAdd
  2. L76
    specialize IH (F)
  3. L77
    specialize IH (G)
  4. L78
    specialize IH (H)
  5. L79
    specialize IH (x)
  6. L80
    specialize IH (x2)
  7. L81
    specialize IH (x4)
  8. L82
    apply IH
  9. L83
    specialize signed_table_add_restrict (F)
  10. L84
    specialize signed_table_add_restrict (G)
16Use earlier factsL85–91

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

  1. L85
    specialize signed_table_add_restrict (H)
  2. L86
    specialize signed_table_add_restrict (l)
  3. L87
    apply signed_table_add_restrict
  4. L88
    exact hpoint
  5. L89
    exact hdF_witness_witness_left
  6. L90
    exact hdG_witness_witness_left
  7. L91
    exact hdH_witness_witness_left
17Establish heL92–101

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

  1. L92
    have he : SignedAdd(x1,x3,x5)Definitions: SignedAdd
  2. L93
    specialize signed_table_add_lookup (F)
  3. L94
    specialize signed_table_add_lookup (G)
  4. L95
    specialize signed_table_add_lookup (H)
  5. L96
    specialize signed_table_add_lookup (S l)
  6. L97
    specialize signed_table_add_lookup (l)
  7. L98
    specialize signed_table_add_lookup (x1)
  8. L99
    specialize signed_table_add_lookup (x3)
  9. L100
    specialize signed_table_add_lookup (x5)
  10. L101
    apply signed_table_add_lookup
18Use earlier factsL102–111

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

  1. L102
    exact hpoint
  2. L103
    specialize le_refl (S l)
  3. L104
    apply le_refl
  4. L105
    exact hdF_witness_witness_right_left
  5. L106
    exact hdG_witness_witness_right_left
  6. L107
    exact hdH_witness_witness_right_left
  7. L108
    specialize signed_table_add_medial (x)
  8. L109
    specialize signed_table_add_medial (x1)
  9. L110
    specialize signed_table_add_medial (x2)
  10. L111
    specialize signed_table_add_medial (x3)
19Use earlier factsL112–121

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

  1. L112
    specialize signed_table_add_medial (a)
  2. L113
    specialize signed_table_add_medial (b)
  3. L114
    specialize signed_table_add_medial (x4)
  4. L115
    specialize signed_table_add_medial (x5)
  5. L116
    specialize signed_table_add_medial (c)
  6. L117
    apply signed_table_add_medial
  7. L118
    exact hdF_witness_witness_right_right
  8. L119
    exact hdG_witness_witness_right_right
  9. L120
    exact hp
  10. L121
    exact he
20Use earlier factsL122–122

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

  1. L122
    exact hdH_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 122 lines
  1. 0001induction l
  2. 0002intro F
  3. 0003intro G
  4. 0004intro H
  5. 0005intro a
  6. 0006intro b
  7. 0007intro c
  8. 0008intro hpoint
  9. 0009intro hF
  10. 0010intro hG
  11. 0011intro hH
  12. 0012have ha : a = 0
  13. 0013specialize divisor_signed_sum_empty_value (F)
  14. 0014specialize divisor_signed_sum_empty_value (a)
  15. 0015apply divisor_signed_sum_empty_value
  16. 0016exact hF
  17. 0017have hb : b = 0
  18. 0018specialize divisor_signed_sum_empty_value (G)
  19. 0019specialize divisor_signed_sum_empty_value (b)
  20. 0020apply divisor_signed_sum_empty_value
  21. 0021exact hG
  22. 0022have hc : c = 0
  23. 0023specialize divisor_signed_sum_empty_value (H)
  24. 0024specialize divisor_signed_sum_empty_value (c)
  25. 0025apply divisor_signed_sum_empty_value
  26. 0026exact hH
  27. 0027rewrite ha
  28. 0028rewrite ha
  29. 0029rewrite hb
  30. 0030rewrite hb
  31. 0031rewrite hc
  32. 0032rewrite hc
  33. 0033specialize signed_add_zero_left (0)
  34. 0034apply signed_add_zero_left
  35. 0035intro F
  36. 0036intro G
  37. 0037intro H
  38. 0038intro a
  39. 0039intro b
  40. 0040intro c
  41. 0041intro hpoint
  42. 0042intro hF
  43. 0043intro hG
  44. 0044intro hH
  45. 0045have hdF : exists ssl_prefix_add_step_F ssl_entry_add_step_F. ((exists dst_positive_code_add_step_Fsum dst_positive_scale_add_step_Fsum dst_negative_code_add_step_Fsum dst_negative_scale_add_step_Fsum dst_positive_sum_add_step_Fsum dst_negative_sum_add_step_Fsum. (((F) = (((((dst_positive_code_add_step_Fsum) + (dst_positive_scale_add_step_Fsum)) * S ((dst_positive_code_add_step_Fsum) + (dst_positive_scale_add_step_Fsum)) + ((dst_positive_scale_add_step_Fsum) + (dst_positive_scale_add_step_Fsum))) + (((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) * S ((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) + ((dst_negative_scale_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)))) * S ((((dst_positive_code_add_step_Fsum) + (dst_positive_scale_add_step_Fsum)) * S ((dst_positive_code_add_step_Fsum) + (dst_positive_scale_add_step_Fsum)) + ((dst_positive_scale_add_step_Fsum) + (dst_positive_scale_add_step_Fsum))) + (((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) * S ((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) + ((dst_negative_scale_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)))) + ((((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) * S ((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) + ((dst_negative_scale_add_step_Fsum) + (dst_negative_scale_add_step_Fsum))) + (((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) * S ((dst_negative_code_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)) + ((dst_negative_scale_add_step_Fsum) + (dst_negative_scale_add_step_Fsum)))))) /\ (((exists fs_u_dst_add_step_Fsumpositive fs_v_dst_add_step_Fsumpositive. ((((exists fs_h_dst_add_step_Fsumpositive_body_start. fs_h_dst_add_step_Fsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Fsumpositive)) /\ exists fs_q_dst_add_step_Fsumpositive_body_start. fs_u_dst_add_step_Fsumpositive = fs_q_dst_add_step_Fsumpositive_body_start * S ((S (0)) * fs_v_dst_add_step_Fsumpositive) + (0))) /\ ((((exists fs_h_dst_add_step_Fsumpositive_body_terminal. fs_h_dst_add_step_Fsumpositive_body_terminal + S (dst_positive_sum_add_step_Fsum) = S ((S (l)) * fs_v_dst_add_step_Fsumpositive)) /\ exists fs_q_dst_add_step_Fsumpositive_body_terminal. fs_u_dst_add_step_Fsumpositive = fs_q_dst_add_step_Fsumpositive_body_terminal * S ((S (l)) * fs_v_dst_add_step_Fsumpositive) + (dst_positive_sum_add_step_Fsum))) /\ forall fs_i_dst_add_step_Fsumpositive_body_steps. (exists fs_lt_dst_add_step_Fsumpositive_body_steps_bound. fs_lt_dst_add_step_Fsumpositive_body_steps_bound + S fs_i_dst_add_step_Fsumpositive_body_steps = l) -> exists fs_a_dst_add_step_Fsumpositive_body_steps fs_r_dst_add_step_Fsumpositive_body_steps fs_s_dst_add_step_Fsumpositive_body_steps. ((((exists fs_h_dst_add_step_Fsumpositive_body_steps_summand. fs_h_dst_add_step_Fsumpositive_body_steps_summand + S (fs_a_dst_add_step_Fsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Fsumpositive_body_steps)) * dst_positive_scale_add_step_Fsum)) /\ exists fs_q_dst_add_step_Fsumpositive_body_steps_summand. dst_positive_code_add_step_Fsum = fs_q_dst_add_step_Fsumpositive_body_steps_summand * S ((S (fs_i_dst_add_step_Fsumpositive_body_steps)) * dst_positive_scale_add_step_Fsum) + (fs_a_dst_add_step_Fsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Fsumpositive_body_steps_partial. fs_h_dst_add_step_Fsumpositive_body_steps_partial + S (fs_r_dst_add_step_Fsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Fsumpositive_body_steps)) * fs_v_dst_add_step_Fsumpositive)) /\ exists fs_q_dst_add_step_Fsumpositive_body_steps_partial. fs_u_dst_add_step_Fsumpositive = fs_q_dst_add_step_Fsumpositive_body_steps_partial * S ((S (fs_i_dst_add_step_Fsumpositive_body_steps)) * fs_v_dst_add_step_Fsumpositive) + (fs_r_dst_add_step_Fsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Fsumpositive_body_steps_successor. fs_h_dst_add_step_Fsumpositive_body_steps_successor + S (fs_s_dst_add_step_Fsumpositive_body_steps) = S ((S (S fs_i_dst_add_step_Fsumpositive_body_steps)) * fs_v_dst_add_step_Fsumpositive)) /\ exists fs_q_dst_add_step_Fsumpositive_body_steps_successor. fs_u_dst_add_step_Fsumpositive = fs_q_dst_add_step_Fsumpositive_body_steps_successor * S ((S (S fs_i_dst_add_step_Fsumpositive_body_steps)) * fs_v_dst_add_step_Fsumpositive) + (fs_s_dst_add_step_Fsumpositive_body_steps))) /\ fs_s_dst_add_step_Fsumpositive_body_steps = fs_r_dst_add_step_Fsumpositive_body_steps + fs_a_dst_add_step_Fsumpositive_body_steps)))))) /\ (((exists fs_u_dst_add_step_Fsumnegative fs_v_dst_add_step_Fsumnegative. ((((exists fs_h_dst_add_step_Fsumnegative_body_start. fs_h_dst_add_step_Fsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Fsumnegative)) /\ exists fs_q_dst_add_step_Fsumnegative_body_start. fs_u_dst_add_step_Fsumnegative = fs_q_dst_add_step_Fsumnegative_body_start * S ((S (0)) * fs_v_dst_add_step_Fsumnegative) + (0))) /\ ((((exists fs_h_dst_add_step_Fsumnegative_body_terminal. fs_h_dst_add_step_Fsumnegative_body_terminal + S (dst_negative_sum_add_step_Fsum) = S ((S (l)) * fs_v_dst_add_step_Fsumnegative)) /\ exists fs_q_dst_add_step_Fsumnegative_body_terminal. fs_u_dst_add_step_Fsumnegative = fs_q_dst_add_step_Fsumnegative_body_terminal * S ((S (l)) * fs_v_dst_add_step_Fsumnegative) + (dst_negative_sum_add_step_Fsum))) /\ forall fs_i_dst_add_step_Fsumnegative_body_steps. (exists fs_lt_dst_add_step_Fsumnegative_body_steps_bound. fs_lt_dst_add_step_Fsumnegative_body_steps_bound + S fs_i_dst_add_step_Fsumnegative_body_steps = l) -> exists fs_a_dst_add_step_Fsumnegative_body_steps fs_r_dst_add_step_Fsumnegative_body_steps fs_s_dst_add_step_Fsumnegative_body_steps. ((((exists fs_h_dst_add_step_Fsumnegative_body_steps_summand. fs_h_dst_add_step_Fsumnegative_body_steps_summand + S (fs_a_dst_add_step_Fsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Fsumnegative_body_steps)) * dst_negative_scale_add_step_Fsum)) /\ exists fs_q_dst_add_step_Fsumnegative_body_steps_summand. dst_negative_code_add_step_Fsum = fs_q_dst_add_step_Fsumnegative_body_steps_summand * S ((S (fs_i_dst_add_step_Fsumnegative_body_steps)) * dst_negative_scale_add_step_Fsum) + (fs_a_dst_add_step_Fsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Fsumnegative_body_steps_partial. fs_h_dst_add_step_Fsumnegative_body_steps_partial + S (fs_r_dst_add_step_Fsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Fsumnegative_body_steps)) * fs_v_dst_add_step_Fsumnegative)) /\ exists fs_q_dst_add_step_Fsumnegative_body_steps_partial. fs_u_dst_add_step_Fsumnegative = fs_q_dst_add_step_Fsumnegative_body_steps_partial * S ((S (fs_i_dst_add_step_Fsumnegative_body_steps)) * fs_v_dst_add_step_Fsumnegative) + (fs_r_dst_add_step_Fsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Fsumnegative_body_steps_successor. fs_h_dst_add_step_Fsumnegative_body_steps_successor + S (fs_s_dst_add_step_Fsumnegative_body_steps) = S ((S (S fs_i_dst_add_step_Fsumnegative_body_steps)) * fs_v_dst_add_step_Fsumnegative)) /\ exists fs_q_dst_add_step_Fsumnegative_body_steps_successor. fs_u_dst_add_step_Fsumnegative = fs_q_dst_add_step_Fsumnegative_body_steps_successor * S ((S (S fs_i_dst_add_step_Fsumnegative_body_steps)) * fs_v_dst_add_step_Fsumnegative) + (fs_s_dst_add_step_Fsumnegative_body_steps))) /\ fs_s_dst_add_step_Fsumnegative_body_steps = fs_r_dst_add_step_Fsumnegative_body_steps + fs_a_dst_add_step_Fsumnegative_body_steps)))))) /\ (exists ge_balance_positive_add_step_Fsumresult ge_balance_negative_add_step_Fsumresult. (((((ssl_prefix_add_step_F) = 2 * (ge_balance_positive_add_step_Fsumresult) /\ (ge_balance_negative_add_step_Fsumresult) = 0) \/ exists ge_signed_half_add_step_Fsumresultdecode. (((ssl_prefix_add_step_F) = 2 * ge_signed_half_add_step_Fsumresultdecode + 1 /\ (ge_balance_positive_add_step_Fsumresult) = 0) /\ (ge_balance_negative_add_step_Fsumresult) = S ge_signed_half_add_step_Fsumresultdecode))) /\ ((dst_positive_sum_add_step_Fsum) + ge_balance_negative_add_step_Fsumresult = (dst_negative_sum_add_step_Fsum) + ge_balance_positive_add_step_Fsumresult))))))))) /\ (((exists dst_positive_code_add_step_Fentry dst_positive_scale_add_step_Fentry dst_negative_code_add_step_Fentry dst_negative_scale_add_step_Fentry dst_positive_add_step_Fentry dst_negative_add_step_Fentry. (((F) = (((((dst_positive_code_add_step_Fentry) + (dst_positive_scale_add_step_Fentry)) * S ((dst_positive_code_add_step_Fentry) + (dst_positive_scale_add_step_Fentry)) + ((dst_positive_scale_add_step_Fentry) + (dst_positive_scale_add_step_Fentry))) + (((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) * S ((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) + ((dst_negative_scale_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)))) * S ((((dst_positive_code_add_step_Fentry) + (dst_positive_scale_add_step_Fentry)) * S ((dst_positive_code_add_step_Fentry) + (dst_positive_scale_add_step_Fentry)) + ((dst_positive_scale_add_step_Fentry) + (dst_positive_scale_add_step_Fentry))) + (((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) * S ((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) + ((dst_negative_scale_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)))) + ((((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) * S ((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) + ((dst_negative_scale_add_step_Fentry) + (dst_negative_scale_add_step_Fentry))) + (((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) * S ((dst_negative_code_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)) + ((dst_negative_scale_add_step_Fentry) + (dst_negative_scale_add_step_Fentry)))))) /\ (((((exists ff_h_pvs_add_step_Fentrypositive. ff_h_pvs_add_step_Fentrypositive + S (dst_positive_add_step_Fentry) = S ((S (l)) * dst_positive_scale_add_step_Fentry)) /\ exists ff_q_pvs_add_step_Fentrypositive. dst_positive_code_add_step_Fentry = ff_q_pvs_add_step_Fentrypositive * S ((S (l)) * dst_positive_scale_add_step_Fentry) + (dst_positive_add_step_Fentry))) /\ (((((exists ff_h_pvs_add_step_Fentrynegative. ff_h_pvs_add_step_Fentrynegative + S (dst_negative_add_step_Fentry) = S ((S (l)) * dst_negative_scale_add_step_Fentry)) /\ exists ff_q_pvs_add_step_Fentrynegative. dst_negative_code_add_step_Fentry = ff_q_pvs_add_step_Fentrynegative * S ((S (l)) * dst_negative_scale_add_step_Fentry) + (dst_negative_add_step_Fentry))) /\ (exists ge_balance_positive_add_step_Fentryvalue ge_balance_negative_add_step_Fentryvalue. (((((ssl_entry_add_step_F) = 2 * (ge_balance_positive_add_step_Fentryvalue) /\ (ge_balance_negative_add_step_Fentryvalue) = 0) \/ exists ge_signed_half_add_step_Fentryvaluedecode. (((ssl_entry_add_step_F) = 2 * ge_signed_half_add_step_Fentryvaluedecode + 1 /\ (ge_balance_positive_add_step_Fentryvalue) = 0) /\ (ge_balance_negative_add_step_Fentryvalue) = S ge_signed_half_add_step_Fentryvaluedecode))) /\ ((dst_positive_add_step_Fentry) + ge_balance_negative_add_step_Fentryvalue = (dst_negative_add_step_Fentry) + ge_balance_positive_add_step_Fentryvalue))))))))) /\ (exists dsa_ap_add_step_Faddition dsa_an_add_step_Faddition dsa_bp_add_step_Faddition dsa_bn_add_step_Faddition dsa_cp_add_step_Faddition dsa_cn_add_step_Faddition. (((((ssl_prefix_add_step_F) = 2 * (dsa_ap_add_step_Faddition) /\ (dsa_an_add_step_Faddition) = 0) \/ exists ge_signed_half_add_step_Fadditionleft. (((ssl_prefix_add_step_F) = 2 * ge_signed_half_add_step_Fadditionleft + 1 /\ (dsa_ap_add_step_Faddition) = 0) /\ (dsa_an_add_step_Faddition) = S ge_signed_half_add_step_Fadditionleft))) /\ ((((((ssl_entry_add_step_F) = 2 * (dsa_bp_add_step_Faddition) /\ (dsa_bn_add_step_Faddition) = 0) \/ exists ge_signed_half_add_step_Fadditionright. (((ssl_entry_add_step_F) = 2 * ge_signed_half_add_step_Fadditionright + 1 /\ (dsa_bp_add_step_Faddition) = 0) /\ (dsa_bn_add_step_Faddition) = S ge_signed_half_add_step_Fadditionright))) /\ ((((((a) = 2 * (dsa_cp_add_step_Faddition) /\ (dsa_cn_add_step_Faddition) = 0) \/ exists ge_signed_half_add_step_Fadditionoutput. (((a) = 2 * ge_signed_half_add_step_Fadditionoutput + 1 /\ (dsa_cp_add_step_Faddition) = 0) /\ (dsa_cn_add_step_Faddition) = S ge_signed_half_add_step_Fadditionoutput))) /\ ((dsa_ap_add_step_Faddition + dsa_bp_add_step_Faddition) + dsa_cn_add_step_Faddition = (dsa_an_add_step_Faddition + dsa_bn_add_step_Faddition) + dsa_cp_add_step_Faddition))))))))))
  46. 0046specialize divisor_signed_sum_successor_decompose (F)
  47. 0047specialize divisor_signed_sum_successor_decompose (l)
  48. 0048specialize divisor_signed_sum_successor_decompose (a)
  49. 0049apply divisor_signed_sum_successor_decompose
  50. 0050exact hF
  51. 0051cases hdF
  52. 0052cases hdF_witness
  53. 0053cases hdF_witness_witness
  54. 0054cases hdF_witness_witness_right
  55. 0055have hdG : exists ssl_prefix_add_step_G ssl_entry_add_step_G. ((exists dst_positive_code_add_step_Gsum dst_positive_scale_add_step_Gsum dst_negative_code_add_step_Gsum dst_negative_scale_add_step_Gsum dst_positive_sum_add_step_Gsum dst_negative_sum_add_step_Gsum. (((G) = (((((dst_positive_code_add_step_Gsum) + (dst_positive_scale_add_step_Gsum)) * S ((dst_positive_code_add_step_Gsum) + (dst_positive_scale_add_step_Gsum)) + ((dst_positive_scale_add_step_Gsum) + (dst_positive_scale_add_step_Gsum))) + (((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) * S ((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) + ((dst_negative_scale_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)))) * S ((((dst_positive_code_add_step_Gsum) + (dst_positive_scale_add_step_Gsum)) * S ((dst_positive_code_add_step_Gsum) + (dst_positive_scale_add_step_Gsum)) + ((dst_positive_scale_add_step_Gsum) + (dst_positive_scale_add_step_Gsum))) + (((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) * S ((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) + ((dst_negative_scale_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)))) + ((((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) * S ((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) + ((dst_negative_scale_add_step_Gsum) + (dst_negative_scale_add_step_Gsum))) + (((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) * S ((dst_negative_code_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)) + ((dst_negative_scale_add_step_Gsum) + (dst_negative_scale_add_step_Gsum)))))) /\ (((exists fs_u_dst_add_step_Gsumpositive fs_v_dst_add_step_Gsumpositive. ((((exists fs_h_dst_add_step_Gsumpositive_body_start. fs_h_dst_add_step_Gsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Gsumpositive)) /\ exists fs_q_dst_add_step_Gsumpositive_body_start. fs_u_dst_add_step_Gsumpositive = fs_q_dst_add_step_Gsumpositive_body_start * S ((S (0)) * fs_v_dst_add_step_Gsumpositive) + (0))) /\ ((((exists fs_h_dst_add_step_Gsumpositive_body_terminal. fs_h_dst_add_step_Gsumpositive_body_terminal + S (dst_positive_sum_add_step_Gsum) = S ((S (l)) * fs_v_dst_add_step_Gsumpositive)) /\ exists fs_q_dst_add_step_Gsumpositive_body_terminal. fs_u_dst_add_step_Gsumpositive = fs_q_dst_add_step_Gsumpositive_body_terminal * S ((S (l)) * fs_v_dst_add_step_Gsumpositive) + (dst_positive_sum_add_step_Gsum))) /\ forall fs_i_dst_add_step_Gsumpositive_body_steps. (exists fs_lt_dst_add_step_Gsumpositive_body_steps_bound. fs_lt_dst_add_step_Gsumpositive_body_steps_bound + S fs_i_dst_add_step_Gsumpositive_body_steps = l) -> exists fs_a_dst_add_step_Gsumpositive_body_steps fs_r_dst_add_step_Gsumpositive_body_steps fs_s_dst_add_step_Gsumpositive_body_steps. ((((exists fs_h_dst_add_step_Gsumpositive_body_steps_summand. fs_h_dst_add_step_Gsumpositive_body_steps_summand + S (fs_a_dst_add_step_Gsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Gsumpositive_body_steps)) * dst_positive_scale_add_step_Gsum)) /\ exists fs_q_dst_add_step_Gsumpositive_body_steps_summand. dst_positive_code_add_step_Gsum = fs_q_dst_add_step_Gsumpositive_body_steps_summand * S ((S (fs_i_dst_add_step_Gsumpositive_body_steps)) * dst_positive_scale_add_step_Gsum) + (fs_a_dst_add_step_Gsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Gsumpositive_body_steps_partial. fs_h_dst_add_step_Gsumpositive_body_steps_partial + S (fs_r_dst_add_step_Gsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Gsumpositive_body_steps)) * fs_v_dst_add_step_Gsumpositive)) /\ exists fs_q_dst_add_step_Gsumpositive_body_steps_partial. fs_u_dst_add_step_Gsumpositive = fs_q_dst_add_step_Gsumpositive_body_steps_partial * S ((S (fs_i_dst_add_step_Gsumpositive_body_steps)) * fs_v_dst_add_step_Gsumpositive) + (fs_r_dst_add_step_Gsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Gsumpositive_body_steps_successor. fs_h_dst_add_step_Gsumpositive_body_steps_successor + S (fs_s_dst_add_step_Gsumpositive_body_steps) = S ((S (S fs_i_dst_add_step_Gsumpositive_body_steps)) * fs_v_dst_add_step_Gsumpositive)) /\ exists fs_q_dst_add_step_Gsumpositive_body_steps_successor. fs_u_dst_add_step_Gsumpositive = fs_q_dst_add_step_Gsumpositive_body_steps_successor * S ((S (S fs_i_dst_add_step_Gsumpositive_body_steps)) * fs_v_dst_add_step_Gsumpositive) + (fs_s_dst_add_step_Gsumpositive_body_steps))) /\ fs_s_dst_add_step_Gsumpositive_body_steps = fs_r_dst_add_step_Gsumpositive_body_steps + fs_a_dst_add_step_Gsumpositive_body_steps)))))) /\ (((exists fs_u_dst_add_step_Gsumnegative fs_v_dst_add_step_Gsumnegative. ((((exists fs_h_dst_add_step_Gsumnegative_body_start. fs_h_dst_add_step_Gsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Gsumnegative)) /\ exists fs_q_dst_add_step_Gsumnegative_body_start. fs_u_dst_add_step_Gsumnegative = fs_q_dst_add_step_Gsumnegative_body_start * S ((S (0)) * fs_v_dst_add_step_Gsumnegative) + (0))) /\ ((((exists fs_h_dst_add_step_Gsumnegative_body_terminal. fs_h_dst_add_step_Gsumnegative_body_terminal + S (dst_negative_sum_add_step_Gsum) = S ((S (l)) * fs_v_dst_add_step_Gsumnegative)) /\ exists fs_q_dst_add_step_Gsumnegative_body_terminal. fs_u_dst_add_step_Gsumnegative = fs_q_dst_add_step_Gsumnegative_body_terminal * S ((S (l)) * fs_v_dst_add_step_Gsumnegative) + (dst_negative_sum_add_step_Gsum))) /\ forall fs_i_dst_add_step_Gsumnegative_body_steps. (exists fs_lt_dst_add_step_Gsumnegative_body_steps_bound. fs_lt_dst_add_step_Gsumnegative_body_steps_bound + S fs_i_dst_add_step_Gsumnegative_body_steps = l) -> exists fs_a_dst_add_step_Gsumnegative_body_steps fs_r_dst_add_step_Gsumnegative_body_steps fs_s_dst_add_step_Gsumnegative_body_steps. ((((exists fs_h_dst_add_step_Gsumnegative_body_steps_summand. fs_h_dst_add_step_Gsumnegative_body_steps_summand + S (fs_a_dst_add_step_Gsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Gsumnegative_body_steps)) * dst_negative_scale_add_step_Gsum)) /\ exists fs_q_dst_add_step_Gsumnegative_body_steps_summand. dst_negative_code_add_step_Gsum = fs_q_dst_add_step_Gsumnegative_body_steps_summand * S ((S (fs_i_dst_add_step_Gsumnegative_body_steps)) * dst_negative_scale_add_step_Gsum) + (fs_a_dst_add_step_Gsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Gsumnegative_body_steps_partial. fs_h_dst_add_step_Gsumnegative_body_steps_partial + S (fs_r_dst_add_step_Gsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Gsumnegative_body_steps)) * fs_v_dst_add_step_Gsumnegative)) /\ exists fs_q_dst_add_step_Gsumnegative_body_steps_partial. fs_u_dst_add_step_Gsumnegative = fs_q_dst_add_step_Gsumnegative_body_steps_partial * S ((S (fs_i_dst_add_step_Gsumnegative_body_steps)) * fs_v_dst_add_step_Gsumnegative) + (fs_r_dst_add_step_Gsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Gsumnegative_body_steps_successor. fs_h_dst_add_step_Gsumnegative_body_steps_successor + S (fs_s_dst_add_step_Gsumnegative_body_steps) = S ((S (S fs_i_dst_add_step_Gsumnegative_body_steps)) * fs_v_dst_add_step_Gsumnegative)) /\ exists fs_q_dst_add_step_Gsumnegative_body_steps_successor. fs_u_dst_add_step_Gsumnegative = fs_q_dst_add_step_Gsumnegative_body_steps_successor * S ((S (S fs_i_dst_add_step_Gsumnegative_body_steps)) * fs_v_dst_add_step_Gsumnegative) + (fs_s_dst_add_step_Gsumnegative_body_steps))) /\ fs_s_dst_add_step_Gsumnegative_body_steps = fs_r_dst_add_step_Gsumnegative_body_steps + fs_a_dst_add_step_Gsumnegative_body_steps)))))) /\ (exists ge_balance_positive_add_step_Gsumresult ge_balance_negative_add_step_Gsumresult. (((((ssl_prefix_add_step_G) = 2 * (ge_balance_positive_add_step_Gsumresult) /\ (ge_balance_negative_add_step_Gsumresult) = 0) \/ exists ge_signed_half_add_step_Gsumresultdecode. (((ssl_prefix_add_step_G) = 2 * ge_signed_half_add_step_Gsumresultdecode + 1 /\ (ge_balance_positive_add_step_Gsumresult) = 0) /\ (ge_balance_negative_add_step_Gsumresult) = S ge_signed_half_add_step_Gsumresultdecode))) /\ ((dst_positive_sum_add_step_Gsum) + ge_balance_negative_add_step_Gsumresult = (dst_negative_sum_add_step_Gsum) + ge_balance_positive_add_step_Gsumresult))))))))) /\ (((exists dst_positive_code_add_step_Gentry dst_positive_scale_add_step_Gentry dst_negative_code_add_step_Gentry dst_negative_scale_add_step_Gentry dst_positive_add_step_Gentry dst_negative_add_step_Gentry. (((G) = (((((dst_positive_code_add_step_Gentry) + (dst_positive_scale_add_step_Gentry)) * S ((dst_positive_code_add_step_Gentry) + (dst_positive_scale_add_step_Gentry)) + ((dst_positive_scale_add_step_Gentry) + (dst_positive_scale_add_step_Gentry))) + (((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) * S ((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) + ((dst_negative_scale_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)))) * S ((((dst_positive_code_add_step_Gentry) + (dst_positive_scale_add_step_Gentry)) * S ((dst_positive_code_add_step_Gentry) + (dst_positive_scale_add_step_Gentry)) + ((dst_positive_scale_add_step_Gentry) + (dst_positive_scale_add_step_Gentry))) + (((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) * S ((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) + ((dst_negative_scale_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)))) + ((((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) * S ((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) + ((dst_negative_scale_add_step_Gentry) + (dst_negative_scale_add_step_Gentry))) + (((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) * S ((dst_negative_code_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)) + ((dst_negative_scale_add_step_Gentry) + (dst_negative_scale_add_step_Gentry)))))) /\ (((((exists ff_h_pvs_add_step_Gentrypositive. ff_h_pvs_add_step_Gentrypositive + S (dst_positive_add_step_Gentry) = S ((S (l)) * dst_positive_scale_add_step_Gentry)) /\ exists ff_q_pvs_add_step_Gentrypositive. dst_positive_code_add_step_Gentry = ff_q_pvs_add_step_Gentrypositive * S ((S (l)) * dst_positive_scale_add_step_Gentry) + (dst_positive_add_step_Gentry))) /\ (((((exists ff_h_pvs_add_step_Gentrynegative. ff_h_pvs_add_step_Gentrynegative + S (dst_negative_add_step_Gentry) = S ((S (l)) * dst_negative_scale_add_step_Gentry)) /\ exists ff_q_pvs_add_step_Gentrynegative. dst_negative_code_add_step_Gentry = ff_q_pvs_add_step_Gentrynegative * S ((S (l)) * dst_negative_scale_add_step_Gentry) + (dst_negative_add_step_Gentry))) /\ (exists ge_balance_positive_add_step_Gentryvalue ge_balance_negative_add_step_Gentryvalue. (((((ssl_entry_add_step_G) = 2 * (ge_balance_positive_add_step_Gentryvalue) /\ (ge_balance_negative_add_step_Gentryvalue) = 0) \/ exists ge_signed_half_add_step_Gentryvaluedecode. (((ssl_entry_add_step_G) = 2 * ge_signed_half_add_step_Gentryvaluedecode + 1 /\ (ge_balance_positive_add_step_Gentryvalue) = 0) /\ (ge_balance_negative_add_step_Gentryvalue) = S ge_signed_half_add_step_Gentryvaluedecode))) /\ ((dst_positive_add_step_Gentry) + ge_balance_negative_add_step_Gentryvalue = (dst_negative_add_step_Gentry) + ge_balance_positive_add_step_Gentryvalue))))))))) /\ (exists dsa_ap_add_step_Gaddition dsa_an_add_step_Gaddition dsa_bp_add_step_Gaddition dsa_bn_add_step_Gaddition dsa_cp_add_step_Gaddition dsa_cn_add_step_Gaddition. (((((ssl_prefix_add_step_G) = 2 * (dsa_ap_add_step_Gaddition) /\ (dsa_an_add_step_Gaddition) = 0) \/ exists ge_signed_half_add_step_Gadditionleft. (((ssl_prefix_add_step_G) = 2 * ge_signed_half_add_step_Gadditionleft + 1 /\ (dsa_ap_add_step_Gaddition) = 0) /\ (dsa_an_add_step_Gaddition) = S ge_signed_half_add_step_Gadditionleft))) /\ ((((((ssl_entry_add_step_G) = 2 * (dsa_bp_add_step_Gaddition) /\ (dsa_bn_add_step_Gaddition) = 0) \/ exists ge_signed_half_add_step_Gadditionright. (((ssl_entry_add_step_G) = 2 * ge_signed_half_add_step_Gadditionright + 1 /\ (dsa_bp_add_step_Gaddition) = 0) /\ (dsa_bn_add_step_Gaddition) = S ge_signed_half_add_step_Gadditionright))) /\ ((((((b) = 2 * (dsa_cp_add_step_Gaddition) /\ (dsa_cn_add_step_Gaddition) = 0) \/ exists ge_signed_half_add_step_Gadditionoutput. (((b) = 2 * ge_signed_half_add_step_Gadditionoutput + 1 /\ (dsa_cp_add_step_Gaddition) = 0) /\ (dsa_cn_add_step_Gaddition) = S ge_signed_half_add_step_Gadditionoutput))) /\ ((dsa_ap_add_step_Gaddition + dsa_bp_add_step_Gaddition) + dsa_cn_add_step_Gaddition = (dsa_an_add_step_Gaddition + dsa_bn_add_step_Gaddition) + dsa_cp_add_step_Gaddition))))))))))
  56. 0056specialize divisor_signed_sum_successor_decompose (G)
  57. 0057specialize divisor_signed_sum_successor_decompose (l)
  58. 0058specialize divisor_signed_sum_successor_decompose (b)
  59. 0059apply divisor_signed_sum_successor_decompose
  60. 0060exact hG
  61. 0061cases hdG
  62. 0062cases hdG_witness
  63. 0063cases hdG_witness_witness
  64. 0064cases hdG_witness_witness_right
  65. 0065have hdH : exists ssl_prefix_add_step_H ssl_entry_add_step_H. ((exists dst_positive_code_add_step_Hsum dst_positive_scale_add_step_Hsum dst_negative_code_add_step_Hsum dst_negative_scale_add_step_Hsum dst_positive_sum_add_step_Hsum dst_negative_sum_add_step_Hsum. (((H) = (((((dst_positive_code_add_step_Hsum) + (dst_positive_scale_add_step_Hsum)) * S ((dst_positive_code_add_step_Hsum) + (dst_positive_scale_add_step_Hsum)) + ((dst_positive_scale_add_step_Hsum) + (dst_positive_scale_add_step_Hsum))) + (((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) * S ((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) + ((dst_negative_scale_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)))) * S ((((dst_positive_code_add_step_Hsum) + (dst_positive_scale_add_step_Hsum)) * S ((dst_positive_code_add_step_Hsum) + (dst_positive_scale_add_step_Hsum)) + ((dst_positive_scale_add_step_Hsum) + (dst_positive_scale_add_step_Hsum))) + (((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) * S ((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) + ((dst_negative_scale_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)))) + ((((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) * S ((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) + ((dst_negative_scale_add_step_Hsum) + (dst_negative_scale_add_step_Hsum))) + (((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) * S ((dst_negative_code_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)) + ((dst_negative_scale_add_step_Hsum) + (dst_negative_scale_add_step_Hsum)))))) /\ (((exists fs_u_dst_add_step_Hsumpositive fs_v_dst_add_step_Hsumpositive. ((((exists fs_h_dst_add_step_Hsumpositive_body_start. fs_h_dst_add_step_Hsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Hsumpositive)) /\ exists fs_q_dst_add_step_Hsumpositive_body_start. fs_u_dst_add_step_Hsumpositive = fs_q_dst_add_step_Hsumpositive_body_start * S ((S (0)) * fs_v_dst_add_step_Hsumpositive) + (0))) /\ ((((exists fs_h_dst_add_step_Hsumpositive_body_terminal. fs_h_dst_add_step_Hsumpositive_body_terminal + S (dst_positive_sum_add_step_Hsum) = S ((S (l)) * fs_v_dst_add_step_Hsumpositive)) /\ exists fs_q_dst_add_step_Hsumpositive_body_terminal. fs_u_dst_add_step_Hsumpositive = fs_q_dst_add_step_Hsumpositive_body_terminal * S ((S (l)) * fs_v_dst_add_step_Hsumpositive) + (dst_positive_sum_add_step_Hsum))) /\ forall fs_i_dst_add_step_Hsumpositive_body_steps. (exists fs_lt_dst_add_step_Hsumpositive_body_steps_bound. fs_lt_dst_add_step_Hsumpositive_body_steps_bound + S fs_i_dst_add_step_Hsumpositive_body_steps = l) -> exists fs_a_dst_add_step_Hsumpositive_body_steps fs_r_dst_add_step_Hsumpositive_body_steps fs_s_dst_add_step_Hsumpositive_body_steps. ((((exists fs_h_dst_add_step_Hsumpositive_body_steps_summand. fs_h_dst_add_step_Hsumpositive_body_steps_summand + S (fs_a_dst_add_step_Hsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Hsumpositive_body_steps)) * dst_positive_scale_add_step_Hsum)) /\ exists fs_q_dst_add_step_Hsumpositive_body_steps_summand. dst_positive_code_add_step_Hsum = fs_q_dst_add_step_Hsumpositive_body_steps_summand * S ((S (fs_i_dst_add_step_Hsumpositive_body_steps)) * dst_positive_scale_add_step_Hsum) + (fs_a_dst_add_step_Hsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Hsumpositive_body_steps_partial. fs_h_dst_add_step_Hsumpositive_body_steps_partial + S (fs_r_dst_add_step_Hsumpositive_body_steps) = S ((S (fs_i_dst_add_step_Hsumpositive_body_steps)) * fs_v_dst_add_step_Hsumpositive)) /\ exists fs_q_dst_add_step_Hsumpositive_body_steps_partial. fs_u_dst_add_step_Hsumpositive = fs_q_dst_add_step_Hsumpositive_body_steps_partial * S ((S (fs_i_dst_add_step_Hsumpositive_body_steps)) * fs_v_dst_add_step_Hsumpositive) + (fs_r_dst_add_step_Hsumpositive_body_steps))) /\ ((((exists fs_h_dst_add_step_Hsumpositive_body_steps_successor. fs_h_dst_add_step_Hsumpositive_body_steps_successor + S (fs_s_dst_add_step_Hsumpositive_body_steps) = S ((S (S fs_i_dst_add_step_Hsumpositive_body_steps)) * fs_v_dst_add_step_Hsumpositive)) /\ exists fs_q_dst_add_step_Hsumpositive_body_steps_successor. fs_u_dst_add_step_Hsumpositive = fs_q_dst_add_step_Hsumpositive_body_steps_successor * S ((S (S fs_i_dst_add_step_Hsumpositive_body_steps)) * fs_v_dst_add_step_Hsumpositive) + (fs_s_dst_add_step_Hsumpositive_body_steps))) /\ fs_s_dst_add_step_Hsumpositive_body_steps = fs_r_dst_add_step_Hsumpositive_body_steps + fs_a_dst_add_step_Hsumpositive_body_steps)))))) /\ (((exists fs_u_dst_add_step_Hsumnegative fs_v_dst_add_step_Hsumnegative. ((((exists fs_h_dst_add_step_Hsumnegative_body_start. fs_h_dst_add_step_Hsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_add_step_Hsumnegative)) /\ exists fs_q_dst_add_step_Hsumnegative_body_start. fs_u_dst_add_step_Hsumnegative = fs_q_dst_add_step_Hsumnegative_body_start * S ((S (0)) * fs_v_dst_add_step_Hsumnegative) + (0))) /\ ((((exists fs_h_dst_add_step_Hsumnegative_body_terminal. fs_h_dst_add_step_Hsumnegative_body_terminal + S (dst_negative_sum_add_step_Hsum) = S ((S (l)) * fs_v_dst_add_step_Hsumnegative)) /\ exists fs_q_dst_add_step_Hsumnegative_body_terminal. fs_u_dst_add_step_Hsumnegative = fs_q_dst_add_step_Hsumnegative_body_terminal * S ((S (l)) * fs_v_dst_add_step_Hsumnegative) + (dst_negative_sum_add_step_Hsum))) /\ forall fs_i_dst_add_step_Hsumnegative_body_steps. (exists fs_lt_dst_add_step_Hsumnegative_body_steps_bound. fs_lt_dst_add_step_Hsumnegative_body_steps_bound + S fs_i_dst_add_step_Hsumnegative_body_steps = l) -> exists fs_a_dst_add_step_Hsumnegative_body_steps fs_r_dst_add_step_Hsumnegative_body_steps fs_s_dst_add_step_Hsumnegative_body_steps. ((((exists fs_h_dst_add_step_Hsumnegative_body_steps_summand. fs_h_dst_add_step_Hsumnegative_body_steps_summand + S (fs_a_dst_add_step_Hsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Hsumnegative_body_steps)) * dst_negative_scale_add_step_Hsum)) /\ exists fs_q_dst_add_step_Hsumnegative_body_steps_summand. dst_negative_code_add_step_Hsum = fs_q_dst_add_step_Hsumnegative_body_steps_summand * S ((S (fs_i_dst_add_step_Hsumnegative_body_steps)) * dst_negative_scale_add_step_Hsum) + (fs_a_dst_add_step_Hsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Hsumnegative_body_steps_partial. fs_h_dst_add_step_Hsumnegative_body_steps_partial + S (fs_r_dst_add_step_Hsumnegative_body_steps) = S ((S (fs_i_dst_add_step_Hsumnegative_body_steps)) * fs_v_dst_add_step_Hsumnegative)) /\ exists fs_q_dst_add_step_Hsumnegative_body_steps_partial. fs_u_dst_add_step_Hsumnegative = fs_q_dst_add_step_Hsumnegative_body_steps_partial * S ((S (fs_i_dst_add_step_Hsumnegative_body_steps)) * fs_v_dst_add_step_Hsumnegative) + (fs_r_dst_add_step_Hsumnegative_body_steps))) /\ ((((exists fs_h_dst_add_step_Hsumnegative_body_steps_successor. fs_h_dst_add_step_Hsumnegative_body_steps_successor + S (fs_s_dst_add_step_Hsumnegative_body_steps) = S ((S (S fs_i_dst_add_step_Hsumnegative_body_steps)) * fs_v_dst_add_step_Hsumnegative)) /\ exists fs_q_dst_add_step_Hsumnegative_body_steps_successor. fs_u_dst_add_step_Hsumnegative = fs_q_dst_add_step_Hsumnegative_body_steps_successor * S ((S (S fs_i_dst_add_step_Hsumnegative_body_steps)) * fs_v_dst_add_step_Hsumnegative) + (fs_s_dst_add_step_Hsumnegative_body_steps))) /\ fs_s_dst_add_step_Hsumnegative_body_steps = fs_r_dst_add_step_Hsumnegative_body_steps + fs_a_dst_add_step_Hsumnegative_body_steps)))))) /\ (exists ge_balance_positive_add_step_Hsumresult ge_balance_negative_add_step_Hsumresult. (((((ssl_prefix_add_step_H) = 2 * (ge_balance_positive_add_step_Hsumresult) /\ (ge_balance_negative_add_step_Hsumresult) = 0) \/ exists ge_signed_half_add_step_Hsumresultdecode. (((ssl_prefix_add_step_H) = 2 * ge_signed_half_add_step_Hsumresultdecode + 1 /\ (ge_balance_positive_add_step_Hsumresult) = 0) /\ (ge_balance_negative_add_step_Hsumresult) = S ge_signed_half_add_step_Hsumresultdecode))) /\ ((dst_positive_sum_add_step_Hsum) + ge_balance_negative_add_step_Hsumresult = (dst_negative_sum_add_step_Hsum) + ge_balance_positive_add_step_Hsumresult))))))))) /\ (((exists dst_positive_code_add_step_Hentry dst_positive_scale_add_step_Hentry dst_negative_code_add_step_Hentry dst_negative_scale_add_step_Hentry dst_positive_add_step_Hentry dst_negative_add_step_Hentry. (((H) = (((((dst_positive_code_add_step_Hentry) + (dst_positive_scale_add_step_Hentry)) * S ((dst_positive_code_add_step_Hentry) + (dst_positive_scale_add_step_Hentry)) + ((dst_positive_scale_add_step_Hentry) + (dst_positive_scale_add_step_Hentry))) + (((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) * S ((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) + ((dst_negative_scale_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)))) * S ((((dst_positive_code_add_step_Hentry) + (dst_positive_scale_add_step_Hentry)) * S ((dst_positive_code_add_step_Hentry) + (dst_positive_scale_add_step_Hentry)) + ((dst_positive_scale_add_step_Hentry) + (dst_positive_scale_add_step_Hentry))) + (((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) * S ((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) + ((dst_negative_scale_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)))) + ((((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) * S ((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) + ((dst_negative_scale_add_step_Hentry) + (dst_negative_scale_add_step_Hentry))) + (((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) * S ((dst_negative_code_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)) + ((dst_negative_scale_add_step_Hentry) + (dst_negative_scale_add_step_Hentry)))))) /\ (((((exists ff_h_pvs_add_step_Hentrypositive. ff_h_pvs_add_step_Hentrypositive + S (dst_positive_add_step_Hentry) = S ((S (l)) * dst_positive_scale_add_step_Hentry)) /\ exists ff_q_pvs_add_step_Hentrypositive. dst_positive_code_add_step_Hentry = ff_q_pvs_add_step_Hentrypositive * S ((S (l)) * dst_positive_scale_add_step_Hentry) + (dst_positive_add_step_Hentry))) /\ (((((exists ff_h_pvs_add_step_Hentrynegative. ff_h_pvs_add_step_Hentrynegative + S (dst_negative_add_step_Hentry) = S ((S (l)) * dst_negative_scale_add_step_Hentry)) /\ exists ff_q_pvs_add_step_Hentrynegative. dst_negative_code_add_step_Hentry = ff_q_pvs_add_step_Hentrynegative * S ((S (l)) * dst_negative_scale_add_step_Hentry) + (dst_negative_add_step_Hentry))) /\ (exists ge_balance_positive_add_step_Hentryvalue ge_balance_negative_add_step_Hentryvalue. (((((ssl_entry_add_step_H) = 2 * (ge_balance_positive_add_step_Hentryvalue) /\ (ge_balance_negative_add_step_Hentryvalue) = 0) \/ exists ge_signed_half_add_step_Hentryvaluedecode. (((ssl_entry_add_step_H) = 2 * ge_signed_half_add_step_Hentryvaluedecode + 1 /\ (ge_balance_positive_add_step_Hentryvalue) = 0) /\ (ge_balance_negative_add_step_Hentryvalue) = S ge_signed_half_add_step_Hentryvaluedecode))) /\ ((dst_positive_add_step_Hentry) + ge_balance_negative_add_step_Hentryvalue = (dst_negative_add_step_Hentry) + ge_balance_positive_add_step_Hentryvalue))))))))) /\ (exists dsa_ap_add_step_Haddition dsa_an_add_step_Haddition dsa_bp_add_step_Haddition dsa_bn_add_step_Haddition dsa_cp_add_step_Haddition dsa_cn_add_step_Haddition. (((((ssl_prefix_add_step_H) = 2 * (dsa_ap_add_step_Haddition) /\ (dsa_an_add_step_Haddition) = 0) \/ exists ge_signed_half_add_step_Hadditionleft. (((ssl_prefix_add_step_H) = 2 * ge_signed_half_add_step_Hadditionleft + 1 /\ (dsa_ap_add_step_Haddition) = 0) /\ (dsa_an_add_step_Haddition) = S ge_signed_half_add_step_Hadditionleft))) /\ ((((((ssl_entry_add_step_H) = 2 * (dsa_bp_add_step_Haddition) /\ (dsa_bn_add_step_Haddition) = 0) \/ exists ge_signed_half_add_step_Hadditionright. (((ssl_entry_add_step_H) = 2 * ge_signed_half_add_step_Hadditionright + 1 /\ (dsa_bp_add_step_Haddition) = 0) /\ (dsa_bn_add_step_Haddition) = S ge_signed_half_add_step_Hadditionright))) /\ ((((((c) = 2 * (dsa_cp_add_step_Haddition) /\ (dsa_cn_add_step_Haddition) = 0) \/ exists ge_signed_half_add_step_Hadditionoutput. (((c) = 2 * ge_signed_half_add_step_Hadditionoutput + 1 /\ (dsa_cp_add_step_Haddition) = 0) /\ (dsa_cn_add_step_Haddition) = S ge_signed_half_add_step_Hadditionoutput))) /\ ((dsa_ap_add_step_Haddition + dsa_bp_add_step_Haddition) + dsa_cn_add_step_Haddition = (dsa_an_add_step_Haddition + dsa_bn_add_step_Haddition) + dsa_cp_add_step_Haddition))))))))))
  66. 0066specialize divisor_signed_sum_successor_decompose (H)
  67. 0067specialize divisor_signed_sum_successor_decompose (l)
  68. 0068specialize divisor_signed_sum_successor_decompose (c)
  69. 0069apply divisor_signed_sum_successor_decompose
  70. 0070exact hH
  71. 0071cases hdH
  72. 0072cases hdH_witness
  73. 0073cases hdH_witness_witness
  74. 0074cases hdH_witness_witness_right
  75. 0075have hp : exists dsa_ap_add_prefix dsa_an_add_prefix dsa_bp_add_prefix dsa_bn_add_prefix dsa_cp_add_prefix dsa_cn_add_prefix. (((((x) = 2 * (dsa_ap_add_prefix) /\ (dsa_an_add_prefix) = 0) \/ exists ge_signed_half_add_prefixleft. (((x) = 2 * ge_signed_half_add_prefixleft + 1 /\ (dsa_ap_add_prefix) = 0) /\ (dsa_an_add_prefix) = S ge_signed_half_add_prefixleft))) /\ ((((((x2) = 2 * (dsa_bp_add_prefix) /\ (dsa_bn_add_prefix) = 0) \/ exists ge_signed_half_add_prefixright. (((x2) = 2 * ge_signed_half_add_prefixright + 1 /\ (dsa_bp_add_prefix) = 0) /\ (dsa_bn_add_prefix) = S ge_signed_half_add_prefixright))) /\ ((((((x4) = 2 * (dsa_cp_add_prefix) /\ (dsa_cn_add_prefix) = 0) \/ exists ge_signed_half_add_prefixoutput. (((x4) = 2 * ge_signed_half_add_prefixoutput + 1 /\ (dsa_cp_add_prefix) = 0) /\ (dsa_cn_add_prefix) = S ge_signed_half_add_prefixoutput))) /\ ((dsa_ap_add_prefix + dsa_bp_add_prefix) + dsa_cn_add_prefix = (dsa_an_add_prefix + dsa_bn_add_prefix) + dsa_cp_add_prefix))))))
  76. 0076specialize IH (F)
  77. 0077specialize IH (G)
  78. 0078specialize IH (H)
  79. 0079specialize IH (x)
  80. 0080specialize IH (x2)
  81. 0081specialize IH (x4)
  82. 0082apply IH
  83. 0083specialize signed_table_add_restrict (F)
  84. 0084specialize signed_table_add_restrict (G)
  85. 0085specialize signed_table_add_restrict (H)
  86. 0086specialize signed_table_add_restrict (l)
  87. 0087apply signed_table_add_restrict
  88. 0088exact hpoint
  89. 0089exact hdF_witness_witness_left
  90. 0090exact hdG_witness_witness_left
  91. 0091exact hdH_witness_witness_left
  92. 0092have he : exists dsa_ap_add_last dsa_an_add_last dsa_bp_add_last dsa_bn_add_last dsa_cp_add_last dsa_cn_add_last. (((((x1) = 2 * (dsa_ap_add_last) /\ (dsa_an_add_last) = 0) \/ exists ge_signed_half_add_lastleft. (((x1) = 2 * ge_signed_half_add_lastleft + 1 /\ (dsa_ap_add_last) = 0) /\ (dsa_an_add_last) = S ge_signed_half_add_lastleft))) /\ ((((((x3) = 2 * (dsa_bp_add_last) /\ (dsa_bn_add_last) = 0) \/ exists ge_signed_half_add_lastright. (((x3) = 2 * ge_signed_half_add_lastright + 1 /\ (dsa_bp_add_last) = 0) /\ (dsa_bn_add_last) = S ge_signed_half_add_lastright))) /\ ((((((x5) = 2 * (dsa_cp_add_last) /\ (dsa_cn_add_last) = 0) \/ exists ge_signed_half_add_lastoutput. (((x5) = 2 * ge_signed_half_add_lastoutput + 1 /\ (dsa_cp_add_last) = 0) /\ (dsa_cn_add_last) = S ge_signed_half_add_lastoutput))) /\ ((dsa_ap_add_last + dsa_bp_add_last) + dsa_cn_add_last = (dsa_an_add_last + dsa_bn_add_last) + dsa_cp_add_last))))))
  93. 0093specialize signed_table_add_lookup (F)
  94. 0094specialize signed_table_add_lookup (G)
  95. 0095specialize signed_table_add_lookup (H)
  96. 0096specialize signed_table_add_lookup (S l)
  97. 0097specialize signed_table_add_lookup (l)
  98. 0098specialize signed_table_add_lookup (x1)
  99. 0099specialize signed_table_add_lookup (x3)
  100. 0100specialize signed_table_add_lookup (x5)
  101. 0101apply signed_table_add_lookup
  102. 0102exact hpoint
  103. 0103specialize le_refl (S l)
  104. 0104apply le_refl
  105. 0105exact hdF_witness_witness_right_left
  106. 0106exact hdG_witness_witness_right_left
  107. 0107exact hdH_witness_witness_right_left
  108. 0108specialize signed_table_add_medial (x)
  109. 0109specialize signed_table_add_medial (x1)
  110. 0110specialize signed_table_add_medial (x2)
  111. 0111specialize signed_table_add_medial (x3)
  112. 0112specialize signed_table_add_medial (a)
  113. 0113specialize signed_table_add_medial (b)
  114. 0114specialize signed_table_add_medial (x4)
  115. 0115specialize signed_table_add_medial (x5)
  116. 0116specialize signed_table_add_medial (c)
  117. 0117apply signed_table_add_medial
  118. 0118exact hdF_witness_witness_right_right
  119. 0119exact hdG_witness_witness_right_right
  120. 0120exact hp
  121. 0121exact he
  122. 0122exact hdH_witness_witness_right_right