WS0010

signed_table_add_exists

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

Ordinary finite induction constructs both beta output streams and their actual packed table for pointwise add; no finite-choice or supplied-table oracle is used.

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. (exists dst_positive_code_add_exists_input0 dst_positive_scale_add_exists_input0 dst_negative_code_add_exists_input0 dst_negative_scale_add_exists_input0. (((F) = (((((dst_positive_code_add_exists_input0) + (dst_positive_scale_add_exists_input0)) * S ((dst_positive_code_add_exists_input0) + (dst_positive_scale_add_exists_input0)) + ((dst_positive_scale_add_exists_input0) + (dst_positive_scale_add_exists_input0))) + (((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) * S ((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) + ((dst_negative_scale_add_exists_input0) + (dst_negative_scale_add_exists_input0)))) * S ((((dst_positive_code_add_exists_input0) + (dst_positive_scale_add_exists_input0)) * S ((dst_positive_code_add_exists_input0) + (dst_positive_scale_add_exists_input0)) + ((dst_positive_scale_add_exists_input0) + (dst_positive_scale_add_exists_input0))) + (((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) * S ((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) + ((dst_negative_scale_add_exists_input0) + (dst_negative_scale_add_exists_input0)))) + ((((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) * S ((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) + ((dst_negative_scale_add_exists_input0) + (dst_negative_scale_add_exists_input0))) + (((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) * S ((dst_negative_code_add_exists_input0) + (dst_negative_scale_add_exists_input0)) + ((dst_negative_scale_add_exists_input0) + (dst_negative_scale_add_exists_input0)))))) /\ (forall dst_index_add_exists_input0. (exists pvs_le_gap_add_exists_input0domain. pvs_le_gap_add_exists_input0domain + (dst_index_add_exists_input0) = (l)) -> exists dst_positive_add_exists_input0 dst_negative_add_exists_input0 dst_value_add_exists_input0. ((((exists ff_h_pvs_add_exists_input0entrypositive. ff_h_pvs_add_exists_input0entrypositive + S (dst_positive_add_exists_input0) = S ((S (dst_index_add_exists_input0)) * dst_positive_scale_add_exists_input0)) /\ exists ff_q_pvs_add_exists_input0entrypositive. dst_positive_code_add_exists_input0 = ff_q_pvs_add_exists_input0entrypositive * S ((S (dst_index_add_exists_input0)) * dst_positive_scale_add_exists_input0) + (dst_positive_add_exists_input0))) /\ (((((exists ff_h_pvs_add_exists_input0entrynegative. ff_h_pvs_add_exists_input0entrynegative + S (dst_negative_add_exists_input0) = S ((S (dst_index_add_exists_input0)) * dst_negative_scale_add_exists_input0)) /\ exists ff_q_pvs_add_exists_input0entrynegative. dst_negative_code_add_exists_input0 = ff_q_pvs_add_exists_input0entrynegative * S ((S (dst_index_add_exists_input0)) * dst_negative_scale_add_exists_input0) + (dst_negative_add_exists_input0))) /\ (exists ge_balance_positive_add_exists_input0entryvalue ge_balance_negative_add_exists_input0entryvalue. (((((dst_value_add_exists_input0) = 2 * (ge_balance_positive_add_exists_input0entryvalue) /\ (ge_balance_negative_add_exists_input0entryvalue) = 0) \/ exists ge_signed_half_add_exists_input0entryvaluedecode. (((dst_value_add_exists_input0) = 2 * ge_signed_half_add_exists_input0entryvaluedecode + 1 /\ (ge_balance_positive_add_exists_input0entryvalue) = 0) /\ (ge_balance_negative_add_exists_input0entryvalue) = S ge_signed_half_add_exists_input0entryvaluedecode))) /\ ((dst_positive_add_exists_input0) + ge_balance_negative_add_exists_input0entryvalue = (dst_negative_add_exists_input0) + ge_balance_positive_add_exists_input0entryvalue))))))))) -> (exists dst_positive_code_add_exists_input1 dst_positive_scale_add_exists_input1 dst_negative_code_add_exists_input1 dst_negative_scale_add_exists_input1. (((G) = (((((dst_positive_code_add_exists_input1) + (dst_positive_scale_add_exists_input1)) * S ((dst_positive_code_add_exists_input1) + (dst_positive_scale_add_exists_input1)) + ((dst_positive_scale_add_exists_input1) + (dst_positive_scale_add_exists_input1))) + (((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) * S ((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) + ((dst_negative_scale_add_exists_input1) + (dst_negative_scale_add_exists_input1)))) * S ((((dst_positive_code_add_exists_input1) + (dst_positive_scale_add_exists_input1)) * S ((dst_positive_code_add_exists_input1) + (dst_positive_scale_add_exists_input1)) + ((dst_positive_scale_add_exists_input1) + (dst_positive_scale_add_exists_input1))) + (((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) * S ((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) + ((dst_negative_scale_add_exists_input1) + (dst_negative_scale_add_exists_input1)))) + ((((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) * S ((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) + ((dst_negative_scale_add_exists_input1) + (dst_negative_scale_add_exists_input1))) + (((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) * S ((dst_negative_code_add_exists_input1) + (dst_negative_scale_add_exists_input1)) + ((dst_negative_scale_add_exists_input1) + (dst_negative_scale_add_exists_input1)))))) /\ (forall dst_index_add_exists_input1. (exists pvs_le_gap_add_exists_input1domain. pvs_le_gap_add_exists_input1domain + (dst_index_add_exists_input1) = (l)) -> exists dst_positive_add_exists_input1 dst_negative_add_exists_input1 dst_value_add_exists_input1. ((((exists ff_h_pvs_add_exists_input1entrypositive. ff_h_pvs_add_exists_input1entrypositive + S (dst_positive_add_exists_input1) = S ((S (dst_index_add_exists_input1)) * dst_positive_scale_add_exists_input1)) /\ exists ff_q_pvs_add_exists_input1entrypositive. dst_positive_code_add_exists_input1 = ff_q_pvs_add_exists_input1entrypositive * S ((S (dst_index_add_exists_input1)) * dst_positive_scale_add_exists_input1) + (dst_positive_add_exists_input1))) /\ (((((exists ff_h_pvs_add_exists_input1entrynegative. ff_h_pvs_add_exists_input1entrynegative + S (dst_negative_add_exists_input1) = S ((S (dst_index_add_exists_input1)) * dst_negative_scale_add_exists_input1)) /\ exists ff_q_pvs_add_exists_input1entrynegative. dst_negative_code_add_exists_input1 = ff_q_pvs_add_exists_input1entrynegative * S ((S (dst_index_add_exists_input1)) * dst_negative_scale_add_exists_input1) + (dst_negative_add_exists_input1))) /\ (exists ge_balance_positive_add_exists_input1entryvalue ge_balance_negative_add_exists_input1entryvalue. (((((dst_value_add_exists_input1) = 2 * (ge_balance_positive_add_exists_input1entryvalue) /\ (ge_balance_negative_add_exists_input1entryvalue) = 0) \/ exists ge_signed_half_add_exists_input1entryvaluedecode. (((dst_value_add_exists_input1) = 2 * ge_signed_half_add_exists_input1entryvaluedecode + 1 /\ (ge_balance_positive_add_exists_input1entryvalue) = 0) /\ (ge_balance_negative_add_exists_input1entryvalue) = S ge_signed_half_add_exists_input1entryvaluedecode))) /\ ((dst_positive_add_exists_input1) + ge_balance_negative_add_exists_input1entryvalue = (dst_negative_add_exists_input1) + ge_balance_positive_add_exists_input1entryvalue))))))))) -> exists H. (((exists dst_positive_code_add_exists_resultleft_table dst_positive_scale_add_exists_resultleft_table dst_negative_code_add_exists_resultleft_table dst_negative_scale_add_exists_resultleft_table. (((F) = (((((dst_positive_code_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table)) * S ((dst_positive_code_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table)) + ((dst_positive_scale_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table))) + (((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) * S ((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) + ((dst_negative_scale_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)))) * S ((((dst_positive_code_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table)) * S ((dst_positive_code_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table)) + ((dst_positive_scale_add_exists_resultleft_table) + (dst_positive_scale_add_exists_resultleft_table))) + (((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) * S ((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) + ((dst_negative_scale_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)))) + ((((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) * S ((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) + ((dst_negative_scale_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table))) + (((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) * S ((dst_negative_code_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)) + ((dst_negative_scale_add_exists_resultleft_table) + (dst_negative_scale_add_exists_resultleft_table)))))) /\ (forall dst_index_add_exists_resultleft_table. (exists pvs_le_gap_add_exists_resultleft_tabledomain. pvs_le_gap_add_exists_resultleft_tabledomain + (dst_index_add_exists_resultleft_table) = (l)) -> exists dst_positive_add_exists_resultleft_table dst_negative_add_exists_resultleft_table dst_value_add_exists_resultleft_table. ((((exists ff_h_pvs_add_exists_resultleft_tableentrypositive. ff_h_pvs_add_exists_resultleft_tableentrypositive + S (dst_positive_add_exists_resultleft_table) = S ((S (dst_index_add_exists_resultleft_table)) * dst_positive_scale_add_exists_resultleft_table)) /\ exists ff_q_pvs_add_exists_resultleft_tableentrypositive. dst_positive_code_add_exists_resultleft_table = ff_q_pvs_add_exists_resultleft_tableentrypositive * S ((S (dst_index_add_exists_resultleft_table)) * dst_positive_scale_add_exists_resultleft_table) + (dst_positive_add_exists_resultleft_table))) /\ (((((exists ff_h_pvs_add_exists_resultleft_tableentrynegative. ff_h_pvs_add_exists_resultleft_tableentrynegative + S (dst_negative_add_exists_resultleft_table) = S ((S (dst_index_add_exists_resultleft_table)) * dst_negative_scale_add_exists_resultleft_table)) /\ exists ff_q_pvs_add_exists_resultleft_tableentrynegative. dst_negative_code_add_exists_resultleft_table = ff_q_pvs_add_exists_resultleft_tableentrynegative * S ((S (dst_index_add_exists_resultleft_table)) * dst_negative_scale_add_exists_resultleft_table) + (dst_negative_add_exists_resultleft_table))) /\ (exists ge_balance_positive_add_exists_resultleft_tableentryvalue ge_balance_negative_add_exists_resultleft_tableentryvalue. (((((dst_value_add_exists_resultleft_table) = 2 * (ge_balance_positive_add_exists_resultleft_tableentryvalue) /\ (ge_balance_negative_add_exists_resultleft_tableentryvalue) = 0) \/ exists ge_signed_half_add_exists_resultleft_tableentryvaluedecode. (((dst_value_add_exists_resultleft_table) = 2 * ge_signed_half_add_exists_resultleft_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultleft_tableentryvalue) = 0) /\ (ge_balance_negative_add_exists_resultleft_tableentryvalue) = S ge_signed_half_add_exists_resultleft_tableentryvaluedecode))) /\ ((dst_positive_add_exists_resultleft_table) + ge_balance_negative_add_exists_resultleft_tableentryvalue = (dst_negative_add_exists_resultleft_table) + ge_balance_positive_add_exists_resultleft_tableentryvalue))))))))) /\ (((exists dst_positive_code_add_exists_resultright_table dst_positive_scale_add_exists_resultright_table dst_negative_code_add_exists_resultright_table dst_negative_scale_add_exists_resultright_table. (((G) = (((((dst_positive_code_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table)) * S ((dst_positive_code_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table)) + ((dst_positive_scale_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table))) + (((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) * S ((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) + ((dst_negative_scale_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)))) * S ((((dst_positive_code_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table)) * S ((dst_positive_code_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table)) + ((dst_positive_scale_add_exists_resultright_table) + (dst_positive_scale_add_exists_resultright_table))) + (((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) * S ((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) + ((dst_negative_scale_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)))) + ((((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) * S ((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) + ((dst_negative_scale_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table))) + (((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) * S ((dst_negative_code_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)) + ((dst_negative_scale_add_exists_resultright_table) + (dst_negative_scale_add_exists_resultright_table)))))) /\ (forall dst_index_add_exists_resultright_table. (exists pvs_le_gap_add_exists_resultright_tabledomain. pvs_le_gap_add_exists_resultright_tabledomain + (dst_index_add_exists_resultright_table) = (l)) -> exists dst_positive_add_exists_resultright_table dst_negative_add_exists_resultright_table dst_value_add_exists_resultright_table. ((((exists ff_h_pvs_add_exists_resultright_tableentrypositive. ff_h_pvs_add_exists_resultright_tableentrypositive + S (dst_positive_add_exists_resultright_table) = S ((S (dst_index_add_exists_resultright_table)) * dst_positive_scale_add_exists_resultright_table)) /\ exists ff_q_pvs_add_exists_resultright_tableentrypositive. dst_positive_code_add_exists_resultright_table = ff_q_pvs_add_exists_resultright_tableentrypositive * S ((S (dst_index_add_exists_resultright_table)) * dst_positive_scale_add_exists_resultright_table) + (dst_positive_add_exists_resultright_table))) /\ (((((exists ff_h_pvs_add_exists_resultright_tableentrynegative. ff_h_pvs_add_exists_resultright_tableentrynegative + S (dst_negative_add_exists_resultright_table) = S ((S (dst_index_add_exists_resultright_table)) * dst_negative_scale_add_exists_resultright_table)) /\ exists ff_q_pvs_add_exists_resultright_tableentrynegative. dst_negative_code_add_exists_resultright_table = ff_q_pvs_add_exists_resultright_tableentrynegative * S ((S (dst_index_add_exists_resultright_table)) * dst_negative_scale_add_exists_resultright_table) + (dst_negative_add_exists_resultright_table))) /\ (exists ge_balance_positive_add_exists_resultright_tableentryvalue ge_balance_negative_add_exists_resultright_tableentryvalue. (((((dst_value_add_exists_resultright_table) = 2 * (ge_balance_positive_add_exists_resultright_tableentryvalue) /\ (ge_balance_negative_add_exists_resultright_tableentryvalue) = 0) \/ exists ge_signed_half_add_exists_resultright_tableentryvaluedecode. (((dst_value_add_exists_resultright_table) = 2 * ge_signed_half_add_exists_resultright_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultright_tableentryvalue) = 0) /\ (ge_balance_negative_add_exists_resultright_tableentryvalue) = S ge_signed_half_add_exists_resultright_tableentryvaluedecode))) /\ ((dst_positive_add_exists_resultright_table) + ge_balance_negative_add_exists_resultright_tableentryvalue = (dst_negative_add_exists_resultright_table) + ge_balance_positive_add_exists_resultright_tableentryvalue))))))))) /\ (((exists dst_positive_code_add_exists_resultoutput_table dst_positive_scale_add_exists_resultoutput_table dst_negative_code_add_exists_resultoutput_table dst_negative_scale_add_exists_resultoutput_table. (((H) = (((((dst_positive_code_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table)) * S ((dst_positive_code_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table)) + ((dst_positive_scale_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table))) + (((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) * S ((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) + ((dst_negative_scale_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)))) * S ((((dst_positive_code_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table)) * S ((dst_positive_code_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table)) + ((dst_positive_scale_add_exists_resultoutput_table) + (dst_positive_scale_add_exists_resultoutput_table))) + (((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) * S ((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) + ((dst_negative_scale_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)))) + ((((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) * S ((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) + ((dst_negative_scale_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table))) + (((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) * S ((dst_negative_code_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)) + ((dst_negative_scale_add_exists_resultoutput_table) + (dst_negative_scale_add_exists_resultoutput_table)))))) /\ (forall dst_index_add_exists_resultoutput_table. (exists pvs_le_gap_add_exists_resultoutput_tabledomain. pvs_le_gap_add_exists_resultoutput_tabledomain + (dst_index_add_exists_resultoutput_table) = (l)) -> exists dst_positive_add_exists_resultoutput_table dst_negative_add_exists_resultoutput_table dst_value_add_exists_resultoutput_table. ((((exists ff_h_pvs_add_exists_resultoutput_tableentrypositive. ff_h_pvs_add_exists_resultoutput_tableentrypositive + S (dst_positive_add_exists_resultoutput_table) = S ((S (dst_index_add_exists_resultoutput_table)) * dst_positive_scale_add_exists_resultoutput_table)) /\ exists ff_q_pvs_add_exists_resultoutput_tableentrypositive. dst_positive_code_add_exists_resultoutput_table = ff_q_pvs_add_exists_resultoutput_tableentrypositive * S ((S (dst_index_add_exists_resultoutput_table)) * dst_positive_scale_add_exists_resultoutput_table) + (dst_positive_add_exists_resultoutput_table))) /\ (((((exists ff_h_pvs_add_exists_resultoutput_tableentrynegative. ff_h_pvs_add_exists_resultoutput_tableentrynegative + S (dst_negative_add_exists_resultoutput_table) = S ((S (dst_index_add_exists_resultoutput_table)) * dst_negative_scale_add_exists_resultoutput_table)) /\ exists ff_q_pvs_add_exists_resultoutput_tableentrynegative. dst_negative_code_add_exists_resultoutput_table = ff_q_pvs_add_exists_resultoutput_tableentrynegative * S ((S (dst_index_add_exists_resultoutput_table)) * dst_negative_scale_add_exists_resultoutput_table) + (dst_negative_add_exists_resultoutput_table))) /\ (exists ge_balance_positive_add_exists_resultoutput_tableentryvalue ge_balance_negative_add_exists_resultoutput_tableentryvalue. (((((dst_value_add_exists_resultoutput_table) = 2 * (ge_balance_positive_add_exists_resultoutput_tableentryvalue) /\ (ge_balance_negative_add_exists_resultoutput_tableentryvalue) = 0) \/ exists ge_signed_half_add_exists_resultoutput_tableentryvaluedecode. (((dst_value_add_exists_resultoutput_table) = 2 * ge_signed_half_add_exists_resultoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultoutput_tableentryvalue) = 0) /\ (ge_balance_negative_add_exists_resultoutput_tableentryvalue) = S ge_signed_half_add_exists_resultoutput_tableentryvaluedecode))) /\ ((dst_positive_add_exists_resultoutput_table) + ge_balance_negative_add_exists_resultoutput_tableentryvalue = (dst_negative_add_exists_resultoutput_table) + ge_balance_positive_add_exists_resultoutput_tableentryvalue))))))))) /\ (forall sto_index_add_exists_resultentries. (exists pvs_gap_add_exists_resultentriesbound. pvs_gap_add_exists_resultentriesbound + S (sto_index_add_exists_resultentries) = (l)) -> exists sto_left_add_exists_resultentries sto_right_add_exists_resultentries sto_output_add_exists_resultentries. ((exists dst_positive_code_add_exists_resultentriesentryleft dst_positive_scale_add_exists_resultentriesentryleft dst_negative_code_add_exists_resultentriesentryleft dst_negative_scale_add_exists_resultentriesentryleft dst_positive_add_exists_resultentriesentryleft dst_negative_add_exists_resultentriesentryleft. (((F) = (((((dst_positive_code_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft)) * S ((dst_positive_code_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft)) + ((dst_positive_scale_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft))) + (((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) * S ((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) + ((dst_negative_scale_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)))) * S ((((dst_positive_code_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft)) * S ((dst_positive_code_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft)) + ((dst_positive_scale_add_exists_resultentriesentryleft) + (dst_positive_scale_add_exists_resultentriesentryleft))) + (((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) * S ((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) + ((dst_negative_scale_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)))) + ((((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) * S ((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) + ((dst_negative_scale_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft))) + (((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) * S ((dst_negative_code_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)) + ((dst_negative_scale_add_exists_resultentriesentryleft) + (dst_negative_scale_add_exists_resultentriesentryleft)))))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryleftpositive. ff_h_pvs_add_exists_resultentriesentryleftpositive + S (dst_positive_add_exists_resultentriesentryleft) = S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryleft)) /\ exists ff_q_pvs_add_exists_resultentriesentryleftpositive. dst_positive_code_add_exists_resultentriesentryleft = ff_q_pvs_add_exists_resultentriesentryleftpositive * S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryleft) + (dst_positive_add_exists_resultentriesentryleft))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryleftnegative. ff_h_pvs_add_exists_resultentriesentryleftnegative + S (dst_negative_add_exists_resultentriesentryleft) = S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryleft)) /\ exists ff_q_pvs_add_exists_resultentriesentryleftnegative. dst_negative_code_add_exists_resultentriesentryleft = ff_q_pvs_add_exists_resultentriesentryleftnegative * S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryleft) + (dst_negative_add_exists_resultentriesentryleft))) /\ (exists ge_balance_positive_add_exists_resultentriesentryleftvalue ge_balance_negative_add_exists_resultentriesentryleftvalue. (((((sto_left_add_exists_resultentries) = 2 * (ge_balance_positive_add_exists_resultentriesentryleftvalue) /\ (ge_balance_negative_add_exists_resultentriesentryleftvalue) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryleftvaluedecode. (((sto_left_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryleftvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultentriesentryleftvalue) = 0) /\ (ge_balance_negative_add_exists_resultentriesentryleftvalue) = S ge_signed_half_add_exists_resultentriesentryleftvaluedecode))) /\ ((dst_positive_add_exists_resultentriesentryleft) + ge_balance_negative_add_exists_resultentriesentryleftvalue = (dst_negative_add_exists_resultentriesentryleft) + ge_balance_positive_add_exists_resultentriesentryleftvalue))))))))) /\ (((exists dst_positive_code_add_exists_resultentriesentryright dst_positive_scale_add_exists_resultentriesentryright dst_negative_code_add_exists_resultentriesentryright dst_negative_scale_add_exists_resultentriesentryright dst_positive_add_exists_resultentriesentryright dst_negative_add_exists_resultentriesentryright. (((G) = (((((dst_positive_code_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright)) * S ((dst_positive_code_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright)) + ((dst_positive_scale_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright))) + (((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) * S ((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) + ((dst_negative_scale_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)))) * S ((((dst_positive_code_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright)) * S ((dst_positive_code_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright)) + ((dst_positive_scale_add_exists_resultentriesentryright) + (dst_positive_scale_add_exists_resultentriesentryright))) + (((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) * S ((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) + ((dst_negative_scale_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)))) + ((((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) * S ((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) + ((dst_negative_scale_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright))) + (((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) * S ((dst_negative_code_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)) + ((dst_negative_scale_add_exists_resultentriesentryright) + (dst_negative_scale_add_exists_resultentriesentryright)))))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryrightpositive. ff_h_pvs_add_exists_resultentriesentryrightpositive + S (dst_positive_add_exists_resultentriesentryright) = S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryright)) /\ exists ff_q_pvs_add_exists_resultentriesentryrightpositive. dst_positive_code_add_exists_resultentriesentryright = ff_q_pvs_add_exists_resultentriesentryrightpositive * S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryright) + (dst_positive_add_exists_resultentriesentryright))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryrightnegative. ff_h_pvs_add_exists_resultentriesentryrightnegative + S (dst_negative_add_exists_resultentriesentryright) = S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryright)) /\ exists ff_q_pvs_add_exists_resultentriesentryrightnegative. dst_negative_code_add_exists_resultentriesentryright = ff_q_pvs_add_exists_resultentriesentryrightnegative * S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryright) + (dst_negative_add_exists_resultentriesentryright))) /\ (exists ge_balance_positive_add_exists_resultentriesentryrightvalue ge_balance_negative_add_exists_resultentriesentryrightvalue. (((((sto_right_add_exists_resultentries) = 2 * (ge_balance_positive_add_exists_resultentriesentryrightvalue) /\ (ge_balance_negative_add_exists_resultentriesentryrightvalue) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryrightvaluedecode. (((sto_right_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryrightvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultentriesentryrightvalue) = 0) /\ (ge_balance_negative_add_exists_resultentriesentryrightvalue) = S ge_signed_half_add_exists_resultentriesentryrightvaluedecode))) /\ ((dst_positive_add_exists_resultentriesentryright) + ge_balance_negative_add_exists_resultentriesentryrightvalue = (dst_negative_add_exists_resultentriesentryright) + ge_balance_positive_add_exists_resultentriesentryrightvalue))))))))) /\ (((exists dst_positive_code_add_exists_resultentriesentryoutput dst_positive_scale_add_exists_resultentriesentryoutput dst_negative_code_add_exists_resultentriesentryoutput dst_negative_scale_add_exists_resultentriesentryoutput dst_positive_add_exists_resultentriesentryoutput dst_negative_add_exists_resultentriesentryoutput. (((H) = (((((dst_positive_code_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput)) * S ((dst_positive_code_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput)) + ((dst_positive_scale_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput))) + (((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) * S ((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) + ((dst_negative_scale_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)))) * S ((((dst_positive_code_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput)) * S ((dst_positive_code_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput)) + ((dst_positive_scale_add_exists_resultentriesentryoutput) + (dst_positive_scale_add_exists_resultentriesentryoutput))) + (((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) * S ((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) + ((dst_negative_scale_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)))) + ((((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) * S ((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) + ((dst_negative_scale_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput))) + (((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) * S ((dst_negative_code_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)) + ((dst_negative_scale_add_exists_resultentriesentryoutput) + (dst_negative_scale_add_exists_resultentriesentryoutput)))))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryoutputpositive. ff_h_pvs_add_exists_resultentriesentryoutputpositive + S (dst_positive_add_exists_resultentriesentryoutput) = S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryoutput)) /\ exists ff_q_pvs_add_exists_resultentriesentryoutputpositive. dst_positive_code_add_exists_resultentriesentryoutput = ff_q_pvs_add_exists_resultentriesentryoutputpositive * S ((S (sto_index_add_exists_resultentries)) * dst_positive_scale_add_exists_resultentriesentryoutput) + (dst_positive_add_exists_resultentriesentryoutput))) /\ (((((exists ff_h_pvs_add_exists_resultentriesentryoutputnegative. ff_h_pvs_add_exists_resultentriesentryoutputnegative + S (dst_negative_add_exists_resultentriesentryoutput) = S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryoutput)) /\ exists ff_q_pvs_add_exists_resultentriesentryoutputnegative. dst_negative_code_add_exists_resultentriesentryoutput = ff_q_pvs_add_exists_resultentriesentryoutputnegative * S ((S (sto_index_add_exists_resultentries)) * dst_negative_scale_add_exists_resultentriesentryoutput) + (dst_negative_add_exists_resultentriesentryoutput))) /\ (exists ge_balance_positive_add_exists_resultentriesentryoutputvalue ge_balance_negative_add_exists_resultentriesentryoutputvalue. (((((sto_output_add_exists_resultentries) = 2 * (ge_balance_positive_add_exists_resultentriesentryoutputvalue) /\ (ge_balance_negative_add_exists_resultentriesentryoutputvalue) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryoutputvaluedecode. (((sto_output_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_add_exists_resultentriesentryoutputvalue) = 0) /\ (ge_balance_negative_add_exists_resultentriesentryoutputvalue) = S ge_signed_half_add_exists_resultentriesentryoutputvaluedecode))) /\ ((dst_positive_add_exists_resultentriesentryoutput) + ge_balance_negative_add_exists_resultentriesentryoutputvalue = (dst_negative_add_exists_resultentriesentryoutput) + ge_balance_positive_add_exists_resultentriesentryoutputvalue))))))))) /\ (exists dsa_ap_add_exists_resultentriesentryoperation dsa_an_add_exists_resultentriesentryoperation dsa_bp_add_exists_resultentriesentryoperation dsa_bn_add_exists_resultentriesentryoperation dsa_cp_add_exists_resultentriesentryoperation dsa_cn_add_exists_resultentriesentryoperation. (((((sto_left_add_exists_resultentries) = 2 * (dsa_ap_add_exists_resultentriesentryoperation) /\ (dsa_an_add_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryoperationleft. (((sto_left_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryoperationleft + 1 /\ (dsa_ap_add_exists_resultentriesentryoperation) = 0) /\ (dsa_an_add_exists_resultentriesentryoperation) = S ge_signed_half_add_exists_resultentriesentryoperationleft))) /\ ((((((sto_right_add_exists_resultentries) = 2 * (dsa_bp_add_exists_resultentriesentryoperation) /\ (dsa_bn_add_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryoperationright. (((sto_right_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryoperationright + 1 /\ (dsa_bp_add_exists_resultentriesentryoperation) = 0) /\ (dsa_bn_add_exists_resultentriesentryoperation) = S ge_signed_half_add_exists_resultentriesentryoperationright))) /\ ((((((sto_output_add_exists_resultentries) = 2 * (dsa_cp_add_exists_resultentriesentryoperation) /\ (dsa_cn_add_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_add_exists_resultentriesentryoperationoutput. (((sto_output_add_exists_resultentries) = 2 * ge_signed_half_add_exists_resultentriesentryoperationoutput + 1 /\ (dsa_cp_add_exists_resultentriesentryoperation) = 0) /\ (dsa_cn_add_exists_resultentriesentryoperation) = S ge_signed_half_add_exists_resultentriesentryoperationoutput))) /\ ((dsa_ap_add_exists_resultentriesentryoperation + dsa_bp_add_exists_resultentriesentryoperation) + dsa_cn_add_exists_resultentriesentryoperation = (dsa_an_add_exists_resultentriesentryoperation + dsa_bn_add_exists_resultentriesentryoperation) + dsa_cp_add_exists_resultentriesentryoperation)))))))))))))))))))

Constructive proof overview

Generated structural guide

Ordinary finite induction constructs both beta output streams and their actual packed table for pointwise add; no finite-choice or supplied-table oracle is used.

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

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

Proof neighborhood

Direct dependencies

WS0005 signed_table_add_empty divisor_signed_table_from_components Alpha theorem; checked-use authorized WS0001 signed_table_domain_resize WS0002 signed_table_lookup_any signed_add_total Alpha theorem; checked-use authorized arithmetic_signed_table_extend_at Alpha theorem; checked-use authorized WS000F signed_table_add_extend

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

88 script commands · 22 reading checkpoints · 5 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 (4)

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–5

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 ht0
  5. L5
    intro ht1
02Construct an explicit witnessL6–6

Supply the displayed value, then prove that it has the required property.

  1. L6
    exists ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0))))
03Use earlier factsL7–16

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

  1. L7
    specialize signed_table_add_empty (F)
  2. L8
    specialize signed_table_add_empty (G)
  3. L9
    specialize signed_table_add_empty (((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))))
  4. L10
    apply signed_table_add_empty
  5. L11
    exact ht0
  6. L12
    exact ht1
  7. L13
    specialize divisor_signed_table_from_components (0)
  8. L14
    specialize divisor_signed_table_from_components (((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))))
  9. L15
    specialize divisor_signed_table_from_components (0)
  10. L16
    specialize divisor_signed_table_from_components (0)
04Use earlier factsL17–19

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

  1. L17
    specialize divisor_signed_table_from_components (0)
  2. L18
    specialize divisor_signed_table_from_components (0)
  3. L19
    apply divisor_signed_table_from_components
05Calculate and transport equalitiesL20–20

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

  1. L20
    refl
06Fix variables and assumptionsL21–24

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

  1. L21
    intro F
  2. L22
    intro G
  3. L23
    intro ht0
  4. L24
    intro ht1
07Establish hpL25–34

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

  1. L25
    have hp : ∃ K. ArithAdd(F,G,K,l)Definitions: ArithAdd
  2. L26
    specialize IH (F)
  3. L27
    specialize IH (G)
  4. L28
    apply IH
  5. L29
    specialize signed_table_domain_resize (S l)
  6. L30
    specialize signed_table_domain_resize (l)
  7. L31
    specialize signed_table_domain_resize (F)
  8. L32
    apply signed_table_domain_resize
  9. L33
    exact ht0
  10. L34
    specialize signed_table_domain_resize (S l)
08Use earlier factsL35–38

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

  1. L35
    specialize signed_table_domain_resize (l)
  2. L36
    specialize signed_table_domain_resize (G)
  3. L37
    apply signed_table_domain_resize
  4. L38
    exact ht1
09Separate the logical casesL39–39

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

  1. L39
    cases hp
10Establish he0L40–45

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

  1. L40
    have he0 : ∃ z. ArithAt(F,l,z)Definitions: ArithAt
  2. L41
    specialize signed_table_lookup_any (S l)
  3. L42
    specialize signed_table_lookup_any (F)
  4. L43
    specialize signed_table_lookup_any (l)
  5. L44
    apply signed_table_lookup_any
  6. L45
    exact ht0
11Separate the logical casesL46–46

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

  1. L46
    cases he0
12Establish he1L47–52

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

  1. L47
    have he1 : ∃ z. ArithAt(G,l,z)Definitions: ArithAt
  2. L48
    specialize signed_table_lookup_any (S l)
  3. L49
    specialize signed_table_lookup_any (G)
  4. L50
    specialize signed_table_lookup_any (l)
  5. L51
    apply signed_table_lookup_any
  6. L52
    exact ht1
13Separate the logical casesL53–53

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

  1. L53
    cases he1
14Establish hvL54–57

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

  1. L54
    have hv : ∃ z. SignedAdd(x1,x2,z)Definitions: SignedAdd
  2. L55
    specialize signed_add_total (x1)
  3. L56
    specialize signed_add_total (x2)
  4. L57
    apply signed_add_total
15Separate the logical casesL58–58

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

  1. L58
    cases hv
16Establish hnextL59–64

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

  1. L59
    have hnext : ∃ K. ArithExtend(x,K,l,x3)Definitions: ArithExtend
  2. L60
    specialize arithmetic_signed_table_extend_at (l)
  3. L61
    specialize arithmetic_signed_table_extend_at (x)
  4. L62
    specialize arithmetic_signed_table_extend_at (l)
  5. L63
    specialize arithmetic_signed_table_extend_at (x3)
  6. L64
    apply arithmetic_signed_table_extend_at
17Separate the logical casesL65–67

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

  1. L65
    cases hp_witness
  2. L66
    cases hp_witness_right
  3. L67
    cases hp_witness_right_right
18Use earlier factsL68–68

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

  1. L68
    exact hp_witness_right_right_left
19Separate the logical casesL69–71

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

  1. L69
    cases hnext
  2. L70
    cases hnext_witness
  3. L71
    cases hnext_witness_right
20Construct an explicit witnessL72–72

Supply the displayed value, then prove that it has the required property.

  1. L72
    exists x4
21Use earlier factsL73–82

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

  1. L73
    specialize signed_table_add_extend (F)
  2. L74
    specialize signed_table_add_extend (G)
  3. L75
    specialize signed_table_add_extend (x)
  4. L76
    specialize signed_table_add_extend (x4)
  5. L77
    specialize signed_table_add_extend (l)
  6. L78
    specialize signed_table_add_extend (x1)
  7. L79
    specialize signed_table_add_extend (x2)
  8. L80
    specialize signed_table_add_extend (x3)
  9. L81
    apply signed_table_add_extend
  10. L82
    exact hp_witness
22Use earlier factsL83–88

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

  1. L83
    exact hnext_witness_left
  2. L84
    exact hnext_witness_right_left
  3. L85
    exact he0_witness
  4. L86
    exact he1_witness
  5. L87
    exact hnext_witness_right_right
  6. L88
    exact hv_witness

Library-wide reading audit

Original exact command ledger · 88 lines
  1. 0001induction l
  2. 0002intro F
  3. 0003intro G
  4. 0004intro ht0
  5. 0005intro ht1
  6. 0006exists ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0))))
  7. 0007specialize signed_table_add_empty (F)
  8. 0008specialize signed_table_add_empty (G)
  9. 0009specialize signed_table_add_empty (((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))))
  10. 0010apply signed_table_add_empty
  11. 0011exact ht0
  12. 0012exact ht1
  13. 0013specialize divisor_signed_table_from_components (0)
  14. 0014specialize divisor_signed_table_from_components (((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))))
  15. 0015specialize divisor_signed_table_from_components (0)
  16. 0016specialize divisor_signed_table_from_components (0)
  17. 0017specialize divisor_signed_table_from_components (0)
  18. 0018specialize divisor_signed_table_from_components (0)
  19. 0019apply divisor_signed_table_from_components
  20. 0020refl
  21. 0021intro F
  22. 0022intro G
  23. 0023intro ht0
  24. 0024intro ht1
  25. 0025have hp : exists K. (((exists dst_positive_code_add_construct_prefixleft_table dst_positive_scale_add_construct_prefixleft_table dst_negative_code_add_construct_prefixleft_table dst_negative_scale_add_construct_prefixleft_table. (((F) = (((((dst_positive_code_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table)) * S ((dst_positive_code_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table)) + ((dst_positive_scale_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table))) + (((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) * S ((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) + ((dst_negative_scale_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)))) * S ((((dst_positive_code_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table)) * S ((dst_positive_code_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table)) + ((dst_positive_scale_add_construct_prefixleft_table) + (dst_positive_scale_add_construct_prefixleft_table))) + (((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) * S ((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) + ((dst_negative_scale_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)))) + ((((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) * S ((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) + ((dst_negative_scale_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table))) + (((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) * S ((dst_negative_code_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)) + ((dst_negative_scale_add_construct_prefixleft_table) + (dst_negative_scale_add_construct_prefixleft_table)))))) /\ (forall dst_index_add_construct_prefixleft_table. (exists pvs_le_gap_add_construct_prefixleft_tabledomain. pvs_le_gap_add_construct_prefixleft_tabledomain + (dst_index_add_construct_prefixleft_table) = (l)) -> exists dst_positive_add_construct_prefixleft_table dst_negative_add_construct_prefixleft_table dst_value_add_construct_prefixleft_table. ((((exists ff_h_pvs_add_construct_prefixleft_tableentrypositive. ff_h_pvs_add_construct_prefixleft_tableentrypositive + S (dst_positive_add_construct_prefixleft_table) = S ((S (dst_index_add_construct_prefixleft_table)) * dst_positive_scale_add_construct_prefixleft_table)) /\ exists ff_q_pvs_add_construct_prefixleft_tableentrypositive. dst_positive_code_add_construct_prefixleft_table = ff_q_pvs_add_construct_prefixleft_tableentrypositive * S ((S (dst_index_add_construct_prefixleft_table)) * dst_positive_scale_add_construct_prefixleft_table) + (dst_positive_add_construct_prefixleft_table))) /\ (((((exists ff_h_pvs_add_construct_prefixleft_tableentrynegative. ff_h_pvs_add_construct_prefixleft_tableentrynegative + S (dst_negative_add_construct_prefixleft_table) = S ((S (dst_index_add_construct_prefixleft_table)) * dst_negative_scale_add_construct_prefixleft_table)) /\ exists ff_q_pvs_add_construct_prefixleft_tableentrynegative. dst_negative_code_add_construct_prefixleft_table = ff_q_pvs_add_construct_prefixleft_tableentrynegative * S ((S (dst_index_add_construct_prefixleft_table)) * dst_negative_scale_add_construct_prefixleft_table) + (dst_negative_add_construct_prefixleft_table))) /\ (exists ge_balance_positive_add_construct_prefixleft_tableentryvalue ge_balance_negative_add_construct_prefixleft_tableentryvalue. (((((dst_value_add_construct_prefixleft_table) = 2 * (ge_balance_positive_add_construct_prefixleft_tableentryvalue) /\ (ge_balance_negative_add_construct_prefixleft_tableentryvalue) = 0) \/ exists ge_signed_half_add_construct_prefixleft_tableentryvaluedecode. (((dst_value_add_construct_prefixleft_table) = 2 * ge_signed_half_add_construct_prefixleft_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixleft_tableentryvalue) = 0) /\ (ge_balance_negative_add_construct_prefixleft_tableentryvalue) = S ge_signed_half_add_construct_prefixleft_tableentryvaluedecode))) /\ ((dst_positive_add_construct_prefixleft_table) + ge_balance_negative_add_construct_prefixleft_tableentryvalue = (dst_negative_add_construct_prefixleft_table) + ge_balance_positive_add_construct_prefixleft_tableentryvalue))))))))) /\ (((exists dst_positive_code_add_construct_prefixright_table dst_positive_scale_add_construct_prefixright_table dst_negative_code_add_construct_prefixright_table dst_negative_scale_add_construct_prefixright_table. (((G) = (((((dst_positive_code_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table)) * S ((dst_positive_code_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table)) + ((dst_positive_scale_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table))) + (((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) * S ((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) + ((dst_negative_scale_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)))) * S ((((dst_positive_code_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table)) * S ((dst_positive_code_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table)) + ((dst_positive_scale_add_construct_prefixright_table) + (dst_positive_scale_add_construct_prefixright_table))) + (((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) * S ((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) + ((dst_negative_scale_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)))) + ((((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) * S ((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) + ((dst_negative_scale_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table))) + (((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) * S ((dst_negative_code_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)) + ((dst_negative_scale_add_construct_prefixright_table) + (dst_negative_scale_add_construct_prefixright_table)))))) /\ (forall dst_index_add_construct_prefixright_table. (exists pvs_le_gap_add_construct_prefixright_tabledomain. pvs_le_gap_add_construct_prefixright_tabledomain + (dst_index_add_construct_prefixright_table) = (l)) -> exists dst_positive_add_construct_prefixright_table dst_negative_add_construct_prefixright_table dst_value_add_construct_prefixright_table. ((((exists ff_h_pvs_add_construct_prefixright_tableentrypositive. ff_h_pvs_add_construct_prefixright_tableentrypositive + S (dst_positive_add_construct_prefixright_table) = S ((S (dst_index_add_construct_prefixright_table)) * dst_positive_scale_add_construct_prefixright_table)) /\ exists ff_q_pvs_add_construct_prefixright_tableentrypositive. dst_positive_code_add_construct_prefixright_table = ff_q_pvs_add_construct_prefixright_tableentrypositive * S ((S (dst_index_add_construct_prefixright_table)) * dst_positive_scale_add_construct_prefixright_table) + (dst_positive_add_construct_prefixright_table))) /\ (((((exists ff_h_pvs_add_construct_prefixright_tableentrynegative. ff_h_pvs_add_construct_prefixright_tableentrynegative + S (dst_negative_add_construct_prefixright_table) = S ((S (dst_index_add_construct_prefixright_table)) * dst_negative_scale_add_construct_prefixright_table)) /\ exists ff_q_pvs_add_construct_prefixright_tableentrynegative. dst_negative_code_add_construct_prefixright_table = ff_q_pvs_add_construct_prefixright_tableentrynegative * S ((S (dst_index_add_construct_prefixright_table)) * dst_negative_scale_add_construct_prefixright_table) + (dst_negative_add_construct_prefixright_table))) /\ (exists ge_balance_positive_add_construct_prefixright_tableentryvalue ge_balance_negative_add_construct_prefixright_tableentryvalue. (((((dst_value_add_construct_prefixright_table) = 2 * (ge_balance_positive_add_construct_prefixright_tableentryvalue) /\ (ge_balance_negative_add_construct_prefixright_tableentryvalue) = 0) \/ exists ge_signed_half_add_construct_prefixright_tableentryvaluedecode. (((dst_value_add_construct_prefixright_table) = 2 * ge_signed_half_add_construct_prefixright_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixright_tableentryvalue) = 0) /\ (ge_balance_negative_add_construct_prefixright_tableentryvalue) = S ge_signed_half_add_construct_prefixright_tableentryvaluedecode))) /\ ((dst_positive_add_construct_prefixright_table) + ge_balance_negative_add_construct_prefixright_tableentryvalue = (dst_negative_add_construct_prefixright_table) + ge_balance_positive_add_construct_prefixright_tableentryvalue))))))))) /\ (((exists dst_positive_code_add_construct_prefixoutput_table dst_positive_scale_add_construct_prefixoutput_table dst_negative_code_add_construct_prefixoutput_table dst_negative_scale_add_construct_prefixoutput_table. (((K) = (((((dst_positive_code_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table)) * S ((dst_positive_code_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table)) + ((dst_positive_scale_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table))) + (((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) * S ((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) + ((dst_negative_scale_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)))) * S ((((dst_positive_code_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table)) * S ((dst_positive_code_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table)) + ((dst_positive_scale_add_construct_prefixoutput_table) + (dst_positive_scale_add_construct_prefixoutput_table))) + (((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) * S ((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) + ((dst_negative_scale_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)))) + ((((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) * S ((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) + ((dst_negative_scale_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table))) + (((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) * S ((dst_negative_code_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)) + ((dst_negative_scale_add_construct_prefixoutput_table) + (dst_negative_scale_add_construct_prefixoutput_table)))))) /\ (forall dst_index_add_construct_prefixoutput_table. (exists pvs_le_gap_add_construct_prefixoutput_tabledomain. pvs_le_gap_add_construct_prefixoutput_tabledomain + (dst_index_add_construct_prefixoutput_table) = (l)) -> exists dst_positive_add_construct_prefixoutput_table dst_negative_add_construct_prefixoutput_table dst_value_add_construct_prefixoutput_table. ((((exists ff_h_pvs_add_construct_prefixoutput_tableentrypositive. ff_h_pvs_add_construct_prefixoutput_tableentrypositive + S (dst_positive_add_construct_prefixoutput_table) = S ((S (dst_index_add_construct_prefixoutput_table)) * dst_positive_scale_add_construct_prefixoutput_table)) /\ exists ff_q_pvs_add_construct_prefixoutput_tableentrypositive. dst_positive_code_add_construct_prefixoutput_table = ff_q_pvs_add_construct_prefixoutput_tableentrypositive * S ((S (dst_index_add_construct_prefixoutput_table)) * dst_positive_scale_add_construct_prefixoutput_table) + (dst_positive_add_construct_prefixoutput_table))) /\ (((((exists ff_h_pvs_add_construct_prefixoutput_tableentrynegative. ff_h_pvs_add_construct_prefixoutput_tableentrynegative + S (dst_negative_add_construct_prefixoutput_table) = S ((S (dst_index_add_construct_prefixoutput_table)) * dst_negative_scale_add_construct_prefixoutput_table)) /\ exists ff_q_pvs_add_construct_prefixoutput_tableentrynegative. dst_negative_code_add_construct_prefixoutput_table = ff_q_pvs_add_construct_prefixoutput_tableentrynegative * S ((S (dst_index_add_construct_prefixoutput_table)) * dst_negative_scale_add_construct_prefixoutput_table) + (dst_negative_add_construct_prefixoutput_table))) /\ (exists ge_balance_positive_add_construct_prefixoutput_tableentryvalue ge_balance_negative_add_construct_prefixoutput_tableentryvalue. (((((dst_value_add_construct_prefixoutput_table) = 2 * (ge_balance_positive_add_construct_prefixoutput_tableentryvalue) /\ (ge_balance_negative_add_construct_prefixoutput_tableentryvalue) = 0) \/ exists ge_signed_half_add_construct_prefixoutput_tableentryvaluedecode. (((dst_value_add_construct_prefixoutput_table) = 2 * ge_signed_half_add_construct_prefixoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixoutput_tableentryvalue) = 0) /\ (ge_balance_negative_add_construct_prefixoutput_tableentryvalue) = S ge_signed_half_add_construct_prefixoutput_tableentryvaluedecode))) /\ ((dst_positive_add_construct_prefixoutput_table) + ge_balance_negative_add_construct_prefixoutput_tableentryvalue = (dst_negative_add_construct_prefixoutput_table) + ge_balance_positive_add_construct_prefixoutput_tableentryvalue))))))))) /\ (forall sto_index_add_construct_prefixentries. (exists pvs_gap_add_construct_prefixentriesbound. pvs_gap_add_construct_prefixentriesbound + S (sto_index_add_construct_prefixentries) = (l)) -> exists sto_left_add_construct_prefixentries sto_right_add_construct_prefixentries sto_output_add_construct_prefixentries. ((exists dst_positive_code_add_construct_prefixentriesentryleft dst_positive_scale_add_construct_prefixentriesentryleft dst_negative_code_add_construct_prefixentriesentryleft dst_negative_scale_add_construct_prefixentriesentryleft dst_positive_add_construct_prefixentriesentryleft dst_negative_add_construct_prefixentriesentryleft. (((F) = (((((dst_positive_code_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft)) * S ((dst_positive_code_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft)) + ((dst_positive_scale_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft))) + (((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) * S ((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) + ((dst_negative_scale_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)))) * S ((((dst_positive_code_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft)) * S ((dst_positive_code_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft)) + ((dst_positive_scale_add_construct_prefixentriesentryleft) + (dst_positive_scale_add_construct_prefixentriesentryleft))) + (((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) * S ((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) + ((dst_negative_scale_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)))) + ((((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) * S ((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) + ((dst_negative_scale_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft))) + (((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) * S ((dst_negative_code_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)) + ((dst_negative_scale_add_construct_prefixentriesentryleft) + (dst_negative_scale_add_construct_prefixentriesentryleft)))))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryleftpositive. ff_h_pvs_add_construct_prefixentriesentryleftpositive + S (dst_positive_add_construct_prefixentriesentryleft) = S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryleft)) /\ exists ff_q_pvs_add_construct_prefixentriesentryleftpositive. dst_positive_code_add_construct_prefixentriesentryleft = ff_q_pvs_add_construct_prefixentriesentryleftpositive * S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryleft) + (dst_positive_add_construct_prefixentriesentryleft))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryleftnegative. ff_h_pvs_add_construct_prefixentriesentryleftnegative + S (dst_negative_add_construct_prefixentriesentryleft) = S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryleft)) /\ exists ff_q_pvs_add_construct_prefixentriesentryleftnegative. dst_negative_code_add_construct_prefixentriesentryleft = ff_q_pvs_add_construct_prefixentriesentryleftnegative * S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryleft) + (dst_negative_add_construct_prefixentriesentryleft))) /\ (exists ge_balance_positive_add_construct_prefixentriesentryleftvalue ge_balance_negative_add_construct_prefixentriesentryleftvalue. (((((sto_left_add_construct_prefixentries) = 2 * (ge_balance_positive_add_construct_prefixentriesentryleftvalue) /\ (ge_balance_negative_add_construct_prefixentriesentryleftvalue) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryleftvaluedecode. (((sto_left_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryleftvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixentriesentryleftvalue) = 0) /\ (ge_balance_negative_add_construct_prefixentriesentryleftvalue) = S ge_signed_half_add_construct_prefixentriesentryleftvaluedecode))) /\ ((dst_positive_add_construct_prefixentriesentryleft) + ge_balance_negative_add_construct_prefixentriesentryleftvalue = (dst_negative_add_construct_prefixentriesentryleft) + ge_balance_positive_add_construct_prefixentriesentryleftvalue))))))))) /\ (((exists dst_positive_code_add_construct_prefixentriesentryright dst_positive_scale_add_construct_prefixentriesentryright dst_negative_code_add_construct_prefixentriesentryright dst_negative_scale_add_construct_prefixentriesentryright dst_positive_add_construct_prefixentriesentryright dst_negative_add_construct_prefixentriesentryright. (((G) = (((((dst_positive_code_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright)) * S ((dst_positive_code_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright)) + ((dst_positive_scale_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright))) + (((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) * S ((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) + ((dst_negative_scale_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)))) * S ((((dst_positive_code_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright)) * S ((dst_positive_code_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright)) + ((dst_positive_scale_add_construct_prefixentriesentryright) + (dst_positive_scale_add_construct_prefixentriesentryright))) + (((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) * S ((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) + ((dst_negative_scale_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)))) + ((((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) * S ((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) + ((dst_negative_scale_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright))) + (((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) * S ((dst_negative_code_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)) + ((dst_negative_scale_add_construct_prefixentriesentryright) + (dst_negative_scale_add_construct_prefixentriesentryright)))))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryrightpositive. ff_h_pvs_add_construct_prefixentriesentryrightpositive + S (dst_positive_add_construct_prefixentriesentryright) = S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryright)) /\ exists ff_q_pvs_add_construct_prefixentriesentryrightpositive. dst_positive_code_add_construct_prefixentriesentryright = ff_q_pvs_add_construct_prefixentriesentryrightpositive * S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryright) + (dst_positive_add_construct_prefixentriesentryright))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryrightnegative. ff_h_pvs_add_construct_prefixentriesentryrightnegative + S (dst_negative_add_construct_prefixentriesentryright) = S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryright)) /\ exists ff_q_pvs_add_construct_prefixentriesentryrightnegative. dst_negative_code_add_construct_prefixentriesentryright = ff_q_pvs_add_construct_prefixentriesentryrightnegative * S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryright) + (dst_negative_add_construct_prefixentriesentryright))) /\ (exists ge_balance_positive_add_construct_prefixentriesentryrightvalue ge_balance_negative_add_construct_prefixentriesentryrightvalue. (((((sto_right_add_construct_prefixentries) = 2 * (ge_balance_positive_add_construct_prefixentriesentryrightvalue) /\ (ge_balance_negative_add_construct_prefixentriesentryrightvalue) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryrightvaluedecode. (((sto_right_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryrightvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixentriesentryrightvalue) = 0) /\ (ge_balance_negative_add_construct_prefixentriesentryrightvalue) = S ge_signed_half_add_construct_prefixentriesentryrightvaluedecode))) /\ ((dst_positive_add_construct_prefixentriesentryright) + ge_balance_negative_add_construct_prefixentriesentryrightvalue = (dst_negative_add_construct_prefixentriesentryright) + ge_balance_positive_add_construct_prefixentriesentryrightvalue))))))))) /\ (((exists dst_positive_code_add_construct_prefixentriesentryoutput dst_positive_scale_add_construct_prefixentriesentryoutput dst_negative_code_add_construct_prefixentriesentryoutput dst_negative_scale_add_construct_prefixentriesentryoutput dst_positive_add_construct_prefixentriesentryoutput dst_negative_add_construct_prefixentriesentryoutput. (((K) = (((((dst_positive_code_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput)) * S ((dst_positive_code_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput)) + ((dst_positive_scale_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput))) + (((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) * S ((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) + ((dst_negative_scale_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)))) * S ((((dst_positive_code_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput)) * S ((dst_positive_code_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput)) + ((dst_positive_scale_add_construct_prefixentriesentryoutput) + (dst_positive_scale_add_construct_prefixentriesentryoutput))) + (((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) * S ((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) + ((dst_negative_scale_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)))) + ((((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) * S ((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) + ((dst_negative_scale_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput))) + (((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) * S ((dst_negative_code_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)) + ((dst_negative_scale_add_construct_prefixentriesentryoutput) + (dst_negative_scale_add_construct_prefixentriesentryoutput)))))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryoutputpositive. ff_h_pvs_add_construct_prefixentriesentryoutputpositive + S (dst_positive_add_construct_prefixentriesentryoutput) = S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryoutput)) /\ exists ff_q_pvs_add_construct_prefixentriesentryoutputpositive. dst_positive_code_add_construct_prefixentriesentryoutput = ff_q_pvs_add_construct_prefixentriesentryoutputpositive * S ((S (sto_index_add_construct_prefixentries)) * dst_positive_scale_add_construct_prefixentriesentryoutput) + (dst_positive_add_construct_prefixentriesentryoutput))) /\ (((((exists ff_h_pvs_add_construct_prefixentriesentryoutputnegative. ff_h_pvs_add_construct_prefixentriesentryoutputnegative + S (dst_negative_add_construct_prefixentriesentryoutput) = S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryoutput)) /\ exists ff_q_pvs_add_construct_prefixentriesentryoutputnegative. dst_negative_code_add_construct_prefixentriesentryoutput = ff_q_pvs_add_construct_prefixentriesentryoutputnegative * S ((S (sto_index_add_construct_prefixentries)) * dst_negative_scale_add_construct_prefixentriesentryoutput) + (dst_negative_add_construct_prefixentriesentryoutput))) /\ (exists ge_balance_positive_add_construct_prefixentriesentryoutputvalue ge_balance_negative_add_construct_prefixentriesentryoutputvalue. (((((sto_output_add_construct_prefixentries) = 2 * (ge_balance_positive_add_construct_prefixentriesentryoutputvalue) /\ (ge_balance_negative_add_construct_prefixentriesentryoutputvalue) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryoutputvaluedecode. (((sto_output_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_add_construct_prefixentriesentryoutputvalue) = 0) /\ (ge_balance_negative_add_construct_prefixentriesentryoutputvalue) = S ge_signed_half_add_construct_prefixentriesentryoutputvaluedecode))) /\ ((dst_positive_add_construct_prefixentriesentryoutput) + ge_balance_negative_add_construct_prefixentriesentryoutputvalue = (dst_negative_add_construct_prefixentriesentryoutput) + ge_balance_positive_add_construct_prefixentriesentryoutputvalue))))))))) /\ (exists dsa_ap_add_construct_prefixentriesentryoperation dsa_an_add_construct_prefixentriesentryoperation dsa_bp_add_construct_prefixentriesentryoperation dsa_bn_add_construct_prefixentriesentryoperation dsa_cp_add_construct_prefixentriesentryoperation dsa_cn_add_construct_prefixentriesentryoperation. (((((sto_left_add_construct_prefixentries) = 2 * (dsa_ap_add_construct_prefixentriesentryoperation) /\ (dsa_an_add_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryoperationleft. (((sto_left_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryoperationleft + 1 /\ (dsa_ap_add_construct_prefixentriesentryoperation) = 0) /\ (dsa_an_add_construct_prefixentriesentryoperation) = S ge_signed_half_add_construct_prefixentriesentryoperationleft))) /\ ((((((sto_right_add_construct_prefixentries) = 2 * (dsa_bp_add_construct_prefixentriesentryoperation) /\ (dsa_bn_add_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryoperationright. (((sto_right_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryoperationright + 1 /\ (dsa_bp_add_construct_prefixentriesentryoperation) = 0) /\ (dsa_bn_add_construct_prefixentriesentryoperation) = S ge_signed_half_add_construct_prefixentriesentryoperationright))) /\ ((((((sto_output_add_construct_prefixentries) = 2 * (dsa_cp_add_construct_prefixentriesentryoperation) /\ (dsa_cn_add_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_add_construct_prefixentriesentryoperationoutput. (((sto_output_add_construct_prefixentries) = 2 * ge_signed_half_add_construct_prefixentriesentryoperationoutput + 1 /\ (dsa_cp_add_construct_prefixentriesentryoperation) = 0) /\ (dsa_cn_add_construct_prefixentriesentryoperation) = S ge_signed_half_add_construct_prefixentriesentryoperationoutput))) /\ ((dsa_ap_add_construct_prefixentriesentryoperation + dsa_bp_add_construct_prefixentriesentryoperation) + dsa_cn_add_construct_prefixentriesentryoperation = (dsa_an_add_construct_prefixentriesentryoperation + dsa_bn_add_construct_prefixentriesentryoperation) + dsa_cp_add_construct_prefixentriesentryoperation)))))))))))))))))))
  26. 0026specialize IH (F)
  27. 0027specialize IH (G)
  28. 0028apply IH
  29. 0029specialize signed_table_domain_resize (S l)
  30. 0030specialize signed_table_domain_resize (l)
  31. 0031specialize signed_table_domain_resize (F)
  32. 0032apply signed_table_domain_resize
  33. 0033exact ht0
  34. 0034specialize signed_table_domain_resize (S l)
  35. 0035specialize signed_table_domain_resize (l)
  36. 0036specialize signed_table_domain_resize (G)
  37. 0037apply signed_table_domain_resize
  38. 0038exact ht1
  39. 0039cases hp
  40. 0040have he0 : exists z. (exists dst_positive_code_add_construct_input0 dst_positive_scale_add_construct_input0 dst_negative_code_add_construct_input0 dst_negative_scale_add_construct_input0 dst_positive_add_construct_input0 dst_negative_add_construct_input0. (((F) = (((((dst_positive_code_add_construct_input0) + (dst_positive_scale_add_construct_input0)) * S ((dst_positive_code_add_construct_input0) + (dst_positive_scale_add_construct_input0)) + ((dst_positive_scale_add_construct_input0) + (dst_positive_scale_add_construct_input0))) + (((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) * S ((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) + ((dst_negative_scale_add_construct_input0) + (dst_negative_scale_add_construct_input0)))) * S ((((dst_positive_code_add_construct_input0) + (dst_positive_scale_add_construct_input0)) * S ((dst_positive_code_add_construct_input0) + (dst_positive_scale_add_construct_input0)) + ((dst_positive_scale_add_construct_input0) + (dst_positive_scale_add_construct_input0))) + (((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) * S ((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) + ((dst_negative_scale_add_construct_input0) + (dst_negative_scale_add_construct_input0)))) + ((((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) * S ((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) + ((dst_negative_scale_add_construct_input0) + (dst_negative_scale_add_construct_input0))) + (((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) * S ((dst_negative_code_add_construct_input0) + (dst_negative_scale_add_construct_input0)) + ((dst_negative_scale_add_construct_input0) + (dst_negative_scale_add_construct_input0)))))) /\ (((((exists ff_h_pvs_add_construct_input0positive. ff_h_pvs_add_construct_input0positive + S (dst_positive_add_construct_input0) = S ((S (l)) * dst_positive_scale_add_construct_input0)) /\ exists ff_q_pvs_add_construct_input0positive. dst_positive_code_add_construct_input0 = ff_q_pvs_add_construct_input0positive * S ((S (l)) * dst_positive_scale_add_construct_input0) + (dst_positive_add_construct_input0))) /\ (((((exists ff_h_pvs_add_construct_input0negative. ff_h_pvs_add_construct_input0negative + S (dst_negative_add_construct_input0) = S ((S (l)) * dst_negative_scale_add_construct_input0)) /\ exists ff_q_pvs_add_construct_input0negative. dst_negative_code_add_construct_input0 = ff_q_pvs_add_construct_input0negative * S ((S (l)) * dst_negative_scale_add_construct_input0) + (dst_negative_add_construct_input0))) /\ (exists ge_balance_positive_add_construct_input0value ge_balance_negative_add_construct_input0value. (((((z) = 2 * (ge_balance_positive_add_construct_input0value) /\ (ge_balance_negative_add_construct_input0value) = 0) \/ exists ge_signed_half_add_construct_input0valuedecode. (((z) = 2 * ge_signed_half_add_construct_input0valuedecode + 1 /\ (ge_balance_positive_add_construct_input0value) = 0) /\ (ge_balance_negative_add_construct_input0value) = S ge_signed_half_add_construct_input0valuedecode))) /\ ((dst_positive_add_construct_input0) + ge_balance_negative_add_construct_input0value = (dst_negative_add_construct_input0) + ge_balance_positive_add_construct_input0value)))))))))
  41. 0041specialize signed_table_lookup_any (S l)
  42. 0042specialize signed_table_lookup_any (F)
  43. 0043specialize signed_table_lookup_any (l)
  44. 0044apply signed_table_lookup_any
  45. 0045exact ht0
  46. 0046cases he0
  47. 0047have he1 : exists z. (exists dst_positive_code_add_construct_input1 dst_positive_scale_add_construct_input1 dst_negative_code_add_construct_input1 dst_negative_scale_add_construct_input1 dst_positive_add_construct_input1 dst_negative_add_construct_input1. (((G) = (((((dst_positive_code_add_construct_input1) + (dst_positive_scale_add_construct_input1)) * S ((dst_positive_code_add_construct_input1) + (dst_positive_scale_add_construct_input1)) + ((dst_positive_scale_add_construct_input1) + (dst_positive_scale_add_construct_input1))) + (((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) * S ((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) + ((dst_negative_scale_add_construct_input1) + (dst_negative_scale_add_construct_input1)))) * S ((((dst_positive_code_add_construct_input1) + (dst_positive_scale_add_construct_input1)) * S ((dst_positive_code_add_construct_input1) + (dst_positive_scale_add_construct_input1)) + ((dst_positive_scale_add_construct_input1) + (dst_positive_scale_add_construct_input1))) + (((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) * S ((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) + ((dst_negative_scale_add_construct_input1) + (dst_negative_scale_add_construct_input1)))) + ((((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) * S ((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) + ((dst_negative_scale_add_construct_input1) + (dst_negative_scale_add_construct_input1))) + (((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) * S ((dst_negative_code_add_construct_input1) + (dst_negative_scale_add_construct_input1)) + ((dst_negative_scale_add_construct_input1) + (dst_negative_scale_add_construct_input1)))))) /\ (((((exists ff_h_pvs_add_construct_input1positive. ff_h_pvs_add_construct_input1positive + S (dst_positive_add_construct_input1) = S ((S (l)) * dst_positive_scale_add_construct_input1)) /\ exists ff_q_pvs_add_construct_input1positive. dst_positive_code_add_construct_input1 = ff_q_pvs_add_construct_input1positive * S ((S (l)) * dst_positive_scale_add_construct_input1) + (dst_positive_add_construct_input1))) /\ (((((exists ff_h_pvs_add_construct_input1negative. ff_h_pvs_add_construct_input1negative + S (dst_negative_add_construct_input1) = S ((S (l)) * dst_negative_scale_add_construct_input1)) /\ exists ff_q_pvs_add_construct_input1negative. dst_negative_code_add_construct_input1 = ff_q_pvs_add_construct_input1negative * S ((S (l)) * dst_negative_scale_add_construct_input1) + (dst_negative_add_construct_input1))) /\ (exists ge_balance_positive_add_construct_input1value ge_balance_negative_add_construct_input1value. (((((z) = 2 * (ge_balance_positive_add_construct_input1value) /\ (ge_balance_negative_add_construct_input1value) = 0) \/ exists ge_signed_half_add_construct_input1valuedecode. (((z) = 2 * ge_signed_half_add_construct_input1valuedecode + 1 /\ (ge_balance_positive_add_construct_input1value) = 0) /\ (ge_balance_negative_add_construct_input1value) = S ge_signed_half_add_construct_input1valuedecode))) /\ ((dst_positive_add_construct_input1) + ge_balance_negative_add_construct_input1value = (dst_negative_add_construct_input1) + ge_balance_positive_add_construct_input1value)))))))))
  48. 0048specialize signed_table_lookup_any (S l)
  49. 0049specialize signed_table_lookup_any (G)
  50. 0050specialize signed_table_lookup_any (l)
  51. 0051apply signed_table_lookup_any
  52. 0052exact ht1
  53. 0053cases he1
  54. 0054have hv : exists z. (exists dsa_ap_add_construct_operation dsa_an_add_construct_operation dsa_bp_add_construct_operation dsa_bn_add_construct_operation dsa_cp_add_construct_operation dsa_cn_add_construct_operation. (((((x1) = 2 * (dsa_ap_add_construct_operation) /\ (dsa_an_add_construct_operation) = 0) \/ exists ge_signed_half_add_construct_operationleft. (((x1) = 2 * ge_signed_half_add_construct_operationleft + 1 /\ (dsa_ap_add_construct_operation) = 0) /\ (dsa_an_add_construct_operation) = S ge_signed_half_add_construct_operationleft))) /\ ((((((x2) = 2 * (dsa_bp_add_construct_operation) /\ (dsa_bn_add_construct_operation) = 0) \/ exists ge_signed_half_add_construct_operationright. (((x2) = 2 * ge_signed_half_add_construct_operationright + 1 /\ (dsa_bp_add_construct_operation) = 0) /\ (dsa_bn_add_construct_operation) = S ge_signed_half_add_construct_operationright))) /\ ((((((z) = 2 * (dsa_cp_add_construct_operation) /\ (dsa_cn_add_construct_operation) = 0) \/ exists ge_signed_half_add_construct_operationoutput. (((z) = 2 * ge_signed_half_add_construct_operationoutput + 1 /\ (dsa_cp_add_construct_operation) = 0) /\ (dsa_cn_add_construct_operation) = S ge_signed_half_add_construct_operationoutput))) /\ ((dsa_ap_add_construct_operation + dsa_bp_add_construct_operation) + dsa_cn_add_construct_operation = (dsa_an_add_construct_operation + dsa_bn_add_construct_operation) + dsa_cp_add_construct_operation)))))))
  55. 0055specialize signed_add_total (x1)
  56. 0056specialize signed_add_total (x2)
  57. 0057apply signed_add_total
  58. 0058cases hv
  59. 0059have hnext : exists K. ((exists dst_positive_code_add_construct_table dst_positive_scale_add_construct_table dst_negative_code_add_construct_table dst_negative_scale_add_construct_table. (((K) = (((((dst_positive_code_add_construct_table) + (dst_positive_scale_add_construct_table)) * S ((dst_positive_code_add_construct_table) + (dst_positive_scale_add_construct_table)) + ((dst_positive_scale_add_construct_table) + (dst_positive_scale_add_construct_table))) + (((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) * S ((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) + ((dst_negative_scale_add_construct_table) + (dst_negative_scale_add_construct_table)))) * S ((((dst_positive_code_add_construct_table) + (dst_positive_scale_add_construct_table)) * S ((dst_positive_code_add_construct_table) + (dst_positive_scale_add_construct_table)) + ((dst_positive_scale_add_construct_table) + (dst_positive_scale_add_construct_table))) + (((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) * S ((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) + ((dst_negative_scale_add_construct_table) + (dst_negative_scale_add_construct_table)))) + ((((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) * S ((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) + ((dst_negative_scale_add_construct_table) + (dst_negative_scale_add_construct_table))) + (((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) * S ((dst_negative_code_add_construct_table) + (dst_negative_scale_add_construct_table)) + ((dst_negative_scale_add_construct_table) + (dst_negative_scale_add_construct_table)))))) /\ (forall dst_index_add_construct_table. (exists pvs_le_gap_add_construct_tabledomain. pvs_le_gap_add_construct_tabledomain + (dst_index_add_construct_table) = (l)) -> exists dst_positive_add_construct_table dst_negative_add_construct_table dst_value_add_construct_table. ((((exists ff_h_pvs_add_construct_tableentrypositive. ff_h_pvs_add_construct_tableentrypositive + S (dst_positive_add_construct_table) = S ((S (dst_index_add_construct_table)) * dst_positive_scale_add_construct_table)) /\ exists ff_q_pvs_add_construct_tableentrypositive. dst_positive_code_add_construct_table = ff_q_pvs_add_construct_tableentrypositive * S ((S (dst_index_add_construct_table)) * dst_positive_scale_add_construct_table) + (dst_positive_add_construct_table))) /\ (((((exists ff_h_pvs_add_construct_tableentrynegative. ff_h_pvs_add_construct_tableentrynegative + S (dst_negative_add_construct_table) = S ((S (dst_index_add_construct_table)) * dst_negative_scale_add_construct_table)) /\ exists ff_q_pvs_add_construct_tableentrynegative. dst_negative_code_add_construct_table = ff_q_pvs_add_construct_tableentrynegative * S ((S (dst_index_add_construct_table)) * dst_negative_scale_add_construct_table) + (dst_negative_add_construct_table))) /\ (exists ge_balance_positive_add_construct_tableentryvalue ge_balance_negative_add_construct_tableentryvalue. (((((dst_value_add_construct_table) = 2 * (ge_balance_positive_add_construct_tableentryvalue) /\ (ge_balance_negative_add_construct_tableentryvalue) = 0) \/ exists ge_signed_half_add_construct_tableentryvaluedecode. (((dst_value_add_construct_table) = 2 * ge_signed_half_add_construct_tableentryvaluedecode + 1 /\ (ge_balance_positive_add_construct_tableentryvalue) = 0) /\ (ge_balance_negative_add_construct_tableentryvalue) = S ge_signed_half_add_construct_tableentryvaluedecode))) /\ ((dst_positive_add_construct_table) + ge_balance_negative_add_construct_tableentryvalue = (dst_negative_add_construct_table) + ge_balance_positive_add_construct_tableentryvalue))))))))) /\ (((forall dst_index_add_construct_equal dst_first_add_construct_equal dst_second_add_construct_equal. (exists pvs_gap_add_construct_equalbound. pvs_gap_add_construct_equalbound + S (dst_index_add_construct_equal) = (l)) -> (exists dst_positive_code_add_construct_equalfirst dst_positive_scale_add_construct_equalfirst dst_negative_code_add_construct_equalfirst dst_negative_scale_add_construct_equalfirst dst_positive_add_construct_equalfirst dst_negative_add_construct_equalfirst. (((x) = (((((dst_positive_code_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst)) * S ((dst_positive_code_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst)) + ((dst_positive_scale_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst))) + (((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) * S ((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) + ((dst_negative_scale_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)))) * S ((((dst_positive_code_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst)) * S ((dst_positive_code_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst)) + ((dst_positive_scale_add_construct_equalfirst) + (dst_positive_scale_add_construct_equalfirst))) + (((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) * S ((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) + ((dst_negative_scale_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)))) + ((((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) * S ((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) + ((dst_negative_scale_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst))) + (((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) * S ((dst_negative_code_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)) + ((dst_negative_scale_add_construct_equalfirst) + (dst_negative_scale_add_construct_equalfirst)))))) /\ (((((exists ff_h_pvs_add_construct_equalfirstpositive. ff_h_pvs_add_construct_equalfirstpositive + S (dst_positive_add_construct_equalfirst) = S ((S (dst_index_add_construct_equal)) * dst_positive_scale_add_construct_equalfirst)) /\ exists ff_q_pvs_add_construct_equalfirstpositive. dst_positive_code_add_construct_equalfirst = ff_q_pvs_add_construct_equalfirstpositive * S ((S (dst_index_add_construct_equal)) * dst_positive_scale_add_construct_equalfirst) + (dst_positive_add_construct_equalfirst))) /\ (((((exists ff_h_pvs_add_construct_equalfirstnegative. ff_h_pvs_add_construct_equalfirstnegative + S (dst_negative_add_construct_equalfirst) = S ((S (dst_index_add_construct_equal)) * dst_negative_scale_add_construct_equalfirst)) /\ exists ff_q_pvs_add_construct_equalfirstnegative. dst_negative_code_add_construct_equalfirst = ff_q_pvs_add_construct_equalfirstnegative * S ((S (dst_index_add_construct_equal)) * dst_negative_scale_add_construct_equalfirst) + (dst_negative_add_construct_equalfirst))) /\ (exists ge_balance_positive_add_construct_equalfirstvalue ge_balance_negative_add_construct_equalfirstvalue. (((((dst_first_add_construct_equal) = 2 * (ge_balance_positive_add_construct_equalfirstvalue) /\ (ge_balance_negative_add_construct_equalfirstvalue) = 0) \/ exists ge_signed_half_add_construct_equalfirstvaluedecode. (((dst_first_add_construct_equal) = 2 * ge_signed_half_add_construct_equalfirstvaluedecode + 1 /\ (ge_balance_positive_add_construct_equalfirstvalue) = 0) /\ (ge_balance_negative_add_construct_equalfirstvalue) = S ge_signed_half_add_construct_equalfirstvaluedecode))) /\ ((dst_positive_add_construct_equalfirst) + ge_balance_negative_add_construct_equalfirstvalue = (dst_negative_add_construct_equalfirst) + ge_balance_positive_add_construct_equalfirstvalue))))))))) -> (exists dst_positive_code_add_construct_equalsecond dst_positive_scale_add_construct_equalsecond dst_negative_code_add_construct_equalsecond dst_negative_scale_add_construct_equalsecond dst_positive_add_construct_equalsecond dst_negative_add_construct_equalsecond. (((K) = (((((dst_positive_code_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond)) * S ((dst_positive_code_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond)) + ((dst_positive_scale_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond))) + (((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) * S ((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) + ((dst_negative_scale_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)))) * S ((((dst_positive_code_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond)) * S ((dst_positive_code_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond)) + ((dst_positive_scale_add_construct_equalsecond) + (dst_positive_scale_add_construct_equalsecond))) + (((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) * S ((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) + ((dst_negative_scale_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)))) + ((((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) * S ((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) + ((dst_negative_scale_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond))) + (((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) * S ((dst_negative_code_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)) + ((dst_negative_scale_add_construct_equalsecond) + (dst_negative_scale_add_construct_equalsecond)))))) /\ (((((exists ff_h_pvs_add_construct_equalsecondpositive. ff_h_pvs_add_construct_equalsecondpositive + S (dst_positive_add_construct_equalsecond) = S ((S (dst_index_add_construct_equal)) * dst_positive_scale_add_construct_equalsecond)) /\ exists ff_q_pvs_add_construct_equalsecondpositive. dst_positive_code_add_construct_equalsecond = ff_q_pvs_add_construct_equalsecondpositive * S ((S (dst_index_add_construct_equal)) * dst_positive_scale_add_construct_equalsecond) + (dst_positive_add_construct_equalsecond))) /\ (((((exists ff_h_pvs_add_construct_equalsecondnegative. ff_h_pvs_add_construct_equalsecondnegative + S (dst_negative_add_construct_equalsecond) = S ((S (dst_index_add_construct_equal)) * dst_negative_scale_add_construct_equalsecond)) /\ exists ff_q_pvs_add_construct_equalsecondnegative. dst_negative_code_add_construct_equalsecond = ff_q_pvs_add_construct_equalsecondnegative * S ((S (dst_index_add_construct_equal)) * dst_negative_scale_add_construct_equalsecond) + (dst_negative_add_construct_equalsecond))) /\ (exists ge_balance_positive_add_construct_equalsecondvalue ge_balance_negative_add_construct_equalsecondvalue. (((((dst_second_add_construct_equal) = 2 * (ge_balance_positive_add_construct_equalsecondvalue) /\ (ge_balance_negative_add_construct_equalsecondvalue) = 0) \/ exists ge_signed_half_add_construct_equalsecondvaluedecode. (((dst_second_add_construct_equal) = 2 * ge_signed_half_add_construct_equalsecondvaluedecode + 1 /\ (ge_balance_positive_add_construct_equalsecondvalue) = 0) /\ (ge_balance_negative_add_construct_equalsecondvalue) = S ge_signed_half_add_construct_equalsecondvaluedecode))) /\ ((dst_positive_add_construct_equalsecond) + ge_balance_negative_add_construct_equalsecondvalue = (dst_negative_add_construct_equalsecond) + ge_balance_positive_add_construct_equalsecondvalue))))))))) -> dst_first_add_construct_equal = dst_second_add_construct_equal) /\ (exists dst_positive_code_add_construct_entry dst_positive_scale_add_construct_entry dst_negative_code_add_construct_entry dst_negative_scale_add_construct_entry dst_positive_add_construct_entry dst_negative_add_construct_entry. (((K) = (((((dst_positive_code_add_construct_entry) + (dst_positive_scale_add_construct_entry)) * S ((dst_positive_code_add_construct_entry) + (dst_positive_scale_add_construct_entry)) + ((dst_positive_scale_add_construct_entry) + (dst_positive_scale_add_construct_entry))) + (((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) * S ((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) + ((dst_negative_scale_add_construct_entry) + (dst_negative_scale_add_construct_entry)))) * S ((((dst_positive_code_add_construct_entry) + (dst_positive_scale_add_construct_entry)) * S ((dst_positive_code_add_construct_entry) + (dst_positive_scale_add_construct_entry)) + ((dst_positive_scale_add_construct_entry) + (dst_positive_scale_add_construct_entry))) + (((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) * S ((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) + ((dst_negative_scale_add_construct_entry) + (dst_negative_scale_add_construct_entry)))) + ((((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) * S ((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) + ((dst_negative_scale_add_construct_entry) + (dst_negative_scale_add_construct_entry))) + (((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) * S ((dst_negative_code_add_construct_entry) + (dst_negative_scale_add_construct_entry)) + ((dst_negative_scale_add_construct_entry) + (dst_negative_scale_add_construct_entry)))))) /\ (((((exists ff_h_pvs_add_construct_entrypositive. ff_h_pvs_add_construct_entrypositive + S (dst_positive_add_construct_entry) = S ((S (l)) * dst_positive_scale_add_construct_entry)) /\ exists ff_q_pvs_add_construct_entrypositive. dst_positive_code_add_construct_entry = ff_q_pvs_add_construct_entrypositive * S ((S (l)) * dst_positive_scale_add_construct_entry) + (dst_positive_add_construct_entry))) /\ (((((exists ff_h_pvs_add_construct_entrynegative. ff_h_pvs_add_construct_entrynegative + S (dst_negative_add_construct_entry) = S ((S (l)) * dst_negative_scale_add_construct_entry)) /\ exists ff_q_pvs_add_construct_entrynegative. dst_negative_code_add_construct_entry = ff_q_pvs_add_construct_entrynegative * S ((S (l)) * dst_negative_scale_add_construct_entry) + (dst_negative_add_construct_entry))) /\ (exists ge_balance_positive_add_construct_entryvalue ge_balance_negative_add_construct_entryvalue. (((((x3) = 2 * (ge_balance_positive_add_construct_entryvalue) /\ (ge_balance_negative_add_construct_entryvalue) = 0) \/ exists ge_signed_half_add_construct_entryvaluedecode. (((x3) = 2 * ge_signed_half_add_construct_entryvaluedecode + 1 /\ (ge_balance_positive_add_construct_entryvalue) = 0) /\ (ge_balance_negative_add_construct_entryvalue) = S ge_signed_half_add_construct_entryvaluedecode))) /\ ((dst_positive_add_construct_entry) + ge_balance_negative_add_construct_entryvalue = (dst_negative_add_construct_entry) + ge_balance_positive_add_construct_entryvalue))))))))))))
  60. 0060specialize arithmetic_signed_table_extend_at (l)
  61. 0061specialize arithmetic_signed_table_extend_at (x)
  62. 0062specialize arithmetic_signed_table_extend_at (l)
  63. 0063specialize arithmetic_signed_table_extend_at (x3)
  64. 0064apply arithmetic_signed_table_extend_at
  65. 0065cases hp_witness
  66. 0066cases hp_witness_right
  67. 0067cases hp_witness_right_right
  68. 0068exact hp_witness_right_right_left
  69. 0069cases hnext
  70. 0070cases hnext_witness
  71. 0071cases hnext_witness_right
  72. 0072exists x4
  73. 0073specialize signed_table_add_extend (F)
  74. 0074specialize signed_table_add_extend (G)
  75. 0075specialize signed_table_add_extend (x)
  76. 0076specialize signed_table_add_extend (x4)
  77. 0077specialize signed_table_add_extend (l)
  78. 0078specialize signed_table_add_extend (x1)
  79. 0079specialize signed_table_add_extend (x2)
  80. 0080specialize signed_table_add_extend (x3)
  81. 0081apply signed_table_add_extend
  82. 0082exact hp_witness
  83. 0083exact hnext_witness_left
  84. 0084exact hnext_witness_right_left
  85. 0085exact he0_witness
  86. 0086exact he1_witness
  87. 0087exact hnext_witness_right_right
  88. 0088exact hv_witness