MX0024

signed_cartesian_product_from_flat_prefix

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

The actual finite flat construction supplies every in-range row-major product by proved index bounds and unique decoding.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

Exact expanded first-order arithmetic statement

forall F G T m n. (exists dst_positive_code_from_flat_F dst_positive_scale_from_flat_F dst_negative_code_from_flat_F dst_negative_scale_from_flat_F. (((F) = (((((dst_positive_code_from_flat_F) + (dst_positive_scale_from_flat_F)) * S ((dst_positive_code_from_flat_F) + (dst_positive_scale_from_flat_F)) + ((dst_positive_scale_from_flat_F) + (dst_positive_scale_from_flat_F))) + (((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) * S ((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) + ((dst_negative_scale_from_flat_F) + (dst_negative_scale_from_flat_F)))) * S ((((dst_positive_code_from_flat_F) + (dst_positive_scale_from_flat_F)) * S ((dst_positive_code_from_flat_F) + (dst_positive_scale_from_flat_F)) + ((dst_positive_scale_from_flat_F) + (dst_positive_scale_from_flat_F))) + (((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) * S ((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) + ((dst_negative_scale_from_flat_F) + (dst_negative_scale_from_flat_F)))) + ((((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) * S ((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) + ((dst_negative_scale_from_flat_F) + (dst_negative_scale_from_flat_F))) + (((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) * S ((dst_negative_code_from_flat_F) + (dst_negative_scale_from_flat_F)) + ((dst_negative_scale_from_flat_F) + (dst_negative_scale_from_flat_F)))))) /\ (forall dst_index_from_flat_F. (exists pvs_le_gap_from_flat_Fdomain. pvs_le_gap_from_flat_Fdomain + (dst_index_from_flat_F) = (0)) -> exists dst_positive_from_flat_F dst_negative_from_flat_F dst_value_from_flat_F. ((((exists ff_h_pvs_from_flat_Fentrypositive. ff_h_pvs_from_flat_Fentrypositive + S (dst_positive_from_flat_F) = S ((S (dst_index_from_flat_F)) * dst_positive_scale_from_flat_F)) /\ exists ff_q_pvs_from_flat_Fentrypositive. dst_positive_code_from_flat_F = ff_q_pvs_from_flat_Fentrypositive * S ((S (dst_index_from_flat_F)) * dst_positive_scale_from_flat_F) + (dst_positive_from_flat_F))) /\ (((((exists ff_h_pvs_from_flat_Fentrynegative. ff_h_pvs_from_flat_Fentrynegative + S (dst_negative_from_flat_F) = S ((S (dst_index_from_flat_F)) * dst_negative_scale_from_flat_F)) /\ exists ff_q_pvs_from_flat_Fentrynegative. dst_negative_code_from_flat_F = ff_q_pvs_from_flat_Fentrynegative * S ((S (dst_index_from_flat_F)) * dst_negative_scale_from_flat_F) + (dst_negative_from_flat_F))) /\ (exists ge_balance_positive_from_flat_Fentryvalue ge_balance_negative_from_flat_Fentryvalue. (((((dst_value_from_flat_F) = 2 * (ge_balance_positive_from_flat_Fentryvalue) /\ (ge_balance_negative_from_flat_Fentryvalue) = 0) \/ exists ge_signed_half_from_flat_Fentryvaluedecode. (((dst_value_from_flat_F) = 2 * ge_signed_half_from_flat_Fentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_Fentryvalue) = 0) /\ (ge_balance_negative_from_flat_Fentryvalue) = S ge_signed_half_from_flat_Fentryvaluedecode))) /\ ((dst_positive_from_flat_F) + ge_balance_negative_from_flat_Fentryvalue = (dst_negative_from_flat_F) + ge_balance_positive_from_flat_Fentryvalue))))))))) -> (exists dst_positive_code_from_flat_G dst_positive_scale_from_flat_G dst_negative_code_from_flat_G dst_negative_scale_from_flat_G. (((G) = (((((dst_positive_code_from_flat_G) + (dst_positive_scale_from_flat_G)) * S ((dst_positive_code_from_flat_G) + (dst_positive_scale_from_flat_G)) + ((dst_positive_scale_from_flat_G) + (dst_positive_scale_from_flat_G))) + (((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) * S ((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) + ((dst_negative_scale_from_flat_G) + (dst_negative_scale_from_flat_G)))) * S ((((dst_positive_code_from_flat_G) + (dst_positive_scale_from_flat_G)) * S ((dst_positive_code_from_flat_G) + (dst_positive_scale_from_flat_G)) + ((dst_positive_scale_from_flat_G) + (dst_positive_scale_from_flat_G))) + (((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) * S ((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) + ((dst_negative_scale_from_flat_G) + (dst_negative_scale_from_flat_G)))) + ((((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) * S ((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) + ((dst_negative_scale_from_flat_G) + (dst_negative_scale_from_flat_G))) + (((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) * S ((dst_negative_code_from_flat_G) + (dst_negative_scale_from_flat_G)) + ((dst_negative_scale_from_flat_G) + (dst_negative_scale_from_flat_G)))))) /\ (forall dst_index_from_flat_G. (exists pvs_le_gap_from_flat_Gdomain. pvs_le_gap_from_flat_Gdomain + (dst_index_from_flat_G) = (0)) -> exists dst_positive_from_flat_G dst_negative_from_flat_G dst_value_from_flat_G. ((((exists ff_h_pvs_from_flat_Gentrypositive. ff_h_pvs_from_flat_Gentrypositive + S (dst_positive_from_flat_G) = S ((S (dst_index_from_flat_G)) * dst_positive_scale_from_flat_G)) /\ exists ff_q_pvs_from_flat_Gentrypositive. dst_positive_code_from_flat_G = ff_q_pvs_from_flat_Gentrypositive * S ((S (dst_index_from_flat_G)) * dst_positive_scale_from_flat_G) + (dst_positive_from_flat_G))) /\ (((((exists ff_h_pvs_from_flat_Gentrynegative. ff_h_pvs_from_flat_Gentrynegative + S (dst_negative_from_flat_G) = S ((S (dst_index_from_flat_G)) * dst_negative_scale_from_flat_G)) /\ exists ff_q_pvs_from_flat_Gentrynegative. dst_negative_code_from_flat_G = ff_q_pvs_from_flat_Gentrynegative * S ((S (dst_index_from_flat_G)) * dst_negative_scale_from_flat_G) + (dst_negative_from_flat_G))) /\ (exists ge_balance_positive_from_flat_Gentryvalue ge_balance_negative_from_flat_Gentryvalue. (((((dst_value_from_flat_G) = 2 * (ge_balance_positive_from_flat_Gentryvalue) /\ (ge_balance_negative_from_flat_Gentryvalue) = 0) \/ exists ge_signed_half_from_flat_Gentryvaluedecode. (((dst_value_from_flat_G) = 2 * ge_signed_half_from_flat_Gentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_Gentryvalue) = 0) /\ (ge_balance_negative_from_flat_Gentryvalue) = S ge_signed_half_from_flat_Gentryvaluedecode))) /\ ((dst_positive_from_flat_G) + ge_balance_negative_from_flat_Gentryvalue = (dst_negative_from_flat_G) + ge_balance_positive_from_flat_Gentryvalue))))))))) -> (((exists dst_positive_code_from_flat_inputtable dst_positive_scale_from_flat_inputtable dst_negative_code_from_flat_inputtable dst_negative_scale_from_flat_inputtable. (((T) = (((((dst_positive_code_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable)) * S ((dst_positive_code_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable)) + ((dst_positive_scale_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable))) + (((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) * S ((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) + ((dst_negative_scale_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)))) * S ((((dst_positive_code_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable)) * S ((dst_positive_code_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable)) + ((dst_positive_scale_from_flat_inputtable) + (dst_positive_scale_from_flat_inputtable))) + (((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) * S ((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) + ((dst_negative_scale_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)))) + ((((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) * S ((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) + ((dst_negative_scale_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable))) + (((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) * S ((dst_negative_code_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)) + ((dst_negative_scale_from_flat_inputtable) + (dst_negative_scale_from_flat_inputtable)))))) /\ (forall dst_index_from_flat_inputtable. (exists pvs_le_gap_from_flat_inputtabledomain. pvs_le_gap_from_flat_inputtabledomain + (dst_index_from_flat_inputtable) = (m*n)) -> exists dst_positive_from_flat_inputtable dst_negative_from_flat_inputtable dst_value_from_flat_inputtable. ((((exists ff_h_pvs_from_flat_inputtableentrypositive. ff_h_pvs_from_flat_inputtableentrypositive + S (dst_positive_from_flat_inputtable) = S ((S (dst_index_from_flat_inputtable)) * dst_positive_scale_from_flat_inputtable)) /\ exists ff_q_pvs_from_flat_inputtableentrypositive. dst_positive_code_from_flat_inputtable = ff_q_pvs_from_flat_inputtableentrypositive * S ((S (dst_index_from_flat_inputtable)) * dst_positive_scale_from_flat_inputtable) + (dst_positive_from_flat_inputtable))) /\ (((((exists ff_h_pvs_from_flat_inputtableentrynegative. ff_h_pvs_from_flat_inputtableentrynegative + S (dst_negative_from_flat_inputtable) = S ((S (dst_index_from_flat_inputtable)) * dst_negative_scale_from_flat_inputtable)) /\ exists ff_q_pvs_from_flat_inputtableentrynegative. dst_negative_code_from_flat_inputtable = ff_q_pvs_from_flat_inputtableentrynegative * S ((S (dst_index_from_flat_inputtable)) * dst_negative_scale_from_flat_inputtable) + (dst_negative_from_flat_inputtable))) /\ (exists ge_balance_positive_from_flat_inputtableentryvalue ge_balance_negative_from_flat_inputtableentryvalue. (((((dst_value_from_flat_inputtable) = 2 * (ge_balance_positive_from_flat_inputtableentryvalue) /\ (ge_balance_negative_from_flat_inputtableentryvalue) = 0) \/ exists ge_signed_half_from_flat_inputtableentryvaluedecode. (((dst_value_from_flat_inputtable) = 2 * ge_signed_half_from_flat_inputtableentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_inputtableentryvalue) = 0) /\ (ge_balance_negative_from_flat_inputtableentryvalue) = S ge_signed_half_from_flat_inputtableentryvaluedecode))) /\ ((dst_positive_from_flat_inputtable) + ge_balance_negative_from_flat_inputtableentryvalue = (dst_negative_from_flat_inputtable) + ge_balance_positive_from_flat_inputtableentryvalue))))))))) /\ (forall scp_flat_index_from_flat_input scp_flat_value_from_flat_input. (exists pvs_le_gap_from_flat_inputbound. pvs_le_gap_from_flat_inputbound + (scp_flat_index_from_flat_input) = (m*n)) -> (exists dst_positive_code_from_flat_inputentry dst_positive_scale_from_flat_inputentry dst_negative_code_from_flat_inputentry dst_negative_scale_from_flat_inputentry dst_positive_from_flat_inputentry dst_negative_from_flat_inputentry. (((T) = (((((dst_positive_code_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry)) * S ((dst_positive_code_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry)) + ((dst_positive_scale_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry))) + (((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) * S ((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) + ((dst_negative_scale_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)))) * S ((((dst_positive_code_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry)) * S ((dst_positive_code_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry)) + ((dst_positive_scale_from_flat_inputentry) + (dst_positive_scale_from_flat_inputentry))) + (((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) * S ((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) + ((dst_negative_scale_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)))) + ((((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) * S ((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) + ((dst_negative_scale_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry))) + (((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) * S ((dst_negative_code_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)) + ((dst_negative_scale_from_flat_inputentry) + (dst_negative_scale_from_flat_inputentry)))))) /\ (((((exists ff_h_pvs_from_flat_inputentrypositive. ff_h_pvs_from_flat_inputentrypositive + S (dst_positive_from_flat_inputentry) = S ((S (scp_flat_index_from_flat_input)) * dst_positive_scale_from_flat_inputentry)) /\ exists ff_q_pvs_from_flat_inputentrypositive. dst_positive_code_from_flat_inputentry = ff_q_pvs_from_flat_inputentrypositive * S ((S (scp_flat_index_from_flat_input)) * dst_positive_scale_from_flat_inputentry) + (dst_positive_from_flat_inputentry))) /\ (((((exists ff_h_pvs_from_flat_inputentrynegative. ff_h_pvs_from_flat_inputentrynegative + S (dst_negative_from_flat_inputentry) = S ((S (scp_flat_index_from_flat_input)) * dst_negative_scale_from_flat_inputentry)) /\ exists ff_q_pvs_from_flat_inputentrynegative. dst_negative_code_from_flat_inputentry = ff_q_pvs_from_flat_inputentrynegative * S ((S (scp_flat_index_from_flat_input)) * dst_negative_scale_from_flat_inputentry) + (dst_negative_from_flat_inputentry))) /\ (exists ge_balance_positive_from_flat_inputentryvalue ge_balance_negative_from_flat_inputentryvalue. (((((scp_flat_value_from_flat_input) = 2 * (ge_balance_positive_from_flat_inputentryvalue) /\ (ge_balance_negative_from_flat_inputentryvalue) = 0) \/ exists ge_signed_half_from_flat_inputentryvaluedecode. (((scp_flat_value_from_flat_input) = 2 * ge_signed_half_from_flat_inputentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_inputentryvalue) = 0) /\ (ge_balance_negative_from_flat_inputentryvalue) = S ge_signed_half_from_flat_inputentryvaluedecode))) /\ ((dst_positive_from_flat_inputentry) + ge_balance_negative_from_flat_inputentryvalue = (dst_negative_from_flat_inputentry) + ge_balance_positive_from_flat_inputentryvalue))))))))) -> (exists scp_flat_row_from_flat_inputproduct scp_flat_column_from_flat_inputproduct scp_flat_first_from_flat_inputproduct scp_flat_second_from_flat_inputproduct. (((scp_flat_index_from_flat_input)=((n)*(scp_flat_row_from_flat_inputproduct)+(scp_flat_column_from_flat_inputproduct))) /\ (((exists pvs_gap_from_flat_inputproductremainder. pvs_gap_from_flat_inputproductremainder + S (scp_flat_column_from_flat_inputproduct) = (n)) /\ (((exists dst_positive_code_from_flat_inputproductF dst_positive_scale_from_flat_inputproductF dst_negative_code_from_flat_inputproductF dst_negative_scale_from_flat_inputproductF dst_positive_from_flat_inputproductF dst_negative_from_flat_inputproductF. (((F) = (((((dst_positive_code_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF)) * S ((dst_positive_code_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF)) + ((dst_positive_scale_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF))) + (((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) * S ((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) + ((dst_negative_scale_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)))) * S ((((dst_positive_code_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF)) * S ((dst_positive_code_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF)) + ((dst_positive_scale_from_flat_inputproductF) + (dst_positive_scale_from_flat_inputproductF))) + (((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) * S ((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) + ((dst_negative_scale_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)))) + ((((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) * S ((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) + ((dst_negative_scale_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF))) + (((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) * S ((dst_negative_code_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)) + ((dst_negative_scale_from_flat_inputproductF) + (dst_negative_scale_from_flat_inputproductF)))))) /\ (((((exists ff_h_pvs_from_flat_inputproductFpositive. ff_h_pvs_from_flat_inputproductFpositive + S (dst_positive_from_flat_inputproductF) = S ((S (scp_flat_row_from_flat_inputproduct)) * dst_positive_scale_from_flat_inputproductF)) /\ exists ff_q_pvs_from_flat_inputproductFpositive. dst_positive_code_from_flat_inputproductF = ff_q_pvs_from_flat_inputproductFpositive * S ((S (scp_flat_row_from_flat_inputproduct)) * dst_positive_scale_from_flat_inputproductF) + (dst_positive_from_flat_inputproductF))) /\ (((((exists ff_h_pvs_from_flat_inputproductFnegative. ff_h_pvs_from_flat_inputproductFnegative + S (dst_negative_from_flat_inputproductF) = S ((S (scp_flat_row_from_flat_inputproduct)) * dst_negative_scale_from_flat_inputproductF)) /\ exists ff_q_pvs_from_flat_inputproductFnegative. dst_negative_code_from_flat_inputproductF = ff_q_pvs_from_flat_inputproductFnegative * S ((S (scp_flat_row_from_flat_inputproduct)) * dst_negative_scale_from_flat_inputproductF) + (dst_negative_from_flat_inputproductF))) /\ (exists ge_balance_positive_from_flat_inputproductFvalue ge_balance_negative_from_flat_inputproductFvalue. (((((scp_flat_first_from_flat_inputproduct) = 2 * (ge_balance_positive_from_flat_inputproductFvalue) /\ (ge_balance_negative_from_flat_inputproductFvalue) = 0) \/ exists ge_signed_half_from_flat_inputproductFvaluedecode. (((scp_flat_first_from_flat_inputproduct) = 2 * ge_signed_half_from_flat_inputproductFvaluedecode + 1 /\ (ge_balance_positive_from_flat_inputproductFvalue) = 0) /\ (ge_balance_negative_from_flat_inputproductFvalue) = S ge_signed_half_from_flat_inputproductFvaluedecode))) /\ ((dst_positive_from_flat_inputproductF) + ge_balance_negative_from_flat_inputproductFvalue = (dst_negative_from_flat_inputproductF) + ge_balance_positive_from_flat_inputproductFvalue))))))))) /\ (((exists dst_positive_code_from_flat_inputproductG dst_positive_scale_from_flat_inputproductG dst_negative_code_from_flat_inputproductG dst_negative_scale_from_flat_inputproductG dst_positive_from_flat_inputproductG dst_negative_from_flat_inputproductG. (((G) = (((((dst_positive_code_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG)) * S ((dst_positive_code_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG)) + ((dst_positive_scale_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG))) + (((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) * S ((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) + ((dst_negative_scale_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)))) * S ((((dst_positive_code_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG)) * S ((dst_positive_code_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG)) + ((dst_positive_scale_from_flat_inputproductG) + (dst_positive_scale_from_flat_inputproductG))) + (((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) * S ((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) + ((dst_negative_scale_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)))) + ((((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) * S ((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) + ((dst_negative_scale_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG))) + (((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) * S ((dst_negative_code_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)) + ((dst_negative_scale_from_flat_inputproductG) + (dst_negative_scale_from_flat_inputproductG)))))) /\ (((((exists ff_h_pvs_from_flat_inputproductGpositive. ff_h_pvs_from_flat_inputproductGpositive + S (dst_positive_from_flat_inputproductG) = S ((S (scp_flat_column_from_flat_inputproduct)) * dst_positive_scale_from_flat_inputproductG)) /\ exists ff_q_pvs_from_flat_inputproductGpositive. dst_positive_code_from_flat_inputproductG = ff_q_pvs_from_flat_inputproductGpositive * S ((S (scp_flat_column_from_flat_inputproduct)) * dst_positive_scale_from_flat_inputproductG) + (dst_positive_from_flat_inputproductG))) /\ (((((exists ff_h_pvs_from_flat_inputproductGnegative. ff_h_pvs_from_flat_inputproductGnegative + S (dst_negative_from_flat_inputproductG) = S ((S (scp_flat_column_from_flat_inputproduct)) * dst_negative_scale_from_flat_inputproductG)) /\ exists ff_q_pvs_from_flat_inputproductGnegative. dst_negative_code_from_flat_inputproductG = ff_q_pvs_from_flat_inputproductGnegative * S ((S (scp_flat_column_from_flat_inputproduct)) * dst_negative_scale_from_flat_inputproductG) + (dst_negative_from_flat_inputproductG))) /\ (exists ge_balance_positive_from_flat_inputproductGvalue ge_balance_negative_from_flat_inputproductGvalue. (((((scp_flat_second_from_flat_inputproduct) = 2 * (ge_balance_positive_from_flat_inputproductGvalue) /\ (ge_balance_negative_from_flat_inputproductGvalue) = 0) \/ exists ge_signed_half_from_flat_inputproductGvaluedecode. (((scp_flat_second_from_flat_inputproduct) = 2 * ge_signed_half_from_flat_inputproductGvaluedecode + 1 /\ (ge_balance_positive_from_flat_inputproductGvalue) = 0) /\ (ge_balance_negative_from_flat_inputproductGvalue) = S ge_signed_half_from_flat_inputproductGvaluedecode))) /\ ((dst_positive_from_flat_inputproductG) + ge_balance_negative_from_flat_inputproductGvalue = (dst_negative_from_flat_inputproductG) + ge_balance_positive_from_flat_inputproductGvalue))))))))) /\ (exists sto_ap_from_flat_inputproductvalue sto_an_from_flat_inputproductvalue sto_bp_from_flat_inputproductvalue sto_bn_from_flat_inputproductvalue sto_cp_from_flat_inputproductvalue sto_cn_from_flat_inputproductvalue. (((((scp_flat_first_from_flat_inputproduct) = 2 * (sto_ap_from_flat_inputproductvalue) /\ (sto_an_from_flat_inputproductvalue) = 0) \/ exists ge_signed_half_from_flat_inputproductvalueleft. (((scp_flat_first_from_flat_inputproduct) = 2 * ge_signed_half_from_flat_inputproductvalueleft + 1 /\ (sto_ap_from_flat_inputproductvalue) = 0) /\ (sto_an_from_flat_inputproductvalue) = S ge_signed_half_from_flat_inputproductvalueleft))) /\ ((((((scp_flat_second_from_flat_inputproduct) = 2 * (sto_bp_from_flat_inputproductvalue) /\ (sto_bn_from_flat_inputproductvalue) = 0) \/ exists ge_signed_half_from_flat_inputproductvalueright. (((scp_flat_second_from_flat_inputproduct) = 2 * ge_signed_half_from_flat_inputproductvalueright + 1 /\ (sto_bp_from_flat_inputproductvalue) = 0) /\ (sto_bn_from_flat_inputproductvalue) = S ge_signed_half_from_flat_inputproductvalueright))) /\ ((((((scp_flat_value_from_flat_input) = 2 * (sto_cp_from_flat_inputproductvalue) /\ (sto_cn_from_flat_inputproductvalue) = 0) \/ exists ge_signed_half_from_flat_inputproductvalueoutput. (((scp_flat_value_from_flat_input) = 2 * ge_signed_half_from_flat_inputproductvalueoutput + 1 /\ (sto_cp_from_flat_inputproductvalue) = 0) /\ (sto_cn_from_flat_inputproductvalue) = S ge_signed_half_from_flat_inputproductvalueoutput))) /\ ((sto_ap_from_flat_inputproductvalue * sto_bp_from_flat_inputproductvalue + sto_an_from_flat_inputproductvalue * sto_bn_from_flat_inputproductvalue) + sto_cn_from_flat_inputproductvalue = (sto_ap_from_flat_inputproductvalue * sto_bn_from_flat_inputproductvalue + sto_an_from_flat_inputproductvalue * sto_bp_from_flat_inputproductvalue) + sto_cp_from_flat_inputproductvalue)))))))))))))))))) -> (((exists dst_positive_code_from_flat_resultF dst_positive_scale_from_flat_resultF dst_negative_code_from_flat_resultF dst_negative_scale_from_flat_resultF. (((F) = (((((dst_positive_code_from_flat_resultF) + (dst_positive_scale_from_flat_resultF)) * S ((dst_positive_code_from_flat_resultF) + (dst_positive_scale_from_flat_resultF)) + ((dst_positive_scale_from_flat_resultF) + (dst_positive_scale_from_flat_resultF))) + (((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) * S ((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) + ((dst_negative_scale_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)))) * S ((((dst_positive_code_from_flat_resultF) + (dst_positive_scale_from_flat_resultF)) * S ((dst_positive_code_from_flat_resultF) + (dst_positive_scale_from_flat_resultF)) + ((dst_positive_scale_from_flat_resultF) + (dst_positive_scale_from_flat_resultF))) + (((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) * S ((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) + ((dst_negative_scale_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)))) + ((((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) * S ((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) + ((dst_negative_scale_from_flat_resultF) + (dst_negative_scale_from_flat_resultF))) + (((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) * S ((dst_negative_code_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)) + ((dst_negative_scale_from_flat_resultF) + (dst_negative_scale_from_flat_resultF)))))) /\ (forall dst_index_from_flat_resultF. (exists pvs_le_gap_from_flat_resultFdomain. pvs_le_gap_from_flat_resultFdomain + (dst_index_from_flat_resultF) = (0)) -> exists dst_positive_from_flat_resultF dst_negative_from_flat_resultF dst_value_from_flat_resultF. ((((exists ff_h_pvs_from_flat_resultFentrypositive. ff_h_pvs_from_flat_resultFentrypositive + S (dst_positive_from_flat_resultF) = S ((S (dst_index_from_flat_resultF)) * dst_positive_scale_from_flat_resultF)) /\ exists ff_q_pvs_from_flat_resultFentrypositive. dst_positive_code_from_flat_resultF = ff_q_pvs_from_flat_resultFentrypositive * S ((S (dst_index_from_flat_resultF)) * dst_positive_scale_from_flat_resultF) + (dst_positive_from_flat_resultF))) /\ (((((exists ff_h_pvs_from_flat_resultFentrynegative. ff_h_pvs_from_flat_resultFentrynegative + S (dst_negative_from_flat_resultF) = S ((S (dst_index_from_flat_resultF)) * dst_negative_scale_from_flat_resultF)) /\ exists ff_q_pvs_from_flat_resultFentrynegative. dst_negative_code_from_flat_resultF = ff_q_pvs_from_flat_resultFentrynegative * S ((S (dst_index_from_flat_resultF)) * dst_negative_scale_from_flat_resultF) + (dst_negative_from_flat_resultF))) /\ (exists ge_balance_positive_from_flat_resultFentryvalue ge_balance_negative_from_flat_resultFentryvalue. (((((dst_value_from_flat_resultF) = 2 * (ge_balance_positive_from_flat_resultFentryvalue) /\ (ge_balance_negative_from_flat_resultFentryvalue) = 0) \/ exists ge_signed_half_from_flat_resultFentryvaluedecode. (((dst_value_from_flat_resultF) = 2 * ge_signed_half_from_flat_resultFentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultFentryvalue) = 0) /\ (ge_balance_negative_from_flat_resultFentryvalue) = S ge_signed_half_from_flat_resultFentryvaluedecode))) /\ ((dst_positive_from_flat_resultF) + ge_balance_negative_from_flat_resultFentryvalue = (dst_negative_from_flat_resultF) + ge_balance_positive_from_flat_resultFentryvalue))))))))) /\ (((exists dst_positive_code_from_flat_resultG dst_positive_scale_from_flat_resultG dst_negative_code_from_flat_resultG dst_negative_scale_from_flat_resultG. (((G) = (((((dst_positive_code_from_flat_resultG) + (dst_positive_scale_from_flat_resultG)) * S ((dst_positive_code_from_flat_resultG) + (dst_positive_scale_from_flat_resultG)) + ((dst_positive_scale_from_flat_resultG) + (dst_positive_scale_from_flat_resultG))) + (((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) * S ((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) + ((dst_negative_scale_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)))) * S ((((dst_positive_code_from_flat_resultG) + (dst_positive_scale_from_flat_resultG)) * S ((dst_positive_code_from_flat_resultG) + (dst_positive_scale_from_flat_resultG)) + ((dst_positive_scale_from_flat_resultG) + (dst_positive_scale_from_flat_resultG))) + (((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) * S ((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) + ((dst_negative_scale_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)))) + ((((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) * S ((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) + ((dst_negative_scale_from_flat_resultG) + (dst_negative_scale_from_flat_resultG))) + (((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) * S ((dst_negative_code_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)) + ((dst_negative_scale_from_flat_resultG) + (dst_negative_scale_from_flat_resultG)))))) /\ (forall dst_index_from_flat_resultG. (exists pvs_le_gap_from_flat_resultGdomain. pvs_le_gap_from_flat_resultGdomain + (dst_index_from_flat_resultG) = (0)) -> exists dst_positive_from_flat_resultG dst_negative_from_flat_resultG dst_value_from_flat_resultG. ((((exists ff_h_pvs_from_flat_resultGentrypositive. ff_h_pvs_from_flat_resultGentrypositive + S (dst_positive_from_flat_resultG) = S ((S (dst_index_from_flat_resultG)) * dst_positive_scale_from_flat_resultG)) /\ exists ff_q_pvs_from_flat_resultGentrypositive. dst_positive_code_from_flat_resultG = ff_q_pvs_from_flat_resultGentrypositive * S ((S (dst_index_from_flat_resultG)) * dst_positive_scale_from_flat_resultG) + (dst_positive_from_flat_resultG))) /\ (((((exists ff_h_pvs_from_flat_resultGentrynegative. ff_h_pvs_from_flat_resultGentrynegative + S (dst_negative_from_flat_resultG) = S ((S (dst_index_from_flat_resultG)) * dst_negative_scale_from_flat_resultG)) /\ exists ff_q_pvs_from_flat_resultGentrynegative. dst_negative_code_from_flat_resultG = ff_q_pvs_from_flat_resultGentrynegative * S ((S (dst_index_from_flat_resultG)) * dst_negative_scale_from_flat_resultG) + (dst_negative_from_flat_resultG))) /\ (exists ge_balance_positive_from_flat_resultGentryvalue ge_balance_negative_from_flat_resultGentryvalue. (((((dst_value_from_flat_resultG) = 2 * (ge_balance_positive_from_flat_resultGentryvalue) /\ (ge_balance_negative_from_flat_resultGentryvalue) = 0) \/ exists ge_signed_half_from_flat_resultGentryvaluedecode. (((dst_value_from_flat_resultG) = 2 * ge_signed_half_from_flat_resultGentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultGentryvalue) = 0) /\ (ge_balance_negative_from_flat_resultGentryvalue) = S ge_signed_half_from_flat_resultGentryvaluedecode))) /\ ((dst_positive_from_flat_resultG) + ge_balance_negative_from_flat_resultGentryvalue = (dst_negative_from_flat_resultG) + ge_balance_positive_from_flat_resultGentryvalue))))))))) /\ (((exists dst_positive_code_from_flat_resultT dst_positive_scale_from_flat_resultT dst_negative_code_from_flat_resultT dst_negative_scale_from_flat_resultT. (((T) = (((((dst_positive_code_from_flat_resultT) + (dst_positive_scale_from_flat_resultT)) * S ((dst_positive_code_from_flat_resultT) + (dst_positive_scale_from_flat_resultT)) + ((dst_positive_scale_from_flat_resultT) + (dst_positive_scale_from_flat_resultT))) + (((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) * S ((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) + ((dst_negative_scale_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)))) * S ((((dst_positive_code_from_flat_resultT) + (dst_positive_scale_from_flat_resultT)) * S ((dst_positive_code_from_flat_resultT) + (dst_positive_scale_from_flat_resultT)) + ((dst_positive_scale_from_flat_resultT) + (dst_positive_scale_from_flat_resultT))) + (((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) * S ((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) + ((dst_negative_scale_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)))) + ((((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) * S ((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) + ((dst_negative_scale_from_flat_resultT) + (dst_negative_scale_from_flat_resultT))) + (((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) * S ((dst_negative_code_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)) + ((dst_negative_scale_from_flat_resultT) + (dst_negative_scale_from_flat_resultT)))))) /\ (forall dst_index_from_flat_resultT. (exists pvs_le_gap_from_flat_resultTdomain. pvs_le_gap_from_flat_resultTdomain + (dst_index_from_flat_resultT) = ((m)*(n))) -> exists dst_positive_from_flat_resultT dst_negative_from_flat_resultT dst_value_from_flat_resultT. ((((exists ff_h_pvs_from_flat_resultTentrypositive. ff_h_pvs_from_flat_resultTentrypositive + S (dst_positive_from_flat_resultT) = S ((S (dst_index_from_flat_resultT)) * dst_positive_scale_from_flat_resultT)) /\ exists ff_q_pvs_from_flat_resultTentrypositive. dst_positive_code_from_flat_resultT = ff_q_pvs_from_flat_resultTentrypositive * S ((S (dst_index_from_flat_resultT)) * dst_positive_scale_from_flat_resultT) + (dst_positive_from_flat_resultT))) /\ (((((exists ff_h_pvs_from_flat_resultTentrynegative. ff_h_pvs_from_flat_resultTentrynegative + S (dst_negative_from_flat_resultT) = S ((S (dst_index_from_flat_resultT)) * dst_negative_scale_from_flat_resultT)) /\ exists ff_q_pvs_from_flat_resultTentrynegative. dst_negative_code_from_flat_resultT = ff_q_pvs_from_flat_resultTentrynegative * S ((S (dst_index_from_flat_resultT)) * dst_negative_scale_from_flat_resultT) + (dst_negative_from_flat_resultT))) /\ (exists ge_balance_positive_from_flat_resultTentryvalue ge_balance_negative_from_flat_resultTentryvalue. (((((dst_value_from_flat_resultT) = 2 * (ge_balance_positive_from_flat_resultTentryvalue) /\ (ge_balance_negative_from_flat_resultTentryvalue) = 0) \/ exists ge_signed_half_from_flat_resultTentryvaluedecode. (((dst_value_from_flat_resultT) = 2 * ge_signed_half_from_flat_resultTentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultTentryvalue) = 0) /\ (ge_balance_negative_from_flat_resultTentryvalue) = S ge_signed_half_from_flat_resultTentryvaluedecode))) /\ ((dst_positive_from_flat_resultT) + ge_balance_negative_from_flat_resultTentryvalue = (dst_negative_from_flat_resultT) + ge_balance_positive_from_flat_resultTentryvalue))))))))) /\ (forall scp_row_from_flat_result scp_column_from_flat_result scp_first_from_flat_result scp_second_from_flat_result scp_value_from_flat_result. (exists pvs_gap_from_flat_resultrows. pvs_gap_from_flat_resultrows + S (scp_row_from_flat_result) = (m)) -> (exists pvs_gap_from_flat_resultcolumns. pvs_gap_from_flat_resultcolumns + S (scp_column_from_flat_result) = (n)) -> (exists dst_positive_code_from_flat_resultfirst dst_positive_scale_from_flat_resultfirst dst_negative_code_from_flat_resultfirst dst_negative_scale_from_flat_resultfirst dst_positive_from_flat_resultfirst dst_negative_from_flat_resultfirst. (((F) = (((((dst_positive_code_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst)) * S ((dst_positive_code_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst)) + ((dst_positive_scale_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst))) + (((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) * S ((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) + ((dst_negative_scale_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)))) * S ((((dst_positive_code_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst)) * S ((dst_positive_code_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst)) + ((dst_positive_scale_from_flat_resultfirst) + (dst_positive_scale_from_flat_resultfirst))) + (((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) * S ((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) + ((dst_negative_scale_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)))) + ((((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) * S ((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) + ((dst_negative_scale_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst))) + (((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) * S ((dst_negative_code_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)) + ((dst_negative_scale_from_flat_resultfirst) + (dst_negative_scale_from_flat_resultfirst)))))) /\ (((((exists ff_h_pvs_from_flat_resultfirstpositive. ff_h_pvs_from_flat_resultfirstpositive + S (dst_positive_from_flat_resultfirst) = S ((S (scp_row_from_flat_result)) * dst_positive_scale_from_flat_resultfirst)) /\ exists ff_q_pvs_from_flat_resultfirstpositive. dst_positive_code_from_flat_resultfirst = ff_q_pvs_from_flat_resultfirstpositive * S ((S (scp_row_from_flat_result)) * dst_positive_scale_from_flat_resultfirst) + (dst_positive_from_flat_resultfirst))) /\ (((((exists ff_h_pvs_from_flat_resultfirstnegative. ff_h_pvs_from_flat_resultfirstnegative + S (dst_negative_from_flat_resultfirst) = S ((S (scp_row_from_flat_result)) * dst_negative_scale_from_flat_resultfirst)) /\ exists ff_q_pvs_from_flat_resultfirstnegative. dst_negative_code_from_flat_resultfirst = ff_q_pvs_from_flat_resultfirstnegative * S ((S (scp_row_from_flat_result)) * dst_negative_scale_from_flat_resultfirst) + (dst_negative_from_flat_resultfirst))) /\ (exists ge_balance_positive_from_flat_resultfirstvalue ge_balance_negative_from_flat_resultfirstvalue. (((((scp_first_from_flat_result) = 2 * (ge_balance_positive_from_flat_resultfirstvalue) /\ (ge_balance_negative_from_flat_resultfirstvalue) = 0) \/ exists ge_signed_half_from_flat_resultfirstvaluedecode. (((scp_first_from_flat_result) = 2 * ge_signed_half_from_flat_resultfirstvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultfirstvalue) = 0) /\ (ge_balance_negative_from_flat_resultfirstvalue) = S ge_signed_half_from_flat_resultfirstvaluedecode))) /\ ((dst_positive_from_flat_resultfirst) + ge_balance_negative_from_flat_resultfirstvalue = (dst_negative_from_flat_resultfirst) + ge_balance_positive_from_flat_resultfirstvalue))))))))) -> (exists dst_positive_code_from_flat_resultsecond dst_positive_scale_from_flat_resultsecond dst_negative_code_from_flat_resultsecond dst_negative_scale_from_flat_resultsecond dst_positive_from_flat_resultsecond dst_negative_from_flat_resultsecond. (((G) = (((((dst_positive_code_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond)) * S ((dst_positive_code_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond)) + ((dst_positive_scale_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond))) + (((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) * S ((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) + ((dst_negative_scale_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)))) * S ((((dst_positive_code_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond)) * S ((dst_positive_code_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond)) + ((dst_positive_scale_from_flat_resultsecond) + (dst_positive_scale_from_flat_resultsecond))) + (((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) * S ((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) + ((dst_negative_scale_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)))) + ((((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) * S ((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) + ((dst_negative_scale_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond))) + (((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) * S ((dst_negative_code_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)) + ((dst_negative_scale_from_flat_resultsecond) + (dst_negative_scale_from_flat_resultsecond)))))) /\ (((((exists ff_h_pvs_from_flat_resultsecondpositive. ff_h_pvs_from_flat_resultsecondpositive + S (dst_positive_from_flat_resultsecond) = S ((S (scp_column_from_flat_result)) * dst_positive_scale_from_flat_resultsecond)) /\ exists ff_q_pvs_from_flat_resultsecondpositive. dst_positive_code_from_flat_resultsecond = ff_q_pvs_from_flat_resultsecondpositive * S ((S (scp_column_from_flat_result)) * dst_positive_scale_from_flat_resultsecond) + (dst_positive_from_flat_resultsecond))) /\ (((((exists ff_h_pvs_from_flat_resultsecondnegative. ff_h_pvs_from_flat_resultsecondnegative + S (dst_negative_from_flat_resultsecond) = S ((S (scp_column_from_flat_result)) * dst_negative_scale_from_flat_resultsecond)) /\ exists ff_q_pvs_from_flat_resultsecondnegative. dst_negative_code_from_flat_resultsecond = ff_q_pvs_from_flat_resultsecondnegative * S ((S (scp_column_from_flat_result)) * dst_negative_scale_from_flat_resultsecond) + (dst_negative_from_flat_resultsecond))) /\ (exists ge_balance_positive_from_flat_resultsecondvalue ge_balance_negative_from_flat_resultsecondvalue. (((((scp_second_from_flat_result) = 2 * (ge_balance_positive_from_flat_resultsecondvalue) /\ (ge_balance_negative_from_flat_resultsecondvalue) = 0) \/ exists ge_signed_half_from_flat_resultsecondvaluedecode. (((scp_second_from_flat_result) = 2 * ge_signed_half_from_flat_resultsecondvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultsecondvalue) = 0) /\ (ge_balance_negative_from_flat_resultsecondvalue) = S ge_signed_half_from_flat_resultsecondvaluedecode))) /\ ((dst_positive_from_flat_resultsecond) + ge_balance_negative_from_flat_resultsecondvalue = (dst_negative_from_flat_resultsecond) + ge_balance_positive_from_flat_resultsecondvalue))))))))) -> (exists dst_positive_code_from_flat_resultentry dst_positive_scale_from_flat_resultentry dst_negative_code_from_flat_resultentry dst_negative_scale_from_flat_resultentry dst_positive_from_flat_resultentry dst_negative_from_flat_resultentry. (((T) = (((((dst_positive_code_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry)) * S ((dst_positive_code_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry)) + ((dst_positive_scale_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry))) + (((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) * S ((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) + ((dst_negative_scale_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)))) * S ((((dst_positive_code_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry)) * S ((dst_positive_code_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry)) + ((dst_positive_scale_from_flat_resultentry) + (dst_positive_scale_from_flat_resultentry))) + (((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) * S ((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) + ((dst_negative_scale_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)))) + ((((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) * S ((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) + ((dst_negative_scale_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry))) + (((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) * S ((dst_negative_code_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)) + ((dst_negative_scale_from_flat_resultentry) + (dst_negative_scale_from_flat_resultentry)))))) /\ (((((exists ff_h_pvs_from_flat_resultentrypositive. ff_h_pvs_from_flat_resultentrypositive + S (dst_positive_from_flat_resultentry) = S ((S (((n)*(scp_row_from_flat_result)+(scp_column_from_flat_result)))) * dst_positive_scale_from_flat_resultentry)) /\ exists ff_q_pvs_from_flat_resultentrypositive. dst_positive_code_from_flat_resultentry = ff_q_pvs_from_flat_resultentrypositive * S ((S (((n)*(scp_row_from_flat_result)+(scp_column_from_flat_result)))) * dst_positive_scale_from_flat_resultentry) + (dst_positive_from_flat_resultentry))) /\ (((((exists ff_h_pvs_from_flat_resultentrynegative. ff_h_pvs_from_flat_resultentrynegative + S (dst_negative_from_flat_resultentry) = S ((S (((n)*(scp_row_from_flat_result)+(scp_column_from_flat_result)))) * dst_negative_scale_from_flat_resultentry)) /\ exists ff_q_pvs_from_flat_resultentrynegative. dst_negative_code_from_flat_resultentry = ff_q_pvs_from_flat_resultentrynegative * S ((S (((n)*(scp_row_from_flat_result)+(scp_column_from_flat_result)))) * dst_negative_scale_from_flat_resultentry) + (dst_negative_from_flat_resultentry))) /\ (exists ge_balance_positive_from_flat_resultentryvalue ge_balance_negative_from_flat_resultentryvalue. (((((scp_value_from_flat_result) = 2 * (ge_balance_positive_from_flat_resultentryvalue) /\ (ge_balance_negative_from_flat_resultentryvalue) = 0) \/ exists ge_signed_half_from_flat_resultentryvaluedecode. (((scp_value_from_flat_result) = 2 * ge_signed_half_from_flat_resultentryvaluedecode + 1 /\ (ge_balance_positive_from_flat_resultentryvalue) = 0) /\ (ge_balance_negative_from_flat_resultentryvalue) = S ge_signed_half_from_flat_resultentryvaluedecode))) /\ ((dst_positive_from_flat_resultentry) + ge_balance_negative_from_flat_resultentryvalue = (dst_negative_from_flat_resultentry) + ge_balance_positive_from_flat_resultentryvalue))))))))) -> (exists sto_ap_from_flat_resultmultiply sto_an_from_flat_resultmultiply sto_bp_from_flat_resultmultiply sto_bn_from_flat_resultmultiply sto_cp_from_flat_resultmultiply sto_cn_from_flat_resultmultiply. (((((scp_first_from_flat_result) = 2 * (sto_ap_from_flat_resultmultiply) /\ (sto_an_from_flat_resultmultiply) = 0) \/ exists ge_signed_half_from_flat_resultmultiplyleft. (((scp_first_from_flat_result) = 2 * ge_signed_half_from_flat_resultmultiplyleft + 1 /\ (sto_ap_from_flat_resultmultiply) = 0) /\ (sto_an_from_flat_resultmultiply) = S ge_signed_half_from_flat_resultmultiplyleft))) /\ ((((((scp_second_from_flat_result) = 2 * (sto_bp_from_flat_resultmultiply) /\ (sto_bn_from_flat_resultmultiply) = 0) \/ exists ge_signed_half_from_flat_resultmultiplyright. (((scp_second_from_flat_result) = 2 * ge_signed_half_from_flat_resultmultiplyright + 1 /\ (sto_bp_from_flat_resultmultiply) = 0) /\ (sto_bn_from_flat_resultmultiply) = S ge_signed_half_from_flat_resultmultiplyright))) /\ ((((((scp_value_from_flat_result) = 2 * (sto_cp_from_flat_resultmultiply) /\ (sto_cn_from_flat_resultmultiply) = 0) \/ exists ge_signed_half_from_flat_resultmultiplyoutput. (((scp_value_from_flat_result) = 2 * ge_signed_half_from_flat_resultmultiplyoutput + 1 /\ (sto_cp_from_flat_resultmultiply) = 0) /\ (sto_cn_from_flat_resultmultiply) = S ge_signed_half_from_flat_resultmultiplyoutput))) /\ ((sto_ap_from_flat_resultmultiply * sto_bp_from_flat_resultmultiply + sto_an_from_flat_resultmultiply * sto_bn_from_flat_resultmultiply) + sto_cn_from_flat_resultmultiply = (sto_ap_from_flat_resultmultiply * sto_bn_from_flat_resultmultiply + sto_an_from_flat_resultmultiply * sto_bp_from_flat_resultmultiply) + sto_cp_from_flat_resultmultiply))))))))))))))

Constructive proof overview

Generated structural guide

The actual finite flat construction supplies every in-range row-major product by proved index bounds and unique decoding.

The unchanged tactic script uses 4 declared prerequisites and contains 54 exact native proof lines.

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

Proof neighborhood

Direct dependencies

MX0020 signed_cartesian_flat_entry_lookup lt_to_le Stable theorem; checked-use authorized mul_comm Stable theorem; checked-use authorized matrix_integer_rectangular_index_bound Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

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

Read the argument

Proof checkpoints

54 script commands · 12 reading checkpoints · 1 local claims

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

Named ingredients (1)
01Fix variables and assumptionsL1–8

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

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro T
  4. L4
    intro m
  5. L5
    intro n
  6. L6
    intro hF
  7. L7
    intro hG
  8. L8
    intro hp
02Separate the logical casesL9–10

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

  1. L9
    cases hp
  2. L10
    split
03Use earlier factsL11–11

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

  1. L11
    exact hF
04Separate the logical casesL12–12

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

  1. L12
    split
05Use earlier factsL13–13

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

  1. L13
    exact hG
06Separate the logical casesL14–14

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

  1. L14
    split
07Use earlier factsL15–15

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

  1. L15
    exact hp_left
08Fix variables and assumptionsL16–25

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

  1. L16
    intro i
  2. L17
    intro j
  3. L18
    intro a
  4. L19
    intro b
  5. L20
    intro c
  6. L21
    intro hi
  7. L22
    intro hj
  8. L23
    intro ha
  9. L24
    intro hb
  10. L25
    intro hc
09Use earlier factsL26–35

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

  1. L26
    specialize signed_cartesian_flat_entry_lookup (F)
  2. L27
    specialize signed_cartesian_flat_entry_lookup (G)
  3. L28
    specialize signed_cartesian_flat_entry_lookup (n)
  4. L29
    specialize signed_cartesian_flat_entry_lookup (i)
  5. L30
    specialize signed_cartesian_flat_entry_lookup (j)
  6. L31
    specialize signed_cartesian_flat_entry_lookup (a)
  7. L32
    specialize signed_cartesian_flat_entry_lookup (b)
  8. L33
    specialize signed_cartesian_flat_entry_lookup (c)
  9. L34
    apply signed_cartesian_flat_entry_lookup
  10. L35
    exact hj
10Use earlier factsL36–43

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

  1. L36
    exact ha
  2. L37
    exact hb
  3. L38
    specialize hp_right (((n)*(i)+(j)))
  4. L39
    specialize hp_right (c)
  5. L40
    apply hp_right
  6. L41
    specialize lt_to_le (((n)*(i)+(j)))
  7. L42
    specialize lt_to_le (m*n)
  8. L43
    apply lt_to_le
11Establish hindex_commL44–53

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

  1. L44
    have hindex_comm : (n)*(i)=(i)*(n)
  2. L45
    apply mul_comm
  3. L46
    rewrite hindex_comm
  4. L47
    specialize matrix_integer_rectangular_index_bound (m)
  5. L48
    specialize matrix_integer_rectangular_index_bound (n)
  6. L49
    specialize matrix_integer_rectangular_index_bound (i)
  7. L50
    specialize matrix_integer_rectangular_index_bound (j)
  8. L51
    apply matrix_integer_rectangular_index_bound
  9. L52
    exact hi
  10. L53
    exact hj
12Use earlier factsL54–54

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

  1. L54
    exact hc

Library-wide reading audit

Original exact command ledger · 54 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro T
  4. 0004intro m
  5. 0005intro n
  6. 0006intro hF
  7. 0007intro hG
  8. 0008intro hp
  9. 0009cases hp
  10. 0010split
  11. 0011exact hF
  12. 0012split
  13. 0013exact hG
  14. 0014split
  15. 0015exact hp_left
  16. 0016intro i
  17. 0017intro j
  18. 0018intro a
  19. 0019intro b
  20. 0020intro c
  21. 0021intro hi
  22. 0022intro hj
  23. 0023intro ha
  24. 0024intro hb
  25. 0025intro hc
  26. 0026specialize signed_cartesian_flat_entry_lookup (F)
  27. 0027specialize signed_cartesian_flat_entry_lookup (G)
  28. 0028specialize signed_cartesian_flat_entry_lookup (n)
  29. 0029specialize signed_cartesian_flat_entry_lookup (i)
  30. 0030specialize signed_cartesian_flat_entry_lookup (j)
  31. 0031specialize signed_cartesian_flat_entry_lookup (a)
  32. 0032specialize signed_cartesian_flat_entry_lookup (b)
  33. 0033specialize signed_cartesian_flat_entry_lookup (c)
  34. 0034apply signed_cartesian_flat_entry_lookup
  35. 0035exact hj
  36. 0036exact ha
  37. 0037exact hb
  38. 0038specialize hp_right (((n)*(i)+(j)))
  39. 0039specialize hp_right (c)
  40. 0040apply hp_right
  41. 0041specialize lt_to_le (((n)*(i)+(j)))
  42. 0042specialize lt_to_le (m*n)
  43. 0043apply lt_to_le
  44. 0044have hindex_comm : (n)*(i)=(i)*(n)
  45. 0045apply mul_comm
  46. 0046rewrite hindex_comm
  47. 0047specialize matrix_integer_rectangular_index_bound (m)
  48. 0048specialize matrix_integer_rectangular_index_bound (n)
  49. 0049specialize matrix_integer_rectangular_index_bound (i)
  50. 0050specialize matrix_integer_rectangular_index_bound (j)
  51. 0051apply matrix_integer_rectangular_index_bound
  52. 0052exact hi
  53. 0053exact hj
  54. 0054exact hc