MX0027

signed_cartesian_product_row_scalar

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

Each actual row slice is a genuine pointwise scalar product by its actual first-input value.

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 V m n i a. (((exists dst_positive_code_row_productF dst_positive_scale_row_productF dst_negative_code_row_productF dst_negative_scale_row_productF. (((F) = (((((dst_positive_code_row_productF) + (dst_positive_scale_row_productF)) * S ((dst_positive_code_row_productF) + (dst_positive_scale_row_productF)) + ((dst_positive_scale_row_productF) + (dst_positive_scale_row_productF))) + (((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) * S ((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) + ((dst_negative_scale_row_productF) + (dst_negative_scale_row_productF)))) * S ((((dst_positive_code_row_productF) + (dst_positive_scale_row_productF)) * S ((dst_positive_code_row_productF) + (dst_positive_scale_row_productF)) + ((dst_positive_scale_row_productF) + (dst_positive_scale_row_productF))) + (((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) * S ((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) + ((dst_negative_scale_row_productF) + (dst_negative_scale_row_productF)))) + ((((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) * S ((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) + ((dst_negative_scale_row_productF) + (dst_negative_scale_row_productF))) + (((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) * S ((dst_negative_code_row_productF) + (dst_negative_scale_row_productF)) + ((dst_negative_scale_row_productF) + (dst_negative_scale_row_productF)))))) /\ (forall dst_index_row_productF. (exists pvs_le_gap_row_productFdomain. pvs_le_gap_row_productFdomain + (dst_index_row_productF) = (0)) -> exists dst_positive_row_productF dst_negative_row_productF dst_value_row_productF. ((((exists ff_h_pvs_row_productFentrypositive. ff_h_pvs_row_productFentrypositive + S (dst_positive_row_productF) = S ((S (dst_index_row_productF)) * dst_positive_scale_row_productF)) /\ exists ff_q_pvs_row_productFentrypositive. dst_positive_code_row_productF = ff_q_pvs_row_productFentrypositive * S ((S (dst_index_row_productF)) * dst_positive_scale_row_productF) + (dst_positive_row_productF))) /\ (((((exists ff_h_pvs_row_productFentrynegative. ff_h_pvs_row_productFentrynegative + S (dst_negative_row_productF) = S ((S (dst_index_row_productF)) * dst_negative_scale_row_productF)) /\ exists ff_q_pvs_row_productFentrynegative. dst_negative_code_row_productF = ff_q_pvs_row_productFentrynegative * S ((S (dst_index_row_productF)) * dst_negative_scale_row_productF) + (dst_negative_row_productF))) /\ (exists ge_balance_positive_row_productFentryvalue ge_balance_negative_row_productFentryvalue. (((((dst_value_row_productF) = 2 * (ge_balance_positive_row_productFentryvalue) /\ (ge_balance_negative_row_productFentryvalue) = 0) \/ exists ge_signed_half_row_productFentryvaluedecode. (((dst_value_row_productF) = 2 * ge_signed_half_row_productFentryvaluedecode + 1 /\ (ge_balance_positive_row_productFentryvalue) = 0) /\ (ge_balance_negative_row_productFentryvalue) = S ge_signed_half_row_productFentryvaluedecode))) /\ ((dst_positive_row_productF) + ge_balance_negative_row_productFentryvalue = (dst_negative_row_productF) + ge_balance_positive_row_productFentryvalue))))))))) /\ (((exists dst_positive_code_row_productG dst_positive_scale_row_productG dst_negative_code_row_productG dst_negative_scale_row_productG. (((G) = (((((dst_positive_code_row_productG) + (dst_positive_scale_row_productG)) * S ((dst_positive_code_row_productG) + (dst_positive_scale_row_productG)) + ((dst_positive_scale_row_productG) + (dst_positive_scale_row_productG))) + (((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) * S ((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) + ((dst_negative_scale_row_productG) + (dst_negative_scale_row_productG)))) * S ((((dst_positive_code_row_productG) + (dst_positive_scale_row_productG)) * S ((dst_positive_code_row_productG) + (dst_positive_scale_row_productG)) + ((dst_positive_scale_row_productG) + (dst_positive_scale_row_productG))) + (((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) * S ((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) + ((dst_negative_scale_row_productG) + (dst_negative_scale_row_productG)))) + ((((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) * S ((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) + ((dst_negative_scale_row_productG) + (dst_negative_scale_row_productG))) + (((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) * S ((dst_negative_code_row_productG) + (dst_negative_scale_row_productG)) + ((dst_negative_scale_row_productG) + (dst_negative_scale_row_productG)))))) /\ (forall dst_index_row_productG. (exists pvs_le_gap_row_productGdomain. pvs_le_gap_row_productGdomain + (dst_index_row_productG) = (0)) -> exists dst_positive_row_productG dst_negative_row_productG dst_value_row_productG. ((((exists ff_h_pvs_row_productGentrypositive. ff_h_pvs_row_productGentrypositive + S (dst_positive_row_productG) = S ((S (dst_index_row_productG)) * dst_positive_scale_row_productG)) /\ exists ff_q_pvs_row_productGentrypositive. dst_positive_code_row_productG = ff_q_pvs_row_productGentrypositive * S ((S (dst_index_row_productG)) * dst_positive_scale_row_productG) + (dst_positive_row_productG))) /\ (((((exists ff_h_pvs_row_productGentrynegative. ff_h_pvs_row_productGentrynegative + S (dst_negative_row_productG) = S ((S (dst_index_row_productG)) * dst_negative_scale_row_productG)) /\ exists ff_q_pvs_row_productGentrynegative. dst_negative_code_row_productG = ff_q_pvs_row_productGentrynegative * S ((S (dst_index_row_productG)) * dst_negative_scale_row_productG) + (dst_negative_row_productG))) /\ (exists ge_balance_positive_row_productGentryvalue ge_balance_negative_row_productGentryvalue. (((((dst_value_row_productG) = 2 * (ge_balance_positive_row_productGentryvalue) /\ (ge_balance_negative_row_productGentryvalue) = 0) \/ exists ge_signed_half_row_productGentryvaluedecode. (((dst_value_row_productG) = 2 * ge_signed_half_row_productGentryvaluedecode + 1 /\ (ge_balance_positive_row_productGentryvalue) = 0) /\ (ge_balance_negative_row_productGentryvalue) = S ge_signed_half_row_productGentryvaluedecode))) /\ ((dst_positive_row_productG) + ge_balance_negative_row_productGentryvalue = (dst_negative_row_productG) + ge_balance_positive_row_productGentryvalue))))))))) /\ (((exists dst_positive_code_row_productT dst_positive_scale_row_productT dst_negative_code_row_productT dst_negative_scale_row_productT. (((T) = (((((dst_positive_code_row_productT) + (dst_positive_scale_row_productT)) * S ((dst_positive_code_row_productT) + (dst_positive_scale_row_productT)) + ((dst_positive_scale_row_productT) + (dst_positive_scale_row_productT))) + (((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) * S ((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) + ((dst_negative_scale_row_productT) + (dst_negative_scale_row_productT)))) * S ((((dst_positive_code_row_productT) + (dst_positive_scale_row_productT)) * S ((dst_positive_code_row_productT) + (dst_positive_scale_row_productT)) + ((dst_positive_scale_row_productT) + (dst_positive_scale_row_productT))) + (((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) * S ((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) + ((dst_negative_scale_row_productT) + (dst_negative_scale_row_productT)))) + ((((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) * S ((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) + ((dst_negative_scale_row_productT) + (dst_negative_scale_row_productT))) + (((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) * S ((dst_negative_code_row_productT) + (dst_negative_scale_row_productT)) + ((dst_negative_scale_row_productT) + (dst_negative_scale_row_productT)))))) /\ (forall dst_index_row_productT. (exists pvs_le_gap_row_productTdomain. pvs_le_gap_row_productTdomain + (dst_index_row_productT) = ((m)*(n))) -> exists dst_positive_row_productT dst_negative_row_productT dst_value_row_productT. ((((exists ff_h_pvs_row_productTentrypositive. ff_h_pvs_row_productTentrypositive + S (dst_positive_row_productT) = S ((S (dst_index_row_productT)) * dst_positive_scale_row_productT)) /\ exists ff_q_pvs_row_productTentrypositive. dst_positive_code_row_productT = ff_q_pvs_row_productTentrypositive * S ((S (dst_index_row_productT)) * dst_positive_scale_row_productT) + (dst_positive_row_productT))) /\ (((((exists ff_h_pvs_row_productTentrynegative. ff_h_pvs_row_productTentrynegative + S (dst_negative_row_productT) = S ((S (dst_index_row_productT)) * dst_negative_scale_row_productT)) /\ exists ff_q_pvs_row_productTentrynegative. dst_negative_code_row_productT = ff_q_pvs_row_productTentrynegative * S ((S (dst_index_row_productT)) * dst_negative_scale_row_productT) + (dst_negative_row_productT))) /\ (exists ge_balance_positive_row_productTentryvalue ge_balance_negative_row_productTentryvalue. (((((dst_value_row_productT) = 2 * (ge_balance_positive_row_productTentryvalue) /\ (ge_balance_negative_row_productTentryvalue) = 0) \/ exists ge_signed_half_row_productTentryvaluedecode. (((dst_value_row_productT) = 2 * ge_signed_half_row_productTentryvaluedecode + 1 /\ (ge_balance_positive_row_productTentryvalue) = 0) /\ (ge_balance_negative_row_productTentryvalue) = S ge_signed_half_row_productTentryvaluedecode))) /\ ((dst_positive_row_productT) + ge_balance_negative_row_productTentryvalue = (dst_negative_row_productT) + ge_balance_positive_row_productTentryvalue))))))))) /\ (forall scp_row_row_product scp_column_row_product scp_first_row_product scp_second_row_product scp_value_row_product. (exists pvs_gap_row_productrows. pvs_gap_row_productrows + S (scp_row_row_product) = (m)) -> (exists pvs_gap_row_productcolumns. pvs_gap_row_productcolumns + S (scp_column_row_product) = (n)) -> (exists dst_positive_code_row_productfirst dst_positive_scale_row_productfirst dst_negative_code_row_productfirst dst_negative_scale_row_productfirst dst_positive_row_productfirst dst_negative_row_productfirst. (((F) = (((((dst_positive_code_row_productfirst) + (dst_positive_scale_row_productfirst)) * S ((dst_positive_code_row_productfirst) + (dst_positive_scale_row_productfirst)) + ((dst_positive_scale_row_productfirst) + (dst_positive_scale_row_productfirst))) + (((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) * S ((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) + ((dst_negative_scale_row_productfirst) + (dst_negative_scale_row_productfirst)))) * S ((((dst_positive_code_row_productfirst) + (dst_positive_scale_row_productfirst)) * S ((dst_positive_code_row_productfirst) + (dst_positive_scale_row_productfirst)) + ((dst_positive_scale_row_productfirst) + (dst_positive_scale_row_productfirst))) + (((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) * S ((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) + ((dst_negative_scale_row_productfirst) + (dst_negative_scale_row_productfirst)))) + ((((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) * S ((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) + ((dst_negative_scale_row_productfirst) + (dst_negative_scale_row_productfirst))) + (((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) * S ((dst_negative_code_row_productfirst) + (dst_negative_scale_row_productfirst)) + ((dst_negative_scale_row_productfirst) + (dst_negative_scale_row_productfirst)))))) /\ (((((exists ff_h_pvs_row_productfirstpositive. ff_h_pvs_row_productfirstpositive + S (dst_positive_row_productfirst) = S ((S (scp_row_row_product)) * dst_positive_scale_row_productfirst)) /\ exists ff_q_pvs_row_productfirstpositive. dst_positive_code_row_productfirst = ff_q_pvs_row_productfirstpositive * S ((S (scp_row_row_product)) * dst_positive_scale_row_productfirst) + (dst_positive_row_productfirst))) /\ (((((exists ff_h_pvs_row_productfirstnegative. ff_h_pvs_row_productfirstnegative + S (dst_negative_row_productfirst) = S ((S (scp_row_row_product)) * dst_negative_scale_row_productfirst)) /\ exists ff_q_pvs_row_productfirstnegative. dst_negative_code_row_productfirst = ff_q_pvs_row_productfirstnegative * S ((S (scp_row_row_product)) * dst_negative_scale_row_productfirst) + (dst_negative_row_productfirst))) /\ (exists ge_balance_positive_row_productfirstvalue ge_balance_negative_row_productfirstvalue. (((((scp_first_row_product) = 2 * (ge_balance_positive_row_productfirstvalue) /\ (ge_balance_negative_row_productfirstvalue) = 0) \/ exists ge_signed_half_row_productfirstvaluedecode. (((scp_first_row_product) = 2 * ge_signed_half_row_productfirstvaluedecode + 1 /\ (ge_balance_positive_row_productfirstvalue) = 0) /\ (ge_balance_negative_row_productfirstvalue) = S ge_signed_half_row_productfirstvaluedecode))) /\ ((dst_positive_row_productfirst) + ge_balance_negative_row_productfirstvalue = (dst_negative_row_productfirst) + ge_balance_positive_row_productfirstvalue))))))))) -> (exists dst_positive_code_row_productsecond dst_positive_scale_row_productsecond dst_negative_code_row_productsecond dst_negative_scale_row_productsecond dst_positive_row_productsecond dst_negative_row_productsecond. (((G) = (((((dst_positive_code_row_productsecond) + (dst_positive_scale_row_productsecond)) * S ((dst_positive_code_row_productsecond) + (dst_positive_scale_row_productsecond)) + ((dst_positive_scale_row_productsecond) + (dst_positive_scale_row_productsecond))) + (((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) * S ((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) + ((dst_negative_scale_row_productsecond) + (dst_negative_scale_row_productsecond)))) * S ((((dst_positive_code_row_productsecond) + (dst_positive_scale_row_productsecond)) * S ((dst_positive_code_row_productsecond) + (dst_positive_scale_row_productsecond)) + ((dst_positive_scale_row_productsecond) + (dst_positive_scale_row_productsecond))) + (((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) * S ((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) + ((dst_negative_scale_row_productsecond) + (dst_negative_scale_row_productsecond)))) + ((((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) * S ((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) + ((dst_negative_scale_row_productsecond) + (dst_negative_scale_row_productsecond))) + (((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) * S ((dst_negative_code_row_productsecond) + (dst_negative_scale_row_productsecond)) + ((dst_negative_scale_row_productsecond) + (dst_negative_scale_row_productsecond)))))) /\ (((((exists ff_h_pvs_row_productsecondpositive. ff_h_pvs_row_productsecondpositive + S (dst_positive_row_productsecond) = S ((S (scp_column_row_product)) * dst_positive_scale_row_productsecond)) /\ exists ff_q_pvs_row_productsecondpositive. dst_positive_code_row_productsecond = ff_q_pvs_row_productsecondpositive * S ((S (scp_column_row_product)) * dst_positive_scale_row_productsecond) + (dst_positive_row_productsecond))) /\ (((((exists ff_h_pvs_row_productsecondnegative. ff_h_pvs_row_productsecondnegative + S (dst_negative_row_productsecond) = S ((S (scp_column_row_product)) * dst_negative_scale_row_productsecond)) /\ exists ff_q_pvs_row_productsecondnegative. dst_negative_code_row_productsecond = ff_q_pvs_row_productsecondnegative * S ((S (scp_column_row_product)) * dst_negative_scale_row_productsecond) + (dst_negative_row_productsecond))) /\ (exists ge_balance_positive_row_productsecondvalue ge_balance_negative_row_productsecondvalue. (((((scp_second_row_product) = 2 * (ge_balance_positive_row_productsecondvalue) /\ (ge_balance_negative_row_productsecondvalue) = 0) \/ exists ge_signed_half_row_productsecondvaluedecode. (((scp_second_row_product) = 2 * ge_signed_half_row_productsecondvaluedecode + 1 /\ (ge_balance_positive_row_productsecondvalue) = 0) /\ (ge_balance_negative_row_productsecondvalue) = S ge_signed_half_row_productsecondvaluedecode))) /\ ((dst_positive_row_productsecond) + ge_balance_negative_row_productsecondvalue = (dst_negative_row_productsecond) + ge_balance_positive_row_productsecondvalue))))))))) -> (exists dst_positive_code_row_productentry dst_positive_scale_row_productentry dst_negative_code_row_productentry dst_negative_scale_row_productentry dst_positive_row_productentry dst_negative_row_productentry. (((T) = (((((dst_positive_code_row_productentry) + (dst_positive_scale_row_productentry)) * S ((dst_positive_code_row_productentry) + (dst_positive_scale_row_productentry)) + ((dst_positive_scale_row_productentry) + (dst_positive_scale_row_productentry))) + (((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) * S ((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) + ((dst_negative_scale_row_productentry) + (dst_negative_scale_row_productentry)))) * S ((((dst_positive_code_row_productentry) + (dst_positive_scale_row_productentry)) * S ((dst_positive_code_row_productentry) + (dst_positive_scale_row_productentry)) + ((dst_positive_scale_row_productentry) + (dst_positive_scale_row_productentry))) + (((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) * S ((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) + ((dst_negative_scale_row_productentry) + (dst_negative_scale_row_productentry)))) + ((((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) * S ((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) + ((dst_negative_scale_row_productentry) + (dst_negative_scale_row_productentry))) + (((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) * S ((dst_negative_code_row_productentry) + (dst_negative_scale_row_productentry)) + ((dst_negative_scale_row_productentry) + (dst_negative_scale_row_productentry)))))) /\ (((((exists ff_h_pvs_row_productentrypositive. ff_h_pvs_row_productentrypositive + S (dst_positive_row_productentry) = S ((S (((n)*(scp_row_row_product)+(scp_column_row_product)))) * dst_positive_scale_row_productentry)) /\ exists ff_q_pvs_row_productentrypositive. dst_positive_code_row_productentry = ff_q_pvs_row_productentrypositive * S ((S (((n)*(scp_row_row_product)+(scp_column_row_product)))) * dst_positive_scale_row_productentry) + (dst_positive_row_productentry))) /\ (((((exists ff_h_pvs_row_productentrynegative. ff_h_pvs_row_productentrynegative + S (dst_negative_row_productentry) = S ((S (((n)*(scp_row_row_product)+(scp_column_row_product)))) * dst_negative_scale_row_productentry)) /\ exists ff_q_pvs_row_productentrynegative. dst_negative_code_row_productentry = ff_q_pvs_row_productentrynegative * S ((S (((n)*(scp_row_row_product)+(scp_column_row_product)))) * dst_negative_scale_row_productentry) + (dst_negative_row_productentry))) /\ (exists ge_balance_positive_row_productentryvalue ge_balance_negative_row_productentryvalue. (((((scp_value_row_product) = 2 * (ge_balance_positive_row_productentryvalue) /\ (ge_balance_negative_row_productentryvalue) = 0) \/ exists ge_signed_half_row_productentryvaluedecode. (((scp_value_row_product) = 2 * ge_signed_half_row_productentryvaluedecode + 1 /\ (ge_balance_positive_row_productentryvalue) = 0) /\ (ge_balance_negative_row_productentryvalue) = S ge_signed_half_row_productentryvaluedecode))) /\ ((dst_positive_row_productentry) + ge_balance_negative_row_productentryvalue = (dst_negative_row_productentry) + ge_balance_positive_row_productentryvalue))))))))) -> (exists sto_ap_row_productmultiply sto_an_row_productmultiply sto_bp_row_productmultiply sto_bn_row_productmultiply sto_cp_row_productmultiply sto_cn_row_productmultiply. (((((scp_first_row_product) = 2 * (sto_ap_row_productmultiply) /\ (sto_an_row_productmultiply) = 0) \/ exists ge_signed_half_row_productmultiplyleft. (((scp_first_row_product) = 2 * ge_signed_half_row_productmultiplyleft + 1 /\ (sto_ap_row_productmultiply) = 0) /\ (sto_an_row_productmultiply) = S ge_signed_half_row_productmultiplyleft))) /\ ((((((scp_second_row_product) = 2 * (sto_bp_row_productmultiply) /\ (sto_bn_row_productmultiply) = 0) \/ exists ge_signed_half_row_productmultiplyright. (((scp_second_row_product) = 2 * ge_signed_half_row_productmultiplyright + 1 /\ (sto_bp_row_productmultiply) = 0) /\ (sto_bn_row_productmultiply) = S ge_signed_half_row_productmultiplyright))) /\ ((((((scp_value_row_product) = 2 * (sto_cp_row_productmultiply) /\ (sto_cn_row_productmultiply) = 0) \/ exists ge_signed_half_row_productmultiplyoutput. (((scp_value_row_product) = 2 * ge_signed_half_row_productmultiplyoutput + 1 /\ (sto_cp_row_productmultiply) = 0) /\ (sto_cn_row_productmultiply) = S ge_signed_half_row_productmultiplyoutput))) /\ ((sto_ap_row_productmultiply * sto_bp_row_productmultiply + sto_an_row_productmultiply * sto_bn_row_productmultiply) + sto_cn_row_productmultiply = (sto_ap_row_productmultiply * sto_bn_row_productmultiply + sto_an_row_productmultiply * sto_bp_row_productmultiply) + sto_cp_row_productmultiply)))))))))))))) -> (exists pvs_gap_row_bound. pvs_gap_row_bound + S (i) = (m)) -> (exists dst_positive_code_row_scalar dst_positive_scale_row_scalar dst_negative_code_row_scalar dst_negative_scale_row_scalar dst_positive_row_scalar dst_negative_row_scalar. (((F) = (((((dst_positive_code_row_scalar) + (dst_positive_scale_row_scalar)) * S ((dst_positive_code_row_scalar) + (dst_positive_scale_row_scalar)) + ((dst_positive_scale_row_scalar) + (dst_positive_scale_row_scalar))) + (((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) * S ((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) + ((dst_negative_scale_row_scalar) + (dst_negative_scale_row_scalar)))) * S ((((dst_positive_code_row_scalar) + (dst_positive_scale_row_scalar)) * S ((dst_positive_code_row_scalar) + (dst_positive_scale_row_scalar)) + ((dst_positive_scale_row_scalar) + (dst_positive_scale_row_scalar))) + (((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) * S ((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) + ((dst_negative_scale_row_scalar) + (dst_negative_scale_row_scalar)))) + ((((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) * S ((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) + ((dst_negative_scale_row_scalar) + (dst_negative_scale_row_scalar))) + (((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) * S ((dst_negative_code_row_scalar) + (dst_negative_scale_row_scalar)) + ((dst_negative_scale_row_scalar) + (dst_negative_scale_row_scalar)))))) /\ (((((exists ff_h_pvs_row_scalarpositive. ff_h_pvs_row_scalarpositive + S (dst_positive_row_scalar) = S ((S (i)) * dst_positive_scale_row_scalar)) /\ exists ff_q_pvs_row_scalarpositive. dst_positive_code_row_scalar = ff_q_pvs_row_scalarpositive * S ((S (i)) * dst_positive_scale_row_scalar) + (dst_positive_row_scalar))) /\ (((((exists ff_h_pvs_row_scalarnegative. ff_h_pvs_row_scalarnegative + S (dst_negative_row_scalar) = S ((S (i)) * dst_negative_scale_row_scalar)) /\ exists ff_q_pvs_row_scalarnegative. dst_negative_code_row_scalar = ff_q_pvs_row_scalarnegative * S ((S (i)) * dst_negative_scale_row_scalar) + (dst_negative_row_scalar))) /\ (exists ge_balance_positive_row_scalarvalue ge_balance_negative_row_scalarvalue. (((((a) = 2 * (ge_balance_positive_row_scalarvalue) /\ (ge_balance_negative_row_scalarvalue) = 0) \/ exists ge_signed_half_row_scalarvaluedecode. (((a) = 2 * ge_signed_half_row_scalarvaluedecode + 1 /\ (ge_balance_positive_row_scalarvalue) = 0) /\ (ge_balance_negative_row_scalarvalue) = S ge_signed_half_row_scalarvaluedecode))) /\ ((dst_positive_row_scalar) + ge_balance_negative_row_scalarvalue = (dst_negative_row_scalar) + ge_balance_positive_row_scalarvalue))))))))) -> (((exists dst_positive_code_row_slicesource_table dst_positive_scale_row_slicesource_table dst_negative_code_row_slicesource_table dst_negative_scale_row_slicesource_table. (((T) = (((((dst_positive_code_row_slicesource_table) + (dst_positive_scale_row_slicesource_table)) * S ((dst_positive_code_row_slicesource_table) + (dst_positive_scale_row_slicesource_table)) + ((dst_positive_scale_row_slicesource_table) + (dst_positive_scale_row_slicesource_table))) + (((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) * S ((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) + ((dst_negative_scale_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)))) * S ((((dst_positive_code_row_slicesource_table) + (dst_positive_scale_row_slicesource_table)) * S ((dst_positive_code_row_slicesource_table) + (dst_positive_scale_row_slicesource_table)) + ((dst_positive_scale_row_slicesource_table) + (dst_positive_scale_row_slicesource_table))) + (((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) * S ((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) + ((dst_negative_scale_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)))) + ((((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) * S ((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) + ((dst_negative_scale_row_slicesource_table) + (dst_negative_scale_row_slicesource_table))) + (((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) * S ((dst_negative_code_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)) + ((dst_negative_scale_row_slicesource_table) + (dst_negative_scale_row_slicesource_table)))))) /\ (forall dst_index_row_slicesource_table. (exists pvs_le_gap_row_slicesource_tabledomain. pvs_le_gap_row_slicesource_tabledomain + (dst_index_row_slicesource_table) = (0)) -> exists dst_positive_row_slicesource_table dst_negative_row_slicesource_table dst_value_row_slicesource_table. ((((exists ff_h_pvs_row_slicesource_tableentrypositive. ff_h_pvs_row_slicesource_tableentrypositive + S (dst_positive_row_slicesource_table) = S ((S (dst_index_row_slicesource_table)) * dst_positive_scale_row_slicesource_table)) /\ exists ff_q_pvs_row_slicesource_tableentrypositive. dst_positive_code_row_slicesource_table = ff_q_pvs_row_slicesource_tableentrypositive * S ((S (dst_index_row_slicesource_table)) * dst_positive_scale_row_slicesource_table) + (dst_positive_row_slicesource_table))) /\ (((((exists ff_h_pvs_row_slicesource_tableentrynegative. ff_h_pvs_row_slicesource_tableentrynegative + S (dst_negative_row_slicesource_table) = S ((S (dst_index_row_slicesource_table)) * dst_negative_scale_row_slicesource_table)) /\ exists ff_q_pvs_row_slicesource_tableentrynegative. dst_negative_code_row_slicesource_table = ff_q_pvs_row_slicesource_tableentrynegative * S ((S (dst_index_row_slicesource_table)) * dst_negative_scale_row_slicesource_table) + (dst_negative_row_slicesource_table))) /\ (exists ge_balance_positive_row_slicesource_tableentryvalue ge_balance_negative_row_slicesource_tableentryvalue. (((((dst_value_row_slicesource_table) = 2 * (ge_balance_positive_row_slicesource_tableentryvalue) /\ (ge_balance_negative_row_slicesource_tableentryvalue) = 0) \/ exists ge_signed_half_row_slicesource_tableentryvaluedecode. (((dst_value_row_slicesource_table) = 2 * ge_signed_half_row_slicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_row_slicesource_tableentryvalue) = 0) /\ (ge_balance_negative_row_slicesource_tableentryvalue) = S ge_signed_half_row_slicesource_tableentryvaluedecode))) /\ ((dst_positive_row_slicesource_table) + ge_balance_negative_row_slicesource_tableentryvalue = (dst_negative_row_slicesource_table) + ge_balance_positive_row_slicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_row_sliceoutput_table dst_positive_scale_row_sliceoutput_table dst_negative_code_row_sliceoutput_table dst_negative_scale_row_sliceoutput_table. (((V) = (((((dst_positive_code_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table)) * S ((dst_positive_code_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table)) + ((dst_positive_scale_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table))) + (((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) * S ((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) + ((dst_negative_scale_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)))) * S ((((dst_positive_code_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table)) * S ((dst_positive_code_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table)) + ((dst_positive_scale_row_sliceoutput_table) + (dst_positive_scale_row_sliceoutput_table))) + (((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) * S ((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) + ((dst_negative_scale_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)))) + ((((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) * S ((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) + ((dst_negative_scale_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table))) + (((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) * S ((dst_negative_code_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)) + ((dst_negative_scale_row_sliceoutput_table) + (dst_negative_scale_row_sliceoutput_table)))))) /\ (forall dst_index_row_sliceoutput_table. (exists pvs_le_gap_row_sliceoutput_tabledomain. pvs_le_gap_row_sliceoutput_tabledomain + (dst_index_row_sliceoutput_table) = (n)) -> exists dst_positive_row_sliceoutput_table dst_negative_row_sliceoutput_table dst_value_row_sliceoutput_table. ((((exists ff_h_pvs_row_sliceoutput_tableentrypositive. ff_h_pvs_row_sliceoutput_tableentrypositive + S (dst_positive_row_sliceoutput_table) = S ((S (dst_index_row_sliceoutput_table)) * dst_positive_scale_row_sliceoutput_table)) /\ exists ff_q_pvs_row_sliceoutput_tableentrypositive. dst_positive_code_row_sliceoutput_table = ff_q_pvs_row_sliceoutput_tableentrypositive * S ((S (dst_index_row_sliceoutput_table)) * dst_positive_scale_row_sliceoutput_table) + (dst_positive_row_sliceoutput_table))) /\ (((((exists ff_h_pvs_row_sliceoutput_tableentrynegative. ff_h_pvs_row_sliceoutput_tableentrynegative + S (dst_negative_row_sliceoutput_table) = S ((S (dst_index_row_sliceoutput_table)) * dst_negative_scale_row_sliceoutput_table)) /\ exists ff_q_pvs_row_sliceoutput_tableentrynegative. dst_negative_code_row_sliceoutput_table = ff_q_pvs_row_sliceoutput_tableentrynegative * S ((S (dst_index_row_sliceoutput_table)) * dst_negative_scale_row_sliceoutput_table) + (dst_negative_row_sliceoutput_table))) /\ (exists ge_balance_positive_row_sliceoutput_tableentryvalue ge_balance_negative_row_sliceoutput_tableentryvalue. (((((dst_value_row_sliceoutput_table) = 2 * (ge_balance_positive_row_sliceoutput_tableentryvalue) /\ (ge_balance_negative_row_sliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_row_sliceoutput_tableentryvaluedecode. (((dst_value_row_sliceoutput_table) = 2 * ge_signed_half_row_sliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_row_sliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_row_sliceoutput_tableentryvalue) = S ge_signed_half_row_sliceoutput_tableentryvaluedecode))) /\ ((dst_positive_row_sliceoutput_table) + ge_balance_negative_row_sliceoutput_tableentryvalue = (dst_negative_row_sliceoutput_table) + ge_balance_positive_row_sliceoutput_tableentryvalue))))))))) /\ (forall srs_index_row_slice. (exists pvs_gap_row_slicebound. pvs_gap_row_slicebound + S (srs_index_row_slice) = (n)) -> exists srs_value_row_slice. (((exists dst_positive_code_row_sliceentrysource dst_positive_scale_row_sliceentrysource dst_negative_code_row_sliceentrysource dst_negative_scale_row_sliceentrysource dst_positive_row_sliceentrysource dst_negative_row_sliceentrysource. (((T) = (((((dst_positive_code_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource)) * S ((dst_positive_code_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource)) + ((dst_positive_scale_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource))) + (((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) * S ((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) + ((dst_negative_scale_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)))) * S ((((dst_positive_code_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource)) * S ((dst_positive_code_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource)) + ((dst_positive_scale_row_sliceentrysource) + (dst_positive_scale_row_sliceentrysource))) + (((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) * S ((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) + ((dst_negative_scale_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)))) + ((((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) * S ((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) + ((dst_negative_scale_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource))) + (((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) * S ((dst_negative_code_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)) + ((dst_negative_scale_row_sliceentrysource) + (dst_negative_scale_row_sliceentrysource)))))) /\ (((((exists ff_h_pvs_row_sliceentrysourcepositive. ff_h_pvs_row_sliceentrysourcepositive + S (dst_positive_row_sliceentrysource) = S ((S (((((0) + ((n) * (i)))) + ((1) * (srs_index_row_slice))))) * dst_positive_scale_row_sliceentrysource)) /\ exists ff_q_pvs_row_sliceentrysourcepositive. dst_positive_code_row_sliceentrysource = ff_q_pvs_row_sliceentrysourcepositive * S ((S (((((0) + ((n) * (i)))) + ((1) * (srs_index_row_slice))))) * dst_positive_scale_row_sliceentrysource) + (dst_positive_row_sliceentrysource))) /\ (((((exists ff_h_pvs_row_sliceentrysourcenegative. ff_h_pvs_row_sliceentrysourcenegative + S (dst_negative_row_sliceentrysource) = S ((S (((((0) + ((n) * (i)))) + ((1) * (srs_index_row_slice))))) * dst_negative_scale_row_sliceentrysource)) /\ exists ff_q_pvs_row_sliceentrysourcenegative. dst_negative_code_row_sliceentrysource = ff_q_pvs_row_sliceentrysourcenegative * S ((S (((((0) + ((n) * (i)))) + ((1) * (srs_index_row_slice))))) * dst_negative_scale_row_sliceentrysource) + (dst_negative_row_sliceentrysource))) /\ (exists ge_balance_positive_row_sliceentrysourcevalue ge_balance_negative_row_sliceentrysourcevalue. (((((srs_value_row_slice) = 2 * (ge_balance_positive_row_sliceentrysourcevalue) /\ (ge_balance_negative_row_sliceentrysourcevalue) = 0) \/ exists ge_signed_half_row_sliceentrysourcevaluedecode. (((srs_value_row_slice) = 2 * ge_signed_half_row_sliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_row_sliceentrysourcevalue) = 0) /\ (ge_balance_negative_row_sliceentrysourcevalue) = S ge_signed_half_row_sliceentrysourcevaluedecode))) /\ ((dst_positive_row_sliceentrysource) + ge_balance_negative_row_sliceentrysourcevalue = (dst_negative_row_sliceentrysource) + ge_balance_positive_row_sliceentrysourcevalue))))))))) /\ (exists dst_positive_code_row_sliceentryoutput dst_positive_scale_row_sliceentryoutput dst_negative_code_row_sliceentryoutput dst_negative_scale_row_sliceentryoutput dst_positive_row_sliceentryoutput dst_negative_row_sliceentryoutput. (((V) = (((((dst_positive_code_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput)) * S ((dst_positive_code_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput)) + ((dst_positive_scale_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput))) + (((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) * S ((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) + ((dst_negative_scale_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)))) * S ((((dst_positive_code_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput)) * S ((dst_positive_code_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput)) + ((dst_positive_scale_row_sliceentryoutput) + (dst_positive_scale_row_sliceentryoutput))) + (((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) * S ((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) + ((dst_negative_scale_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)))) + ((((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) * S ((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) + ((dst_negative_scale_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput))) + (((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) * S ((dst_negative_code_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)) + ((dst_negative_scale_row_sliceentryoutput) + (dst_negative_scale_row_sliceentryoutput)))))) /\ (((((exists ff_h_pvs_row_sliceentryoutputpositive. ff_h_pvs_row_sliceentryoutputpositive + S (dst_positive_row_sliceentryoutput) = S ((S (srs_index_row_slice)) * dst_positive_scale_row_sliceentryoutput)) /\ exists ff_q_pvs_row_sliceentryoutputpositive. dst_positive_code_row_sliceentryoutput = ff_q_pvs_row_sliceentryoutputpositive * S ((S (srs_index_row_slice)) * dst_positive_scale_row_sliceentryoutput) + (dst_positive_row_sliceentryoutput))) /\ (((((exists ff_h_pvs_row_sliceentryoutputnegative. ff_h_pvs_row_sliceentryoutputnegative + S (dst_negative_row_sliceentryoutput) = S ((S (srs_index_row_slice)) * dst_negative_scale_row_sliceentryoutput)) /\ exists ff_q_pvs_row_sliceentryoutputnegative. dst_negative_code_row_sliceentryoutput = ff_q_pvs_row_sliceentryoutputnegative * S ((S (srs_index_row_slice)) * dst_negative_scale_row_sliceentryoutput) + (dst_negative_row_sliceentryoutput))) /\ (exists ge_balance_positive_row_sliceentryoutputvalue ge_balance_negative_row_sliceentryoutputvalue. (((((srs_value_row_slice) = 2 * (ge_balance_positive_row_sliceentryoutputvalue) /\ (ge_balance_negative_row_sliceentryoutputvalue) = 0) \/ exists ge_signed_half_row_sliceentryoutputvaluedecode. (((srs_value_row_slice) = 2 * ge_signed_half_row_sliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_row_sliceentryoutputvalue) = 0) /\ (ge_balance_negative_row_sliceentryoutputvalue) = S ge_signed_half_row_sliceentryoutputvaluedecode))) /\ ((dst_positive_row_sliceentryoutput) + ge_balance_negative_row_sliceentryoutputvalue = (dst_negative_row_sliceentryoutput) + ge_balance_positive_row_sliceentryoutputvalue)))))))))))))))) -> (((exists dst_positive_code_row_resultinput_table dst_positive_scale_row_resultinput_table dst_negative_code_row_resultinput_table dst_negative_scale_row_resultinput_table. (((G) = (((((dst_positive_code_row_resultinput_table) + (dst_positive_scale_row_resultinput_table)) * S ((dst_positive_code_row_resultinput_table) + (dst_positive_scale_row_resultinput_table)) + ((dst_positive_scale_row_resultinput_table) + (dst_positive_scale_row_resultinput_table))) + (((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) * S ((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) + ((dst_negative_scale_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)))) * S ((((dst_positive_code_row_resultinput_table) + (dst_positive_scale_row_resultinput_table)) * S ((dst_positive_code_row_resultinput_table) + (dst_positive_scale_row_resultinput_table)) + ((dst_positive_scale_row_resultinput_table) + (dst_positive_scale_row_resultinput_table))) + (((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) * S ((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) + ((dst_negative_scale_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)))) + ((((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) * S ((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) + ((dst_negative_scale_row_resultinput_table) + (dst_negative_scale_row_resultinput_table))) + (((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) * S ((dst_negative_code_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)) + ((dst_negative_scale_row_resultinput_table) + (dst_negative_scale_row_resultinput_table)))))) /\ (forall dst_index_row_resultinput_table. (exists pvs_le_gap_row_resultinput_tabledomain. pvs_le_gap_row_resultinput_tabledomain + (dst_index_row_resultinput_table) = (n)) -> exists dst_positive_row_resultinput_table dst_negative_row_resultinput_table dst_value_row_resultinput_table. ((((exists ff_h_pvs_row_resultinput_tableentrypositive. ff_h_pvs_row_resultinput_tableentrypositive + S (dst_positive_row_resultinput_table) = S ((S (dst_index_row_resultinput_table)) * dst_positive_scale_row_resultinput_table)) /\ exists ff_q_pvs_row_resultinput_tableentrypositive. dst_positive_code_row_resultinput_table = ff_q_pvs_row_resultinput_tableentrypositive * S ((S (dst_index_row_resultinput_table)) * dst_positive_scale_row_resultinput_table) + (dst_positive_row_resultinput_table))) /\ (((((exists ff_h_pvs_row_resultinput_tableentrynegative. ff_h_pvs_row_resultinput_tableentrynegative + S (dst_negative_row_resultinput_table) = S ((S (dst_index_row_resultinput_table)) * dst_negative_scale_row_resultinput_table)) /\ exists ff_q_pvs_row_resultinput_tableentrynegative. dst_negative_code_row_resultinput_table = ff_q_pvs_row_resultinput_tableentrynegative * S ((S (dst_index_row_resultinput_table)) * dst_negative_scale_row_resultinput_table) + (dst_negative_row_resultinput_table))) /\ (exists ge_balance_positive_row_resultinput_tableentryvalue ge_balance_negative_row_resultinput_tableentryvalue. (((((dst_value_row_resultinput_table) = 2 * (ge_balance_positive_row_resultinput_tableentryvalue) /\ (ge_balance_negative_row_resultinput_tableentryvalue) = 0) \/ exists ge_signed_half_row_resultinput_tableentryvaluedecode. (((dst_value_row_resultinput_table) = 2 * ge_signed_half_row_resultinput_tableentryvaluedecode + 1 /\ (ge_balance_positive_row_resultinput_tableentryvalue) = 0) /\ (ge_balance_negative_row_resultinput_tableentryvalue) = S ge_signed_half_row_resultinput_tableentryvaluedecode))) /\ ((dst_positive_row_resultinput_table) + ge_balance_negative_row_resultinput_tableentryvalue = (dst_negative_row_resultinput_table) + ge_balance_positive_row_resultinput_tableentryvalue))))))))) /\ (((exists dst_positive_code_row_resultoutput_table dst_positive_scale_row_resultoutput_table dst_negative_code_row_resultoutput_table dst_negative_scale_row_resultoutput_table. (((V) = (((((dst_positive_code_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table)) * S ((dst_positive_code_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table)) + ((dst_positive_scale_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table))) + (((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) * S ((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) + ((dst_negative_scale_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)))) * S ((((dst_positive_code_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table)) * S ((dst_positive_code_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table)) + ((dst_positive_scale_row_resultoutput_table) + (dst_positive_scale_row_resultoutput_table))) + (((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) * S ((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) + ((dst_negative_scale_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)))) + ((((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) * S ((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) + ((dst_negative_scale_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table))) + (((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) * S ((dst_negative_code_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)) + ((dst_negative_scale_row_resultoutput_table) + (dst_negative_scale_row_resultoutput_table)))))) /\ (forall dst_index_row_resultoutput_table. (exists pvs_le_gap_row_resultoutput_tabledomain. pvs_le_gap_row_resultoutput_tabledomain + (dst_index_row_resultoutput_table) = (n)) -> exists dst_positive_row_resultoutput_table dst_negative_row_resultoutput_table dst_value_row_resultoutput_table. ((((exists ff_h_pvs_row_resultoutput_tableentrypositive. ff_h_pvs_row_resultoutput_tableentrypositive + S (dst_positive_row_resultoutput_table) = S ((S (dst_index_row_resultoutput_table)) * dst_positive_scale_row_resultoutput_table)) /\ exists ff_q_pvs_row_resultoutput_tableentrypositive. dst_positive_code_row_resultoutput_table = ff_q_pvs_row_resultoutput_tableentrypositive * S ((S (dst_index_row_resultoutput_table)) * dst_positive_scale_row_resultoutput_table) + (dst_positive_row_resultoutput_table))) /\ (((((exists ff_h_pvs_row_resultoutput_tableentrynegative. ff_h_pvs_row_resultoutput_tableentrynegative + S (dst_negative_row_resultoutput_table) = S ((S (dst_index_row_resultoutput_table)) * dst_negative_scale_row_resultoutput_table)) /\ exists ff_q_pvs_row_resultoutput_tableentrynegative. dst_negative_code_row_resultoutput_table = ff_q_pvs_row_resultoutput_tableentrynegative * S ((S (dst_index_row_resultoutput_table)) * dst_negative_scale_row_resultoutput_table) + (dst_negative_row_resultoutput_table))) /\ (exists ge_balance_positive_row_resultoutput_tableentryvalue ge_balance_negative_row_resultoutput_tableentryvalue. (((((dst_value_row_resultoutput_table) = 2 * (ge_balance_positive_row_resultoutput_tableentryvalue) /\ (ge_balance_negative_row_resultoutput_tableentryvalue) = 0) \/ exists ge_signed_half_row_resultoutput_tableentryvaluedecode. (((dst_value_row_resultoutput_table) = 2 * ge_signed_half_row_resultoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_row_resultoutput_tableentryvalue) = 0) /\ (ge_balance_negative_row_resultoutput_tableentryvalue) = S ge_signed_half_row_resultoutput_tableentryvaluedecode))) /\ ((dst_positive_row_resultoutput_table) + ge_balance_negative_row_resultoutput_tableentryvalue = (dst_negative_row_resultoutput_table) + ge_balance_positive_row_resultoutput_tableentryvalue))))))))) /\ (forall sto_index_row_resultentries. (exists pvs_gap_row_resultentriesbound. pvs_gap_row_resultentriesbound + S (sto_index_row_resultentries) = (n)) -> exists sto_input_row_resultentries sto_output_row_resultentries. ((exists dst_positive_code_row_resultentriesentryinput dst_positive_scale_row_resultentriesentryinput dst_negative_code_row_resultentriesentryinput dst_negative_scale_row_resultentriesentryinput dst_positive_row_resultentriesentryinput dst_negative_row_resultentriesentryinput. (((G) = (((((dst_positive_code_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput)) * S ((dst_positive_code_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput)) + ((dst_positive_scale_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput))) + (((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) * S ((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) + ((dst_negative_scale_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)))) * S ((((dst_positive_code_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput)) * S ((dst_positive_code_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput)) + ((dst_positive_scale_row_resultentriesentryinput) + (dst_positive_scale_row_resultentriesentryinput))) + (((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) * S ((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) + ((dst_negative_scale_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)))) + ((((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) * S ((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) + ((dst_negative_scale_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput))) + (((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) * S ((dst_negative_code_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)) + ((dst_negative_scale_row_resultentriesentryinput) + (dst_negative_scale_row_resultentriesentryinput)))))) /\ (((((exists ff_h_pvs_row_resultentriesentryinputpositive. ff_h_pvs_row_resultentriesentryinputpositive + S (dst_positive_row_resultentriesentryinput) = S ((S (sto_index_row_resultentries)) * dst_positive_scale_row_resultentriesentryinput)) /\ exists ff_q_pvs_row_resultentriesentryinputpositive. dst_positive_code_row_resultentriesentryinput = ff_q_pvs_row_resultentriesentryinputpositive * S ((S (sto_index_row_resultentries)) * dst_positive_scale_row_resultentriesentryinput) + (dst_positive_row_resultentriesentryinput))) /\ (((((exists ff_h_pvs_row_resultentriesentryinputnegative. ff_h_pvs_row_resultentriesentryinputnegative + S (dst_negative_row_resultentriesentryinput) = S ((S (sto_index_row_resultentries)) * dst_negative_scale_row_resultentriesentryinput)) /\ exists ff_q_pvs_row_resultentriesentryinputnegative. dst_negative_code_row_resultentriesentryinput = ff_q_pvs_row_resultentriesentryinputnegative * S ((S (sto_index_row_resultentries)) * dst_negative_scale_row_resultentriesentryinput) + (dst_negative_row_resultentriesentryinput))) /\ (exists ge_balance_positive_row_resultentriesentryinputvalue ge_balance_negative_row_resultentriesentryinputvalue. (((((sto_input_row_resultentries) = 2 * (ge_balance_positive_row_resultentriesentryinputvalue) /\ (ge_balance_negative_row_resultentriesentryinputvalue) = 0) \/ exists ge_signed_half_row_resultentriesentryinputvaluedecode. (((sto_input_row_resultentries) = 2 * ge_signed_half_row_resultentriesentryinputvaluedecode + 1 /\ (ge_balance_positive_row_resultentriesentryinputvalue) = 0) /\ (ge_balance_negative_row_resultentriesentryinputvalue) = S ge_signed_half_row_resultentriesentryinputvaluedecode))) /\ ((dst_positive_row_resultentriesentryinput) + ge_balance_negative_row_resultentriesentryinputvalue = (dst_negative_row_resultentriesentryinput) + ge_balance_positive_row_resultentriesentryinputvalue))))))))) /\ (((exists dst_positive_code_row_resultentriesentryoutput dst_positive_scale_row_resultentriesentryoutput dst_negative_code_row_resultentriesentryoutput dst_negative_scale_row_resultentriesentryoutput dst_positive_row_resultentriesentryoutput dst_negative_row_resultentriesentryoutput. (((V) = (((((dst_positive_code_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput)) * S ((dst_positive_code_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput)) + ((dst_positive_scale_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput))) + (((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) * S ((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) + ((dst_negative_scale_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)))) * S ((((dst_positive_code_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput)) * S ((dst_positive_code_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput)) + ((dst_positive_scale_row_resultentriesentryoutput) + (dst_positive_scale_row_resultentriesentryoutput))) + (((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) * S ((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) + ((dst_negative_scale_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)))) + ((((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) * S ((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) + ((dst_negative_scale_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput))) + (((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) * S ((dst_negative_code_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)) + ((dst_negative_scale_row_resultentriesentryoutput) + (dst_negative_scale_row_resultentriesentryoutput)))))) /\ (((((exists ff_h_pvs_row_resultentriesentryoutputpositive. ff_h_pvs_row_resultentriesentryoutputpositive + S (dst_positive_row_resultentriesentryoutput) = S ((S (sto_index_row_resultentries)) * dst_positive_scale_row_resultentriesentryoutput)) /\ exists ff_q_pvs_row_resultentriesentryoutputpositive. dst_positive_code_row_resultentriesentryoutput = ff_q_pvs_row_resultentriesentryoutputpositive * S ((S (sto_index_row_resultentries)) * dst_positive_scale_row_resultentriesentryoutput) + (dst_positive_row_resultentriesentryoutput))) /\ (((((exists ff_h_pvs_row_resultentriesentryoutputnegative. ff_h_pvs_row_resultentriesentryoutputnegative + S (dst_negative_row_resultentriesentryoutput) = S ((S (sto_index_row_resultentries)) * dst_negative_scale_row_resultentriesentryoutput)) /\ exists ff_q_pvs_row_resultentriesentryoutputnegative. dst_negative_code_row_resultentriesentryoutput = ff_q_pvs_row_resultentriesentryoutputnegative * S ((S (sto_index_row_resultentries)) * dst_negative_scale_row_resultentriesentryoutput) + (dst_negative_row_resultentriesentryoutput))) /\ (exists ge_balance_positive_row_resultentriesentryoutputvalue ge_balance_negative_row_resultentriesentryoutputvalue. (((((sto_output_row_resultentries) = 2 * (ge_balance_positive_row_resultentriesentryoutputvalue) /\ (ge_balance_negative_row_resultentriesentryoutputvalue) = 0) \/ exists ge_signed_half_row_resultentriesentryoutputvaluedecode. (((sto_output_row_resultentries) = 2 * ge_signed_half_row_resultentriesentryoutputvaluedecode + 1 /\ (ge_balance_positive_row_resultentriesentryoutputvalue) = 0) /\ (ge_balance_negative_row_resultentriesentryoutputvalue) = S ge_signed_half_row_resultentriesentryoutputvaluedecode))) /\ ((dst_positive_row_resultentriesentryoutput) + ge_balance_negative_row_resultentriesentryoutputvalue = (dst_negative_row_resultentriesentryoutput) + ge_balance_positive_row_resultentriesentryoutputvalue))))))))) /\ (exists sto_ap_row_resultentriesentryoperation sto_an_row_resultentriesentryoperation sto_bp_row_resultentriesentryoperation sto_bn_row_resultentriesentryoperation sto_cp_row_resultentriesentryoperation sto_cn_row_resultentriesentryoperation. (((((a) = 2 * (sto_ap_row_resultentriesentryoperation) /\ (sto_an_row_resultentriesentryoperation) = 0) \/ exists ge_signed_half_row_resultentriesentryoperationleft. (((a) = 2 * ge_signed_half_row_resultentriesentryoperationleft + 1 /\ (sto_ap_row_resultentriesentryoperation) = 0) /\ (sto_an_row_resultentriesentryoperation) = S ge_signed_half_row_resultentriesentryoperationleft))) /\ ((((((sto_input_row_resultentries) = 2 * (sto_bp_row_resultentriesentryoperation) /\ (sto_bn_row_resultentriesentryoperation) = 0) \/ exists ge_signed_half_row_resultentriesentryoperationright. (((sto_input_row_resultentries) = 2 * ge_signed_half_row_resultentriesentryoperationright + 1 /\ (sto_bp_row_resultentriesentryoperation) = 0) /\ (sto_bn_row_resultentriesentryoperation) = S ge_signed_half_row_resultentriesentryoperationright))) /\ ((((((sto_output_row_resultentries) = 2 * (sto_cp_row_resultentriesentryoperation) /\ (sto_cn_row_resultentriesentryoperation) = 0) \/ exists ge_signed_half_row_resultentriesentryoperationoutput. (((sto_output_row_resultentries) = 2 * ge_signed_half_row_resultentriesentryoperationoutput + 1 /\ (sto_cp_row_resultentriesentryoperation) = 0) /\ (sto_cn_row_resultentriesentryoperation) = S ge_signed_half_row_resultentriesentryoperationoutput))) /\ ((sto_ap_row_resultentriesentryoperation * sto_bp_row_resultentriesentryoperation + sto_an_row_resultentriesentryoperation * sto_bn_row_resultentriesentryoperation) + sto_cn_row_resultentriesentryoperation = (sto_ap_row_resultentriesentryoperation * sto_bn_row_resultentriesentryoperation + sto_an_row_resultentriesentryoperation * sto_bp_row_resultentriesentryoperation) + sto_cp_row_resultentriesentryoperation)))))))))))))))

Constructive proof overview

Generated structural guide

Each actual row slice is a genuine pointwise scalar product by its actual first-input value.

The unchanged tactic script uses 5 declared prerequisites and contains 80 exact native proof lines.

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

Proof neighborhood

Direct dependencies

signed_table_domain_resize Alpha theorem; checked-use authorized signed_table_lookup_any Alpha theorem; checked-use authorized signed_rectangular_slice_lookup Alpha theorem; checked-use authorized zero_add Stable theorem; checked-use authorized one_mul Stable 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

80 script commands · 21 reading checkpoints · 4 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.

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 V
  5. L5
    intro m
  6. L6
    intro n
  7. L7
    intro i
  8. L8
    intro a
  9. L9
    intro hp
  10. L10
    intro hi
02Fix variables and assumptionsL11–12

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

  1. L11
    intro ha
  2. L12
    intro hv
03Separate the logical casesL13–18

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

  1. L13
    cases hp
  2. L14
    cases hp_right
  3. L15
    cases hp_right_right
  4. L16
    cases hv
  5. L17
    cases hv_right
  6. L18
    split
04Use earlier factsL19–23

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

  1. L19
    specialize signed_table_domain_resize (0)
  2. L20
    specialize signed_table_domain_resize (n)
  3. L21
    specialize signed_table_domain_resize (G)
  4. L22
    apply signed_table_domain_resize
  5. L23
    exact hp_right_left
05Separate the logical casesL24–24

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

  1. L24
    split
06Use earlier factsL25–25

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

  1. L25
    exact hv_right_left
07Fix variables and assumptionsL26–27

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

  1. L26
    intro j
  2. L27
    intro hj
08Establish hbL28–33

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

  1. L28
    have hb : ∃ b. ArithAt(G,j,b)Definitions: ArithAt
  2. L29
    specialize signed_table_lookup_any (0)
  3. L30
    specialize signed_table_lookup_any (G)
  4. L31
    specialize signed_table_lookup_any (j)
  5. L32
    apply signed_table_lookup_any
  6. L33
    exact hp_right_left
09Separate the logical casesL34–34

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

  1. L34
    cases hb
10Establish hcL35–40

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

  1. L35
    have hc : ∃ c. ArithAt(V,j,c)Definitions: ArithAt
  2. L36
    specialize signed_table_lookup_any (n)
  3. L37
    specialize signed_table_lookup_any (V)
  4. L38
    specialize signed_table_lookup_any (j)
  5. L39
    apply signed_table_lookup_any
  6. L40
    exact hv_right_left
11Separate the logical casesL41–41

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

  1. L41
    cases hc
12Construct an explicit witnessL42–43

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

  1. L42
    exists x
  2. L43
    exists x1
13Separate the logical casesL44–44

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

  1. L44
    split
14Use earlier factsL45–45

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

  1. L45
    exact hb_witness
15Separate the logical casesL46–46

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

  1. L46
    split
16Use earlier factsL47–56

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

  1. L47
    exact hc_witness
  2. L48
    specialize hp_right_right_right (i)
  3. L49
    specialize hp_right_right_right (j)
  4. L50
    specialize hp_right_right_right (a)
  5. L51
    specialize hp_right_right_right (x)
  6. L52
    specialize hp_right_right_right (x1)
  7. L53
    apply hp_right_right_right
  8. L54
    exact hi
  9. L55
    exact hj
  10. L56
    exact ha
17Use earlier factsL57–57

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

  1. L57
    exact hb_witness
18Establish htL58–67

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

  1. L58
    have ht : ArithAt(T,0 + n · i + 1 · j,x1)Definitions: ArithAt
  2. L59
    specialize signed_rectangular_slice_lookup (T)
  3. L60
    specialize signed_rectangular_slice_lookup (V)
  4. L61
    specialize signed_rectangular_slice_lookup (((0) + ((n) * (i))))
  5. L62
    specialize signed_rectangular_slice_lookup (1)
  6. L63
    specialize signed_rectangular_slice_lookup (n)
  7. L64
    specialize signed_rectangular_slice_lookup (j)
  8. L65
    specialize signed_rectangular_slice_lookup (x1)
  9. L66
    apply signed_rectangular_slice_lookup
  10. L67
    exact hv
19Use earlier factsL68–69

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

  1. L68
    exact hj
  2. L69
    exact hc_witness
20Establish hindexL70–79

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

  1. L70
    have hindex : ((((0) + ((n) * (i)))) + ((1) * (j))) = ((n)*(i)+(j))
  2. L71
    congr
  3. L72
    specialize zero_add (n*i)
  4. L73
    apply zero_add
  5. L74
    specialize one_mul (j)
  6. L75
    apply one_mul
  7. L76
    rewrite hindex at ht
  8. L77
    rewrite hindex at ht
  9. L78
    rewrite hindex at ht
  10. L79
    rewrite hindex at ht
21Use earlier factsL80–80

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

  1. L80
    exact ht

Library-wide reading audit

Original exact command ledger · 80 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro T
  4. 0004intro V
  5. 0005intro m
  6. 0006intro n
  7. 0007intro i
  8. 0008intro a
  9. 0009intro hp
  10. 0010intro hi
  11. 0011intro ha
  12. 0012intro hv
  13. 0013cases hp
  14. 0014cases hp_right
  15. 0015cases hp_right_right
  16. 0016cases hv
  17. 0017cases hv_right
  18. 0018split
  19. 0019specialize signed_table_domain_resize (0)
  20. 0020specialize signed_table_domain_resize (n)
  21. 0021specialize signed_table_domain_resize (G)
  22. 0022apply signed_table_domain_resize
  23. 0023exact hp_right_left
  24. 0024split
  25. 0025exact hv_right_left
  26. 0026intro j
  27. 0027intro hj
  28. 0028have hb : exists b. (exists dst_positive_code_row_first dst_positive_scale_row_first dst_negative_code_row_first dst_negative_scale_row_first dst_positive_row_first dst_negative_row_first. (((G) = (((((dst_positive_code_row_first) + (dst_positive_scale_row_first)) * S ((dst_positive_code_row_first) + (dst_positive_scale_row_first)) + ((dst_positive_scale_row_first) + (dst_positive_scale_row_first))) + (((dst_negative_code_row_first) + (dst_negative_scale_row_first)) * S ((dst_negative_code_row_first) + (dst_negative_scale_row_first)) + ((dst_negative_scale_row_first) + (dst_negative_scale_row_first)))) * S ((((dst_positive_code_row_first) + (dst_positive_scale_row_first)) * S ((dst_positive_code_row_first) + (dst_positive_scale_row_first)) + ((dst_positive_scale_row_first) + (dst_positive_scale_row_first))) + (((dst_negative_code_row_first) + (dst_negative_scale_row_first)) * S ((dst_negative_code_row_first) + (dst_negative_scale_row_first)) + ((dst_negative_scale_row_first) + (dst_negative_scale_row_first)))) + ((((dst_negative_code_row_first) + (dst_negative_scale_row_first)) * S ((dst_negative_code_row_first) + (dst_negative_scale_row_first)) + ((dst_negative_scale_row_first) + (dst_negative_scale_row_first))) + (((dst_negative_code_row_first) + (dst_negative_scale_row_first)) * S ((dst_negative_code_row_first) + (dst_negative_scale_row_first)) + ((dst_negative_scale_row_first) + (dst_negative_scale_row_first)))))) /\ (((((exists ff_h_pvs_row_firstpositive. ff_h_pvs_row_firstpositive + S (dst_positive_row_first) = S ((S (j)) * dst_positive_scale_row_first)) /\ exists ff_q_pvs_row_firstpositive. dst_positive_code_row_first = ff_q_pvs_row_firstpositive * S ((S (j)) * dst_positive_scale_row_first) + (dst_positive_row_first))) /\ (((((exists ff_h_pvs_row_firstnegative. ff_h_pvs_row_firstnegative + S (dst_negative_row_first) = S ((S (j)) * dst_negative_scale_row_first)) /\ exists ff_q_pvs_row_firstnegative. dst_negative_code_row_first = ff_q_pvs_row_firstnegative * S ((S (j)) * dst_negative_scale_row_first) + (dst_negative_row_first))) /\ (exists ge_balance_positive_row_firstvalue ge_balance_negative_row_firstvalue. (((((b) = 2 * (ge_balance_positive_row_firstvalue) /\ (ge_balance_negative_row_firstvalue) = 0) \/ exists ge_signed_half_row_firstvaluedecode. (((b) = 2 * ge_signed_half_row_firstvaluedecode + 1 /\ (ge_balance_positive_row_firstvalue) = 0) /\ (ge_balance_negative_row_firstvalue) = S ge_signed_half_row_firstvaluedecode))) /\ ((dst_positive_row_first) + ge_balance_negative_row_firstvalue = (dst_negative_row_first) + ge_balance_positive_row_firstvalue)))))))))
  29. 0029specialize signed_table_lookup_any (0)
  30. 0030specialize signed_table_lookup_any (G)
  31. 0031specialize signed_table_lookup_any (j)
  32. 0032apply signed_table_lookup_any
  33. 0033exact hp_right_left
  34. 0034cases hb
  35. 0035have hc : exists c. (exists dst_positive_code_row_second dst_positive_scale_row_second dst_negative_code_row_second dst_negative_scale_row_second dst_positive_row_second dst_negative_row_second. (((V) = (((((dst_positive_code_row_second) + (dst_positive_scale_row_second)) * S ((dst_positive_code_row_second) + (dst_positive_scale_row_second)) + ((dst_positive_scale_row_second) + (dst_positive_scale_row_second))) + (((dst_negative_code_row_second) + (dst_negative_scale_row_second)) * S ((dst_negative_code_row_second) + (dst_negative_scale_row_second)) + ((dst_negative_scale_row_second) + (dst_negative_scale_row_second)))) * S ((((dst_positive_code_row_second) + (dst_positive_scale_row_second)) * S ((dst_positive_code_row_second) + (dst_positive_scale_row_second)) + ((dst_positive_scale_row_second) + (dst_positive_scale_row_second))) + (((dst_negative_code_row_second) + (dst_negative_scale_row_second)) * S ((dst_negative_code_row_second) + (dst_negative_scale_row_second)) + ((dst_negative_scale_row_second) + (dst_negative_scale_row_second)))) + ((((dst_negative_code_row_second) + (dst_negative_scale_row_second)) * S ((dst_negative_code_row_second) + (dst_negative_scale_row_second)) + ((dst_negative_scale_row_second) + (dst_negative_scale_row_second))) + (((dst_negative_code_row_second) + (dst_negative_scale_row_second)) * S ((dst_negative_code_row_second) + (dst_negative_scale_row_second)) + ((dst_negative_scale_row_second) + (dst_negative_scale_row_second)))))) /\ (((((exists ff_h_pvs_row_secondpositive. ff_h_pvs_row_secondpositive + S (dst_positive_row_second) = S ((S (j)) * dst_positive_scale_row_second)) /\ exists ff_q_pvs_row_secondpositive. dst_positive_code_row_second = ff_q_pvs_row_secondpositive * S ((S (j)) * dst_positive_scale_row_second) + (dst_positive_row_second))) /\ (((((exists ff_h_pvs_row_secondnegative. ff_h_pvs_row_secondnegative + S (dst_negative_row_second) = S ((S (j)) * dst_negative_scale_row_second)) /\ exists ff_q_pvs_row_secondnegative. dst_negative_code_row_second = ff_q_pvs_row_secondnegative * S ((S (j)) * dst_negative_scale_row_second) + (dst_negative_row_second))) /\ (exists ge_balance_positive_row_secondvalue ge_balance_negative_row_secondvalue. (((((c) = 2 * (ge_balance_positive_row_secondvalue) /\ (ge_balance_negative_row_secondvalue) = 0) \/ exists ge_signed_half_row_secondvaluedecode. (((c) = 2 * ge_signed_half_row_secondvaluedecode + 1 /\ (ge_balance_positive_row_secondvalue) = 0) /\ (ge_balance_negative_row_secondvalue) = S ge_signed_half_row_secondvaluedecode))) /\ ((dst_positive_row_second) + ge_balance_negative_row_secondvalue = (dst_negative_row_second) + ge_balance_positive_row_secondvalue)))))))))
  36. 0036specialize signed_table_lookup_any (n)
  37. 0037specialize signed_table_lookup_any (V)
  38. 0038specialize signed_table_lookup_any (j)
  39. 0039apply signed_table_lookup_any
  40. 0040exact hv_right_left
  41. 0041cases hc
  42. 0042exists x
  43. 0043exists x1
  44. 0044split
  45. 0045exact hb_witness
  46. 0046split
  47. 0047exact hc_witness
  48. 0048specialize hp_right_right_right (i)
  49. 0049specialize hp_right_right_right (j)
  50. 0050specialize hp_right_right_right (a)
  51. 0051specialize hp_right_right_right (x)
  52. 0052specialize hp_right_right_right (x1)
  53. 0053apply hp_right_right_right
  54. 0054exact hi
  55. 0055exact hj
  56. 0056exact ha
  57. 0057exact hb_witness
  58. 0058have ht : exists dst_positive_code_row_source dst_positive_scale_row_source dst_negative_code_row_source dst_negative_scale_row_source dst_positive_row_source dst_negative_row_source. (((T) = (((((dst_positive_code_row_source) + (dst_positive_scale_row_source)) * S ((dst_positive_code_row_source) + (dst_positive_scale_row_source)) + ((dst_positive_scale_row_source) + (dst_positive_scale_row_source))) + (((dst_negative_code_row_source) + (dst_negative_scale_row_source)) * S ((dst_negative_code_row_source) + (dst_negative_scale_row_source)) + ((dst_negative_scale_row_source) + (dst_negative_scale_row_source)))) * S ((((dst_positive_code_row_source) + (dst_positive_scale_row_source)) * S ((dst_positive_code_row_source) + (dst_positive_scale_row_source)) + ((dst_positive_scale_row_source) + (dst_positive_scale_row_source))) + (((dst_negative_code_row_source) + (dst_negative_scale_row_source)) * S ((dst_negative_code_row_source) + (dst_negative_scale_row_source)) + ((dst_negative_scale_row_source) + (dst_negative_scale_row_source)))) + ((((dst_negative_code_row_source) + (dst_negative_scale_row_source)) * S ((dst_negative_code_row_source) + (dst_negative_scale_row_source)) + ((dst_negative_scale_row_source) + (dst_negative_scale_row_source))) + (((dst_negative_code_row_source) + (dst_negative_scale_row_source)) * S ((dst_negative_code_row_source) + (dst_negative_scale_row_source)) + ((dst_negative_scale_row_source) + (dst_negative_scale_row_source)))))) /\ (((((exists ff_h_pvs_row_sourcepositive. ff_h_pvs_row_sourcepositive + S (dst_positive_row_source) = S ((S (((((0) + ((n) * (i)))) + ((1) * (j))))) * dst_positive_scale_row_source)) /\ exists ff_q_pvs_row_sourcepositive. dst_positive_code_row_source = ff_q_pvs_row_sourcepositive * S ((S (((((0) + ((n) * (i)))) + ((1) * (j))))) * dst_positive_scale_row_source) + (dst_positive_row_source))) /\ (((((exists ff_h_pvs_row_sourcenegative. ff_h_pvs_row_sourcenegative + S (dst_negative_row_source) = S ((S (((((0) + ((n) * (i)))) + ((1) * (j))))) * dst_negative_scale_row_source)) /\ exists ff_q_pvs_row_sourcenegative. dst_negative_code_row_source = ff_q_pvs_row_sourcenegative * S ((S (((((0) + ((n) * (i)))) + ((1) * (j))))) * dst_negative_scale_row_source) + (dst_negative_row_source))) /\ (exists ge_balance_positive_row_sourcevalue ge_balance_negative_row_sourcevalue. (((((x1) = 2 * (ge_balance_positive_row_sourcevalue) /\ (ge_balance_negative_row_sourcevalue) = 0) \/ exists ge_signed_half_row_sourcevaluedecode. (((x1) = 2 * ge_signed_half_row_sourcevaluedecode + 1 /\ (ge_balance_positive_row_sourcevalue) = 0) /\ (ge_balance_negative_row_sourcevalue) = S ge_signed_half_row_sourcevaluedecode))) /\ ((dst_positive_row_source) + ge_balance_negative_row_sourcevalue = (dst_negative_row_source) + ge_balance_positive_row_sourcevalue))))))))
  59. 0059specialize signed_rectangular_slice_lookup (T)
  60. 0060specialize signed_rectangular_slice_lookup (V)
  61. 0061specialize signed_rectangular_slice_lookup (((0) + ((n) * (i))))
  62. 0062specialize signed_rectangular_slice_lookup (1)
  63. 0063specialize signed_rectangular_slice_lookup (n)
  64. 0064specialize signed_rectangular_slice_lookup (j)
  65. 0065specialize signed_rectangular_slice_lookup (x1)
  66. 0066apply signed_rectangular_slice_lookup
  67. 0067exact hv
  68. 0068exact hj
  69. 0069exact hc_witness
  70. 0070have hindex : ((((0) + ((n) * (i)))) + ((1) * (j))) = ((n)*(i)+(j))
  71. 0071congr
  72. 0072specialize zero_add (n*i)
  73. 0073apply zero_add
  74. 0074specialize one_mul (j)
  75. 0075apply one_mul
  76. 0076rewrite hindex at ht
  77. 0077rewrite hindex at ht
  78. 0078rewrite hindex at ht
  79. 0079rewrite hindex at ht
  80. 0080exact ht