MX002F

signed_cartesian_product_flat_lookup

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

An actual in-range product-table lookup supplies real bounded coordinates, both actual source values and their genuine signed product.

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 F G T m n k z. (((exists dst_positive_code_lookup_productF dst_positive_scale_lookup_productF dst_negative_code_lookup_productF dst_negative_scale_lookup_productF. (((F) = (((((dst_positive_code_lookup_productF) + (dst_positive_scale_lookup_productF)) * S ((dst_positive_code_lookup_productF) + (dst_positive_scale_lookup_productF)) + ((dst_positive_scale_lookup_productF) + (dst_positive_scale_lookup_productF))) + (((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) * S ((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) + ((dst_negative_scale_lookup_productF) + (dst_negative_scale_lookup_productF)))) * S ((((dst_positive_code_lookup_productF) + (dst_positive_scale_lookup_productF)) * S ((dst_positive_code_lookup_productF) + (dst_positive_scale_lookup_productF)) + ((dst_positive_scale_lookup_productF) + (dst_positive_scale_lookup_productF))) + (((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) * S ((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) + ((dst_negative_scale_lookup_productF) + (dst_negative_scale_lookup_productF)))) + ((((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) * S ((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) + ((dst_negative_scale_lookup_productF) + (dst_negative_scale_lookup_productF))) + (((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) * S ((dst_negative_code_lookup_productF) + (dst_negative_scale_lookup_productF)) + ((dst_negative_scale_lookup_productF) + (dst_negative_scale_lookup_productF)))))) /\ (forall dst_index_lookup_productF. (exists pvs_le_gap_lookup_productFdomain. pvs_le_gap_lookup_productFdomain + (dst_index_lookup_productF) = (0)) -> exists dst_positive_lookup_productF dst_negative_lookup_productF dst_value_lookup_productF. ((((exists ff_h_pvs_lookup_productFentrypositive. ff_h_pvs_lookup_productFentrypositive + S (dst_positive_lookup_productF) = S ((S (dst_index_lookup_productF)) * dst_positive_scale_lookup_productF)) /\ exists ff_q_pvs_lookup_productFentrypositive. dst_positive_code_lookup_productF = ff_q_pvs_lookup_productFentrypositive * S ((S (dst_index_lookup_productF)) * dst_positive_scale_lookup_productF) + (dst_positive_lookup_productF))) /\ (((((exists ff_h_pvs_lookup_productFentrynegative. ff_h_pvs_lookup_productFentrynegative + S (dst_negative_lookup_productF) = S ((S (dst_index_lookup_productF)) * dst_negative_scale_lookup_productF)) /\ exists ff_q_pvs_lookup_productFentrynegative. dst_negative_code_lookup_productF = ff_q_pvs_lookup_productFentrynegative * S ((S (dst_index_lookup_productF)) * dst_negative_scale_lookup_productF) + (dst_negative_lookup_productF))) /\ (exists ge_balance_positive_lookup_productFentryvalue ge_balance_negative_lookup_productFentryvalue. (((((dst_value_lookup_productF) = 2 * (ge_balance_positive_lookup_productFentryvalue) /\ (ge_balance_negative_lookup_productFentryvalue) = 0) \/ exists ge_signed_half_lookup_productFentryvaluedecode. (((dst_value_lookup_productF) = 2 * ge_signed_half_lookup_productFentryvaluedecode + 1 /\ (ge_balance_positive_lookup_productFentryvalue) = 0) /\ (ge_balance_negative_lookup_productFentryvalue) = S ge_signed_half_lookup_productFentryvaluedecode))) /\ ((dst_positive_lookup_productF) + ge_balance_negative_lookup_productFentryvalue = (dst_negative_lookup_productF) + ge_balance_positive_lookup_productFentryvalue))))))))) /\ (((exists dst_positive_code_lookup_productG dst_positive_scale_lookup_productG dst_negative_code_lookup_productG dst_negative_scale_lookup_productG. (((G) = (((((dst_positive_code_lookup_productG) + (dst_positive_scale_lookup_productG)) * S ((dst_positive_code_lookup_productG) + (dst_positive_scale_lookup_productG)) + ((dst_positive_scale_lookup_productG) + (dst_positive_scale_lookup_productG))) + (((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) * S ((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) + ((dst_negative_scale_lookup_productG) + (dst_negative_scale_lookup_productG)))) * S ((((dst_positive_code_lookup_productG) + (dst_positive_scale_lookup_productG)) * S ((dst_positive_code_lookup_productG) + (dst_positive_scale_lookup_productG)) + ((dst_positive_scale_lookup_productG) + (dst_positive_scale_lookup_productG))) + (((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) * S ((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) + ((dst_negative_scale_lookup_productG) + (dst_negative_scale_lookup_productG)))) + ((((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) * S ((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) + ((dst_negative_scale_lookup_productG) + (dst_negative_scale_lookup_productG))) + (((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) * S ((dst_negative_code_lookup_productG) + (dst_negative_scale_lookup_productG)) + ((dst_negative_scale_lookup_productG) + (dst_negative_scale_lookup_productG)))))) /\ (forall dst_index_lookup_productG. (exists pvs_le_gap_lookup_productGdomain. pvs_le_gap_lookup_productGdomain + (dst_index_lookup_productG) = (0)) -> exists dst_positive_lookup_productG dst_negative_lookup_productG dst_value_lookup_productG. ((((exists ff_h_pvs_lookup_productGentrypositive. ff_h_pvs_lookup_productGentrypositive + S (dst_positive_lookup_productG) = S ((S (dst_index_lookup_productG)) * dst_positive_scale_lookup_productG)) /\ exists ff_q_pvs_lookup_productGentrypositive. dst_positive_code_lookup_productG = ff_q_pvs_lookup_productGentrypositive * S ((S (dst_index_lookup_productG)) * dst_positive_scale_lookup_productG) + (dst_positive_lookup_productG))) /\ (((((exists ff_h_pvs_lookup_productGentrynegative. ff_h_pvs_lookup_productGentrynegative + S (dst_negative_lookup_productG) = S ((S (dst_index_lookup_productG)) * dst_negative_scale_lookup_productG)) /\ exists ff_q_pvs_lookup_productGentrynegative. dst_negative_code_lookup_productG = ff_q_pvs_lookup_productGentrynegative * S ((S (dst_index_lookup_productG)) * dst_negative_scale_lookup_productG) + (dst_negative_lookup_productG))) /\ (exists ge_balance_positive_lookup_productGentryvalue ge_balance_negative_lookup_productGentryvalue. (((((dst_value_lookup_productG) = 2 * (ge_balance_positive_lookup_productGentryvalue) /\ (ge_balance_negative_lookup_productGentryvalue) = 0) \/ exists ge_signed_half_lookup_productGentryvaluedecode. (((dst_value_lookup_productG) = 2 * ge_signed_half_lookup_productGentryvaluedecode + 1 /\ (ge_balance_positive_lookup_productGentryvalue) = 0) /\ (ge_balance_negative_lookup_productGentryvalue) = S ge_signed_half_lookup_productGentryvaluedecode))) /\ ((dst_positive_lookup_productG) + ge_balance_negative_lookup_productGentryvalue = (dst_negative_lookup_productG) + ge_balance_positive_lookup_productGentryvalue))))))))) /\ (((exists dst_positive_code_lookup_productT dst_positive_scale_lookup_productT dst_negative_code_lookup_productT dst_negative_scale_lookup_productT. (((T) = (((((dst_positive_code_lookup_productT) + (dst_positive_scale_lookup_productT)) * S ((dst_positive_code_lookup_productT) + (dst_positive_scale_lookup_productT)) + ((dst_positive_scale_lookup_productT) + (dst_positive_scale_lookup_productT))) + (((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) * S ((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) + ((dst_negative_scale_lookup_productT) + (dst_negative_scale_lookup_productT)))) * S ((((dst_positive_code_lookup_productT) + (dst_positive_scale_lookup_productT)) * S ((dst_positive_code_lookup_productT) + (dst_positive_scale_lookup_productT)) + ((dst_positive_scale_lookup_productT) + (dst_positive_scale_lookup_productT))) + (((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) * S ((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) + ((dst_negative_scale_lookup_productT) + (dst_negative_scale_lookup_productT)))) + ((((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) * S ((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) + ((dst_negative_scale_lookup_productT) + (dst_negative_scale_lookup_productT))) + (((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) * S ((dst_negative_code_lookup_productT) + (dst_negative_scale_lookup_productT)) + ((dst_negative_scale_lookup_productT) + (dst_negative_scale_lookup_productT)))))) /\ (forall dst_index_lookup_productT. (exists pvs_le_gap_lookup_productTdomain. pvs_le_gap_lookup_productTdomain + (dst_index_lookup_productT) = ((m)*(n))) -> exists dst_positive_lookup_productT dst_negative_lookup_productT dst_value_lookup_productT. ((((exists ff_h_pvs_lookup_productTentrypositive. ff_h_pvs_lookup_productTentrypositive + S (dst_positive_lookup_productT) = S ((S (dst_index_lookup_productT)) * dst_positive_scale_lookup_productT)) /\ exists ff_q_pvs_lookup_productTentrypositive. dst_positive_code_lookup_productT = ff_q_pvs_lookup_productTentrypositive * S ((S (dst_index_lookup_productT)) * dst_positive_scale_lookup_productT) + (dst_positive_lookup_productT))) /\ (((((exists ff_h_pvs_lookup_productTentrynegative. ff_h_pvs_lookup_productTentrynegative + S (dst_negative_lookup_productT) = S ((S (dst_index_lookup_productT)) * dst_negative_scale_lookup_productT)) /\ exists ff_q_pvs_lookup_productTentrynegative. dst_negative_code_lookup_productT = ff_q_pvs_lookup_productTentrynegative * S ((S (dst_index_lookup_productT)) * dst_negative_scale_lookup_productT) + (dst_negative_lookup_productT))) /\ (exists ge_balance_positive_lookup_productTentryvalue ge_balance_negative_lookup_productTentryvalue. (((((dst_value_lookup_productT) = 2 * (ge_balance_positive_lookup_productTentryvalue) /\ (ge_balance_negative_lookup_productTentryvalue) = 0) \/ exists ge_signed_half_lookup_productTentryvaluedecode. (((dst_value_lookup_productT) = 2 * ge_signed_half_lookup_productTentryvaluedecode + 1 /\ (ge_balance_positive_lookup_productTentryvalue) = 0) /\ (ge_balance_negative_lookup_productTentryvalue) = S ge_signed_half_lookup_productTentryvaluedecode))) /\ ((dst_positive_lookup_productT) + ge_balance_negative_lookup_productTentryvalue = (dst_negative_lookup_productT) + ge_balance_positive_lookup_productTentryvalue))))))))) /\ (forall scp_row_lookup_product scp_column_lookup_product scp_first_lookup_product scp_second_lookup_product scp_value_lookup_product. (exists pvs_gap_lookup_productrows. pvs_gap_lookup_productrows + S (scp_row_lookup_product) = (m)) -> (exists pvs_gap_lookup_productcolumns. pvs_gap_lookup_productcolumns + S (scp_column_lookup_product) = (n)) -> (exists dst_positive_code_lookup_productfirst dst_positive_scale_lookup_productfirst dst_negative_code_lookup_productfirst dst_negative_scale_lookup_productfirst dst_positive_lookup_productfirst dst_negative_lookup_productfirst. (((F) = (((((dst_positive_code_lookup_productfirst) + (dst_positive_scale_lookup_productfirst)) * S ((dst_positive_code_lookup_productfirst) + (dst_positive_scale_lookup_productfirst)) + ((dst_positive_scale_lookup_productfirst) + (dst_positive_scale_lookup_productfirst))) + (((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) * S ((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) + ((dst_negative_scale_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)))) * S ((((dst_positive_code_lookup_productfirst) + (dst_positive_scale_lookup_productfirst)) * S ((dst_positive_code_lookup_productfirst) + (dst_positive_scale_lookup_productfirst)) + ((dst_positive_scale_lookup_productfirst) + (dst_positive_scale_lookup_productfirst))) + (((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) * S ((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) + ((dst_negative_scale_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)))) + ((((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) * S ((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) + ((dst_negative_scale_lookup_productfirst) + (dst_negative_scale_lookup_productfirst))) + (((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) * S ((dst_negative_code_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)) + ((dst_negative_scale_lookup_productfirst) + (dst_negative_scale_lookup_productfirst)))))) /\ (((((exists ff_h_pvs_lookup_productfirstpositive. ff_h_pvs_lookup_productfirstpositive + S (dst_positive_lookup_productfirst) = S ((S (scp_row_lookup_product)) * dst_positive_scale_lookup_productfirst)) /\ exists ff_q_pvs_lookup_productfirstpositive. dst_positive_code_lookup_productfirst = ff_q_pvs_lookup_productfirstpositive * S ((S (scp_row_lookup_product)) * dst_positive_scale_lookup_productfirst) + (dst_positive_lookup_productfirst))) /\ (((((exists ff_h_pvs_lookup_productfirstnegative. ff_h_pvs_lookup_productfirstnegative + S (dst_negative_lookup_productfirst) = S ((S (scp_row_lookup_product)) * dst_negative_scale_lookup_productfirst)) /\ exists ff_q_pvs_lookup_productfirstnegative. dst_negative_code_lookup_productfirst = ff_q_pvs_lookup_productfirstnegative * S ((S (scp_row_lookup_product)) * dst_negative_scale_lookup_productfirst) + (dst_negative_lookup_productfirst))) /\ (exists ge_balance_positive_lookup_productfirstvalue ge_balance_negative_lookup_productfirstvalue. (((((scp_first_lookup_product) = 2 * (ge_balance_positive_lookup_productfirstvalue) /\ (ge_balance_negative_lookup_productfirstvalue) = 0) \/ exists ge_signed_half_lookup_productfirstvaluedecode. (((scp_first_lookup_product) = 2 * ge_signed_half_lookup_productfirstvaluedecode + 1 /\ (ge_balance_positive_lookup_productfirstvalue) = 0) /\ (ge_balance_negative_lookup_productfirstvalue) = S ge_signed_half_lookup_productfirstvaluedecode))) /\ ((dst_positive_lookup_productfirst) + ge_balance_negative_lookup_productfirstvalue = (dst_negative_lookup_productfirst) + ge_balance_positive_lookup_productfirstvalue))))))))) -> (exists dst_positive_code_lookup_productsecond dst_positive_scale_lookup_productsecond dst_negative_code_lookup_productsecond dst_negative_scale_lookup_productsecond dst_positive_lookup_productsecond dst_negative_lookup_productsecond. (((G) = (((((dst_positive_code_lookup_productsecond) + (dst_positive_scale_lookup_productsecond)) * S ((dst_positive_code_lookup_productsecond) + (dst_positive_scale_lookup_productsecond)) + ((dst_positive_scale_lookup_productsecond) + (dst_positive_scale_lookup_productsecond))) + (((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) * S ((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) + ((dst_negative_scale_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)))) * S ((((dst_positive_code_lookup_productsecond) + (dst_positive_scale_lookup_productsecond)) * S ((dst_positive_code_lookup_productsecond) + (dst_positive_scale_lookup_productsecond)) + ((dst_positive_scale_lookup_productsecond) + (dst_positive_scale_lookup_productsecond))) + (((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) * S ((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) + ((dst_negative_scale_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)))) + ((((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) * S ((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) + ((dst_negative_scale_lookup_productsecond) + (dst_negative_scale_lookup_productsecond))) + (((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) * S ((dst_negative_code_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)) + ((dst_negative_scale_lookup_productsecond) + (dst_negative_scale_lookup_productsecond)))))) /\ (((((exists ff_h_pvs_lookup_productsecondpositive. ff_h_pvs_lookup_productsecondpositive + S (dst_positive_lookup_productsecond) = S ((S (scp_column_lookup_product)) * dst_positive_scale_lookup_productsecond)) /\ exists ff_q_pvs_lookup_productsecondpositive. dst_positive_code_lookup_productsecond = ff_q_pvs_lookup_productsecondpositive * S ((S (scp_column_lookup_product)) * dst_positive_scale_lookup_productsecond) + (dst_positive_lookup_productsecond))) /\ (((((exists ff_h_pvs_lookup_productsecondnegative. ff_h_pvs_lookup_productsecondnegative + S (dst_negative_lookup_productsecond) = S ((S (scp_column_lookup_product)) * dst_negative_scale_lookup_productsecond)) /\ exists ff_q_pvs_lookup_productsecondnegative. dst_negative_code_lookup_productsecond = ff_q_pvs_lookup_productsecondnegative * S ((S (scp_column_lookup_product)) * dst_negative_scale_lookup_productsecond) + (dst_negative_lookup_productsecond))) /\ (exists ge_balance_positive_lookup_productsecondvalue ge_balance_negative_lookup_productsecondvalue. (((((scp_second_lookup_product) = 2 * (ge_balance_positive_lookup_productsecondvalue) /\ (ge_balance_negative_lookup_productsecondvalue) = 0) \/ exists ge_signed_half_lookup_productsecondvaluedecode. (((scp_second_lookup_product) = 2 * ge_signed_half_lookup_productsecondvaluedecode + 1 /\ (ge_balance_positive_lookup_productsecondvalue) = 0) /\ (ge_balance_negative_lookup_productsecondvalue) = S ge_signed_half_lookup_productsecondvaluedecode))) /\ ((dst_positive_lookup_productsecond) + ge_balance_negative_lookup_productsecondvalue = (dst_negative_lookup_productsecond) + ge_balance_positive_lookup_productsecondvalue))))))))) -> (exists dst_positive_code_lookup_productentry dst_positive_scale_lookup_productentry dst_negative_code_lookup_productentry dst_negative_scale_lookup_productentry dst_positive_lookup_productentry dst_negative_lookup_productentry. (((T) = (((((dst_positive_code_lookup_productentry) + (dst_positive_scale_lookup_productentry)) * S ((dst_positive_code_lookup_productentry) + (dst_positive_scale_lookup_productentry)) + ((dst_positive_scale_lookup_productentry) + (dst_positive_scale_lookup_productentry))) + (((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) * S ((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) + ((dst_negative_scale_lookup_productentry) + (dst_negative_scale_lookup_productentry)))) * S ((((dst_positive_code_lookup_productentry) + (dst_positive_scale_lookup_productentry)) * S ((dst_positive_code_lookup_productentry) + (dst_positive_scale_lookup_productentry)) + ((dst_positive_scale_lookup_productentry) + (dst_positive_scale_lookup_productentry))) + (((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) * S ((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) + ((dst_negative_scale_lookup_productentry) + (dst_negative_scale_lookup_productentry)))) + ((((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) * S ((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) + ((dst_negative_scale_lookup_productentry) + (dst_negative_scale_lookup_productentry))) + (((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) * S ((dst_negative_code_lookup_productentry) + (dst_negative_scale_lookup_productentry)) + ((dst_negative_scale_lookup_productentry) + (dst_negative_scale_lookup_productentry)))))) /\ (((((exists ff_h_pvs_lookup_productentrypositive. ff_h_pvs_lookup_productentrypositive + S (dst_positive_lookup_productentry) = S ((S (((n)*(scp_row_lookup_product)+(scp_column_lookup_product)))) * dst_positive_scale_lookup_productentry)) /\ exists ff_q_pvs_lookup_productentrypositive. dst_positive_code_lookup_productentry = ff_q_pvs_lookup_productentrypositive * S ((S (((n)*(scp_row_lookup_product)+(scp_column_lookup_product)))) * dst_positive_scale_lookup_productentry) + (dst_positive_lookup_productentry))) /\ (((((exists ff_h_pvs_lookup_productentrynegative. ff_h_pvs_lookup_productentrynegative + S (dst_negative_lookup_productentry) = S ((S (((n)*(scp_row_lookup_product)+(scp_column_lookup_product)))) * dst_negative_scale_lookup_productentry)) /\ exists ff_q_pvs_lookup_productentrynegative. dst_negative_code_lookup_productentry = ff_q_pvs_lookup_productentrynegative * S ((S (((n)*(scp_row_lookup_product)+(scp_column_lookup_product)))) * dst_negative_scale_lookup_productentry) + (dst_negative_lookup_productentry))) /\ (exists ge_balance_positive_lookup_productentryvalue ge_balance_negative_lookup_productentryvalue. (((((scp_value_lookup_product) = 2 * (ge_balance_positive_lookup_productentryvalue) /\ (ge_balance_negative_lookup_productentryvalue) = 0) \/ exists ge_signed_half_lookup_productentryvaluedecode. (((scp_value_lookup_product) = 2 * ge_signed_half_lookup_productentryvaluedecode + 1 /\ (ge_balance_positive_lookup_productentryvalue) = 0) /\ (ge_balance_negative_lookup_productentryvalue) = S ge_signed_half_lookup_productentryvaluedecode))) /\ ((dst_positive_lookup_productentry) + ge_balance_negative_lookup_productentryvalue = (dst_negative_lookup_productentry) + ge_balance_positive_lookup_productentryvalue))))))))) -> (exists sto_ap_lookup_productmultiply sto_an_lookup_productmultiply sto_bp_lookup_productmultiply sto_bn_lookup_productmultiply sto_cp_lookup_productmultiply sto_cn_lookup_productmultiply. (((((scp_first_lookup_product) = 2 * (sto_ap_lookup_productmultiply) /\ (sto_an_lookup_productmultiply) = 0) \/ exists ge_signed_half_lookup_productmultiplyleft. (((scp_first_lookup_product) = 2 * ge_signed_half_lookup_productmultiplyleft + 1 /\ (sto_ap_lookup_productmultiply) = 0) /\ (sto_an_lookup_productmultiply) = S ge_signed_half_lookup_productmultiplyleft))) /\ ((((((scp_second_lookup_product) = 2 * (sto_bp_lookup_productmultiply) /\ (sto_bn_lookup_productmultiply) = 0) \/ exists ge_signed_half_lookup_productmultiplyright. (((scp_second_lookup_product) = 2 * ge_signed_half_lookup_productmultiplyright + 1 /\ (sto_bp_lookup_productmultiply) = 0) /\ (sto_bn_lookup_productmultiply) = S ge_signed_half_lookup_productmultiplyright))) /\ ((((((scp_value_lookup_product) = 2 * (sto_cp_lookup_productmultiply) /\ (sto_cn_lookup_productmultiply) = 0) \/ exists ge_signed_half_lookup_productmultiplyoutput. (((scp_value_lookup_product) = 2 * ge_signed_half_lookup_productmultiplyoutput + 1 /\ (sto_cp_lookup_productmultiply) = 0) /\ (sto_cn_lookup_productmultiply) = S ge_signed_half_lookup_productmultiplyoutput))) /\ ((sto_ap_lookup_productmultiply * sto_bp_lookup_productmultiply + sto_an_lookup_productmultiply * sto_bn_lookup_productmultiply) + sto_cn_lookup_productmultiply = (sto_ap_lookup_productmultiply * sto_bn_lookup_productmultiply + sto_an_lookup_productmultiply * sto_bp_lookup_productmultiply) + sto_cp_lookup_productmultiply)))))))))))))) -> (exists pvs_gap_lookup_bound. pvs_gap_lookup_bound + S (k) = (m*n)) -> (exists dst_positive_code_lookup_value dst_positive_scale_lookup_value dst_negative_code_lookup_value dst_negative_scale_lookup_value dst_positive_lookup_value dst_negative_lookup_value. (((T) = (((((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) * S ((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) + ((dst_positive_scale_lookup_value) + (dst_positive_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))) * S ((((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) * S ((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) + ((dst_positive_scale_lookup_value) + (dst_positive_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))) + ((((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))))) /\ (((((exists ff_h_pvs_lookup_valuepositive. ff_h_pvs_lookup_valuepositive + S (dst_positive_lookup_value) = S ((S (k)) * dst_positive_scale_lookup_value)) /\ exists ff_q_pvs_lookup_valuepositive. dst_positive_code_lookup_value = ff_q_pvs_lookup_valuepositive * S ((S (k)) * dst_positive_scale_lookup_value) + (dst_positive_lookup_value))) /\ (((((exists ff_h_pvs_lookup_valuenegative. ff_h_pvs_lookup_valuenegative + S (dst_negative_lookup_value) = S ((S (k)) * dst_negative_scale_lookup_value)) /\ exists ff_q_pvs_lookup_valuenegative. dst_negative_code_lookup_value = ff_q_pvs_lookup_valuenegative * S ((S (k)) * dst_negative_scale_lookup_value) + (dst_negative_lookup_value))) /\ (exists ge_balance_positive_lookup_valuevalue ge_balance_negative_lookup_valuevalue. (((((z) = 2 * (ge_balance_positive_lookup_valuevalue) /\ (ge_balance_negative_lookup_valuevalue) = 0) \/ exists ge_signed_half_lookup_valuevaluedecode. (((z) = 2 * ge_signed_half_lookup_valuevaluedecode + 1 /\ (ge_balance_positive_lookup_valuevalue) = 0) /\ (ge_balance_negative_lookup_valuevalue) = S ge_signed_half_lookup_valuevaluedecode))) /\ ((dst_positive_lookup_value) + ge_balance_negative_lookup_valuevalue = (dst_negative_lookup_value) + ge_balance_positive_lookup_valuevalue))))))))) -> exists d e a b. ((k=n*d+e) /\ (((exists pvs_gap_lookup_row. pvs_gap_lookup_row + S (d) = (m)) /\ (((exists pvs_gap_lookup_column. pvs_gap_lookup_column + S (e) = (n)) /\ (((exists dst_positive_code_lookup_F dst_positive_scale_lookup_F dst_negative_code_lookup_F dst_negative_scale_lookup_F dst_positive_lookup_F dst_negative_lookup_F. (((F) = (((((dst_positive_code_lookup_F) + (dst_positive_scale_lookup_F)) * S ((dst_positive_code_lookup_F) + (dst_positive_scale_lookup_F)) + ((dst_positive_scale_lookup_F) + (dst_positive_scale_lookup_F))) + (((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) * S ((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) + ((dst_negative_scale_lookup_F) + (dst_negative_scale_lookup_F)))) * S ((((dst_positive_code_lookup_F) + (dst_positive_scale_lookup_F)) * S ((dst_positive_code_lookup_F) + (dst_positive_scale_lookup_F)) + ((dst_positive_scale_lookup_F) + (dst_positive_scale_lookup_F))) + (((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) * S ((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) + ((dst_negative_scale_lookup_F) + (dst_negative_scale_lookup_F)))) + ((((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) * S ((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) + ((dst_negative_scale_lookup_F) + (dst_negative_scale_lookup_F))) + (((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) * S ((dst_negative_code_lookup_F) + (dst_negative_scale_lookup_F)) + ((dst_negative_scale_lookup_F) + (dst_negative_scale_lookup_F)))))) /\ (((((exists ff_h_pvs_lookup_Fpositive. ff_h_pvs_lookup_Fpositive + S (dst_positive_lookup_F) = S ((S (d)) * dst_positive_scale_lookup_F)) /\ exists ff_q_pvs_lookup_Fpositive. dst_positive_code_lookup_F = ff_q_pvs_lookup_Fpositive * S ((S (d)) * dst_positive_scale_lookup_F) + (dst_positive_lookup_F))) /\ (((((exists ff_h_pvs_lookup_Fnegative. ff_h_pvs_lookup_Fnegative + S (dst_negative_lookup_F) = S ((S (d)) * dst_negative_scale_lookup_F)) /\ exists ff_q_pvs_lookup_Fnegative. dst_negative_code_lookup_F = ff_q_pvs_lookup_Fnegative * S ((S (d)) * dst_negative_scale_lookup_F) + (dst_negative_lookup_F))) /\ (exists ge_balance_positive_lookup_Fvalue ge_balance_negative_lookup_Fvalue. (((((a) = 2 * (ge_balance_positive_lookup_Fvalue) /\ (ge_balance_negative_lookup_Fvalue) = 0) \/ exists ge_signed_half_lookup_Fvaluedecode. (((a) = 2 * ge_signed_half_lookup_Fvaluedecode + 1 /\ (ge_balance_positive_lookup_Fvalue) = 0) /\ (ge_balance_negative_lookup_Fvalue) = S ge_signed_half_lookup_Fvaluedecode))) /\ ((dst_positive_lookup_F) + ge_balance_negative_lookup_Fvalue = (dst_negative_lookup_F) + ge_balance_positive_lookup_Fvalue))))))))) /\ (((exists dst_positive_code_lookup_G dst_positive_scale_lookup_G dst_negative_code_lookup_G dst_negative_scale_lookup_G dst_positive_lookup_G dst_negative_lookup_G. (((G) = (((((dst_positive_code_lookup_G) + (dst_positive_scale_lookup_G)) * S ((dst_positive_code_lookup_G) + (dst_positive_scale_lookup_G)) + ((dst_positive_scale_lookup_G) + (dst_positive_scale_lookup_G))) + (((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) * S ((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) + ((dst_negative_scale_lookup_G) + (dst_negative_scale_lookup_G)))) * S ((((dst_positive_code_lookup_G) + (dst_positive_scale_lookup_G)) * S ((dst_positive_code_lookup_G) + (dst_positive_scale_lookup_G)) + ((dst_positive_scale_lookup_G) + (dst_positive_scale_lookup_G))) + (((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) * S ((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) + ((dst_negative_scale_lookup_G) + (dst_negative_scale_lookup_G)))) + ((((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) * S ((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) + ((dst_negative_scale_lookup_G) + (dst_negative_scale_lookup_G))) + (((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) * S ((dst_negative_code_lookup_G) + (dst_negative_scale_lookup_G)) + ((dst_negative_scale_lookup_G) + (dst_negative_scale_lookup_G)))))) /\ (((((exists ff_h_pvs_lookup_Gpositive. ff_h_pvs_lookup_Gpositive + S (dst_positive_lookup_G) = S ((S (e)) * dst_positive_scale_lookup_G)) /\ exists ff_q_pvs_lookup_Gpositive. dst_positive_code_lookup_G = ff_q_pvs_lookup_Gpositive * S ((S (e)) * dst_positive_scale_lookup_G) + (dst_positive_lookup_G))) /\ (((((exists ff_h_pvs_lookup_Gnegative. ff_h_pvs_lookup_Gnegative + S (dst_negative_lookup_G) = S ((S (e)) * dst_negative_scale_lookup_G)) /\ exists ff_q_pvs_lookup_Gnegative. dst_negative_code_lookup_G = ff_q_pvs_lookup_Gnegative * S ((S (e)) * dst_negative_scale_lookup_G) + (dst_negative_lookup_G))) /\ (exists ge_balance_positive_lookup_Gvalue ge_balance_negative_lookup_Gvalue. (((((b) = 2 * (ge_balance_positive_lookup_Gvalue) /\ (ge_balance_negative_lookup_Gvalue) = 0) \/ exists ge_signed_half_lookup_Gvaluedecode. (((b) = 2 * ge_signed_half_lookup_Gvaluedecode + 1 /\ (ge_balance_positive_lookup_Gvalue) = 0) /\ (ge_balance_negative_lookup_Gvalue) = S ge_signed_half_lookup_Gvaluedecode))) /\ ((dst_positive_lookup_G) + ge_balance_negative_lookup_Gvalue = (dst_negative_lookup_G) + ge_balance_positive_lookup_Gvalue))))))))) /\ (exists sto_ap_lookup_result sto_an_lookup_result sto_bp_lookup_result sto_bn_lookup_result sto_cp_lookup_result sto_cn_lookup_result. (((((a) = 2 * (sto_ap_lookup_result) /\ (sto_an_lookup_result) = 0) \/ exists ge_signed_half_lookup_resultleft. (((a) = 2 * ge_signed_half_lookup_resultleft + 1 /\ (sto_ap_lookup_result) = 0) /\ (sto_an_lookup_result) = S ge_signed_half_lookup_resultleft))) /\ ((((((b) = 2 * (sto_bp_lookup_result) /\ (sto_bn_lookup_result) = 0) \/ exists ge_signed_half_lookup_resultright. (((b) = 2 * ge_signed_half_lookup_resultright + 1 /\ (sto_bp_lookup_result) = 0) /\ (sto_bn_lookup_result) = S ge_signed_half_lookup_resultright))) /\ ((((((z) = 2 * (sto_cp_lookup_result) /\ (sto_cn_lookup_result) = 0) \/ exists ge_signed_half_lookup_resultoutput. (((z) = 2 * ge_signed_half_lookup_resultoutput + 1 /\ (sto_cp_lookup_result) = 0) /\ (sto_cn_lookup_result) = S ge_signed_half_lookup_resultoutput))) /\ ((sto_ap_lookup_result * sto_bp_lookup_result + sto_an_lookup_result * sto_bn_lookup_result) + sto_cn_lookup_result = (sto_ap_lookup_result * sto_bn_lookup_result + sto_an_lookup_result * sto_bp_lookup_result) + sto_cp_lookup_result))))))))))))))))

Constructive proof overview

Generated structural guide

An actual in-range product-table lookup supplies real bounded coordinates, both actual source values and their genuine signed product.

The unchanged tactic script uses 2 declared prerequisites and contains 66 exact native proof lines.

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

Proof neighborhood

Direct dependencies

MX002E signed_cartesian_coordinates_exists signed_table_lookup_any Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

66 script commands · 22 reading checkpoints · 3 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Named ingredients (1)

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

01Fix variables and assumptionsL1–10

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

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro T
  4. L4
    intro m
  5. L5
    intro n
  6. L6
    intro k
  7. L7
    intro z
  8. L8
    intro hp
  9. L9
    intro hk
  10. L10
    intro hz
02Separate the logical casesL11–13

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

  1. L11
    cases hp
  2. L12
    cases hp_right
  3. L13
    cases hp_right_right
03Establish hdL14–19

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

  1. L14
    have hd : exists scp_coordinate_row_lookup_coordinates scp_coordinate_column_lookup_coordinates. (((k)=((n)*(scp_coordinate_row_lookup_coordinates)+(scp_coordinate_column_lookup_coordinates))) /\ (((exists pvs_gap_lookup_coordinatesrow. pvs_gap_lookup_coordinatesrow + S (scp_coordinate_row_lookup_coordinates) = (m)) /\ (exists pvs_gap_lookup_coordinatescolumn. pvs_gap_lookup_coordinatescolumn + S (scp_coordinate_column_lookup_coordinates) = (n)))))
  2. L15
    specialize signed_cartesian_coordinates_exists (m)
  3. L16
    specialize signed_cartesian_coordinates_exists (n)
  4. L17
    specialize signed_cartesian_coordinates_exists (k)
  5. L18
    apply signed_cartesian_coordinates_exists
  6. L19
    exact hk
04Separate the logical casesL20–23

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

  1. L20
    cases hd
  2. L21
    cases hd_witness
  3. L22
    cases hd_witness_witness
  4. L23
    cases hd_witness_witness_right
05Establish haL24–29

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

  1. L24
    have ha : ∃ a. ArithAt(F,x,a)Definitions: ArithAt
  2. L25
    specialize signed_table_lookup_any (0)
  3. L26
    specialize signed_table_lookup_any (F)
  4. L27
    specialize signed_table_lookup_any (x)
  5. L28
    apply signed_table_lookup_any
  6. L29
    exact hp_left
06Separate the logical casesL30–30

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

  1. L30
    cases ha
07Establish hbL31–36

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

  1. L31
    have hb : ∃ b. ArithAt(G,x1,b)Definitions: ArithAt
  2. L32
    specialize signed_table_lookup_any (0)
  3. L33
    specialize signed_table_lookup_any (G)
  4. L34
    specialize signed_table_lookup_any (x1)
  5. L35
    apply signed_table_lookup_any
  6. L36
    exact hp_right_left
08Separate the logical casesL37–37

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

  1. L37
    cases hb
09Construct an explicit witnessL38–41

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

  1. L38
    exists x
  2. L39
    exists x1
  3. L40
    exists x2
  4. L41
    exists x3
10Separate the logical casesL42–42

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

  1. L42
    split
11Use earlier factsL43–43

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

  1. L43
    exact hd_witness_witness_left
12Separate the logical casesL44–44

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

  1. L44
    split
13Use earlier factsL45–45

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

  1. L45
    exact hd_witness_witness_right_left
14Separate the logical casesL46–46

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

  1. L46
    split
15Use earlier factsL47–47

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

  1. L47
    exact hd_witness_witness_right_right
16Separate the logical casesL48–48

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

  1. L48
    split
17Use earlier factsL49–49

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

  1. L49
    exact ha_witness
18Separate the logical casesL50–50

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

  1. L50
    split
19Use earlier factsL51–60

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

  1. L51
    exact hb_witness
  2. L52
    specialize hp_right_right_right (x)
  3. L53
    specialize hp_right_right_right (x1)
  4. L54
    specialize hp_right_right_right (x2)
  5. L55
    specialize hp_right_right_right (x3)
  6. L56
    specialize hp_right_right_right (z)
  7. L57
    apply hp_right_right_right
  8. L58
    exact hd_witness_witness_right_left
  9. L59
    exact hd_witness_witness_right_right
  10. L60
    exact ha_witness
20Use earlier factsL61–61

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

  1. L61
    exact hb_witness
21Calculate and transport equalitiesL62–65

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

  1. L62
    rewrite hd_witness_witness_left at hz
  2. L63
    rewrite hd_witness_witness_left at hz
  3. L64
    rewrite hd_witness_witness_left at hz
  4. L65
    rewrite hd_witness_witness_left at hz
22Use earlier factsL66–66

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

  1. L66
    exact hz

Library-wide reading audit

Original exact command ledger · 66 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro T
  4. 0004intro m
  5. 0005intro n
  6. 0006intro k
  7. 0007intro z
  8. 0008intro hp
  9. 0009intro hk
  10. 0010intro hz
  11. 0011cases hp
  12. 0012cases hp_right
  13. 0013cases hp_right_right
  14. 0014have hd : exists scp_coordinate_row_lookup_coordinates scp_coordinate_column_lookup_coordinates. (((k)=((n)*(scp_coordinate_row_lookup_coordinates)+(scp_coordinate_column_lookup_coordinates))) /\ (((exists pvs_gap_lookup_coordinatesrow. pvs_gap_lookup_coordinatesrow + S (scp_coordinate_row_lookup_coordinates) = (m)) /\ (exists pvs_gap_lookup_coordinatescolumn. pvs_gap_lookup_coordinatescolumn + S (scp_coordinate_column_lookup_coordinates) = (n)))))
  15. 0015specialize signed_cartesian_coordinates_exists (m)
  16. 0016specialize signed_cartesian_coordinates_exists (n)
  17. 0017specialize signed_cartesian_coordinates_exists (k)
  18. 0018apply signed_cartesian_coordinates_exists
  19. 0019exact hk
  20. 0020cases hd
  21. 0021cases hd_witness
  22. 0022cases hd_witness_witness
  23. 0023cases hd_witness_witness_right
  24. 0024have ha : exists a. (exists dst_positive_code_lookup_first dst_positive_scale_lookup_first dst_negative_code_lookup_first dst_negative_scale_lookup_first dst_positive_lookup_first dst_negative_lookup_first. (((F) = (((((dst_positive_code_lookup_first) + (dst_positive_scale_lookup_first)) * S ((dst_positive_code_lookup_first) + (dst_positive_scale_lookup_first)) + ((dst_positive_scale_lookup_first) + (dst_positive_scale_lookup_first))) + (((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) * S ((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) + ((dst_negative_scale_lookup_first) + (dst_negative_scale_lookup_first)))) * S ((((dst_positive_code_lookup_first) + (dst_positive_scale_lookup_first)) * S ((dst_positive_code_lookup_first) + (dst_positive_scale_lookup_first)) + ((dst_positive_scale_lookup_first) + (dst_positive_scale_lookup_first))) + (((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) * S ((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) + ((dst_negative_scale_lookup_first) + (dst_negative_scale_lookup_first)))) + ((((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) * S ((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) + ((dst_negative_scale_lookup_first) + (dst_negative_scale_lookup_first))) + (((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) * S ((dst_negative_code_lookup_first) + (dst_negative_scale_lookup_first)) + ((dst_negative_scale_lookup_first) + (dst_negative_scale_lookup_first)))))) /\ (((((exists ff_h_pvs_lookup_firstpositive. ff_h_pvs_lookup_firstpositive + S (dst_positive_lookup_first) = S ((S (x)) * dst_positive_scale_lookup_first)) /\ exists ff_q_pvs_lookup_firstpositive. dst_positive_code_lookup_first = ff_q_pvs_lookup_firstpositive * S ((S (x)) * dst_positive_scale_lookup_first) + (dst_positive_lookup_first))) /\ (((((exists ff_h_pvs_lookup_firstnegative. ff_h_pvs_lookup_firstnegative + S (dst_negative_lookup_first) = S ((S (x)) * dst_negative_scale_lookup_first)) /\ exists ff_q_pvs_lookup_firstnegative. dst_negative_code_lookup_first = ff_q_pvs_lookup_firstnegative * S ((S (x)) * dst_negative_scale_lookup_first) + (dst_negative_lookup_first))) /\ (exists ge_balance_positive_lookup_firstvalue ge_balance_negative_lookup_firstvalue. (((((a) = 2 * (ge_balance_positive_lookup_firstvalue) /\ (ge_balance_negative_lookup_firstvalue) = 0) \/ exists ge_signed_half_lookup_firstvaluedecode. (((a) = 2 * ge_signed_half_lookup_firstvaluedecode + 1 /\ (ge_balance_positive_lookup_firstvalue) = 0) /\ (ge_balance_negative_lookup_firstvalue) = S ge_signed_half_lookup_firstvaluedecode))) /\ ((dst_positive_lookup_first) + ge_balance_negative_lookup_firstvalue = (dst_negative_lookup_first) + ge_balance_positive_lookup_firstvalue)))))))))
  25. 0025specialize signed_table_lookup_any (0)
  26. 0026specialize signed_table_lookup_any (F)
  27. 0027specialize signed_table_lookup_any (x)
  28. 0028apply signed_table_lookup_any
  29. 0029exact hp_left
  30. 0030cases ha
  31. 0031have hb : exists b. (exists dst_positive_code_lookup_second dst_positive_scale_lookup_second dst_negative_code_lookup_second dst_negative_scale_lookup_second dst_positive_lookup_second dst_negative_lookup_second. (((G) = (((((dst_positive_code_lookup_second) + (dst_positive_scale_lookup_second)) * S ((dst_positive_code_lookup_second) + (dst_positive_scale_lookup_second)) + ((dst_positive_scale_lookup_second) + (dst_positive_scale_lookup_second))) + (((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) * S ((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) + ((dst_negative_scale_lookup_second) + (dst_negative_scale_lookup_second)))) * S ((((dst_positive_code_lookup_second) + (dst_positive_scale_lookup_second)) * S ((dst_positive_code_lookup_second) + (dst_positive_scale_lookup_second)) + ((dst_positive_scale_lookup_second) + (dst_positive_scale_lookup_second))) + (((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) * S ((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) + ((dst_negative_scale_lookup_second) + (dst_negative_scale_lookup_second)))) + ((((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) * S ((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) + ((dst_negative_scale_lookup_second) + (dst_negative_scale_lookup_second))) + (((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) * S ((dst_negative_code_lookup_second) + (dst_negative_scale_lookup_second)) + ((dst_negative_scale_lookup_second) + (dst_negative_scale_lookup_second)))))) /\ (((((exists ff_h_pvs_lookup_secondpositive. ff_h_pvs_lookup_secondpositive + S (dst_positive_lookup_second) = S ((S (x1)) * dst_positive_scale_lookup_second)) /\ exists ff_q_pvs_lookup_secondpositive. dst_positive_code_lookup_second = ff_q_pvs_lookup_secondpositive * S ((S (x1)) * dst_positive_scale_lookup_second) + (dst_positive_lookup_second))) /\ (((((exists ff_h_pvs_lookup_secondnegative. ff_h_pvs_lookup_secondnegative + S (dst_negative_lookup_second) = S ((S (x1)) * dst_negative_scale_lookup_second)) /\ exists ff_q_pvs_lookup_secondnegative. dst_negative_code_lookup_second = ff_q_pvs_lookup_secondnegative * S ((S (x1)) * dst_negative_scale_lookup_second) + (dst_negative_lookup_second))) /\ (exists ge_balance_positive_lookup_secondvalue ge_balance_negative_lookup_secondvalue. (((((b) = 2 * (ge_balance_positive_lookup_secondvalue) /\ (ge_balance_negative_lookup_secondvalue) = 0) \/ exists ge_signed_half_lookup_secondvaluedecode. (((b) = 2 * ge_signed_half_lookup_secondvaluedecode + 1 /\ (ge_balance_positive_lookup_secondvalue) = 0) /\ (ge_balance_negative_lookup_secondvalue) = S ge_signed_half_lookup_secondvaluedecode))) /\ ((dst_positive_lookup_second) + ge_balance_negative_lookup_secondvalue = (dst_negative_lookup_second) + ge_balance_positive_lookup_secondvalue)))))))))
  32. 0032specialize signed_table_lookup_any (0)
  33. 0033specialize signed_table_lookup_any (G)
  34. 0034specialize signed_table_lookup_any (x1)
  35. 0035apply signed_table_lookup_any
  36. 0036exact hp_right_left
  37. 0037cases hb
  38. 0038exists x
  39. 0039exists x1
  40. 0040exists x2
  41. 0041exists x3
  42. 0042split
  43. 0043exact hd_witness_witness_left
  44. 0044split
  45. 0045exact hd_witness_witness_right_left
  46. 0046split
  47. 0047exact hd_witness_witness_right_right
  48. 0048split
  49. 0049exact ha_witness
  50. 0050split
  51. 0051exact hb_witness
  52. 0052specialize hp_right_right_right (x)
  53. 0053specialize hp_right_right_right (x1)
  54. 0054specialize hp_right_right_right (x2)
  55. 0055specialize hp_right_right_right (x3)
  56. 0056specialize hp_right_right_right (z)
  57. 0057apply hp_right_right_right
  58. 0058exact hd_witness_witness_right_left
  59. 0059exact hd_witness_witness_right_right
  60. 0060exact ha_witness
  61. 0061exact hb_witness
  62. 0062rewrite hd_witness_witness_left at hz
  63. 0063rewrite hd_witness_witness_left at hz
  64. 0064rewrite hd_witness_witness_left at hz
  65. 0065rewrite hd_witness_witness_left at hz
  66. 0066exact hz