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_multiply_exists_input0 dst_positive_scale_multiply_exists_input0 dst_negative_code_multiply_exists_input0 dst_negative_scale_multiply_exists_input0. (((F) = (((((dst_positive_code_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0)) * S ((dst_positive_code_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0)) + ((dst_positive_scale_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0))) + (((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) * S ((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) + ((dst_negative_scale_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)))) * S ((((dst_positive_code_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0)) * S ((dst_positive_code_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0)) + ((dst_positive_scale_multiply_exists_input0) + (dst_positive_scale_multiply_exists_input0))) + (((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) * S ((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) + ((dst_negative_scale_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)))) + ((((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) * S ((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) + ((dst_negative_scale_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0))) + (((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) * S ((dst_negative_code_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)) + ((dst_negative_scale_multiply_exists_input0) + (dst_negative_scale_multiply_exists_input0)))))) /\ (forall dst_index_multiply_exists_input0. (exists pvs_le_gap_multiply_exists_input0domain. pvs_le_gap_multiply_exists_input0domain + (dst_index_multiply_exists_input0) = (l)) -> exists dst_positive_multiply_exists_input0 dst_negative_multiply_exists_input0 dst_value_multiply_exists_input0. ((((exists ff_h_pvs_multiply_exists_input0entrypositive. ff_h_pvs_multiply_exists_input0entrypositive + S (dst_positive_multiply_exists_input0) = S ((S (dst_index_multiply_exists_input0)) * dst_positive_scale_multiply_exists_input0)) /\ exists ff_q_pvs_multiply_exists_input0entrypositive. dst_positive_code_multiply_exists_input0 = ff_q_pvs_multiply_exists_input0entrypositive * S ((S (dst_index_multiply_exists_input0)) * dst_positive_scale_multiply_exists_input0) + (dst_positive_multiply_exists_input0))) /\ (((((exists ff_h_pvs_multiply_exists_input0entrynegative. ff_h_pvs_multiply_exists_input0entrynegative + S (dst_negative_multiply_exists_input0) = S ((S (dst_index_multiply_exists_input0)) * dst_negative_scale_multiply_exists_input0)) /\ exists ff_q_pvs_multiply_exists_input0entrynegative. dst_negative_code_multiply_exists_input0 = ff_q_pvs_multiply_exists_input0entrynegative * S ((S (dst_index_multiply_exists_input0)) * dst_negative_scale_multiply_exists_input0) + (dst_negative_multiply_exists_input0))) /\ (exists ge_balance_positive_multiply_exists_input0entryvalue ge_balance_negative_multiply_exists_input0entryvalue. (((((dst_value_multiply_exists_input0) = 2 * (ge_balance_positive_multiply_exists_input0entryvalue) /\ (ge_balance_negative_multiply_exists_input0entryvalue) = 0) \/ exists ge_signed_half_multiply_exists_input0entryvaluedecode. (((dst_value_multiply_exists_input0) = 2 * ge_signed_half_multiply_exists_input0entryvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_input0entryvalue) = 0) /\ (ge_balance_negative_multiply_exists_input0entryvalue) = S ge_signed_half_multiply_exists_input0entryvaluedecode))) /\ ((dst_positive_multiply_exists_input0) + ge_balance_negative_multiply_exists_input0entryvalue = (dst_negative_multiply_exists_input0) + ge_balance_positive_multiply_exists_input0entryvalue))))))))) -> (exists dst_positive_code_multiply_exists_input1 dst_positive_scale_multiply_exists_input1 dst_negative_code_multiply_exists_input1 dst_negative_scale_multiply_exists_input1. (((G) = (((((dst_positive_code_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1)) * S ((dst_positive_code_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1)) + ((dst_positive_scale_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1))) + (((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) * S ((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) + ((dst_negative_scale_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)))) * S ((((dst_positive_code_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1)) * S ((dst_positive_code_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1)) + ((dst_positive_scale_multiply_exists_input1) + (dst_positive_scale_multiply_exists_input1))) + (((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) * S ((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) + ((dst_negative_scale_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)))) + ((((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) * S ((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) + ((dst_negative_scale_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1))) + (((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) * S ((dst_negative_code_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)) + ((dst_negative_scale_multiply_exists_input1) + (dst_negative_scale_multiply_exists_input1)))))) /\ (forall dst_index_multiply_exists_input1. (exists pvs_le_gap_multiply_exists_input1domain. pvs_le_gap_multiply_exists_input1domain + (dst_index_multiply_exists_input1) = (l)) -> exists dst_positive_multiply_exists_input1 dst_negative_multiply_exists_input1 dst_value_multiply_exists_input1. ((((exists ff_h_pvs_multiply_exists_input1entrypositive. ff_h_pvs_multiply_exists_input1entrypositive + S (dst_positive_multiply_exists_input1) = S ((S (dst_index_multiply_exists_input1)) * dst_positive_scale_multiply_exists_input1)) /\ exists ff_q_pvs_multiply_exists_input1entrypositive. dst_positive_code_multiply_exists_input1 = ff_q_pvs_multiply_exists_input1entrypositive * S ((S (dst_index_multiply_exists_input1)) * dst_positive_scale_multiply_exists_input1) + (dst_positive_multiply_exists_input1))) /\ (((((exists ff_h_pvs_multiply_exists_input1entrynegative. ff_h_pvs_multiply_exists_input1entrynegative + S (dst_negative_multiply_exists_input1) = S ((S (dst_index_multiply_exists_input1)) * dst_negative_scale_multiply_exists_input1)) /\ exists ff_q_pvs_multiply_exists_input1entrynegative. dst_negative_code_multiply_exists_input1 = ff_q_pvs_multiply_exists_input1entrynegative * S ((S (dst_index_multiply_exists_input1)) * dst_negative_scale_multiply_exists_input1) + (dst_negative_multiply_exists_input1))) /\ (exists ge_balance_positive_multiply_exists_input1entryvalue ge_balance_negative_multiply_exists_input1entryvalue. (((((dst_value_multiply_exists_input1) = 2 * (ge_balance_positive_multiply_exists_input1entryvalue) /\ (ge_balance_negative_multiply_exists_input1entryvalue) = 0) \/ exists ge_signed_half_multiply_exists_input1entryvaluedecode. (((dst_value_multiply_exists_input1) = 2 * ge_signed_half_multiply_exists_input1entryvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_input1entryvalue) = 0) /\ (ge_balance_negative_multiply_exists_input1entryvalue) = S ge_signed_half_multiply_exists_input1entryvaluedecode))) /\ ((dst_positive_multiply_exists_input1) + ge_balance_negative_multiply_exists_input1entryvalue = (dst_negative_multiply_exists_input1) + ge_balance_positive_multiply_exists_input1entryvalue))))))))) -> exists H. (((exists dst_positive_code_multiply_exists_resultleft_table dst_positive_scale_multiply_exists_resultleft_table dst_negative_code_multiply_exists_resultleft_table dst_negative_scale_multiply_exists_resultleft_table. (((F) = (((((dst_positive_code_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table)) * S ((dst_positive_code_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table)) + ((dst_positive_scale_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table))) + (((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) * S ((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) + ((dst_negative_scale_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)))) * S ((((dst_positive_code_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table)) * S ((dst_positive_code_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table)) + ((dst_positive_scale_multiply_exists_resultleft_table) + (dst_positive_scale_multiply_exists_resultleft_table))) + (((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) * S ((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) + ((dst_negative_scale_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)))) + ((((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) * S ((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) + ((dst_negative_scale_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table))) + (((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) * S ((dst_negative_code_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)) + ((dst_negative_scale_multiply_exists_resultleft_table) + (dst_negative_scale_multiply_exists_resultleft_table)))))) /\ (forall dst_index_multiply_exists_resultleft_table. (exists pvs_le_gap_multiply_exists_resultleft_tabledomain. pvs_le_gap_multiply_exists_resultleft_tabledomain + (dst_index_multiply_exists_resultleft_table) = (l)) -> exists dst_positive_multiply_exists_resultleft_table dst_negative_multiply_exists_resultleft_table dst_value_multiply_exists_resultleft_table. ((((exists ff_h_pvs_multiply_exists_resultleft_tableentrypositive. ff_h_pvs_multiply_exists_resultleft_tableentrypositive + S (dst_positive_multiply_exists_resultleft_table) = S ((S (dst_index_multiply_exists_resultleft_table)) * dst_positive_scale_multiply_exists_resultleft_table)) /\ exists ff_q_pvs_multiply_exists_resultleft_tableentrypositive. dst_positive_code_multiply_exists_resultleft_table = ff_q_pvs_multiply_exists_resultleft_tableentrypositive * S ((S (dst_index_multiply_exists_resultleft_table)) * dst_positive_scale_multiply_exists_resultleft_table) + (dst_positive_multiply_exists_resultleft_table))) /\ (((((exists ff_h_pvs_multiply_exists_resultleft_tableentrynegative. ff_h_pvs_multiply_exists_resultleft_tableentrynegative + S (dst_negative_multiply_exists_resultleft_table) = S ((S (dst_index_multiply_exists_resultleft_table)) * dst_negative_scale_multiply_exists_resultleft_table)) /\ exists ff_q_pvs_multiply_exists_resultleft_tableentrynegative. dst_negative_code_multiply_exists_resultleft_table = ff_q_pvs_multiply_exists_resultleft_tableentrynegative * S ((S (dst_index_multiply_exists_resultleft_table)) * dst_negative_scale_multiply_exists_resultleft_table) + (dst_negative_multiply_exists_resultleft_table))) /\ (exists ge_balance_positive_multiply_exists_resultleft_tableentryvalue ge_balance_negative_multiply_exists_resultleft_tableentryvalue. (((((dst_value_multiply_exists_resultleft_table) = 2 * (ge_balance_positive_multiply_exists_resultleft_tableentryvalue) /\ (ge_balance_negative_multiply_exists_resultleft_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultleft_tableentryvaluedecode. (((dst_value_multiply_exists_resultleft_table) = 2 * ge_signed_half_multiply_exists_resultleft_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultleft_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultleft_tableentryvalue) = S ge_signed_half_multiply_exists_resultleft_tableentryvaluedecode))) /\ ((dst_positive_multiply_exists_resultleft_table) + ge_balance_negative_multiply_exists_resultleft_tableentryvalue = (dst_negative_multiply_exists_resultleft_table) + ge_balance_positive_multiply_exists_resultleft_tableentryvalue))))))))) /\ (((exists dst_positive_code_multiply_exists_resultright_table dst_positive_scale_multiply_exists_resultright_table dst_negative_code_multiply_exists_resultright_table dst_negative_scale_multiply_exists_resultright_table. (((G) = (((((dst_positive_code_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table)) * S ((dst_positive_code_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table)) + ((dst_positive_scale_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table))) + (((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) * S ((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) + ((dst_negative_scale_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)))) * S ((((dst_positive_code_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table)) * S ((dst_positive_code_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table)) + ((dst_positive_scale_multiply_exists_resultright_table) + (dst_positive_scale_multiply_exists_resultright_table))) + (((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) * S ((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) + ((dst_negative_scale_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)))) + ((((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) * S ((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) + ((dst_negative_scale_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table))) + (((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) * S ((dst_negative_code_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)) + ((dst_negative_scale_multiply_exists_resultright_table) + (dst_negative_scale_multiply_exists_resultright_table)))))) /\ (forall dst_index_multiply_exists_resultright_table. (exists pvs_le_gap_multiply_exists_resultright_tabledomain. pvs_le_gap_multiply_exists_resultright_tabledomain + (dst_index_multiply_exists_resultright_table) = (l)) -> exists dst_positive_multiply_exists_resultright_table dst_negative_multiply_exists_resultright_table dst_value_multiply_exists_resultright_table. ((((exists ff_h_pvs_multiply_exists_resultright_tableentrypositive. ff_h_pvs_multiply_exists_resultright_tableentrypositive + S (dst_positive_multiply_exists_resultright_table) = S ((S (dst_index_multiply_exists_resultright_table)) * dst_positive_scale_multiply_exists_resultright_table)) /\ exists ff_q_pvs_multiply_exists_resultright_tableentrypositive. dst_positive_code_multiply_exists_resultright_table = ff_q_pvs_multiply_exists_resultright_tableentrypositive * S ((S (dst_index_multiply_exists_resultright_table)) * dst_positive_scale_multiply_exists_resultright_table) + (dst_positive_multiply_exists_resultright_table))) /\ (((((exists ff_h_pvs_multiply_exists_resultright_tableentrynegative. ff_h_pvs_multiply_exists_resultright_tableentrynegative + S (dst_negative_multiply_exists_resultright_table) = S ((S (dst_index_multiply_exists_resultright_table)) * dst_negative_scale_multiply_exists_resultright_table)) /\ exists ff_q_pvs_multiply_exists_resultright_tableentrynegative. dst_negative_code_multiply_exists_resultright_table = ff_q_pvs_multiply_exists_resultright_tableentrynegative * S ((S (dst_index_multiply_exists_resultright_table)) * dst_negative_scale_multiply_exists_resultright_table) + (dst_negative_multiply_exists_resultright_table))) /\ (exists ge_balance_positive_multiply_exists_resultright_tableentryvalue ge_balance_negative_multiply_exists_resultright_tableentryvalue. (((((dst_value_multiply_exists_resultright_table) = 2 * (ge_balance_positive_multiply_exists_resultright_tableentryvalue) /\ (ge_balance_negative_multiply_exists_resultright_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultright_tableentryvaluedecode. (((dst_value_multiply_exists_resultright_table) = 2 * ge_signed_half_multiply_exists_resultright_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultright_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultright_tableentryvalue) = S ge_signed_half_multiply_exists_resultright_tableentryvaluedecode))) /\ ((dst_positive_multiply_exists_resultright_table) + ge_balance_negative_multiply_exists_resultright_tableentryvalue = (dst_negative_multiply_exists_resultright_table) + ge_balance_positive_multiply_exists_resultright_tableentryvalue))))))))) /\ (((exists dst_positive_code_multiply_exists_resultoutput_table dst_positive_scale_multiply_exists_resultoutput_table dst_negative_code_multiply_exists_resultoutput_table dst_negative_scale_multiply_exists_resultoutput_table. (((H) = (((((dst_positive_code_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table)) * S ((dst_positive_code_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table)) + ((dst_positive_scale_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table))) + (((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) * S ((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) + ((dst_negative_scale_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)))) * S ((((dst_positive_code_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table)) * S ((dst_positive_code_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table)) + ((dst_positive_scale_multiply_exists_resultoutput_table) + (dst_positive_scale_multiply_exists_resultoutput_table))) + (((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) * S ((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) + ((dst_negative_scale_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)))) + ((((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) * S ((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) + ((dst_negative_scale_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table))) + (((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) * S ((dst_negative_code_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)) + ((dst_negative_scale_multiply_exists_resultoutput_table) + (dst_negative_scale_multiply_exists_resultoutput_table)))))) /\ (forall dst_index_multiply_exists_resultoutput_table. (exists pvs_le_gap_multiply_exists_resultoutput_tabledomain. pvs_le_gap_multiply_exists_resultoutput_tabledomain + (dst_index_multiply_exists_resultoutput_table) = (l)) -> exists dst_positive_multiply_exists_resultoutput_table dst_negative_multiply_exists_resultoutput_table dst_value_multiply_exists_resultoutput_table. ((((exists ff_h_pvs_multiply_exists_resultoutput_tableentrypositive. ff_h_pvs_multiply_exists_resultoutput_tableentrypositive + S (dst_positive_multiply_exists_resultoutput_table) = S ((S (dst_index_multiply_exists_resultoutput_table)) * dst_positive_scale_multiply_exists_resultoutput_table)) /\ exists ff_q_pvs_multiply_exists_resultoutput_tableentrypositive. dst_positive_code_multiply_exists_resultoutput_table = ff_q_pvs_multiply_exists_resultoutput_tableentrypositive * S ((S (dst_index_multiply_exists_resultoutput_table)) * dst_positive_scale_multiply_exists_resultoutput_table) + (dst_positive_multiply_exists_resultoutput_table))) /\ (((((exists ff_h_pvs_multiply_exists_resultoutput_tableentrynegative. ff_h_pvs_multiply_exists_resultoutput_tableentrynegative + S (dst_negative_multiply_exists_resultoutput_table) = S ((S (dst_index_multiply_exists_resultoutput_table)) * dst_negative_scale_multiply_exists_resultoutput_table)) /\ exists ff_q_pvs_multiply_exists_resultoutput_tableentrynegative. dst_negative_code_multiply_exists_resultoutput_table = ff_q_pvs_multiply_exists_resultoutput_tableentrynegative * S ((S (dst_index_multiply_exists_resultoutput_table)) * dst_negative_scale_multiply_exists_resultoutput_table) + (dst_negative_multiply_exists_resultoutput_table))) /\ (exists ge_balance_positive_multiply_exists_resultoutput_tableentryvalue ge_balance_negative_multiply_exists_resultoutput_tableentryvalue. (((((dst_value_multiply_exists_resultoutput_table) = 2 * (ge_balance_positive_multiply_exists_resultoutput_tableentryvalue) /\ (ge_balance_negative_multiply_exists_resultoutput_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultoutput_tableentryvaluedecode. (((dst_value_multiply_exists_resultoutput_table) = 2 * ge_signed_half_multiply_exists_resultoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultoutput_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultoutput_tableentryvalue) = S ge_signed_half_multiply_exists_resultoutput_tableentryvaluedecode))) /\ ((dst_positive_multiply_exists_resultoutput_table) + ge_balance_negative_multiply_exists_resultoutput_tableentryvalue = (dst_negative_multiply_exists_resultoutput_table) + ge_balance_positive_multiply_exists_resultoutput_tableentryvalue))))))))) /\ (forall sto_index_multiply_exists_resultentries. (exists pvs_gap_multiply_exists_resultentriesbound. pvs_gap_multiply_exists_resultentriesbound + S (sto_index_multiply_exists_resultentries) = (l)) -> exists sto_left_multiply_exists_resultentries sto_right_multiply_exists_resultentries sto_output_multiply_exists_resultentries. ((exists dst_positive_code_multiply_exists_resultentriesentryleft dst_positive_scale_multiply_exists_resultentriesentryleft dst_negative_code_multiply_exists_resultentriesentryleft dst_negative_scale_multiply_exists_resultentriesentryleft dst_positive_multiply_exists_resultentriesentryleft dst_negative_multiply_exists_resultentriesentryleft. (((F) = (((((dst_positive_code_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft)) * S ((dst_positive_code_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft)) + ((dst_positive_scale_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft))) + (((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) * S ((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) + ((dst_negative_scale_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)))) * S ((((dst_positive_code_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft)) * S ((dst_positive_code_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft)) + ((dst_positive_scale_multiply_exists_resultentriesentryleft) + (dst_positive_scale_multiply_exists_resultentriesentryleft))) + (((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) * S ((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) + ((dst_negative_scale_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)))) + ((((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) * S ((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) + ((dst_negative_scale_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft))) + (((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) * S ((dst_negative_code_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)) + ((dst_negative_scale_multiply_exists_resultentriesentryleft) + (dst_negative_scale_multiply_exists_resultentriesentryleft)))))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryleftpositive. ff_h_pvs_multiply_exists_resultentriesentryleftpositive + S (dst_positive_multiply_exists_resultentriesentryleft) = S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryleft)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryleftpositive. dst_positive_code_multiply_exists_resultentriesentryleft = ff_q_pvs_multiply_exists_resultentriesentryleftpositive * S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryleft) + (dst_positive_multiply_exists_resultentriesentryleft))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryleftnegative. ff_h_pvs_multiply_exists_resultentriesentryleftnegative + S (dst_negative_multiply_exists_resultentriesentryleft) = S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryleft)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryleftnegative. dst_negative_code_multiply_exists_resultentriesentryleft = ff_q_pvs_multiply_exists_resultentriesentryleftnegative * S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryleft) + (dst_negative_multiply_exists_resultentriesentryleft))) /\ (exists ge_balance_positive_multiply_exists_resultentriesentryleftvalue ge_balance_negative_multiply_exists_resultentriesentryleftvalue. (((((sto_left_multiply_exists_resultentries) = 2 * (ge_balance_positive_multiply_exists_resultentriesentryleftvalue) /\ (ge_balance_negative_multiply_exists_resultentriesentryleftvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryleftvaluedecode. (((sto_left_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryleftvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultentriesentryleftvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultentriesentryleftvalue) = S ge_signed_half_multiply_exists_resultentriesentryleftvaluedecode))) /\ ((dst_positive_multiply_exists_resultentriesentryleft) + ge_balance_negative_multiply_exists_resultentriesentryleftvalue = (dst_negative_multiply_exists_resultentriesentryleft) + ge_balance_positive_multiply_exists_resultentriesentryleftvalue))))))))) /\ (((exists dst_positive_code_multiply_exists_resultentriesentryright dst_positive_scale_multiply_exists_resultentriesentryright dst_negative_code_multiply_exists_resultentriesentryright dst_negative_scale_multiply_exists_resultentriesentryright dst_positive_multiply_exists_resultentriesentryright dst_negative_multiply_exists_resultentriesentryright. (((G) = (((((dst_positive_code_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright)) * S ((dst_positive_code_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright)) + ((dst_positive_scale_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright))) + (((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) * S ((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) + ((dst_negative_scale_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)))) * S ((((dst_positive_code_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright)) * S ((dst_positive_code_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright)) + ((dst_positive_scale_multiply_exists_resultentriesentryright) + (dst_positive_scale_multiply_exists_resultentriesentryright))) + (((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) * S ((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) + ((dst_negative_scale_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)))) + ((((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) * S ((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) + ((dst_negative_scale_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright))) + (((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) * S ((dst_negative_code_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)) + ((dst_negative_scale_multiply_exists_resultentriesentryright) + (dst_negative_scale_multiply_exists_resultentriesentryright)))))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryrightpositive. ff_h_pvs_multiply_exists_resultentriesentryrightpositive + S (dst_positive_multiply_exists_resultentriesentryright) = S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryright)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryrightpositive. dst_positive_code_multiply_exists_resultentriesentryright = ff_q_pvs_multiply_exists_resultentriesentryrightpositive * S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryright) + (dst_positive_multiply_exists_resultentriesentryright))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryrightnegative. ff_h_pvs_multiply_exists_resultentriesentryrightnegative + S (dst_negative_multiply_exists_resultentriesentryright) = S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryright)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryrightnegative. dst_negative_code_multiply_exists_resultentriesentryright = ff_q_pvs_multiply_exists_resultentriesentryrightnegative * S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryright) + (dst_negative_multiply_exists_resultentriesentryright))) /\ (exists ge_balance_positive_multiply_exists_resultentriesentryrightvalue ge_balance_negative_multiply_exists_resultentriesentryrightvalue. (((((sto_right_multiply_exists_resultentries) = 2 * (ge_balance_positive_multiply_exists_resultentriesentryrightvalue) /\ (ge_balance_negative_multiply_exists_resultentriesentryrightvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryrightvaluedecode. (((sto_right_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryrightvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultentriesentryrightvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultentriesentryrightvalue) = S ge_signed_half_multiply_exists_resultentriesentryrightvaluedecode))) /\ ((dst_positive_multiply_exists_resultentriesentryright) + ge_balance_negative_multiply_exists_resultentriesentryrightvalue = (dst_negative_multiply_exists_resultentriesentryright) + ge_balance_positive_multiply_exists_resultentriesentryrightvalue))))))))) /\ (((exists dst_positive_code_multiply_exists_resultentriesentryoutput dst_positive_scale_multiply_exists_resultentriesentryoutput dst_negative_code_multiply_exists_resultentriesentryoutput dst_negative_scale_multiply_exists_resultentriesentryoutput dst_positive_multiply_exists_resultentriesentryoutput dst_negative_multiply_exists_resultentriesentryoutput. (((H) = (((((dst_positive_code_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_positive_code_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput)) + ((dst_positive_scale_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput))) + (((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) + ((dst_negative_scale_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)))) * S ((((dst_positive_code_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_positive_code_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput)) + ((dst_positive_scale_multiply_exists_resultentriesentryoutput) + (dst_positive_scale_multiply_exists_resultentriesentryoutput))) + (((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) + ((dst_negative_scale_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)))) + ((((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) + ((dst_negative_scale_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput))) + (((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) * S ((dst_negative_code_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)) + ((dst_negative_scale_multiply_exists_resultentriesentryoutput) + (dst_negative_scale_multiply_exists_resultentriesentryoutput)))))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryoutputpositive. ff_h_pvs_multiply_exists_resultentriesentryoutputpositive + S (dst_positive_multiply_exists_resultentriesentryoutput) = S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryoutput)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryoutputpositive. dst_positive_code_multiply_exists_resultentriesentryoutput = ff_q_pvs_multiply_exists_resultentriesentryoutputpositive * S ((S (sto_index_multiply_exists_resultentries)) * dst_positive_scale_multiply_exists_resultentriesentryoutput) + (dst_positive_multiply_exists_resultentriesentryoutput))) /\ (((((exists ff_h_pvs_multiply_exists_resultentriesentryoutputnegative. ff_h_pvs_multiply_exists_resultentriesentryoutputnegative + S (dst_negative_multiply_exists_resultentriesentryoutput) = S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryoutput)) /\ exists ff_q_pvs_multiply_exists_resultentriesentryoutputnegative. dst_negative_code_multiply_exists_resultentriesentryoutput = ff_q_pvs_multiply_exists_resultentriesentryoutputnegative * S ((S (sto_index_multiply_exists_resultentries)) * dst_negative_scale_multiply_exists_resultentriesentryoutput) + (dst_negative_multiply_exists_resultentriesentryoutput))) /\ (exists ge_balance_positive_multiply_exists_resultentriesentryoutputvalue ge_balance_negative_multiply_exists_resultentriesentryoutputvalue. (((((sto_output_multiply_exists_resultentries) = 2 * (ge_balance_positive_multiply_exists_resultentriesentryoutputvalue) /\ (ge_balance_negative_multiply_exists_resultentriesentryoutputvalue) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryoutputvaluedecode. (((sto_output_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_multiply_exists_resultentriesentryoutputvalue) = 0) /\ (ge_balance_negative_multiply_exists_resultentriesentryoutputvalue) = S ge_signed_half_multiply_exists_resultentriesentryoutputvaluedecode))) /\ ((dst_positive_multiply_exists_resultentriesentryoutput) + ge_balance_negative_multiply_exists_resultentriesentryoutputvalue = (dst_negative_multiply_exists_resultentriesentryoutput) + ge_balance_positive_multiply_exists_resultentriesentryoutputvalue))))))))) /\ (exists sto_ap_multiply_exists_resultentriesentryoperation sto_an_multiply_exists_resultentriesentryoperation sto_bp_multiply_exists_resultentriesentryoperation sto_bn_multiply_exists_resultentriesentryoperation sto_cp_multiply_exists_resultentriesentryoperation sto_cn_multiply_exists_resultentriesentryoperation. (((((sto_left_multiply_exists_resultentries) = 2 * (sto_ap_multiply_exists_resultentriesentryoperation) /\ (sto_an_multiply_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryoperationleft. (((sto_left_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryoperationleft + 1 /\ (sto_ap_multiply_exists_resultentriesentryoperation) = 0) /\ (sto_an_multiply_exists_resultentriesentryoperation) = S ge_signed_half_multiply_exists_resultentriesentryoperationleft))) /\ ((((((sto_right_multiply_exists_resultentries) = 2 * (sto_bp_multiply_exists_resultentriesentryoperation) /\ (sto_bn_multiply_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryoperationright. (((sto_right_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryoperationright + 1 /\ (sto_bp_multiply_exists_resultentriesentryoperation) = 0) /\ (sto_bn_multiply_exists_resultentriesentryoperation) = S ge_signed_half_multiply_exists_resultentriesentryoperationright))) /\ ((((((sto_output_multiply_exists_resultentries) = 2 * (sto_cp_multiply_exists_resultentriesentryoperation) /\ (sto_cn_multiply_exists_resultentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_exists_resultentriesentryoperationoutput. (((sto_output_multiply_exists_resultentries) = 2 * ge_signed_half_multiply_exists_resultentriesentryoperationoutput + 1 /\ (sto_cp_multiply_exists_resultentriesentryoperation) = 0) /\ (sto_cn_multiply_exists_resultentriesentryoperation) = S ge_signed_half_multiply_exists_resultentriesentryoperationoutput))) /\ ((sto_ap_multiply_exists_resultentriesentryoperation * sto_bp_multiply_exists_resultentriesentryoperation + sto_an_multiply_exists_resultentriesentryoperation * sto_bn_multiply_exists_resultentriesentryoperation) + sto_cn_multiply_exists_resultentriesentryoperation = (sto_ap_multiply_exists_resultentriesentryoperation * sto_bn_multiply_exists_resultentriesentryoperation + sto_an_multiply_exists_resultentriesentryoperation * sto_bp_multiply_exists_resultentriesentryoperation) + sto_cp_multiply_exists_resultentriesentryoperation)))))))))))))))))))Constructive proof overview
Generated structural guide
Ordinary finite induction constructs both beta output streams and their actual packed table for pointwise multiply; 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
WS0009 signed_table_multiply_empty divisor_signed_table_from_components Alpha theorem; checked-use authorized WS0001 signed_table_domain_resize WS0002 signed_table_lookup_any signed_mul_total Alpha theorem; checked-use authorized arithmetic_signed_table_extend_at Alpha theorem; checked-use authorized WS0012 signed_table_multiply_extendDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (4)
01Induction on lL1–5
02Construct an explicit witnessL6–6
Supply the displayed value, then prove that it has the required property.
- 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.
- L7
specialize signed_table_multiply_empty (F) - L8
specialize signed_table_multiply_empty (G) - L9
specialize signed_table_multiply_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))))) - L10
apply signed_table_multiply_empty - L11
exact ht0 - L12
exact ht1 - L13
specialize divisor_signed_table_from_components (0) - 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))))) - L15
specialize divisor_signed_table_from_components (0) - L16
specialize divisor_signed_table_from_components (0)
04Use earlier factsL17–19
05Calculate and transport equalitiesL20–20
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L20
refl
06Fix variables and assumptionsL21–24
07Establish hpL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L25
have hp : ∃ K. ArithMul(F,G,K,l)Definitions: ArithMul - L26
specialize IH (F) - L27
specialize IH (G) - L28
apply IH - L29
specialize signed_table_domain_resize (S l) - L30
specialize signed_table_domain_resize (l) - L31
specialize signed_table_domain_resize (F) - L32
apply signed_table_domain_resize - L33
exact ht0 - L34
specialize signed_table_domain_resize (S l)
08Use earlier factsL35–38
09Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- 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.
11Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- 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.
13Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
cases he1
14Establish hvL54–57
15Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- 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.
- L59
have hnext : ∃ K. ArithExtend(x,K,l,x3)Definitions: ArithExtend - L60
specialize arithmetic_signed_table_extend_at (l) - L61
specialize arithmetic_signed_table_extend_at (x) - L62
specialize arithmetic_signed_table_extend_at (l) - L63
specialize arithmetic_signed_table_extend_at (x3) - L64
apply arithmetic_signed_table_extend_at
17Separate the logical casesL65–67
18Use earlier factsL68–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L68
exact hp_witness_right_right_left
19Separate the logical casesL69–71
20Construct an explicit witnessL72–72
Supply the displayed value, then prove that it has the required property.
- L72
exists x4
21Use earlier factsL73–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
specialize signed_table_multiply_extend (F) - L74
specialize signed_table_multiply_extend (G) - L75
specialize signed_table_multiply_extend (x) - L76
specialize signed_table_multiply_extend (x4) - L77
specialize signed_table_multiply_extend (l) - L78
specialize signed_table_multiply_extend (x1) - L79
specialize signed_table_multiply_extend (x2) - L80
specialize signed_table_multiply_extend (x3) - L81
apply signed_table_multiply_extend - L82
exact hp_witness
Original exact command ledger · 88 lines
- 0001
induction l - 0002
intro F - 0003
intro G - 0004
intro ht0 - 0005
intro ht1 - 0006
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)))) - 0007
specialize signed_table_multiply_empty (F) - 0008
specialize signed_table_multiply_empty (G) - 0009
specialize signed_table_multiply_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))))) - 0010
apply signed_table_multiply_empty - 0011
exact ht0 - 0012
exact ht1 - 0013
specialize divisor_signed_table_from_components (0) - 0014
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))))) - 0015
specialize divisor_signed_table_from_components (0) - 0016
specialize divisor_signed_table_from_components (0) - 0017
specialize divisor_signed_table_from_components (0) - 0018
specialize divisor_signed_table_from_components (0) - 0019
apply divisor_signed_table_from_components - 0020
refl - 0021
intro F - 0022
intro G - 0023
intro ht0 - 0024
intro ht1 - 0025
have hp : exists K. (((exists dst_positive_code_multiply_construct_prefixleft_table dst_positive_scale_multiply_construct_prefixleft_table dst_negative_code_multiply_construct_prefixleft_table dst_negative_scale_multiply_construct_prefixleft_table. (((F) = (((((dst_positive_code_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table)) * S ((dst_positive_code_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table)) + ((dst_positive_scale_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table))) + (((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) * S ((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) + ((dst_negative_scale_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)))) * S ((((dst_positive_code_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table)) * S ((dst_positive_code_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table)) + ((dst_positive_scale_multiply_construct_prefixleft_table) + (dst_positive_scale_multiply_construct_prefixleft_table))) + (((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) * S ((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) + ((dst_negative_scale_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)))) + ((((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) * S ((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) + ((dst_negative_scale_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table))) + (((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) * S ((dst_negative_code_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)) + ((dst_negative_scale_multiply_construct_prefixleft_table) + (dst_negative_scale_multiply_construct_prefixleft_table)))))) /\ (forall dst_index_multiply_construct_prefixleft_table. (exists pvs_le_gap_multiply_construct_prefixleft_tabledomain. pvs_le_gap_multiply_construct_prefixleft_tabledomain + (dst_index_multiply_construct_prefixleft_table) = (l)) -> exists dst_positive_multiply_construct_prefixleft_table dst_negative_multiply_construct_prefixleft_table dst_value_multiply_construct_prefixleft_table. ((((exists ff_h_pvs_multiply_construct_prefixleft_tableentrypositive. ff_h_pvs_multiply_construct_prefixleft_tableentrypositive + S (dst_positive_multiply_construct_prefixleft_table) = S ((S (dst_index_multiply_construct_prefixleft_table)) * dst_positive_scale_multiply_construct_prefixleft_table)) /\ exists ff_q_pvs_multiply_construct_prefixleft_tableentrypositive. dst_positive_code_multiply_construct_prefixleft_table = ff_q_pvs_multiply_construct_prefixleft_tableentrypositive * S ((S (dst_index_multiply_construct_prefixleft_table)) * dst_positive_scale_multiply_construct_prefixleft_table) + (dst_positive_multiply_construct_prefixleft_table))) /\ (((((exists ff_h_pvs_multiply_construct_prefixleft_tableentrynegative. ff_h_pvs_multiply_construct_prefixleft_tableentrynegative + S (dst_negative_multiply_construct_prefixleft_table) = S ((S (dst_index_multiply_construct_prefixleft_table)) * dst_negative_scale_multiply_construct_prefixleft_table)) /\ exists ff_q_pvs_multiply_construct_prefixleft_tableentrynegative. dst_negative_code_multiply_construct_prefixleft_table = ff_q_pvs_multiply_construct_prefixleft_tableentrynegative * S ((S (dst_index_multiply_construct_prefixleft_table)) * dst_negative_scale_multiply_construct_prefixleft_table) + (dst_negative_multiply_construct_prefixleft_table))) /\ (exists ge_balance_positive_multiply_construct_prefixleft_tableentryvalue ge_balance_negative_multiply_construct_prefixleft_tableentryvalue. (((((dst_value_multiply_construct_prefixleft_table) = 2 * (ge_balance_positive_multiply_construct_prefixleft_tableentryvalue) /\ (ge_balance_negative_multiply_construct_prefixleft_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixleft_tableentryvaluedecode. (((dst_value_multiply_construct_prefixleft_table) = 2 * ge_signed_half_multiply_construct_prefixleft_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixleft_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixleft_tableentryvalue) = S ge_signed_half_multiply_construct_prefixleft_tableentryvaluedecode))) /\ ((dst_positive_multiply_construct_prefixleft_table) + ge_balance_negative_multiply_construct_prefixleft_tableentryvalue = (dst_negative_multiply_construct_prefixleft_table) + ge_balance_positive_multiply_construct_prefixleft_tableentryvalue))))))))) /\ (((exists dst_positive_code_multiply_construct_prefixright_table dst_positive_scale_multiply_construct_prefixright_table dst_negative_code_multiply_construct_prefixright_table dst_negative_scale_multiply_construct_prefixright_table. (((G) = (((((dst_positive_code_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table)) * S ((dst_positive_code_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table)) + ((dst_positive_scale_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table))) + (((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) * S ((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) + ((dst_negative_scale_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)))) * S ((((dst_positive_code_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table)) * S ((dst_positive_code_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table)) + ((dst_positive_scale_multiply_construct_prefixright_table) + (dst_positive_scale_multiply_construct_prefixright_table))) + (((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) * S ((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) + ((dst_negative_scale_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)))) + ((((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) * S ((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) + ((dst_negative_scale_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table))) + (((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) * S ((dst_negative_code_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)) + ((dst_negative_scale_multiply_construct_prefixright_table) + (dst_negative_scale_multiply_construct_prefixright_table)))))) /\ (forall dst_index_multiply_construct_prefixright_table. (exists pvs_le_gap_multiply_construct_prefixright_tabledomain. pvs_le_gap_multiply_construct_prefixright_tabledomain + (dst_index_multiply_construct_prefixright_table) = (l)) -> exists dst_positive_multiply_construct_prefixright_table dst_negative_multiply_construct_prefixright_table dst_value_multiply_construct_prefixright_table. ((((exists ff_h_pvs_multiply_construct_prefixright_tableentrypositive. ff_h_pvs_multiply_construct_prefixright_tableentrypositive + S (dst_positive_multiply_construct_prefixright_table) = S ((S (dst_index_multiply_construct_prefixright_table)) * dst_positive_scale_multiply_construct_prefixright_table)) /\ exists ff_q_pvs_multiply_construct_prefixright_tableentrypositive. dst_positive_code_multiply_construct_prefixright_table = ff_q_pvs_multiply_construct_prefixright_tableentrypositive * S ((S (dst_index_multiply_construct_prefixright_table)) * dst_positive_scale_multiply_construct_prefixright_table) + (dst_positive_multiply_construct_prefixright_table))) /\ (((((exists ff_h_pvs_multiply_construct_prefixright_tableentrynegative. ff_h_pvs_multiply_construct_prefixright_tableentrynegative + S (dst_negative_multiply_construct_prefixright_table) = S ((S (dst_index_multiply_construct_prefixright_table)) * dst_negative_scale_multiply_construct_prefixright_table)) /\ exists ff_q_pvs_multiply_construct_prefixright_tableentrynegative. dst_negative_code_multiply_construct_prefixright_table = ff_q_pvs_multiply_construct_prefixright_tableentrynegative * S ((S (dst_index_multiply_construct_prefixright_table)) * dst_negative_scale_multiply_construct_prefixright_table) + (dst_negative_multiply_construct_prefixright_table))) /\ (exists ge_balance_positive_multiply_construct_prefixright_tableentryvalue ge_balance_negative_multiply_construct_prefixright_tableentryvalue. (((((dst_value_multiply_construct_prefixright_table) = 2 * (ge_balance_positive_multiply_construct_prefixright_tableentryvalue) /\ (ge_balance_negative_multiply_construct_prefixright_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixright_tableentryvaluedecode. (((dst_value_multiply_construct_prefixright_table) = 2 * ge_signed_half_multiply_construct_prefixright_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixright_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixright_tableentryvalue) = S ge_signed_half_multiply_construct_prefixright_tableentryvaluedecode))) /\ ((dst_positive_multiply_construct_prefixright_table) + ge_balance_negative_multiply_construct_prefixright_tableentryvalue = (dst_negative_multiply_construct_prefixright_table) + ge_balance_positive_multiply_construct_prefixright_tableentryvalue))))))))) /\ (((exists dst_positive_code_multiply_construct_prefixoutput_table dst_positive_scale_multiply_construct_prefixoutput_table dst_negative_code_multiply_construct_prefixoutput_table dst_negative_scale_multiply_construct_prefixoutput_table. (((K) = (((((dst_positive_code_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table)) * S ((dst_positive_code_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table)) + ((dst_positive_scale_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table))) + (((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) * S ((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) + ((dst_negative_scale_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)))) * S ((((dst_positive_code_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table)) * S ((dst_positive_code_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table)) + ((dst_positive_scale_multiply_construct_prefixoutput_table) + (dst_positive_scale_multiply_construct_prefixoutput_table))) + (((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) * S ((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) + ((dst_negative_scale_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)))) + ((((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) * S ((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) + ((dst_negative_scale_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table))) + (((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) * S ((dst_negative_code_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)) + ((dst_negative_scale_multiply_construct_prefixoutput_table) + (dst_negative_scale_multiply_construct_prefixoutput_table)))))) /\ (forall dst_index_multiply_construct_prefixoutput_table. (exists pvs_le_gap_multiply_construct_prefixoutput_tabledomain. pvs_le_gap_multiply_construct_prefixoutput_tabledomain + (dst_index_multiply_construct_prefixoutput_table) = (l)) -> exists dst_positive_multiply_construct_prefixoutput_table dst_negative_multiply_construct_prefixoutput_table dst_value_multiply_construct_prefixoutput_table. ((((exists ff_h_pvs_multiply_construct_prefixoutput_tableentrypositive. ff_h_pvs_multiply_construct_prefixoutput_tableentrypositive + S (dst_positive_multiply_construct_prefixoutput_table) = S ((S (dst_index_multiply_construct_prefixoutput_table)) * dst_positive_scale_multiply_construct_prefixoutput_table)) /\ exists ff_q_pvs_multiply_construct_prefixoutput_tableentrypositive. dst_positive_code_multiply_construct_prefixoutput_table = ff_q_pvs_multiply_construct_prefixoutput_tableentrypositive * S ((S (dst_index_multiply_construct_prefixoutput_table)) * dst_positive_scale_multiply_construct_prefixoutput_table) + (dst_positive_multiply_construct_prefixoutput_table))) /\ (((((exists ff_h_pvs_multiply_construct_prefixoutput_tableentrynegative. ff_h_pvs_multiply_construct_prefixoutput_tableentrynegative + S (dst_negative_multiply_construct_prefixoutput_table) = S ((S (dst_index_multiply_construct_prefixoutput_table)) * dst_negative_scale_multiply_construct_prefixoutput_table)) /\ exists ff_q_pvs_multiply_construct_prefixoutput_tableentrynegative. dst_negative_code_multiply_construct_prefixoutput_table = ff_q_pvs_multiply_construct_prefixoutput_tableentrynegative * S ((S (dst_index_multiply_construct_prefixoutput_table)) * dst_negative_scale_multiply_construct_prefixoutput_table) + (dst_negative_multiply_construct_prefixoutput_table))) /\ (exists ge_balance_positive_multiply_construct_prefixoutput_tableentryvalue ge_balance_negative_multiply_construct_prefixoutput_tableentryvalue. (((((dst_value_multiply_construct_prefixoutput_table) = 2 * (ge_balance_positive_multiply_construct_prefixoutput_tableentryvalue) /\ (ge_balance_negative_multiply_construct_prefixoutput_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixoutput_tableentryvaluedecode. (((dst_value_multiply_construct_prefixoutput_table) = 2 * ge_signed_half_multiply_construct_prefixoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixoutput_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixoutput_tableentryvalue) = S ge_signed_half_multiply_construct_prefixoutput_tableentryvaluedecode))) /\ ((dst_positive_multiply_construct_prefixoutput_table) + ge_balance_negative_multiply_construct_prefixoutput_tableentryvalue = (dst_negative_multiply_construct_prefixoutput_table) + ge_balance_positive_multiply_construct_prefixoutput_tableentryvalue))))))))) /\ (forall sto_index_multiply_construct_prefixentries. (exists pvs_gap_multiply_construct_prefixentriesbound. pvs_gap_multiply_construct_prefixentriesbound + S (sto_index_multiply_construct_prefixentries) = (l)) -> exists sto_left_multiply_construct_prefixentries sto_right_multiply_construct_prefixentries sto_output_multiply_construct_prefixentries. ((exists dst_positive_code_multiply_construct_prefixentriesentryleft dst_positive_scale_multiply_construct_prefixentriesentryleft dst_negative_code_multiply_construct_prefixentriesentryleft dst_negative_scale_multiply_construct_prefixentriesentryleft dst_positive_multiply_construct_prefixentriesentryleft dst_negative_multiply_construct_prefixentriesentryleft. (((F) = (((((dst_positive_code_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_positive_code_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft)) + ((dst_positive_scale_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft))) + (((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) + ((dst_negative_scale_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)))) * S ((((dst_positive_code_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_positive_code_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft)) + ((dst_positive_scale_multiply_construct_prefixentriesentryleft) + (dst_positive_scale_multiply_construct_prefixentriesentryleft))) + (((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) + ((dst_negative_scale_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)))) + ((((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) + ((dst_negative_scale_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft))) + (((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) * S ((dst_negative_code_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)) + ((dst_negative_scale_multiply_construct_prefixentriesentryleft) + (dst_negative_scale_multiply_construct_prefixentriesentryleft)))))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryleftpositive. ff_h_pvs_multiply_construct_prefixentriesentryleftpositive + S (dst_positive_multiply_construct_prefixentriesentryleft) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryleft)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryleftpositive. dst_positive_code_multiply_construct_prefixentriesentryleft = ff_q_pvs_multiply_construct_prefixentriesentryleftpositive * S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryleft) + (dst_positive_multiply_construct_prefixentriesentryleft))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryleftnegative. ff_h_pvs_multiply_construct_prefixentriesentryleftnegative + S (dst_negative_multiply_construct_prefixentriesentryleft) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryleft)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryleftnegative. dst_negative_code_multiply_construct_prefixentriesentryleft = ff_q_pvs_multiply_construct_prefixentriesentryleftnegative * S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryleft) + (dst_negative_multiply_construct_prefixentriesentryleft))) /\ (exists ge_balance_positive_multiply_construct_prefixentriesentryleftvalue ge_balance_negative_multiply_construct_prefixentriesentryleftvalue. (((((sto_left_multiply_construct_prefixentries) = 2 * (ge_balance_positive_multiply_construct_prefixentriesentryleftvalue) /\ (ge_balance_negative_multiply_construct_prefixentriesentryleftvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryleftvaluedecode. (((sto_left_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryleftvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixentriesentryleftvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixentriesentryleftvalue) = S ge_signed_half_multiply_construct_prefixentriesentryleftvaluedecode))) /\ ((dst_positive_multiply_construct_prefixentriesentryleft) + ge_balance_negative_multiply_construct_prefixentriesentryleftvalue = (dst_negative_multiply_construct_prefixentriesentryleft) + ge_balance_positive_multiply_construct_prefixentriesentryleftvalue))))))))) /\ (((exists dst_positive_code_multiply_construct_prefixentriesentryright dst_positive_scale_multiply_construct_prefixentriesentryright dst_negative_code_multiply_construct_prefixentriesentryright dst_negative_scale_multiply_construct_prefixentriesentryright dst_positive_multiply_construct_prefixentriesentryright dst_negative_multiply_construct_prefixentriesentryright. (((G) = (((((dst_positive_code_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright)) * S ((dst_positive_code_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright)) + ((dst_positive_scale_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright))) + (((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) * S ((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) + ((dst_negative_scale_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)))) * S ((((dst_positive_code_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright)) * S ((dst_positive_code_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright)) + ((dst_positive_scale_multiply_construct_prefixentriesentryright) + (dst_positive_scale_multiply_construct_prefixentriesentryright))) + (((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) * S ((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) + ((dst_negative_scale_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)))) + ((((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) * S ((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) + ((dst_negative_scale_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright))) + (((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) * S ((dst_negative_code_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)) + ((dst_negative_scale_multiply_construct_prefixentriesentryright) + (dst_negative_scale_multiply_construct_prefixentriesentryright)))))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryrightpositive. ff_h_pvs_multiply_construct_prefixentriesentryrightpositive + S (dst_positive_multiply_construct_prefixentriesentryright) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryright)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryrightpositive. dst_positive_code_multiply_construct_prefixentriesentryright = ff_q_pvs_multiply_construct_prefixentriesentryrightpositive * S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryright) + (dst_positive_multiply_construct_prefixentriesentryright))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryrightnegative. ff_h_pvs_multiply_construct_prefixentriesentryrightnegative + S (dst_negative_multiply_construct_prefixentriesentryright) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryright)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryrightnegative. dst_negative_code_multiply_construct_prefixentriesentryright = ff_q_pvs_multiply_construct_prefixentriesentryrightnegative * S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryright) + (dst_negative_multiply_construct_prefixentriesentryright))) /\ (exists ge_balance_positive_multiply_construct_prefixentriesentryrightvalue ge_balance_negative_multiply_construct_prefixentriesentryrightvalue. (((((sto_right_multiply_construct_prefixentries) = 2 * (ge_balance_positive_multiply_construct_prefixentriesentryrightvalue) /\ (ge_balance_negative_multiply_construct_prefixentriesentryrightvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryrightvaluedecode. (((sto_right_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryrightvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixentriesentryrightvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixentriesentryrightvalue) = S ge_signed_half_multiply_construct_prefixentriesentryrightvaluedecode))) /\ ((dst_positive_multiply_construct_prefixentriesentryright) + ge_balance_negative_multiply_construct_prefixentriesentryrightvalue = (dst_negative_multiply_construct_prefixentriesentryright) + ge_balance_positive_multiply_construct_prefixentriesentryrightvalue))))))))) /\ (((exists dst_positive_code_multiply_construct_prefixentriesentryoutput dst_positive_scale_multiply_construct_prefixentriesentryoutput dst_negative_code_multiply_construct_prefixentriesentryoutput dst_negative_scale_multiply_construct_prefixentriesentryoutput dst_positive_multiply_construct_prefixentriesentryoutput dst_negative_multiply_construct_prefixentriesentryoutput. (((K) = (((((dst_positive_code_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_positive_code_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_positive_scale_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput))) + (((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_negative_scale_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)))) * S ((((dst_positive_code_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_positive_code_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_positive_scale_multiply_construct_prefixentriesentryoutput) + (dst_positive_scale_multiply_construct_prefixentriesentryoutput))) + (((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_negative_scale_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)))) + ((((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_negative_scale_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput))) + (((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) * S ((dst_negative_code_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)) + ((dst_negative_scale_multiply_construct_prefixentriesentryoutput) + (dst_negative_scale_multiply_construct_prefixentriesentryoutput)))))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryoutputpositive. ff_h_pvs_multiply_construct_prefixentriesentryoutputpositive + S (dst_positive_multiply_construct_prefixentriesentryoutput) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryoutput)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryoutputpositive. dst_positive_code_multiply_construct_prefixentriesentryoutput = ff_q_pvs_multiply_construct_prefixentriesentryoutputpositive * S ((S (sto_index_multiply_construct_prefixentries)) * dst_positive_scale_multiply_construct_prefixentriesentryoutput) + (dst_positive_multiply_construct_prefixentriesentryoutput))) /\ (((((exists ff_h_pvs_multiply_construct_prefixentriesentryoutputnegative. ff_h_pvs_multiply_construct_prefixentriesentryoutputnegative + S (dst_negative_multiply_construct_prefixentriesentryoutput) = S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryoutput)) /\ exists ff_q_pvs_multiply_construct_prefixentriesentryoutputnegative. dst_negative_code_multiply_construct_prefixentriesentryoutput = ff_q_pvs_multiply_construct_prefixentriesentryoutputnegative * S ((S (sto_index_multiply_construct_prefixentries)) * dst_negative_scale_multiply_construct_prefixentriesentryoutput) + (dst_negative_multiply_construct_prefixentriesentryoutput))) /\ (exists ge_balance_positive_multiply_construct_prefixentriesentryoutputvalue ge_balance_negative_multiply_construct_prefixentriesentryoutputvalue. (((((sto_output_multiply_construct_prefixentries) = 2 * (ge_balance_positive_multiply_construct_prefixentriesentryoutputvalue) /\ (ge_balance_negative_multiply_construct_prefixentriesentryoutputvalue) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryoutputvaluedecode. (((sto_output_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_prefixentriesentryoutputvalue) = 0) /\ (ge_balance_negative_multiply_construct_prefixentriesentryoutputvalue) = S ge_signed_half_multiply_construct_prefixentriesentryoutputvaluedecode))) /\ ((dst_positive_multiply_construct_prefixentriesentryoutput) + ge_balance_negative_multiply_construct_prefixentriesentryoutputvalue = (dst_negative_multiply_construct_prefixentriesentryoutput) + ge_balance_positive_multiply_construct_prefixentriesentryoutputvalue))))))))) /\ (exists sto_ap_multiply_construct_prefixentriesentryoperation sto_an_multiply_construct_prefixentriesentryoperation sto_bp_multiply_construct_prefixentriesentryoperation sto_bn_multiply_construct_prefixentriesentryoperation sto_cp_multiply_construct_prefixentriesentryoperation sto_cn_multiply_construct_prefixentriesentryoperation. (((((sto_left_multiply_construct_prefixentries) = 2 * (sto_ap_multiply_construct_prefixentriesentryoperation) /\ (sto_an_multiply_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryoperationleft. (((sto_left_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryoperationleft + 1 /\ (sto_ap_multiply_construct_prefixentriesentryoperation) = 0) /\ (sto_an_multiply_construct_prefixentriesentryoperation) = S ge_signed_half_multiply_construct_prefixentriesentryoperationleft))) /\ ((((((sto_right_multiply_construct_prefixentries) = 2 * (sto_bp_multiply_construct_prefixentriesentryoperation) /\ (sto_bn_multiply_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryoperationright. (((sto_right_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryoperationright + 1 /\ (sto_bp_multiply_construct_prefixentriesentryoperation) = 0) /\ (sto_bn_multiply_construct_prefixentriesentryoperation) = S ge_signed_half_multiply_construct_prefixentriesentryoperationright))) /\ ((((((sto_output_multiply_construct_prefixentries) = 2 * (sto_cp_multiply_construct_prefixentriesentryoperation) /\ (sto_cn_multiply_construct_prefixentriesentryoperation) = 0) \/ exists ge_signed_half_multiply_construct_prefixentriesentryoperationoutput. (((sto_output_multiply_construct_prefixentries) = 2 * ge_signed_half_multiply_construct_prefixentriesentryoperationoutput + 1 /\ (sto_cp_multiply_construct_prefixentriesentryoperation) = 0) /\ (sto_cn_multiply_construct_prefixentriesentryoperation) = S ge_signed_half_multiply_construct_prefixentriesentryoperationoutput))) /\ ((sto_ap_multiply_construct_prefixentriesentryoperation * sto_bp_multiply_construct_prefixentriesentryoperation + sto_an_multiply_construct_prefixentriesentryoperation * sto_bn_multiply_construct_prefixentriesentryoperation) + sto_cn_multiply_construct_prefixentriesentryoperation = (sto_ap_multiply_construct_prefixentriesentryoperation * sto_bn_multiply_construct_prefixentriesentryoperation + sto_an_multiply_construct_prefixentriesentryoperation * sto_bp_multiply_construct_prefixentriesentryoperation) + sto_cp_multiply_construct_prefixentriesentryoperation))))))))))))))))))) - 0026
specialize IH (F) - 0027
specialize IH (G) - 0028
apply IH - 0029
specialize signed_table_domain_resize (S l) - 0030
specialize signed_table_domain_resize (l) - 0031
specialize signed_table_domain_resize (F) - 0032
apply signed_table_domain_resize - 0033
exact ht0 - 0034
specialize signed_table_domain_resize (S l) - 0035
specialize signed_table_domain_resize (l) - 0036
specialize signed_table_domain_resize (G) - 0037
apply signed_table_domain_resize - 0038
exact ht1 - 0039
cases hp - 0040
have he0 : exists z. (exists dst_positive_code_multiply_construct_input0 dst_positive_scale_multiply_construct_input0 dst_negative_code_multiply_construct_input0 dst_negative_scale_multiply_construct_input0 dst_positive_multiply_construct_input0 dst_negative_multiply_construct_input0. (((F) = (((((dst_positive_code_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0)) * S ((dst_positive_code_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0)) + ((dst_positive_scale_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0))) + (((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) * S ((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) + ((dst_negative_scale_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)))) * S ((((dst_positive_code_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0)) * S ((dst_positive_code_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0)) + ((dst_positive_scale_multiply_construct_input0) + (dst_positive_scale_multiply_construct_input0))) + (((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) * S ((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) + ((dst_negative_scale_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)))) + ((((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) * S ((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) + ((dst_negative_scale_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0))) + (((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) * S ((dst_negative_code_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)) + ((dst_negative_scale_multiply_construct_input0) + (dst_negative_scale_multiply_construct_input0)))))) /\ (((((exists ff_h_pvs_multiply_construct_input0positive. ff_h_pvs_multiply_construct_input0positive + S (dst_positive_multiply_construct_input0) = S ((S (l)) * dst_positive_scale_multiply_construct_input0)) /\ exists ff_q_pvs_multiply_construct_input0positive. dst_positive_code_multiply_construct_input0 = ff_q_pvs_multiply_construct_input0positive * S ((S (l)) * dst_positive_scale_multiply_construct_input0) + (dst_positive_multiply_construct_input0))) /\ (((((exists ff_h_pvs_multiply_construct_input0negative. ff_h_pvs_multiply_construct_input0negative + S (dst_negative_multiply_construct_input0) = S ((S (l)) * dst_negative_scale_multiply_construct_input0)) /\ exists ff_q_pvs_multiply_construct_input0negative. dst_negative_code_multiply_construct_input0 = ff_q_pvs_multiply_construct_input0negative * S ((S (l)) * dst_negative_scale_multiply_construct_input0) + (dst_negative_multiply_construct_input0))) /\ (exists ge_balance_positive_multiply_construct_input0value ge_balance_negative_multiply_construct_input0value. (((((z) = 2 * (ge_balance_positive_multiply_construct_input0value) /\ (ge_balance_negative_multiply_construct_input0value) = 0) \/ exists ge_signed_half_multiply_construct_input0valuedecode. (((z) = 2 * ge_signed_half_multiply_construct_input0valuedecode + 1 /\ (ge_balance_positive_multiply_construct_input0value) = 0) /\ (ge_balance_negative_multiply_construct_input0value) = S ge_signed_half_multiply_construct_input0valuedecode))) /\ ((dst_positive_multiply_construct_input0) + ge_balance_negative_multiply_construct_input0value = (dst_negative_multiply_construct_input0) + ge_balance_positive_multiply_construct_input0value))))))))) - 0041
specialize signed_table_lookup_any (S l) - 0042
specialize signed_table_lookup_any (F) - 0043
specialize signed_table_lookup_any (l) - 0044
apply signed_table_lookup_any - 0045
exact ht0 - 0046
cases he0 - 0047
have he1 : exists z. (exists dst_positive_code_multiply_construct_input1 dst_positive_scale_multiply_construct_input1 dst_negative_code_multiply_construct_input1 dst_negative_scale_multiply_construct_input1 dst_positive_multiply_construct_input1 dst_negative_multiply_construct_input1. (((G) = (((((dst_positive_code_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1)) * S ((dst_positive_code_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1)) + ((dst_positive_scale_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1))) + (((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) * S ((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) + ((dst_negative_scale_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)))) * S ((((dst_positive_code_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1)) * S ((dst_positive_code_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1)) + ((dst_positive_scale_multiply_construct_input1) + (dst_positive_scale_multiply_construct_input1))) + (((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) * S ((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) + ((dst_negative_scale_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)))) + ((((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) * S ((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) + ((dst_negative_scale_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1))) + (((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) * S ((dst_negative_code_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)) + ((dst_negative_scale_multiply_construct_input1) + (dst_negative_scale_multiply_construct_input1)))))) /\ (((((exists ff_h_pvs_multiply_construct_input1positive. ff_h_pvs_multiply_construct_input1positive + S (dst_positive_multiply_construct_input1) = S ((S (l)) * dst_positive_scale_multiply_construct_input1)) /\ exists ff_q_pvs_multiply_construct_input1positive. dst_positive_code_multiply_construct_input1 = ff_q_pvs_multiply_construct_input1positive * S ((S (l)) * dst_positive_scale_multiply_construct_input1) + (dst_positive_multiply_construct_input1))) /\ (((((exists ff_h_pvs_multiply_construct_input1negative. ff_h_pvs_multiply_construct_input1negative + S (dst_negative_multiply_construct_input1) = S ((S (l)) * dst_negative_scale_multiply_construct_input1)) /\ exists ff_q_pvs_multiply_construct_input1negative. dst_negative_code_multiply_construct_input1 = ff_q_pvs_multiply_construct_input1negative * S ((S (l)) * dst_negative_scale_multiply_construct_input1) + (dst_negative_multiply_construct_input1))) /\ (exists ge_balance_positive_multiply_construct_input1value ge_balance_negative_multiply_construct_input1value. (((((z) = 2 * (ge_balance_positive_multiply_construct_input1value) /\ (ge_balance_negative_multiply_construct_input1value) = 0) \/ exists ge_signed_half_multiply_construct_input1valuedecode. (((z) = 2 * ge_signed_half_multiply_construct_input1valuedecode + 1 /\ (ge_balance_positive_multiply_construct_input1value) = 0) /\ (ge_balance_negative_multiply_construct_input1value) = S ge_signed_half_multiply_construct_input1valuedecode))) /\ ((dst_positive_multiply_construct_input1) + ge_balance_negative_multiply_construct_input1value = (dst_negative_multiply_construct_input1) + ge_balance_positive_multiply_construct_input1value))))))))) - 0048
specialize signed_table_lookup_any (S l) - 0049
specialize signed_table_lookup_any (G) - 0050
specialize signed_table_lookup_any (l) - 0051
apply signed_table_lookup_any - 0052
exact ht1 - 0053
cases he1 - 0054
have hv : exists z. (exists sto_ap_multiply_construct_operation sto_an_multiply_construct_operation sto_bp_multiply_construct_operation sto_bn_multiply_construct_operation sto_cp_multiply_construct_operation sto_cn_multiply_construct_operation. (((((x1) = 2 * (sto_ap_multiply_construct_operation) /\ (sto_an_multiply_construct_operation) = 0) \/ exists ge_signed_half_multiply_construct_operationleft. (((x1) = 2 * ge_signed_half_multiply_construct_operationleft + 1 /\ (sto_ap_multiply_construct_operation) = 0) /\ (sto_an_multiply_construct_operation) = S ge_signed_half_multiply_construct_operationleft))) /\ ((((((x2) = 2 * (sto_bp_multiply_construct_operation) /\ (sto_bn_multiply_construct_operation) = 0) \/ exists ge_signed_half_multiply_construct_operationright. (((x2) = 2 * ge_signed_half_multiply_construct_operationright + 1 /\ (sto_bp_multiply_construct_operation) = 0) /\ (sto_bn_multiply_construct_operation) = S ge_signed_half_multiply_construct_operationright))) /\ ((((((z) = 2 * (sto_cp_multiply_construct_operation) /\ (sto_cn_multiply_construct_operation) = 0) \/ exists ge_signed_half_multiply_construct_operationoutput. (((z) = 2 * ge_signed_half_multiply_construct_operationoutput + 1 /\ (sto_cp_multiply_construct_operation) = 0) /\ (sto_cn_multiply_construct_operation) = S ge_signed_half_multiply_construct_operationoutput))) /\ ((sto_ap_multiply_construct_operation * sto_bp_multiply_construct_operation + sto_an_multiply_construct_operation * sto_bn_multiply_construct_operation) + sto_cn_multiply_construct_operation = (sto_ap_multiply_construct_operation * sto_bn_multiply_construct_operation + sto_an_multiply_construct_operation * sto_bp_multiply_construct_operation) + sto_cp_multiply_construct_operation))))))) - 0055
specialize signed_mul_total (x1) - 0056
specialize signed_mul_total (x2) - 0057
apply signed_mul_total - 0058
cases hv - 0059
have hnext : exists K. ((exists dst_positive_code_multiply_construct_table dst_positive_scale_multiply_construct_table dst_negative_code_multiply_construct_table dst_negative_scale_multiply_construct_table. (((K) = (((((dst_positive_code_multiply_construct_table) + (dst_positive_scale_multiply_construct_table)) * S ((dst_positive_code_multiply_construct_table) + (dst_positive_scale_multiply_construct_table)) + ((dst_positive_scale_multiply_construct_table) + (dst_positive_scale_multiply_construct_table))) + (((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) * S ((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) + ((dst_negative_scale_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)))) * S ((((dst_positive_code_multiply_construct_table) + (dst_positive_scale_multiply_construct_table)) * S ((dst_positive_code_multiply_construct_table) + (dst_positive_scale_multiply_construct_table)) + ((dst_positive_scale_multiply_construct_table) + (dst_positive_scale_multiply_construct_table))) + (((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) * S ((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) + ((dst_negative_scale_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)))) + ((((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) * S ((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) + ((dst_negative_scale_multiply_construct_table) + (dst_negative_scale_multiply_construct_table))) + (((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) * S ((dst_negative_code_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)) + ((dst_negative_scale_multiply_construct_table) + (dst_negative_scale_multiply_construct_table)))))) /\ (forall dst_index_multiply_construct_table. (exists pvs_le_gap_multiply_construct_tabledomain. pvs_le_gap_multiply_construct_tabledomain + (dst_index_multiply_construct_table) = (l)) -> exists dst_positive_multiply_construct_table dst_negative_multiply_construct_table dst_value_multiply_construct_table. ((((exists ff_h_pvs_multiply_construct_tableentrypositive. ff_h_pvs_multiply_construct_tableentrypositive + S (dst_positive_multiply_construct_table) = S ((S (dst_index_multiply_construct_table)) * dst_positive_scale_multiply_construct_table)) /\ exists ff_q_pvs_multiply_construct_tableentrypositive. dst_positive_code_multiply_construct_table = ff_q_pvs_multiply_construct_tableentrypositive * S ((S (dst_index_multiply_construct_table)) * dst_positive_scale_multiply_construct_table) + (dst_positive_multiply_construct_table))) /\ (((((exists ff_h_pvs_multiply_construct_tableentrynegative. ff_h_pvs_multiply_construct_tableentrynegative + S (dst_negative_multiply_construct_table) = S ((S (dst_index_multiply_construct_table)) * dst_negative_scale_multiply_construct_table)) /\ exists ff_q_pvs_multiply_construct_tableentrynegative. dst_negative_code_multiply_construct_table = ff_q_pvs_multiply_construct_tableentrynegative * S ((S (dst_index_multiply_construct_table)) * dst_negative_scale_multiply_construct_table) + (dst_negative_multiply_construct_table))) /\ (exists ge_balance_positive_multiply_construct_tableentryvalue ge_balance_negative_multiply_construct_tableentryvalue. (((((dst_value_multiply_construct_table) = 2 * (ge_balance_positive_multiply_construct_tableentryvalue) /\ (ge_balance_negative_multiply_construct_tableentryvalue) = 0) \/ exists ge_signed_half_multiply_construct_tableentryvaluedecode. (((dst_value_multiply_construct_table) = 2 * ge_signed_half_multiply_construct_tableentryvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_tableentryvalue) = 0) /\ (ge_balance_negative_multiply_construct_tableentryvalue) = S ge_signed_half_multiply_construct_tableentryvaluedecode))) /\ ((dst_positive_multiply_construct_table) + ge_balance_negative_multiply_construct_tableentryvalue = (dst_negative_multiply_construct_table) + ge_balance_positive_multiply_construct_tableentryvalue))))))))) /\ (((forall dst_index_multiply_construct_equal dst_first_multiply_construct_equal dst_second_multiply_construct_equal. (exists pvs_gap_multiply_construct_equalbound. pvs_gap_multiply_construct_equalbound + S (dst_index_multiply_construct_equal) = (l)) -> (exists dst_positive_code_multiply_construct_equalfirst dst_positive_scale_multiply_construct_equalfirst dst_negative_code_multiply_construct_equalfirst dst_negative_scale_multiply_construct_equalfirst dst_positive_multiply_construct_equalfirst dst_negative_multiply_construct_equalfirst. (((x) = (((((dst_positive_code_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst)) * S ((dst_positive_code_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst)) + ((dst_positive_scale_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst))) + (((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) * S ((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) + ((dst_negative_scale_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)))) * S ((((dst_positive_code_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst)) * S ((dst_positive_code_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst)) + ((dst_positive_scale_multiply_construct_equalfirst) + (dst_positive_scale_multiply_construct_equalfirst))) + (((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) * S ((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) + ((dst_negative_scale_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)))) + ((((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) * S ((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) + ((dst_negative_scale_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst))) + (((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) * S ((dst_negative_code_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)) + ((dst_negative_scale_multiply_construct_equalfirst) + (dst_negative_scale_multiply_construct_equalfirst)))))) /\ (((((exists ff_h_pvs_multiply_construct_equalfirstpositive. ff_h_pvs_multiply_construct_equalfirstpositive + S (dst_positive_multiply_construct_equalfirst) = S ((S (dst_index_multiply_construct_equal)) * dst_positive_scale_multiply_construct_equalfirst)) /\ exists ff_q_pvs_multiply_construct_equalfirstpositive. dst_positive_code_multiply_construct_equalfirst = ff_q_pvs_multiply_construct_equalfirstpositive * S ((S (dst_index_multiply_construct_equal)) * dst_positive_scale_multiply_construct_equalfirst) + (dst_positive_multiply_construct_equalfirst))) /\ (((((exists ff_h_pvs_multiply_construct_equalfirstnegative. ff_h_pvs_multiply_construct_equalfirstnegative + S (dst_negative_multiply_construct_equalfirst) = S ((S (dst_index_multiply_construct_equal)) * dst_negative_scale_multiply_construct_equalfirst)) /\ exists ff_q_pvs_multiply_construct_equalfirstnegative. dst_negative_code_multiply_construct_equalfirst = ff_q_pvs_multiply_construct_equalfirstnegative * S ((S (dst_index_multiply_construct_equal)) * dst_negative_scale_multiply_construct_equalfirst) + (dst_negative_multiply_construct_equalfirst))) /\ (exists ge_balance_positive_multiply_construct_equalfirstvalue ge_balance_negative_multiply_construct_equalfirstvalue. (((((dst_first_multiply_construct_equal) = 2 * (ge_balance_positive_multiply_construct_equalfirstvalue) /\ (ge_balance_negative_multiply_construct_equalfirstvalue) = 0) \/ exists ge_signed_half_multiply_construct_equalfirstvaluedecode. (((dst_first_multiply_construct_equal) = 2 * ge_signed_half_multiply_construct_equalfirstvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_equalfirstvalue) = 0) /\ (ge_balance_negative_multiply_construct_equalfirstvalue) = S ge_signed_half_multiply_construct_equalfirstvaluedecode))) /\ ((dst_positive_multiply_construct_equalfirst) + ge_balance_negative_multiply_construct_equalfirstvalue = (dst_negative_multiply_construct_equalfirst) + ge_balance_positive_multiply_construct_equalfirstvalue))))))))) -> (exists dst_positive_code_multiply_construct_equalsecond dst_positive_scale_multiply_construct_equalsecond dst_negative_code_multiply_construct_equalsecond dst_negative_scale_multiply_construct_equalsecond dst_positive_multiply_construct_equalsecond dst_negative_multiply_construct_equalsecond. (((K) = (((((dst_positive_code_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond)) * S ((dst_positive_code_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond)) + ((dst_positive_scale_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond))) + (((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) * S ((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) + ((dst_negative_scale_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)))) * S ((((dst_positive_code_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond)) * S ((dst_positive_code_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond)) + ((dst_positive_scale_multiply_construct_equalsecond) + (dst_positive_scale_multiply_construct_equalsecond))) + (((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) * S ((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) + ((dst_negative_scale_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)))) + ((((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) * S ((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) + ((dst_negative_scale_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond))) + (((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) * S ((dst_negative_code_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)) + ((dst_negative_scale_multiply_construct_equalsecond) + (dst_negative_scale_multiply_construct_equalsecond)))))) /\ (((((exists ff_h_pvs_multiply_construct_equalsecondpositive. ff_h_pvs_multiply_construct_equalsecondpositive + S (dst_positive_multiply_construct_equalsecond) = S ((S (dst_index_multiply_construct_equal)) * dst_positive_scale_multiply_construct_equalsecond)) /\ exists ff_q_pvs_multiply_construct_equalsecondpositive. dst_positive_code_multiply_construct_equalsecond = ff_q_pvs_multiply_construct_equalsecondpositive * S ((S (dst_index_multiply_construct_equal)) * dst_positive_scale_multiply_construct_equalsecond) + (dst_positive_multiply_construct_equalsecond))) /\ (((((exists ff_h_pvs_multiply_construct_equalsecondnegative. ff_h_pvs_multiply_construct_equalsecondnegative + S (dst_negative_multiply_construct_equalsecond) = S ((S (dst_index_multiply_construct_equal)) * dst_negative_scale_multiply_construct_equalsecond)) /\ exists ff_q_pvs_multiply_construct_equalsecondnegative. dst_negative_code_multiply_construct_equalsecond = ff_q_pvs_multiply_construct_equalsecondnegative * S ((S (dst_index_multiply_construct_equal)) * dst_negative_scale_multiply_construct_equalsecond) + (dst_negative_multiply_construct_equalsecond))) /\ (exists ge_balance_positive_multiply_construct_equalsecondvalue ge_balance_negative_multiply_construct_equalsecondvalue. (((((dst_second_multiply_construct_equal) = 2 * (ge_balance_positive_multiply_construct_equalsecondvalue) /\ (ge_balance_negative_multiply_construct_equalsecondvalue) = 0) \/ exists ge_signed_half_multiply_construct_equalsecondvaluedecode. (((dst_second_multiply_construct_equal) = 2 * ge_signed_half_multiply_construct_equalsecondvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_equalsecondvalue) = 0) /\ (ge_balance_negative_multiply_construct_equalsecondvalue) = S ge_signed_half_multiply_construct_equalsecondvaluedecode))) /\ ((dst_positive_multiply_construct_equalsecond) + ge_balance_negative_multiply_construct_equalsecondvalue = (dst_negative_multiply_construct_equalsecond) + ge_balance_positive_multiply_construct_equalsecondvalue))))))))) -> dst_first_multiply_construct_equal = dst_second_multiply_construct_equal) /\ (exists dst_positive_code_multiply_construct_entry dst_positive_scale_multiply_construct_entry dst_negative_code_multiply_construct_entry dst_negative_scale_multiply_construct_entry dst_positive_multiply_construct_entry dst_negative_multiply_construct_entry. (((K) = (((((dst_positive_code_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry)) * S ((dst_positive_code_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry)) + ((dst_positive_scale_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry))) + (((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) * S ((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) + ((dst_negative_scale_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)))) * S ((((dst_positive_code_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry)) * S ((dst_positive_code_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry)) + ((dst_positive_scale_multiply_construct_entry) + (dst_positive_scale_multiply_construct_entry))) + (((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) * S ((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) + ((dst_negative_scale_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)))) + ((((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) * S ((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) + ((dst_negative_scale_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry))) + (((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) * S ((dst_negative_code_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)) + ((dst_negative_scale_multiply_construct_entry) + (dst_negative_scale_multiply_construct_entry)))))) /\ (((((exists ff_h_pvs_multiply_construct_entrypositive. ff_h_pvs_multiply_construct_entrypositive + S (dst_positive_multiply_construct_entry) = S ((S (l)) * dst_positive_scale_multiply_construct_entry)) /\ exists ff_q_pvs_multiply_construct_entrypositive. dst_positive_code_multiply_construct_entry = ff_q_pvs_multiply_construct_entrypositive * S ((S (l)) * dst_positive_scale_multiply_construct_entry) + (dst_positive_multiply_construct_entry))) /\ (((((exists ff_h_pvs_multiply_construct_entrynegative. ff_h_pvs_multiply_construct_entrynegative + S (dst_negative_multiply_construct_entry) = S ((S (l)) * dst_negative_scale_multiply_construct_entry)) /\ exists ff_q_pvs_multiply_construct_entrynegative. dst_negative_code_multiply_construct_entry = ff_q_pvs_multiply_construct_entrynegative * S ((S (l)) * dst_negative_scale_multiply_construct_entry) + (dst_negative_multiply_construct_entry))) /\ (exists ge_balance_positive_multiply_construct_entryvalue ge_balance_negative_multiply_construct_entryvalue. (((((x3) = 2 * (ge_balance_positive_multiply_construct_entryvalue) /\ (ge_balance_negative_multiply_construct_entryvalue) = 0) \/ exists ge_signed_half_multiply_construct_entryvaluedecode. (((x3) = 2 * ge_signed_half_multiply_construct_entryvaluedecode + 1 /\ (ge_balance_positive_multiply_construct_entryvalue) = 0) /\ (ge_balance_negative_multiply_construct_entryvalue) = S ge_signed_half_multiply_construct_entryvaluedecode))) /\ ((dst_positive_multiply_construct_entry) + ge_balance_negative_multiply_construct_entryvalue = (dst_negative_multiply_construct_entry) + ge_balance_positive_multiply_construct_entryvalue)))))))))))) - 0060
specialize arithmetic_signed_table_extend_at (l) - 0061
specialize arithmetic_signed_table_extend_at (x) - 0062
specialize arithmetic_signed_table_extend_at (l) - 0063
specialize arithmetic_signed_table_extend_at (x3) - 0064
apply arithmetic_signed_table_extend_at - 0065
cases hp_witness - 0066
cases hp_witness_right - 0067
cases hp_witness_right_right - 0068
exact hp_witness_right_right_left - 0069
cases hnext - 0070
cases hnext_witness - 0071
cases hnext_witness_right - 0072
exists x4 - 0073
specialize signed_table_multiply_extend (F) - 0074
specialize signed_table_multiply_extend (G) - 0075
specialize signed_table_multiply_extend (x) - 0076
specialize signed_table_multiply_extend (x4) - 0077
specialize signed_table_multiply_extend (l) - 0078
specialize signed_table_multiply_extend (x1) - 0079
specialize signed_table_multiply_extend (x2) - 0080
specialize signed_table_multiply_extend (x3) - 0081
apply signed_table_multiply_extend - 0082
exact hp_witness - 0083
exact hnext_witness_left - 0084
exact hnext_witness_right_left - 0085
exact he0_witness - 0086
exact he1_witness - 0087
exact hnext_witness_right_right - 0088
exact hv_witness