MX0026

signed_cartesian_product_exists

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

Construct an actual finite signed outer-product beta table for arbitrary dimensions, explicitly including zero width and zero height.

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 m n. (exists dst_positive_code_exists_F dst_positive_scale_exists_F dst_negative_code_exists_F dst_negative_scale_exists_F. (((F) = (((((dst_positive_code_exists_F) + (dst_positive_scale_exists_F)) * S ((dst_positive_code_exists_F) + (dst_positive_scale_exists_F)) + ((dst_positive_scale_exists_F) + (dst_positive_scale_exists_F))) + (((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) * S ((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) + ((dst_negative_scale_exists_F) + (dst_negative_scale_exists_F)))) * S ((((dst_positive_code_exists_F) + (dst_positive_scale_exists_F)) * S ((dst_positive_code_exists_F) + (dst_positive_scale_exists_F)) + ((dst_positive_scale_exists_F) + (dst_positive_scale_exists_F))) + (((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) * S ((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) + ((dst_negative_scale_exists_F) + (dst_negative_scale_exists_F)))) + ((((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) * S ((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) + ((dst_negative_scale_exists_F) + (dst_negative_scale_exists_F))) + (((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) * S ((dst_negative_code_exists_F) + (dst_negative_scale_exists_F)) + ((dst_negative_scale_exists_F) + (dst_negative_scale_exists_F)))))) /\ (forall dst_index_exists_F. (exists pvs_le_gap_exists_Fdomain. pvs_le_gap_exists_Fdomain + (dst_index_exists_F) = (0)) -> exists dst_positive_exists_F dst_negative_exists_F dst_value_exists_F. ((((exists ff_h_pvs_exists_Fentrypositive. ff_h_pvs_exists_Fentrypositive + S (dst_positive_exists_F) = S ((S (dst_index_exists_F)) * dst_positive_scale_exists_F)) /\ exists ff_q_pvs_exists_Fentrypositive. dst_positive_code_exists_F = ff_q_pvs_exists_Fentrypositive * S ((S (dst_index_exists_F)) * dst_positive_scale_exists_F) + (dst_positive_exists_F))) /\ (((((exists ff_h_pvs_exists_Fentrynegative. ff_h_pvs_exists_Fentrynegative + S (dst_negative_exists_F) = S ((S (dst_index_exists_F)) * dst_negative_scale_exists_F)) /\ exists ff_q_pvs_exists_Fentrynegative. dst_negative_code_exists_F = ff_q_pvs_exists_Fentrynegative * S ((S (dst_index_exists_F)) * dst_negative_scale_exists_F) + (dst_negative_exists_F))) /\ (exists ge_balance_positive_exists_Fentryvalue ge_balance_negative_exists_Fentryvalue. (((((dst_value_exists_F) = 2 * (ge_balance_positive_exists_Fentryvalue) /\ (ge_balance_negative_exists_Fentryvalue) = 0) \/ exists ge_signed_half_exists_Fentryvaluedecode. (((dst_value_exists_F) = 2 * ge_signed_half_exists_Fentryvaluedecode + 1 /\ (ge_balance_positive_exists_Fentryvalue) = 0) /\ (ge_balance_negative_exists_Fentryvalue) = S ge_signed_half_exists_Fentryvaluedecode))) /\ ((dst_positive_exists_F) + ge_balance_negative_exists_Fentryvalue = (dst_negative_exists_F) + ge_balance_positive_exists_Fentryvalue))))))))) -> (exists dst_positive_code_exists_G dst_positive_scale_exists_G dst_negative_code_exists_G dst_negative_scale_exists_G. (((G) = (((((dst_positive_code_exists_G) + (dst_positive_scale_exists_G)) * S ((dst_positive_code_exists_G) + (dst_positive_scale_exists_G)) + ((dst_positive_scale_exists_G) + (dst_positive_scale_exists_G))) + (((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) * S ((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) + ((dst_negative_scale_exists_G) + (dst_negative_scale_exists_G)))) * S ((((dst_positive_code_exists_G) + (dst_positive_scale_exists_G)) * S ((dst_positive_code_exists_G) + (dst_positive_scale_exists_G)) + ((dst_positive_scale_exists_G) + (dst_positive_scale_exists_G))) + (((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) * S ((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) + ((dst_negative_scale_exists_G) + (dst_negative_scale_exists_G)))) + ((((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) * S ((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) + ((dst_negative_scale_exists_G) + (dst_negative_scale_exists_G))) + (((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) * S ((dst_negative_code_exists_G) + (dst_negative_scale_exists_G)) + ((dst_negative_scale_exists_G) + (dst_negative_scale_exists_G)))))) /\ (forall dst_index_exists_G. (exists pvs_le_gap_exists_Gdomain. pvs_le_gap_exists_Gdomain + (dst_index_exists_G) = (0)) -> exists dst_positive_exists_G dst_negative_exists_G dst_value_exists_G. ((((exists ff_h_pvs_exists_Gentrypositive. ff_h_pvs_exists_Gentrypositive + S (dst_positive_exists_G) = S ((S (dst_index_exists_G)) * dst_positive_scale_exists_G)) /\ exists ff_q_pvs_exists_Gentrypositive. dst_positive_code_exists_G = ff_q_pvs_exists_Gentrypositive * S ((S (dst_index_exists_G)) * dst_positive_scale_exists_G) + (dst_positive_exists_G))) /\ (((((exists ff_h_pvs_exists_Gentrynegative. ff_h_pvs_exists_Gentrynegative + S (dst_negative_exists_G) = S ((S (dst_index_exists_G)) * dst_negative_scale_exists_G)) /\ exists ff_q_pvs_exists_Gentrynegative. dst_negative_code_exists_G = ff_q_pvs_exists_Gentrynegative * S ((S (dst_index_exists_G)) * dst_negative_scale_exists_G) + (dst_negative_exists_G))) /\ (exists ge_balance_positive_exists_Gentryvalue ge_balance_negative_exists_Gentryvalue. (((((dst_value_exists_G) = 2 * (ge_balance_positive_exists_Gentryvalue) /\ (ge_balance_negative_exists_Gentryvalue) = 0) \/ exists ge_signed_half_exists_Gentryvaluedecode. (((dst_value_exists_G) = 2 * ge_signed_half_exists_Gentryvaluedecode + 1 /\ (ge_balance_positive_exists_Gentryvalue) = 0) /\ (ge_balance_negative_exists_Gentryvalue) = S ge_signed_half_exists_Gentryvaluedecode))) /\ ((dst_positive_exists_G) + ge_balance_negative_exists_Gentryvalue = (dst_negative_exists_G) + ge_balance_positive_exists_Gentryvalue))))))))) -> exists T. (((exists dst_positive_code_exists_resultF dst_positive_scale_exists_resultF dst_negative_code_exists_resultF dst_negative_scale_exists_resultF. (((F) = (((((dst_positive_code_exists_resultF) + (dst_positive_scale_exists_resultF)) * S ((dst_positive_code_exists_resultF) + (dst_positive_scale_exists_resultF)) + ((dst_positive_scale_exists_resultF) + (dst_positive_scale_exists_resultF))) + (((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) * S ((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) + ((dst_negative_scale_exists_resultF) + (dst_negative_scale_exists_resultF)))) * S ((((dst_positive_code_exists_resultF) + (dst_positive_scale_exists_resultF)) * S ((dst_positive_code_exists_resultF) + (dst_positive_scale_exists_resultF)) + ((dst_positive_scale_exists_resultF) + (dst_positive_scale_exists_resultF))) + (((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) * S ((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) + ((dst_negative_scale_exists_resultF) + (dst_negative_scale_exists_resultF)))) + ((((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) * S ((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) + ((dst_negative_scale_exists_resultF) + (dst_negative_scale_exists_resultF))) + (((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) * S ((dst_negative_code_exists_resultF) + (dst_negative_scale_exists_resultF)) + ((dst_negative_scale_exists_resultF) + (dst_negative_scale_exists_resultF)))))) /\ (forall dst_index_exists_resultF. (exists pvs_le_gap_exists_resultFdomain. pvs_le_gap_exists_resultFdomain + (dst_index_exists_resultF) = (0)) -> exists dst_positive_exists_resultF dst_negative_exists_resultF dst_value_exists_resultF. ((((exists ff_h_pvs_exists_resultFentrypositive. ff_h_pvs_exists_resultFentrypositive + S (dst_positive_exists_resultF) = S ((S (dst_index_exists_resultF)) * dst_positive_scale_exists_resultF)) /\ exists ff_q_pvs_exists_resultFentrypositive. dst_positive_code_exists_resultF = ff_q_pvs_exists_resultFentrypositive * S ((S (dst_index_exists_resultF)) * dst_positive_scale_exists_resultF) + (dst_positive_exists_resultF))) /\ (((((exists ff_h_pvs_exists_resultFentrynegative. ff_h_pvs_exists_resultFentrynegative + S (dst_negative_exists_resultF) = S ((S (dst_index_exists_resultF)) * dst_negative_scale_exists_resultF)) /\ exists ff_q_pvs_exists_resultFentrynegative. dst_negative_code_exists_resultF = ff_q_pvs_exists_resultFentrynegative * S ((S (dst_index_exists_resultF)) * dst_negative_scale_exists_resultF) + (dst_negative_exists_resultF))) /\ (exists ge_balance_positive_exists_resultFentryvalue ge_balance_negative_exists_resultFentryvalue. (((((dst_value_exists_resultF) = 2 * (ge_balance_positive_exists_resultFentryvalue) /\ (ge_balance_negative_exists_resultFentryvalue) = 0) \/ exists ge_signed_half_exists_resultFentryvaluedecode. (((dst_value_exists_resultF) = 2 * ge_signed_half_exists_resultFentryvaluedecode + 1 /\ (ge_balance_positive_exists_resultFentryvalue) = 0) /\ (ge_balance_negative_exists_resultFentryvalue) = S ge_signed_half_exists_resultFentryvaluedecode))) /\ ((dst_positive_exists_resultF) + ge_balance_negative_exists_resultFentryvalue = (dst_negative_exists_resultF) + ge_balance_positive_exists_resultFentryvalue))))))))) /\ (((exists dst_positive_code_exists_resultG dst_positive_scale_exists_resultG dst_negative_code_exists_resultG dst_negative_scale_exists_resultG. (((G) = (((((dst_positive_code_exists_resultG) + (dst_positive_scale_exists_resultG)) * S ((dst_positive_code_exists_resultG) + (dst_positive_scale_exists_resultG)) + ((dst_positive_scale_exists_resultG) + (dst_positive_scale_exists_resultG))) + (((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) * S ((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) + ((dst_negative_scale_exists_resultG) + (dst_negative_scale_exists_resultG)))) * S ((((dst_positive_code_exists_resultG) + (dst_positive_scale_exists_resultG)) * S ((dst_positive_code_exists_resultG) + (dst_positive_scale_exists_resultG)) + ((dst_positive_scale_exists_resultG) + (dst_positive_scale_exists_resultG))) + (((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) * S ((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) + ((dst_negative_scale_exists_resultG) + (dst_negative_scale_exists_resultG)))) + ((((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) * S ((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) + ((dst_negative_scale_exists_resultG) + (dst_negative_scale_exists_resultG))) + (((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) * S ((dst_negative_code_exists_resultG) + (dst_negative_scale_exists_resultG)) + ((dst_negative_scale_exists_resultG) + (dst_negative_scale_exists_resultG)))))) /\ (forall dst_index_exists_resultG. (exists pvs_le_gap_exists_resultGdomain. pvs_le_gap_exists_resultGdomain + (dst_index_exists_resultG) = (0)) -> exists dst_positive_exists_resultG dst_negative_exists_resultG dst_value_exists_resultG. ((((exists ff_h_pvs_exists_resultGentrypositive. ff_h_pvs_exists_resultGentrypositive + S (dst_positive_exists_resultG) = S ((S (dst_index_exists_resultG)) * dst_positive_scale_exists_resultG)) /\ exists ff_q_pvs_exists_resultGentrypositive. dst_positive_code_exists_resultG = ff_q_pvs_exists_resultGentrypositive * S ((S (dst_index_exists_resultG)) * dst_positive_scale_exists_resultG) + (dst_positive_exists_resultG))) /\ (((((exists ff_h_pvs_exists_resultGentrynegative. ff_h_pvs_exists_resultGentrynegative + S (dst_negative_exists_resultG) = S ((S (dst_index_exists_resultG)) * dst_negative_scale_exists_resultG)) /\ exists ff_q_pvs_exists_resultGentrynegative. dst_negative_code_exists_resultG = ff_q_pvs_exists_resultGentrynegative * S ((S (dst_index_exists_resultG)) * dst_negative_scale_exists_resultG) + (dst_negative_exists_resultG))) /\ (exists ge_balance_positive_exists_resultGentryvalue ge_balance_negative_exists_resultGentryvalue. (((((dst_value_exists_resultG) = 2 * (ge_balance_positive_exists_resultGentryvalue) /\ (ge_balance_negative_exists_resultGentryvalue) = 0) \/ exists ge_signed_half_exists_resultGentryvaluedecode. (((dst_value_exists_resultG) = 2 * ge_signed_half_exists_resultGentryvaluedecode + 1 /\ (ge_balance_positive_exists_resultGentryvalue) = 0) /\ (ge_balance_negative_exists_resultGentryvalue) = S ge_signed_half_exists_resultGentryvaluedecode))) /\ ((dst_positive_exists_resultG) + ge_balance_negative_exists_resultGentryvalue = (dst_negative_exists_resultG) + ge_balance_positive_exists_resultGentryvalue))))))))) /\ (((exists dst_positive_code_exists_resultT dst_positive_scale_exists_resultT dst_negative_code_exists_resultT dst_negative_scale_exists_resultT. (((T) = (((((dst_positive_code_exists_resultT) + (dst_positive_scale_exists_resultT)) * S ((dst_positive_code_exists_resultT) + (dst_positive_scale_exists_resultT)) + ((dst_positive_scale_exists_resultT) + (dst_positive_scale_exists_resultT))) + (((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) * S ((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) + ((dst_negative_scale_exists_resultT) + (dst_negative_scale_exists_resultT)))) * S ((((dst_positive_code_exists_resultT) + (dst_positive_scale_exists_resultT)) * S ((dst_positive_code_exists_resultT) + (dst_positive_scale_exists_resultT)) + ((dst_positive_scale_exists_resultT) + (dst_positive_scale_exists_resultT))) + (((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) * S ((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) + ((dst_negative_scale_exists_resultT) + (dst_negative_scale_exists_resultT)))) + ((((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) * S ((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) + ((dst_negative_scale_exists_resultT) + (dst_negative_scale_exists_resultT))) + (((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) * S ((dst_negative_code_exists_resultT) + (dst_negative_scale_exists_resultT)) + ((dst_negative_scale_exists_resultT) + (dst_negative_scale_exists_resultT)))))) /\ (forall dst_index_exists_resultT. (exists pvs_le_gap_exists_resultTdomain. pvs_le_gap_exists_resultTdomain + (dst_index_exists_resultT) = ((m)*(n))) -> exists dst_positive_exists_resultT dst_negative_exists_resultT dst_value_exists_resultT. ((((exists ff_h_pvs_exists_resultTentrypositive. ff_h_pvs_exists_resultTentrypositive + S (dst_positive_exists_resultT) = S ((S (dst_index_exists_resultT)) * dst_positive_scale_exists_resultT)) /\ exists ff_q_pvs_exists_resultTentrypositive. dst_positive_code_exists_resultT = ff_q_pvs_exists_resultTentrypositive * S ((S (dst_index_exists_resultT)) * dst_positive_scale_exists_resultT) + (dst_positive_exists_resultT))) /\ (((((exists ff_h_pvs_exists_resultTentrynegative. ff_h_pvs_exists_resultTentrynegative + S (dst_negative_exists_resultT) = S ((S (dst_index_exists_resultT)) * dst_negative_scale_exists_resultT)) /\ exists ff_q_pvs_exists_resultTentrynegative. dst_negative_code_exists_resultT = ff_q_pvs_exists_resultTentrynegative * S ((S (dst_index_exists_resultT)) * dst_negative_scale_exists_resultT) + (dst_negative_exists_resultT))) /\ (exists ge_balance_positive_exists_resultTentryvalue ge_balance_negative_exists_resultTentryvalue. (((((dst_value_exists_resultT) = 2 * (ge_balance_positive_exists_resultTentryvalue) /\ (ge_balance_negative_exists_resultTentryvalue) = 0) \/ exists ge_signed_half_exists_resultTentryvaluedecode. (((dst_value_exists_resultT) = 2 * ge_signed_half_exists_resultTentryvaluedecode + 1 /\ (ge_balance_positive_exists_resultTentryvalue) = 0) /\ (ge_balance_negative_exists_resultTentryvalue) = S ge_signed_half_exists_resultTentryvaluedecode))) /\ ((dst_positive_exists_resultT) + ge_balance_negative_exists_resultTentryvalue = (dst_negative_exists_resultT) + ge_balance_positive_exists_resultTentryvalue))))))))) /\ (forall scp_row_exists_result scp_column_exists_result scp_first_exists_result scp_second_exists_result scp_value_exists_result. (exists pvs_gap_exists_resultrows. pvs_gap_exists_resultrows + S (scp_row_exists_result) = (m)) -> (exists pvs_gap_exists_resultcolumns. pvs_gap_exists_resultcolumns + S (scp_column_exists_result) = (n)) -> (exists dst_positive_code_exists_resultfirst dst_positive_scale_exists_resultfirst dst_negative_code_exists_resultfirst dst_negative_scale_exists_resultfirst dst_positive_exists_resultfirst dst_negative_exists_resultfirst. (((F) = (((((dst_positive_code_exists_resultfirst) + (dst_positive_scale_exists_resultfirst)) * S ((dst_positive_code_exists_resultfirst) + (dst_positive_scale_exists_resultfirst)) + ((dst_positive_scale_exists_resultfirst) + (dst_positive_scale_exists_resultfirst))) + (((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) * S ((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) + ((dst_negative_scale_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)))) * S ((((dst_positive_code_exists_resultfirst) + (dst_positive_scale_exists_resultfirst)) * S ((dst_positive_code_exists_resultfirst) + (dst_positive_scale_exists_resultfirst)) + ((dst_positive_scale_exists_resultfirst) + (dst_positive_scale_exists_resultfirst))) + (((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) * S ((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) + ((dst_negative_scale_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)))) + ((((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) * S ((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) + ((dst_negative_scale_exists_resultfirst) + (dst_negative_scale_exists_resultfirst))) + (((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) * S ((dst_negative_code_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)) + ((dst_negative_scale_exists_resultfirst) + (dst_negative_scale_exists_resultfirst)))))) /\ (((((exists ff_h_pvs_exists_resultfirstpositive. ff_h_pvs_exists_resultfirstpositive + S (dst_positive_exists_resultfirst) = S ((S (scp_row_exists_result)) * dst_positive_scale_exists_resultfirst)) /\ exists ff_q_pvs_exists_resultfirstpositive. dst_positive_code_exists_resultfirst = ff_q_pvs_exists_resultfirstpositive * S ((S (scp_row_exists_result)) * dst_positive_scale_exists_resultfirst) + (dst_positive_exists_resultfirst))) /\ (((((exists ff_h_pvs_exists_resultfirstnegative. ff_h_pvs_exists_resultfirstnegative + S (dst_negative_exists_resultfirst) = S ((S (scp_row_exists_result)) * dst_negative_scale_exists_resultfirst)) /\ exists ff_q_pvs_exists_resultfirstnegative. dst_negative_code_exists_resultfirst = ff_q_pvs_exists_resultfirstnegative * S ((S (scp_row_exists_result)) * dst_negative_scale_exists_resultfirst) + (dst_negative_exists_resultfirst))) /\ (exists ge_balance_positive_exists_resultfirstvalue ge_balance_negative_exists_resultfirstvalue. (((((scp_first_exists_result) = 2 * (ge_balance_positive_exists_resultfirstvalue) /\ (ge_balance_negative_exists_resultfirstvalue) = 0) \/ exists ge_signed_half_exists_resultfirstvaluedecode. (((scp_first_exists_result) = 2 * ge_signed_half_exists_resultfirstvaluedecode + 1 /\ (ge_balance_positive_exists_resultfirstvalue) = 0) /\ (ge_balance_negative_exists_resultfirstvalue) = S ge_signed_half_exists_resultfirstvaluedecode))) /\ ((dst_positive_exists_resultfirst) + ge_balance_negative_exists_resultfirstvalue = (dst_negative_exists_resultfirst) + ge_balance_positive_exists_resultfirstvalue))))))))) -> (exists dst_positive_code_exists_resultsecond dst_positive_scale_exists_resultsecond dst_negative_code_exists_resultsecond dst_negative_scale_exists_resultsecond dst_positive_exists_resultsecond dst_negative_exists_resultsecond. (((G) = (((((dst_positive_code_exists_resultsecond) + (dst_positive_scale_exists_resultsecond)) * S ((dst_positive_code_exists_resultsecond) + (dst_positive_scale_exists_resultsecond)) + ((dst_positive_scale_exists_resultsecond) + (dst_positive_scale_exists_resultsecond))) + (((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) * S ((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) + ((dst_negative_scale_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)))) * S ((((dst_positive_code_exists_resultsecond) + (dst_positive_scale_exists_resultsecond)) * S ((dst_positive_code_exists_resultsecond) + (dst_positive_scale_exists_resultsecond)) + ((dst_positive_scale_exists_resultsecond) + (dst_positive_scale_exists_resultsecond))) + (((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) * S ((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) + ((dst_negative_scale_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)))) + ((((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) * S ((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) + ((dst_negative_scale_exists_resultsecond) + (dst_negative_scale_exists_resultsecond))) + (((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) * S ((dst_negative_code_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)) + ((dst_negative_scale_exists_resultsecond) + (dst_negative_scale_exists_resultsecond)))))) /\ (((((exists ff_h_pvs_exists_resultsecondpositive. ff_h_pvs_exists_resultsecondpositive + S (dst_positive_exists_resultsecond) = S ((S (scp_column_exists_result)) * dst_positive_scale_exists_resultsecond)) /\ exists ff_q_pvs_exists_resultsecondpositive. dst_positive_code_exists_resultsecond = ff_q_pvs_exists_resultsecondpositive * S ((S (scp_column_exists_result)) * dst_positive_scale_exists_resultsecond) + (dst_positive_exists_resultsecond))) /\ (((((exists ff_h_pvs_exists_resultsecondnegative. ff_h_pvs_exists_resultsecondnegative + S (dst_negative_exists_resultsecond) = S ((S (scp_column_exists_result)) * dst_negative_scale_exists_resultsecond)) /\ exists ff_q_pvs_exists_resultsecondnegative. dst_negative_code_exists_resultsecond = ff_q_pvs_exists_resultsecondnegative * S ((S (scp_column_exists_result)) * dst_negative_scale_exists_resultsecond) + (dst_negative_exists_resultsecond))) /\ (exists ge_balance_positive_exists_resultsecondvalue ge_balance_negative_exists_resultsecondvalue. (((((scp_second_exists_result) = 2 * (ge_balance_positive_exists_resultsecondvalue) /\ (ge_balance_negative_exists_resultsecondvalue) = 0) \/ exists ge_signed_half_exists_resultsecondvaluedecode. (((scp_second_exists_result) = 2 * ge_signed_half_exists_resultsecondvaluedecode + 1 /\ (ge_balance_positive_exists_resultsecondvalue) = 0) /\ (ge_balance_negative_exists_resultsecondvalue) = S ge_signed_half_exists_resultsecondvaluedecode))) /\ ((dst_positive_exists_resultsecond) + ge_balance_negative_exists_resultsecondvalue = (dst_negative_exists_resultsecond) + ge_balance_positive_exists_resultsecondvalue))))))))) -> (exists dst_positive_code_exists_resultentry dst_positive_scale_exists_resultentry dst_negative_code_exists_resultentry dst_negative_scale_exists_resultentry dst_positive_exists_resultentry dst_negative_exists_resultentry. (((T) = (((((dst_positive_code_exists_resultentry) + (dst_positive_scale_exists_resultentry)) * S ((dst_positive_code_exists_resultentry) + (dst_positive_scale_exists_resultentry)) + ((dst_positive_scale_exists_resultentry) + (dst_positive_scale_exists_resultentry))) + (((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) * S ((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) + ((dst_negative_scale_exists_resultentry) + (dst_negative_scale_exists_resultentry)))) * S ((((dst_positive_code_exists_resultentry) + (dst_positive_scale_exists_resultentry)) * S ((dst_positive_code_exists_resultentry) + (dst_positive_scale_exists_resultentry)) + ((dst_positive_scale_exists_resultentry) + (dst_positive_scale_exists_resultentry))) + (((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) * S ((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) + ((dst_negative_scale_exists_resultentry) + (dst_negative_scale_exists_resultentry)))) + ((((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) * S ((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) + ((dst_negative_scale_exists_resultentry) + (dst_negative_scale_exists_resultentry))) + (((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) * S ((dst_negative_code_exists_resultentry) + (dst_negative_scale_exists_resultentry)) + ((dst_negative_scale_exists_resultentry) + (dst_negative_scale_exists_resultentry)))))) /\ (((((exists ff_h_pvs_exists_resultentrypositive. ff_h_pvs_exists_resultentrypositive + S (dst_positive_exists_resultentry) = S ((S (((n)*(scp_row_exists_result)+(scp_column_exists_result)))) * dst_positive_scale_exists_resultentry)) /\ exists ff_q_pvs_exists_resultentrypositive. dst_positive_code_exists_resultentry = ff_q_pvs_exists_resultentrypositive * S ((S (((n)*(scp_row_exists_result)+(scp_column_exists_result)))) * dst_positive_scale_exists_resultentry) + (dst_positive_exists_resultentry))) /\ (((((exists ff_h_pvs_exists_resultentrynegative. ff_h_pvs_exists_resultentrynegative + S (dst_negative_exists_resultentry) = S ((S (((n)*(scp_row_exists_result)+(scp_column_exists_result)))) * dst_negative_scale_exists_resultentry)) /\ exists ff_q_pvs_exists_resultentrynegative. dst_negative_code_exists_resultentry = ff_q_pvs_exists_resultentrynegative * S ((S (((n)*(scp_row_exists_result)+(scp_column_exists_result)))) * dst_negative_scale_exists_resultentry) + (dst_negative_exists_resultentry))) /\ (exists ge_balance_positive_exists_resultentryvalue ge_balance_negative_exists_resultentryvalue. (((((scp_value_exists_result) = 2 * (ge_balance_positive_exists_resultentryvalue) /\ (ge_balance_negative_exists_resultentryvalue) = 0) \/ exists ge_signed_half_exists_resultentryvaluedecode. (((scp_value_exists_result) = 2 * ge_signed_half_exists_resultentryvaluedecode + 1 /\ (ge_balance_positive_exists_resultentryvalue) = 0) /\ (ge_balance_negative_exists_resultentryvalue) = S ge_signed_half_exists_resultentryvaluedecode))) /\ ((dst_positive_exists_resultentry) + ge_balance_negative_exists_resultentryvalue = (dst_negative_exists_resultentry) + ge_balance_positive_exists_resultentryvalue))))))))) -> (exists sto_ap_exists_resultmultiply sto_an_exists_resultmultiply sto_bp_exists_resultmultiply sto_bn_exists_resultmultiply sto_cp_exists_resultmultiply sto_cn_exists_resultmultiply. (((((scp_first_exists_result) = 2 * (sto_ap_exists_resultmultiply) /\ (sto_an_exists_resultmultiply) = 0) \/ exists ge_signed_half_exists_resultmultiplyleft. (((scp_first_exists_result) = 2 * ge_signed_half_exists_resultmultiplyleft + 1 /\ (sto_ap_exists_resultmultiply) = 0) /\ (sto_an_exists_resultmultiply) = S ge_signed_half_exists_resultmultiplyleft))) /\ ((((((scp_second_exists_result) = 2 * (sto_bp_exists_resultmultiply) /\ (sto_bn_exists_resultmultiply) = 0) \/ exists ge_signed_half_exists_resultmultiplyright. (((scp_second_exists_result) = 2 * ge_signed_half_exists_resultmultiplyright + 1 /\ (sto_bp_exists_resultmultiply) = 0) /\ (sto_bn_exists_resultmultiply) = S ge_signed_half_exists_resultmultiplyright))) /\ ((((((scp_value_exists_result) = 2 * (sto_cp_exists_resultmultiply) /\ (sto_cn_exists_resultmultiply) = 0) \/ exists ge_signed_half_exists_resultmultiplyoutput. (((scp_value_exists_result) = 2 * ge_signed_half_exists_resultmultiplyoutput + 1 /\ (sto_cp_exists_resultmultiply) = 0) /\ (sto_cn_exists_resultmultiply) = S ge_signed_half_exists_resultmultiplyoutput))) /\ ((sto_ap_exists_resultmultiply * sto_bp_exists_resultmultiply + sto_an_exists_resultmultiply * sto_bn_exists_resultmultiply) + sto_cn_exists_resultmultiply = (sto_ap_exists_resultmultiply * sto_bn_exists_resultmultiply + sto_an_exists_resultmultiply * sto_bp_exists_resultmultiply) + sto_cp_exists_resultmultiply))))))))))))))

Constructive proof overview

Generated structural guide

Construct an actual finite signed outer-product beta table for arbitrary dimensions, explicitly including zero width and zero height.

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

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

Proof neighborhood

Direct dependencies

eq_decidable Stable theorem; checked-use authorized arithmetic_signed_table_singleton Alpha theorem; checked-use authorized MX0025 signed_cartesian_product_empty_columns MX0023 signed_cartesian_flat_prefix_exists MX0024 signed_cartesian_product_from_flat_prefix

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

51 script commands · 12 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 (3)

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

01Fix variables and assumptionsL1–6

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

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro m
  4. L4
    intro n
  5. L5
    intro hF
  6. L6
    intro hG
02Establish hnL7–10

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

  1. L7
    have hn : n=0 \/ ~(n=0)
  2. L8
    specialize eq_decidable (n)
  3. L9
    specialize eq_decidable (0)
  4. L10
    apply eq_decidable
03Separate the logical casesL11–11

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

  1. L11
    cases hn
04Calculate and transport equalitiesL12–17

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

  1. L12
    rewrite hn_left
  2. L13
    rewrite hn_left
  3. L14
    rewrite hn_left
  4. L15
    rewrite hn_left
  5. L16
    rewrite hn_left
  6. L17
    rewrite hn_left
05Establish htL18–20

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

  1. L18
    have ht : ∃ T. ArithTable(0,T) ∧ ArithAt(T,0,0)Definitions: ArithTableArithAt
  2. L19
    specialize arithmetic_signed_table_singleton (0)
  3. L20
    apply arithmetic_signed_table_singleton
06Separate the logical casesL21–22

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

  1. L21
    cases ht
  2. L22
    cases ht_witness
07Construct an explicit witnessL23–23

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

  1. L23
    exists x
08Use earlier factsL24–31

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

  1. L24
    specialize signed_cartesian_product_empty_columns (F)
  2. L25
    specialize signed_cartesian_product_empty_columns (G)
  3. L26
    specialize signed_cartesian_product_empty_columns (x)
  4. L27
    specialize signed_cartesian_product_empty_columns (m)
  5. L28
    apply signed_cartesian_product_empty_columns
  6. L29
    exact hF
  7. L30
    exact hG
  8. L31
    exact ht_witness_left
09Establish hpL32–40

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

  1. L32
    have hp : ∃ T. ArithTable(m · n,T) ∧ (∀ x. ∀ y. Le(x,m · n) → ArithAt(T,x,y) → ∃ z. ∃ k. ∃ i. ∃ j. x = n · z + k ∧ (Lt(k,n) ∧ (ArithAt(F,z,i) ∧ (ArithAt(G,k,j) ∧ SignedMul(i,j,y)))))Definitions: SignedMulArithTableArithAtLeLt
  2. L33
    specialize signed_cartesian_flat_prefix_exists (F)
  3. L34
    specialize signed_cartesian_flat_prefix_exists (G)
  4. L35
    specialize signed_cartesian_flat_prefix_exists (n)
  5. L36
    specialize signed_cartesian_flat_prefix_exists (m*n)
  6. L37
    apply signed_cartesian_flat_prefix_exists
  7. L38
    exact hF
  8. L39
    exact hG
  9. L40
    exact hn_right
10Separate the logical casesL41–41

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

  1. L41
    cases hp
11Construct an explicit witnessL42–42

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

  1. L42
    exists x
12Use earlier factsL43–51

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

  1. L43
    specialize signed_cartesian_product_from_flat_prefix (F)
  2. L44
    specialize signed_cartesian_product_from_flat_prefix (G)
  3. L45
    specialize signed_cartesian_product_from_flat_prefix (x)
  4. L46
    specialize signed_cartesian_product_from_flat_prefix (m)
  5. L47
    specialize signed_cartesian_product_from_flat_prefix (n)
  6. L48
    apply signed_cartesian_product_from_flat_prefix
  7. L49
    exact hF
  8. L50
    exact hG
  9. L51
    exact hp_witness

Library-wide reading audit

Original exact command ledger · 51 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro m
  4. 0004intro n
  5. 0005intro hF
  6. 0006intro hG
  7. 0007have hn : n=0 \/ ~(n=0)
  8. 0008specialize eq_decidable (n)
  9. 0009specialize eq_decidable (0)
  10. 0010apply eq_decidable
  11. 0011cases hn
  12. 0012rewrite hn_left
  13. 0013rewrite hn_left
  14. 0014rewrite hn_left
  15. 0015rewrite hn_left
  16. 0016rewrite hn_left
  17. 0017rewrite hn_left
  18. 0018have ht : exists T. (((exists dst_positive_code_construct_zero_table dst_positive_scale_construct_zero_table dst_negative_code_construct_zero_table dst_negative_scale_construct_zero_table. (((T) = (((((dst_positive_code_construct_zero_table) + (dst_positive_scale_construct_zero_table)) * S ((dst_positive_code_construct_zero_table) + (dst_positive_scale_construct_zero_table)) + ((dst_positive_scale_construct_zero_table) + (dst_positive_scale_construct_zero_table))) + (((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) * S ((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) + ((dst_negative_scale_construct_zero_table) + (dst_negative_scale_construct_zero_table)))) * S ((((dst_positive_code_construct_zero_table) + (dst_positive_scale_construct_zero_table)) * S ((dst_positive_code_construct_zero_table) + (dst_positive_scale_construct_zero_table)) + ((dst_positive_scale_construct_zero_table) + (dst_positive_scale_construct_zero_table))) + (((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) * S ((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) + ((dst_negative_scale_construct_zero_table) + (dst_negative_scale_construct_zero_table)))) + ((((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) * S ((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) + ((dst_negative_scale_construct_zero_table) + (dst_negative_scale_construct_zero_table))) + (((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) * S ((dst_negative_code_construct_zero_table) + (dst_negative_scale_construct_zero_table)) + ((dst_negative_scale_construct_zero_table) + (dst_negative_scale_construct_zero_table)))))) /\ (forall dst_index_construct_zero_table. (exists pvs_le_gap_construct_zero_tabledomain. pvs_le_gap_construct_zero_tabledomain + (dst_index_construct_zero_table) = (0)) -> exists dst_positive_construct_zero_table dst_negative_construct_zero_table dst_value_construct_zero_table. ((((exists ff_h_pvs_construct_zero_tableentrypositive. ff_h_pvs_construct_zero_tableentrypositive + S (dst_positive_construct_zero_table) = S ((S (dst_index_construct_zero_table)) * dst_positive_scale_construct_zero_table)) /\ exists ff_q_pvs_construct_zero_tableentrypositive. dst_positive_code_construct_zero_table = ff_q_pvs_construct_zero_tableentrypositive * S ((S (dst_index_construct_zero_table)) * dst_positive_scale_construct_zero_table) + (dst_positive_construct_zero_table))) /\ (((((exists ff_h_pvs_construct_zero_tableentrynegative. ff_h_pvs_construct_zero_tableentrynegative + S (dst_negative_construct_zero_table) = S ((S (dst_index_construct_zero_table)) * dst_negative_scale_construct_zero_table)) /\ exists ff_q_pvs_construct_zero_tableentrynegative. dst_negative_code_construct_zero_table = ff_q_pvs_construct_zero_tableentrynegative * S ((S (dst_index_construct_zero_table)) * dst_negative_scale_construct_zero_table) + (dst_negative_construct_zero_table))) /\ (exists ge_balance_positive_construct_zero_tableentryvalue ge_balance_negative_construct_zero_tableentryvalue. (((((dst_value_construct_zero_table) = 2 * (ge_balance_positive_construct_zero_tableentryvalue) /\ (ge_balance_negative_construct_zero_tableentryvalue) = 0) \/ exists ge_signed_half_construct_zero_tableentryvaluedecode. (((dst_value_construct_zero_table) = 2 * ge_signed_half_construct_zero_tableentryvaluedecode + 1 /\ (ge_balance_positive_construct_zero_tableentryvalue) = 0) /\ (ge_balance_negative_construct_zero_tableentryvalue) = S ge_signed_half_construct_zero_tableentryvaluedecode))) /\ ((dst_positive_construct_zero_table) + ge_balance_negative_construct_zero_tableentryvalue = (dst_negative_construct_zero_table) + ge_balance_positive_construct_zero_tableentryvalue))))))))) /\ (exists dst_positive_code_construct_zero_entry dst_positive_scale_construct_zero_entry dst_negative_code_construct_zero_entry dst_negative_scale_construct_zero_entry dst_positive_construct_zero_entry dst_negative_construct_zero_entry. (((T) = (((((dst_positive_code_construct_zero_entry) + (dst_positive_scale_construct_zero_entry)) * S ((dst_positive_code_construct_zero_entry) + (dst_positive_scale_construct_zero_entry)) + ((dst_positive_scale_construct_zero_entry) + (dst_positive_scale_construct_zero_entry))) + (((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) * S ((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) + ((dst_negative_scale_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)))) * S ((((dst_positive_code_construct_zero_entry) + (dst_positive_scale_construct_zero_entry)) * S ((dst_positive_code_construct_zero_entry) + (dst_positive_scale_construct_zero_entry)) + ((dst_positive_scale_construct_zero_entry) + (dst_positive_scale_construct_zero_entry))) + (((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) * S ((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) + ((dst_negative_scale_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)))) + ((((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) * S ((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) + ((dst_negative_scale_construct_zero_entry) + (dst_negative_scale_construct_zero_entry))) + (((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) * S ((dst_negative_code_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)) + ((dst_negative_scale_construct_zero_entry) + (dst_negative_scale_construct_zero_entry)))))) /\ (((((exists ff_h_pvs_construct_zero_entrypositive. ff_h_pvs_construct_zero_entrypositive + S (dst_positive_construct_zero_entry) = S ((S (0)) * dst_positive_scale_construct_zero_entry)) /\ exists ff_q_pvs_construct_zero_entrypositive. dst_positive_code_construct_zero_entry = ff_q_pvs_construct_zero_entrypositive * S ((S (0)) * dst_positive_scale_construct_zero_entry) + (dst_positive_construct_zero_entry))) /\ (((((exists ff_h_pvs_construct_zero_entrynegative. ff_h_pvs_construct_zero_entrynegative + S (dst_negative_construct_zero_entry) = S ((S (0)) * dst_negative_scale_construct_zero_entry)) /\ exists ff_q_pvs_construct_zero_entrynegative. dst_negative_code_construct_zero_entry = ff_q_pvs_construct_zero_entrynegative * S ((S (0)) * dst_negative_scale_construct_zero_entry) + (dst_negative_construct_zero_entry))) /\ (exists ge_balance_positive_construct_zero_entryvalue ge_balance_negative_construct_zero_entryvalue. (((((0) = 2 * (ge_balance_positive_construct_zero_entryvalue) /\ (ge_balance_negative_construct_zero_entryvalue) = 0) \/ exists ge_signed_half_construct_zero_entryvaluedecode. (((0) = 2 * ge_signed_half_construct_zero_entryvaluedecode + 1 /\ (ge_balance_positive_construct_zero_entryvalue) = 0) /\ (ge_balance_negative_construct_zero_entryvalue) = S ge_signed_half_construct_zero_entryvaluedecode))) /\ ((dst_positive_construct_zero_entry) + ge_balance_negative_construct_zero_entryvalue = (dst_negative_construct_zero_entry) + ge_balance_positive_construct_zero_entryvalue)))))))))))
  19. 0019specialize arithmetic_signed_table_singleton (0)
  20. 0020apply arithmetic_signed_table_singleton
  21. 0021cases ht
  22. 0022cases ht_witness
  23. 0023exists x
  24. 0024specialize signed_cartesian_product_empty_columns (F)
  25. 0025specialize signed_cartesian_product_empty_columns (G)
  26. 0026specialize signed_cartesian_product_empty_columns (x)
  27. 0027specialize signed_cartesian_product_empty_columns (m)
  28. 0028apply signed_cartesian_product_empty_columns
  29. 0029exact hF
  30. 0030exact hG
  31. 0031exact ht_witness_left
  32. 0032have hp : exists T. (((exists dst_positive_code_construct_flattable dst_positive_scale_construct_flattable dst_negative_code_construct_flattable dst_negative_scale_construct_flattable. (((T) = (((((dst_positive_code_construct_flattable) + (dst_positive_scale_construct_flattable)) * S ((dst_positive_code_construct_flattable) + (dst_positive_scale_construct_flattable)) + ((dst_positive_scale_construct_flattable) + (dst_positive_scale_construct_flattable))) + (((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) * S ((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) + ((dst_negative_scale_construct_flattable) + (dst_negative_scale_construct_flattable)))) * S ((((dst_positive_code_construct_flattable) + (dst_positive_scale_construct_flattable)) * S ((dst_positive_code_construct_flattable) + (dst_positive_scale_construct_flattable)) + ((dst_positive_scale_construct_flattable) + (dst_positive_scale_construct_flattable))) + (((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) * S ((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) + ((dst_negative_scale_construct_flattable) + (dst_negative_scale_construct_flattable)))) + ((((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) * S ((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) + ((dst_negative_scale_construct_flattable) + (dst_negative_scale_construct_flattable))) + (((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) * S ((dst_negative_code_construct_flattable) + (dst_negative_scale_construct_flattable)) + ((dst_negative_scale_construct_flattable) + (dst_negative_scale_construct_flattable)))))) /\ (forall dst_index_construct_flattable. (exists pvs_le_gap_construct_flattabledomain. pvs_le_gap_construct_flattabledomain + (dst_index_construct_flattable) = (m*n)) -> exists dst_positive_construct_flattable dst_negative_construct_flattable dst_value_construct_flattable. ((((exists ff_h_pvs_construct_flattableentrypositive. ff_h_pvs_construct_flattableentrypositive + S (dst_positive_construct_flattable) = S ((S (dst_index_construct_flattable)) * dst_positive_scale_construct_flattable)) /\ exists ff_q_pvs_construct_flattableentrypositive. dst_positive_code_construct_flattable = ff_q_pvs_construct_flattableentrypositive * S ((S (dst_index_construct_flattable)) * dst_positive_scale_construct_flattable) + (dst_positive_construct_flattable))) /\ (((((exists ff_h_pvs_construct_flattableentrynegative. ff_h_pvs_construct_flattableentrynegative + S (dst_negative_construct_flattable) = S ((S (dst_index_construct_flattable)) * dst_negative_scale_construct_flattable)) /\ exists ff_q_pvs_construct_flattableentrynegative. dst_negative_code_construct_flattable = ff_q_pvs_construct_flattableentrynegative * S ((S (dst_index_construct_flattable)) * dst_negative_scale_construct_flattable) + (dst_negative_construct_flattable))) /\ (exists ge_balance_positive_construct_flattableentryvalue ge_balance_negative_construct_flattableentryvalue. (((((dst_value_construct_flattable) = 2 * (ge_balance_positive_construct_flattableentryvalue) /\ (ge_balance_negative_construct_flattableentryvalue) = 0) \/ exists ge_signed_half_construct_flattableentryvaluedecode. (((dst_value_construct_flattable) = 2 * ge_signed_half_construct_flattableentryvaluedecode + 1 /\ (ge_balance_positive_construct_flattableentryvalue) = 0) /\ (ge_balance_negative_construct_flattableentryvalue) = S ge_signed_half_construct_flattableentryvaluedecode))) /\ ((dst_positive_construct_flattable) + ge_balance_negative_construct_flattableentryvalue = (dst_negative_construct_flattable) + ge_balance_positive_construct_flattableentryvalue))))))))) /\ (forall scp_flat_index_construct_flat scp_flat_value_construct_flat. (exists pvs_le_gap_construct_flatbound. pvs_le_gap_construct_flatbound + (scp_flat_index_construct_flat) = (m*n)) -> (exists dst_positive_code_construct_flatentry dst_positive_scale_construct_flatentry dst_negative_code_construct_flatentry dst_negative_scale_construct_flatentry dst_positive_construct_flatentry dst_negative_construct_flatentry. (((T) = (((((dst_positive_code_construct_flatentry) + (dst_positive_scale_construct_flatentry)) * S ((dst_positive_code_construct_flatentry) + (dst_positive_scale_construct_flatentry)) + ((dst_positive_scale_construct_flatentry) + (dst_positive_scale_construct_flatentry))) + (((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) * S ((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) + ((dst_negative_scale_construct_flatentry) + (dst_negative_scale_construct_flatentry)))) * S ((((dst_positive_code_construct_flatentry) + (dst_positive_scale_construct_flatentry)) * S ((dst_positive_code_construct_flatentry) + (dst_positive_scale_construct_flatentry)) + ((dst_positive_scale_construct_flatentry) + (dst_positive_scale_construct_flatentry))) + (((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) * S ((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) + ((dst_negative_scale_construct_flatentry) + (dst_negative_scale_construct_flatentry)))) + ((((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) * S ((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) + ((dst_negative_scale_construct_flatentry) + (dst_negative_scale_construct_flatentry))) + (((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) * S ((dst_negative_code_construct_flatentry) + (dst_negative_scale_construct_flatentry)) + ((dst_negative_scale_construct_flatentry) + (dst_negative_scale_construct_flatentry)))))) /\ (((((exists ff_h_pvs_construct_flatentrypositive. ff_h_pvs_construct_flatentrypositive + S (dst_positive_construct_flatentry) = S ((S (scp_flat_index_construct_flat)) * dst_positive_scale_construct_flatentry)) /\ exists ff_q_pvs_construct_flatentrypositive. dst_positive_code_construct_flatentry = ff_q_pvs_construct_flatentrypositive * S ((S (scp_flat_index_construct_flat)) * dst_positive_scale_construct_flatentry) + (dst_positive_construct_flatentry))) /\ (((((exists ff_h_pvs_construct_flatentrynegative. ff_h_pvs_construct_flatentrynegative + S (dst_negative_construct_flatentry) = S ((S (scp_flat_index_construct_flat)) * dst_negative_scale_construct_flatentry)) /\ exists ff_q_pvs_construct_flatentrynegative. dst_negative_code_construct_flatentry = ff_q_pvs_construct_flatentrynegative * S ((S (scp_flat_index_construct_flat)) * dst_negative_scale_construct_flatentry) + (dst_negative_construct_flatentry))) /\ (exists ge_balance_positive_construct_flatentryvalue ge_balance_negative_construct_flatentryvalue. (((((scp_flat_value_construct_flat) = 2 * (ge_balance_positive_construct_flatentryvalue) /\ (ge_balance_negative_construct_flatentryvalue) = 0) \/ exists ge_signed_half_construct_flatentryvaluedecode. (((scp_flat_value_construct_flat) = 2 * ge_signed_half_construct_flatentryvaluedecode + 1 /\ (ge_balance_positive_construct_flatentryvalue) = 0) /\ (ge_balance_negative_construct_flatentryvalue) = S ge_signed_half_construct_flatentryvaluedecode))) /\ ((dst_positive_construct_flatentry) + ge_balance_negative_construct_flatentryvalue = (dst_negative_construct_flatentry) + ge_balance_positive_construct_flatentryvalue))))))))) -> (exists scp_flat_row_construct_flatproduct scp_flat_column_construct_flatproduct scp_flat_first_construct_flatproduct scp_flat_second_construct_flatproduct. (((scp_flat_index_construct_flat)=((n)*(scp_flat_row_construct_flatproduct)+(scp_flat_column_construct_flatproduct))) /\ (((exists pvs_gap_construct_flatproductremainder. pvs_gap_construct_flatproductremainder + S (scp_flat_column_construct_flatproduct) = (n)) /\ (((exists dst_positive_code_construct_flatproductF dst_positive_scale_construct_flatproductF dst_negative_code_construct_flatproductF dst_negative_scale_construct_flatproductF dst_positive_construct_flatproductF dst_negative_construct_flatproductF. (((F) = (((((dst_positive_code_construct_flatproductF) + (dst_positive_scale_construct_flatproductF)) * S ((dst_positive_code_construct_flatproductF) + (dst_positive_scale_construct_flatproductF)) + ((dst_positive_scale_construct_flatproductF) + (dst_positive_scale_construct_flatproductF))) + (((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) * S ((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) + ((dst_negative_scale_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)))) * S ((((dst_positive_code_construct_flatproductF) + (dst_positive_scale_construct_flatproductF)) * S ((dst_positive_code_construct_flatproductF) + (dst_positive_scale_construct_flatproductF)) + ((dst_positive_scale_construct_flatproductF) + (dst_positive_scale_construct_flatproductF))) + (((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) * S ((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) + ((dst_negative_scale_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)))) + ((((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) * S ((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) + ((dst_negative_scale_construct_flatproductF) + (dst_negative_scale_construct_flatproductF))) + (((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) * S ((dst_negative_code_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)) + ((dst_negative_scale_construct_flatproductF) + (dst_negative_scale_construct_flatproductF)))))) /\ (((((exists ff_h_pvs_construct_flatproductFpositive. ff_h_pvs_construct_flatproductFpositive + S (dst_positive_construct_flatproductF) = S ((S (scp_flat_row_construct_flatproduct)) * dst_positive_scale_construct_flatproductF)) /\ exists ff_q_pvs_construct_flatproductFpositive. dst_positive_code_construct_flatproductF = ff_q_pvs_construct_flatproductFpositive * S ((S (scp_flat_row_construct_flatproduct)) * dst_positive_scale_construct_flatproductF) + (dst_positive_construct_flatproductF))) /\ (((((exists ff_h_pvs_construct_flatproductFnegative. ff_h_pvs_construct_flatproductFnegative + S (dst_negative_construct_flatproductF) = S ((S (scp_flat_row_construct_flatproduct)) * dst_negative_scale_construct_flatproductF)) /\ exists ff_q_pvs_construct_flatproductFnegative. dst_negative_code_construct_flatproductF = ff_q_pvs_construct_flatproductFnegative * S ((S (scp_flat_row_construct_flatproduct)) * dst_negative_scale_construct_flatproductF) + (dst_negative_construct_flatproductF))) /\ (exists ge_balance_positive_construct_flatproductFvalue ge_balance_negative_construct_flatproductFvalue. (((((scp_flat_first_construct_flatproduct) = 2 * (ge_balance_positive_construct_flatproductFvalue) /\ (ge_balance_negative_construct_flatproductFvalue) = 0) \/ exists ge_signed_half_construct_flatproductFvaluedecode. (((scp_flat_first_construct_flatproduct) = 2 * ge_signed_half_construct_flatproductFvaluedecode + 1 /\ (ge_balance_positive_construct_flatproductFvalue) = 0) /\ (ge_balance_negative_construct_flatproductFvalue) = S ge_signed_half_construct_flatproductFvaluedecode))) /\ ((dst_positive_construct_flatproductF) + ge_balance_negative_construct_flatproductFvalue = (dst_negative_construct_flatproductF) + ge_balance_positive_construct_flatproductFvalue))))))))) /\ (((exists dst_positive_code_construct_flatproductG dst_positive_scale_construct_flatproductG dst_negative_code_construct_flatproductG dst_negative_scale_construct_flatproductG dst_positive_construct_flatproductG dst_negative_construct_flatproductG. (((G) = (((((dst_positive_code_construct_flatproductG) + (dst_positive_scale_construct_flatproductG)) * S ((dst_positive_code_construct_flatproductG) + (dst_positive_scale_construct_flatproductG)) + ((dst_positive_scale_construct_flatproductG) + (dst_positive_scale_construct_flatproductG))) + (((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) * S ((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) + ((dst_negative_scale_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)))) * S ((((dst_positive_code_construct_flatproductG) + (dst_positive_scale_construct_flatproductG)) * S ((dst_positive_code_construct_flatproductG) + (dst_positive_scale_construct_flatproductG)) + ((dst_positive_scale_construct_flatproductG) + (dst_positive_scale_construct_flatproductG))) + (((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) * S ((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) + ((dst_negative_scale_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)))) + ((((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) * S ((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) + ((dst_negative_scale_construct_flatproductG) + (dst_negative_scale_construct_flatproductG))) + (((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) * S ((dst_negative_code_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)) + ((dst_negative_scale_construct_flatproductG) + (dst_negative_scale_construct_flatproductG)))))) /\ (((((exists ff_h_pvs_construct_flatproductGpositive. ff_h_pvs_construct_flatproductGpositive + S (dst_positive_construct_flatproductG) = S ((S (scp_flat_column_construct_flatproduct)) * dst_positive_scale_construct_flatproductG)) /\ exists ff_q_pvs_construct_flatproductGpositive. dst_positive_code_construct_flatproductG = ff_q_pvs_construct_flatproductGpositive * S ((S (scp_flat_column_construct_flatproduct)) * dst_positive_scale_construct_flatproductG) + (dst_positive_construct_flatproductG))) /\ (((((exists ff_h_pvs_construct_flatproductGnegative. ff_h_pvs_construct_flatproductGnegative + S (dst_negative_construct_flatproductG) = S ((S (scp_flat_column_construct_flatproduct)) * dst_negative_scale_construct_flatproductG)) /\ exists ff_q_pvs_construct_flatproductGnegative. dst_negative_code_construct_flatproductG = ff_q_pvs_construct_flatproductGnegative * S ((S (scp_flat_column_construct_flatproduct)) * dst_negative_scale_construct_flatproductG) + (dst_negative_construct_flatproductG))) /\ (exists ge_balance_positive_construct_flatproductGvalue ge_balance_negative_construct_flatproductGvalue. (((((scp_flat_second_construct_flatproduct) = 2 * (ge_balance_positive_construct_flatproductGvalue) /\ (ge_balance_negative_construct_flatproductGvalue) = 0) \/ exists ge_signed_half_construct_flatproductGvaluedecode. (((scp_flat_second_construct_flatproduct) = 2 * ge_signed_half_construct_flatproductGvaluedecode + 1 /\ (ge_balance_positive_construct_flatproductGvalue) = 0) /\ (ge_balance_negative_construct_flatproductGvalue) = S ge_signed_half_construct_flatproductGvaluedecode))) /\ ((dst_positive_construct_flatproductG) + ge_balance_negative_construct_flatproductGvalue = (dst_negative_construct_flatproductG) + ge_balance_positive_construct_flatproductGvalue))))))))) /\ (exists sto_ap_construct_flatproductvalue sto_an_construct_flatproductvalue sto_bp_construct_flatproductvalue sto_bn_construct_flatproductvalue sto_cp_construct_flatproductvalue sto_cn_construct_flatproductvalue. (((((scp_flat_first_construct_flatproduct) = 2 * (sto_ap_construct_flatproductvalue) /\ (sto_an_construct_flatproductvalue) = 0) \/ exists ge_signed_half_construct_flatproductvalueleft. (((scp_flat_first_construct_flatproduct) = 2 * ge_signed_half_construct_flatproductvalueleft + 1 /\ (sto_ap_construct_flatproductvalue) = 0) /\ (sto_an_construct_flatproductvalue) = S ge_signed_half_construct_flatproductvalueleft))) /\ ((((((scp_flat_second_construct_flatproduct) = 2 * (sto_bp_construct_flatproductvalue) /\ (sto_bn_construct_flatproductvalue) = 0) \/ exists ge_signed_half_construct_flatproductvalueright. (((scp_flat_second_construct_flatproduct) = 2 * ge_signed_half_construct_flatproductvalueright + 1 /\ (sto_bp_construct_flatproductvalue) = 0) /\ (sto_bn_construct_flatproductvalue) = S ge_signed_half_construct_flatproductvalueright))) /\ ((((((scp_flat_value_construct_flat) = 2 * (sto_cp_construct_flatproductvalue) /\ (sto_cn_construct_flatproductvalue) = 0) \/ exists ge_signed_half_construct_flatproductvalueoutput. (((scp_flat_value_construct_flat) = 2 * ge_signed_half_construct_flatproductvalueoutput + 1 /\ (sto_cp_construct_flatproductvalue) = 0) /\ (sto_cn_construct_flatproductvalue) = S ge_signed_half_construct_flatproductvalueoutput))) /\ ((sto_ap_construct_flatproductvalue * sto_bp_construct_flatproductvalue + sto_an_construct_flatproductvalue * sto_bn_construct_flatproductvalue) + sto_cn_construct_flatproductvalue = (sto_ap_construct_flatproductvalue * sto_bn_construct_flatproductvalue + sto_an_construct_flatproductvalue * sto_bp_construct_flatproductvalue) + sto_cp_construct_flatproductvalue))))))))))))))))))
  33. 0033specialize signed_cartesian_flat_prefix_exists (F)
  34. 0034specialize signed_cartesian_flat_prefix_exists (G)
  35. 0035specialize signed_cartesian_flat_prefix_exists (n)
  36. 0036specialize signed_cartesian_flat_prefix_exists (m*n)
  37. 0037apply signed_cartesian_flat_prefix_exists
  38. 0038exact hF
  39. 0039exact hG
  40. 0040exact hn_right
  41. 0041cases hp
  42. 0042exists x
  43. 0043specialize signed_cartesian_product_from_flat_prefix (F)
  44. 0044specialize signed_cartesian_product_from_flat_prefix (G)
  45. 0045specialize signed_cartesian_product_from_flat_prefix (x)
  46. 0046specialize signed_cartesian_product_from_flat_prefix (m)
  47. 0047specialize signed_cartesian_product_from_flat_prefix (n)
  48. 0048apply signed_cartesian_product_from_flat_prefix
  49. 0049exact hF
  50. 0050exact hG
  51. 0051exact hp_witness