MX001A

signed_slice_sum_concatenate

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

Ordinary length induction concatenates actual affine sum traces at offset o+s*p, including zero length and zero stride.

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 q F o s p a b c. (exists srs_slice_concat_first. ((((exists dst_positive_code_concat_firstslicesource_table dst_positive_scale_concat_firstslicesource_table dst_negative_code_concat_firstslicesource_table dst_negative_scale_concat_firstslicesource_table. (((F) = (((((dst_positive_code_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table)) * S ((dst_positive_code_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table)) + ((dst_positive_scale_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table))) + (((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) * S ((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) + ((dst_negative_scale_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)))) * S ((((dst_positive_code_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table)) * S ((dst_positive_code_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table)) + ((dst_positive_scale_concat_firstslicesource_table) + (dst_positive_scale_concat_firstslicesource_table))) + (((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) * S ((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) + ((dst_negative_scale_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)))) + ((((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) * S ((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) + ((dst_negative_scale_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table))) + (((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) * S ((dst_negative_code_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)) + ((dst_negative_scale_concat_firstslicesource_table) + (dst_negative_scale_concat_firstslicesource_table)))))) /\ (forall dst_index_concat_firstslicesource_table. (exists pvs_le_gap_concat_firstslicesource_tabledomain. pvs_le_gap_concat_firstslicesource_tabledomain + (dst_index_concat_firstslicesource_table) = (0)) -> exists dst_positive_concat_firstslicesource_table dst_negative_concat_firstslicesource_table dst_value_concat_firstslicesource_table. ((((exists ff_h_pvs_concat_firstslicesource_tableentrypositive. ff_h_pvs_concat_firstslicesource_tableentrypositive + S (dst_positive_concat_firstslicesource_table) = S ((S (dst_index_concat_firstslicesource_table)) * dst_positive_scale_concat_firstslicesource_table)) /\ exists ff_q_pvs_concat_firstslicesource_tableentrypositive. dst_positive_code_concat_firstslicesource_table = ff_q_pvs_concat_firstslicesource_tableentrypositive * S ((S (dst_index_concat_firstslicesource_table)) * dst_positive_scale_concat_firstslicesource_table) + (dst_positive_concat_firstslicesource_table))) /\ (((((exists ff_h_pvs_concat_firstslicesource_tableentrynegative. ff_h_pvs_concat_firstslicesource_tableentrynegative + S (dst_negative_concat_firstslicesource_table) = S ((S (dst_index_concat_firstslicesource_table)) * dst_negative_scale_concat_firstslicesource_table)) /\ exists ff_q_pvs_concat_firstslicesource_tableentrynegative. dst_negative_code_concat_firstslicesource_table = ff_q_pvs_concat_firstslicesource_tableentrynegative * S ((S (dst_index_concat_firstslicesource_table)) * dst_negative_scale_concat_firstslicesource_table) + (dst_negative_concat_firstslicesource_table))) /\ (exists ge_balance_positive_concat_firstslicesource_tableentryvalue ge_balance_negative_concat_firstslicesource_tableentryvalue. (((((dst_value_concat_firstslicesource_table) = 2 * (ge_balance_positive_concat_firstslicesource_tableentryvalue) /\ (ge_balance_negative_concat_firstslicesource_tableentryvalue) = 0) \/ exists ge_signed_half_concat_firstslicesource_tableentryvaluedecode. (((dst_value_concat_firstslicesource_table) = 2 * ge_signed_half_concat_firstslicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_firstslicesource_tableentryvalue) = 0) /\ (ge_balance_negative_concat_firstslicesource_tableentryvalue) = S ge_signed_half_concat_firstslicesource_tableentryvaluedecode))) /\ ((dst_positive_concat_firstslicesource_table) + ge_balance_negative_concat_firstslicesource_tableentryvalue = (dst_negative_concat_firstslicesource_table) + ge_balance_positive_concat_firstslicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_concat_firstsliceoutput_table dst_positive_scale_concat_firstsliceoutput_table dst_negative_code_concat_firstsliceoutput_table dst_negative_scale_concat_firstsliceoutput_table. (((srs_slice_concat_first) = (((((dst_positive_code_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table)) * S ((dst_positive_code_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table)) + ((dst_positive_scale_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table))) + (((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) * S ((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) + ((dst_negative_scale_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)))) * S ((((dst_positive_code_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table)) * S ((dst_positive_code_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table)) + ((dst_positive_scale_concat_firstsliceoutput_table) + (dst_positive_scale_concat_firstsliceoutput_table))) + (((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) * S ((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) + ((dst_negative_scale_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)))) + ((((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) * S ((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) + ((dst_negative_scale_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table))) + (((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) * S ((dst_negative_code_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)) + ((dst_negative_scale_concat_firstsliceoutput_table) + (dst_negative_scale_concat_firstsliceoutput_table)))))) /\ (forall dst_index_concat_firstsliceoutput_table. (exists pvs_le_gap_concat_firstsliceoutput_tabledomain. pvs_le_gap_concat_firstsliceoutput_tabledomain + (dst_index_concat_firstsliceoutput_table) = (p)) -> exists dst_positive_concat_firstsliceoutput_table dst_negative_concat_firstsliceoutput_table dst_value_concat_firstsliceoutput_table. ((((exists ff_h_pvs_concat_firstsliceoutput_tableentrypositive. ff_h_pvs_concat_firstsliceoutput_tableentrypositive + S (dst_positive_concat_firstsliceoutput_table) = S ((S (dst_index_concat_firstsliceoutput_table)) * dst_positive_scale_concat_firstsliceoutput_table)) /\ exists ff_q_pvs_concat_firstsliceoutput_tableentrypositive. dst_positive_code_concat_firstsliceoutput_table = ff_q_pvs_concat_firstsliceoutput_tableentrypositive * S ((S (dst_index_concat_firstsliceoutput_table)) * dst_positive_scale_concat_firstsliceoutput_table) + (dst_positive_concat_firstsliceoutput_table))) /\ (((((exists ff_h_pvs_concat_firstsliceoutput_tableentrynegative. ff_h_pvs_concat_firstsliceoutput_tableentrynegative + S (dst_negative_concat_firstsliceoutput_table) = S ((S (dst_index_concat_firstsliceoutput_table)) * dst_negative_scale_concat_firstsliceoutput_table)) /\ exists ff_q_pvs_concat_firstsliceoutput_tableentrynegative. dst_negative_code_concat_firstsliceoutput_table = ff_q_pvs_concat_firstsliceoutput_tableentrynegative * S ((S (dst_index_concat_firstsliceoutput_table)) * dst_negative_scale_concat_firstsliceoutput_table) + (dst_negative_concat_firstsliceoutput_table))) /\ (exists ge_balance_positive_concat_firstsliceoutput_tableentryvalue ge_balance_negative_concat_firstsliceoutput_tableentryvalue. (((((dst_value_concat_firstsliceoutput_table) = 2 * (ge_balance_positive_concat_firstsliceoutput_tableentryvalue) /\ (ge_balance_negative_concat_firstsliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_concat_firstsliceoutput_tableentryvaluedecode. (((dst_value_concat_firstsliceoutput_table) = 2 * ge_signed_half_concat_firstsliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_firstsliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_concat_firstsliceoutput_tableentryvalue) = S ge_signed_half_concat_firstsliceoutput_tableentryvaluedecode))) /\ ((dst_positive_concat_firstsliceoutput_table) + ge_balance_negative_concat_firstsliceoutput_tableentryvalue = (dst_negative_concat_firstsliceoutput_table) + ge_balance_positive_concat_firstsliceoutput_tableentryvalue))))))))) /\ (forall srs_index_concat_firstslice. (exists pvs_gap_concat_firstslicebound. pvs_gap_concat_firstslicebound + S (srs_index_concat_firstslice) = (p)) -> exists srs_value_concat_firstslice. (((exists dst_positive_code_concat_firstsliceentrysource dst_positive_scale_concat_firstsliceentrysource dst_negative_code_concat_firstsliceentrysource dst_negative_scale_concat_firstsliceentrysource dst_positive_concat_firstsliceentrysource dst_negative_concat_firstsliceentrysource. (((F) = (((((dst_positive_code_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource)) * S ((dst_positive_code_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource)) + ((dst_positive_scale_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource))) + (((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) * S ((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) + ((dst_negative_scale_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)))) * S ((((dst_positive_code_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource)) * S ((dst_positive_code_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource)) + ((dst_positive_scale_concat_firstsliceentrysource) + (dst_positive_scale_concat_firstsliceentrysource))) + (((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) * S ((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) + ((dst_negative_scale_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)))) + ((((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) * S ((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) + ((dst_negative_scale_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource))) + (((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) * S ((dst_negative_code_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)) + ((dst_negative_scale_concat_firstsliceentrysource) + (dst_negative_scale_concat_firstsliceentrysource)))))) /\ (((((exists ff_h_pvs_concat_firstsliceentrysourcepositive. ff_h_pvs_concat_firstsliceentrysourcepositive + S (dst_positive_concat_firstsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_firstslice))))) * dst_positive_scale_concat_firstsliceentrysource)) /\ exists ff_q_pvs_concat_firstsliceentrysourcepositive. dst_positive_code_concat_firstsliceentrysource = ff_q_pvs_concat_firstsliceentrysourcepositive * S ((S (((o) + ((s) * (srs_index_concat_firstslice))))) * dst_positive_scale_concat_firstsliceentrysource) + (dst_positive_concat_firstsliceentrysource))) /\ (((((exists ff_h_pvs_concat_firstsliceentrysourcenegative. ff_h_pvs_concat_firstsliceentrysourcenegative + S (dst_negative_concat_firstsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_firstslice))))) * dst_negative_scale_concat_firstsliceentrysource)) /\ exists ff_q_pvs_concat_firstsliceentrysourcenegative. dst_negative_code_concat_firstsliceentrysource = ff_q_pvs_concat_firstsliceentrysourcenegative * S ((S (((o) + ((s) * (srs_index_concat_firstslice))))) * dst_negative_scale_concat_firstsliceentrysource) + (dst_negative_concat_firstsliceentrysource))) /\ (exists ge_balance_positive_concat_firstsliceentrysourcevalue ge_balance_negative_concat_firstsliceentrysourcevalue. (((((srs_value_concat_firstslice) = 2 * (ge_balance_positive_concat_firstsliceentrysourcevalue) /\ (ge_balance_negative_concat_firstsliceentrysourcevalue) = 0) \/ exists ge_signed_half_concat_firstsliceentrysourcevaluedecode. (((srs_value_concat_firstslice) = 2 * ge_signed_half_concat_firstsliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_concat_firstsliceentrysourcevalue) = 0) /\ (ge_balance_negative_concat_firstsliceentrysourcevalue) = S ge_signed_half_concat_firstsliceentrysourcevaluedecode))) /\ ((dst_positive_concat_firstsliceentrysource) + ge_balance_negative_concat_firstsliceentrysourcevalue = (dst_negative_concat_firstsliceentrysource) + ge_balance_positive_concat_firstsliceentrysourcevalue))))))))) /\ (exists dst_positive_code_concat_firstsliceentryoutput dst_positive_scale_concat_firstsliceentryoutput dst_negative_code_concat_firstsliceentryoutput dst_negative_scale_concat_firstsliceentryoutput dst_positive_concat_firstsliceentryoutput dst_negative_concat_firstsliceentryoutput. (((srs_slice_concat_first) = (((((dst_positive_code_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput)) * S ((dst_positive_code_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput)) + ((dst_positive_scale_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput))) + (((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) * S ((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) + ((dst_negative_scale_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)))) * S ((((dst_positive_code_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput)) * S ((dst_positive_code_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput)) + ((dst_positive_scale_concat_firstsliceentryoutput) + (dst_positive_scale_concat_firstsliceentryoutput))) + (((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) * S ((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) + ((dst_negative_scale_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)))) + ((((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) * S ((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) + ((dst_negative_scale_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput))) + (((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) * S ((dst_negative_code_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)) + ((dst_negative_scale_concat_firstsliceentryoutput) + (dst_negative_scale_concat_firstsliceentryoutput)))))) /\ (((((exists ff_h_pvs_concat_firstsliceentryoutputpositive. ff_h_pvs_concat_firstsliceentryoutputpositive + S (dst_positive_concat_firstsliceentryoutput) = S ((S (srs_index_concat_firstslice)) * dst_positive_scale_concat_firstsliceentryoutput)) /\ exists ff_q_pvs_concat_firstsliceentryoutputpositive. dst_positive_code_concat_firstsliceentryoutput = ff_q_pvs_concat_firstsliceentryoutputpositive * S ((S (srs_index_concat_firstslice)) * dst_positive_scale_concat_firstsliceentryoutput) + (dst_positive_concat_firstsliceentryoutput))) /\ (((((exists ff_h_pvs_concat_firstsliceentryoutputnegative. ff_h_pvs_concat_firstsliceentryoutputnegative + S (dst_negative_concat_firstsliceentryoutput) = S ((S (srs_index_concat_firstslice)) * dst_negative_scale_concat_firstsliceentryoutput)) /\ exists ff_q_pvs_concat_firstsliceentryoutputnegative. dst_negative_code_concat_firstsliceentryoutput = ff_q_pvs_concat_firstsliceentryoutputnegative * S ((S (srs_index_concat_firstslice)) * dst_negative_scale_concat_firstsliceentryoutput) + (dst_negative_concat_firstsliceentryoutput))) /\ (exists ge_balance_positive_concat_firstsliceentryoutputvalue ge_balance_negative_concat_firstsliceentryoutputvalue. (((((srs_value_concat_firstslice) = 2 * (ge_balance_positive_concat_firstsliceentryoutputvalue) /\ (ge_balance_negative_concat_firstsliceentryoutputvalue) = 0) \/ exists ge_signed_half_concat_firstsliceentryoutputvaluedecode. (((srs_value_concat_firstslice) = 2 * ge_signed_half_concat_firstsliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_concat_firstsliceentryoutputvalue) = 0) /\ (ge_balance_negative_concat_firstsliceentryoutputvalue) = S ge_signed_half_concat_firstsliceentryoutputvaluedecode))) /\ ((dst_positive_concat_firstsliceentryoutput) + ge_balance_negative_concat_firstsliceentryoutputvalue = (dst_negative_concat_firstsliceentryoutput) + ge_balance_positive_concat_firstsliceentryoutputvalue)))))))))))))))) /\ (exists dst_positive_code_concat_firstsum dst_positive_scale_concat_firstsum dst_negative_code_concat_firstsum dst_negative_scale_concat_firstsum dst_positive_sum_concat_firstsum dst_negative_sum_concat_firstsum. (((srs_slice_concat_first) = (((((dst_positive_code_concat_firstsum) + (dst_positive_scale_concat_firstsum)) * S ((dst_positive_code_concat_firstsum) + (dst_positive_scale_concat_firstsum)) + ((dst_positive_scale_concat_firstsum) + (dst_positive_scale_concat_firstsum))) + (((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) * S ((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) + ((dst_negative_scale_concat_firstsum) + (dst_negative_scale_concat_firstsum)))) * S ((((dst_positive_code_concat_firstsum) + (dst_positive_scale_concat_firstsum)) * S ((dst_positive_code_concat_firstsum) + (dst_positive_scale_concat_firstsum)) + ((dst_positive_scale_concat_firstsum) + (dst_positive_scale_concat_firstsum))) + (((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) * S ((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) + ((dst_negative_scale_concat_firstsum) + (dst_negative_scale_concat_firstsum)))) + ((((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) * S ((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) + ((dst_negative_scale_concat_firstsum) + (dst_negative_scale_concat_firstsum))) + (((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) * S ((dst_negative_code_concat_firstsum) + (dst_negative_scale_concat_firstsum)) + ((dst_negative_scale_concat_firstsum) + (dst_negative_scale_concat_firstsum)))))) /\ (((exists fs_u_dst_concat_firstsumpositive fs_v_dst_concat_firstsumpositive. ((((exists fs_h_dst_concat_firstsumpositive_body_start. fs_h_dst_concat_firstsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_firstsumpositive)) /\ exists fs_q_dst_concat_firstsumpositive_body_start. fs_u_dst_concat_firstsumpositive = fs_q_dst_concat_firstsumpositive_body_start * S ((S (0)) * fs_v_dst_concat_firstsumpositive) + (0))) /\ ((((exists fs_h_dst_concat_firstsumpositive_body_terminal. fs_h_dst_concat_firstsumpositive_body_terminal + S (dst_positive_sum_concat_firstsum) = S ((S (p)) * fs_v_dst_concat_firstsumpositive)) /\ exists fs_q_dst_concat_firstsumpositive_body_terminal. fs_u_dst_concat_firstsumpositive = fs_q_dst_concat_firstsumpositive_body_terminal * S ((S (p)) * fs_v_dst_concat_firstsumpositive) + (dst_positive_sum_concat_firstsum))) /\ forall fs_i_dst_concat_firstsumpositive_body_steps. (exists fs_lt_dst_concat_firstsumpositive_body_steps_bound. fs_lt_dst_concat_firstsumpositive_body_steps_bound + S fs_i_dst_concat_firstsumpositive_body_steps = p) -> exists fs_a_dst_concat_firstsumpositive_body_steps fs_r_dst_concat_firstsumpositive_body_steps fs_s_dst_concat_firstsumpositive_body_steps. ((((exists fs_h_dst_concat_firstsumpositive_body_steps_summand. fs_h_dst_concat_firstsumpositive_body_steps_summand + S (fs_a_dst_concat_firstsumpositive_body_steps) = S ((S (fs_i_dst_concat_firstsumpositive_body_steps)) * dst_positive_scale_concat_firstsum)) /\ exists fs_q_dst_concat_firstsumpositive_body_steps_summand. dst_positive_code_concat_firstsum = fs_q_dst_concat_firstsumpositive_body_steps_summand * S ((S (fs_i_dst_concat_firstsumpositive_body_steps)) * dst_positive_scale_concat_firstsum) + (fs_a_dst_concat_firstsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_firstsumpositive_body_steps_partial. fs_h_dst_concat_firstsumpositive_body_steps_partial + S (fs_r_dst_concat_firstsumpositive_body_steps) = S ((S (fs_i_dst_concat_firstsumpositive_body_steps)) * fs_v_dst_concat_firstsumpositive)) /\ exists fs_q_dst_concat_firstsumpositive_body_steps_partial. fs_u_dst_concat_firstsumpositive = fs_q_dst_concat_firstsumpositive_body_steps_partial * S ((S (fs_i_dst_concat_firstsumpositive_body_steps)) * fs_v_dst_concat_firstsumpositive) + (fs_r_dst_concat_firstsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_firstsumpositive_body_steps_successor. fs_h_dst_concat_firstsumpositive_body_steps_successor + S (fs_s_dst_concat_firstsumpositive_body_steps) = S ((S (S fs_i_dst_concat_firstsumpositive_body_steps)) * fs_v_dst_concat_firstsumpositive)) /\ exists fs_q_dst_concat_firstsumpositive_body_steps_successor. fs_u_dst_concat_firstsumpositive = fs_q_dst_concat_firstsumpositive_body_steps_successor * S ((S (S fs_i_dst_concat_firstsumpositive_body_steps)) * fs_v_dst_concat_firstsumpositive) + (fs_s_dst_concat_firstsumpositive_body_steps))) /\ fs_s_dst_concat_firstsumpositive_body_steps = fs_r_dst_concat_firstsumpositive_body_steps + fs_a_dst_concat_firstsumpositive_body_steps)))))) /\ (((exists fs_u_dst_concat_firstsumnegative fs_v_dst_concat_firstsumnegative. ((((exists fs_h_dst_concat_firstsumnegative_body_start. fs_h_dst_concat_firstsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_firstsumnegative)) /\ exists fs_q_dst_concat_firstsumnegative_body_start. fs_u_dst_concat_firstsumnegative = fs_q_dst_concat_firstsumnegative_body_start * S ((S (0)) * fs_v_dst_concat_firstsumnegative) + (0))) /\ ((((exists fs_h_dst_concat_firstsumnegative_body_terminal. fs_h_dst_concat_firstsumnegative_body_terminal + S (dst_negative_sum_concat_firstsum) = S ((S (p)) * fs_v_dst_concat_firstsumnegative)) /\ exists fs_q_dst_concat_firstsumnegative_body_terminal. fs_u_dst_concat_firstsumnegative = fs_q_dst_concat_firstsumnegative_body_terminal * S ((S (p)) * fs_v_dst_concat_firstsumnegative) + (dst_negative_sum_concat_firstsum))) /\ forall fs_i_dst_concat_firstsumnegative_body_steps. (exists fs_lt_dst_concat_firstsumnegative_body_steps_bound. fs_lt_dst_concat_firstsumnegative_body_steps_bound + S fs_i_dst_concat_firstsumnegative_body_steps = p) -> exists fs_a_dst_concat_firstsumnegative_body_steps fs_r_dst_concat_firstsumnegative_body_steps fs_s_dst_concat_firstsumnegative_body_steps. ((((exists fs_h_dst_concat_firstsumnegative_body_steps_summand. fs_h_dst_concat_firstsumnegative_body_steps_summand + S (fs_a_dst_concat_firstsumnegative_body_steps) = S ((S (fs_i_dst_concat_firstsumnegative_body_steps)) * dst_negative_scale_concat_firstsum)) /\ exists fs_q_dst_concat_firstsumnegative_body_steps_summand. dst_negative_code_concat_firstsum = fs_q_dst_concat_firstsumnegative_body_steps_summand * S ((S (fs_i_dst_concat_firstsumnegative_body_steps)) * dst_negative_scale_concat_firstsum) + (fs_a_dst_concat_firstsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_firstsumnegative_body_steps_partial. fs_h_dst_concat_firstsumnegative_body_steps_partial + S (fs_r_dst_concat_firstsumnegative_body_steps) = S ((S (fs_i_dst_concat_firstsumnegative_body_steps)) * fs_v_dst_concat_firstsumnegative)) /\ exists fs_q_dst_concat_firstsumnegative_body_steps_partial. fs_u_dst_concat_firstsumnegative = fs_q_dst_concat_firstsumnegative_body_steps_partial * S ((S (fs_i_dst_concat_firstsumnegative_body_steps)) * fs_v_dst_concat_firstsumnegative) + (fs_r_dst_concat_firstsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_firstsumnegative_body_steps_successor. fs_h_dst_concat_firstsumnegative_body_steps_successor + S (fs_s_dst_concat_firstsumnegative_body_steps) = S ((S (S fs_i_dst_concat_firstsumnegative_body_steps)) * fs_v_dst_concat_firstsumnegative)) /\ exists fs_q_dst_concat_firstsumnegative_body_steps_successor. fs_u_dst_concat_firstsumnegative = fs_q_dst_concat_firstsumnegative_body_steps_successor * S ((S (S fs_i_dst_concat_firstsumnegative_body_steps)) * fs_v_dst_concat_firstsumnegative) + (fs_s_dst_concat_firstsumnegative_body_steps))) /\ fs_s_dst_concat_firstsumnegative_body_steps = fs_r_dst_concat_firstsumnegative_body_steps + fs_a_dst_concat_firstsumnegative_body_steps)))))) /\ (exists ge_balance_positive_concat_firstsumresult ge_balance_negative_concat_firstsumresult. (((((a) = 2 * (ge_balance_positive_concat_firstsumresult) /\ (ge_balance_negative_concat_firstsumresult) = 0) \/ exists ge_signed_half_concat_firstsumresultdecode. (((a) = 2 * ge_signed_half_concat_firstsumresultdecode + 1 /\ (ge_balance_positive_concat_firstsumresult) = 0) /\ (ge_balance_negative_concat_firstsumresult) = S ge_signed_half_concat_firstsumresultdecode))) /\ ((dst_positive_sum_concat_firstsum) + ge_balance_negative_concat_firstsumresult = (dst_negative_sum_concat_firstsum) + ge_balance_positive_concat_firstsumresult))))))))))) -> (exists srs_slice_concat_second. ((((exists dst_positive_code_concat_secondslicesource_table dst_positive_scale_concat_secondslicesource_table dst_negative_code_concat_secondslicesource_table dst_negative_scale_concat_secondslicesource_table. (((F) = (((((dst_positive_code_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table)) * S ((dst_positive_code_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table)) + ((dst_positive_scale_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table))) + (((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) * S ((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) + ((dst_negative_scale_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)))) * S ((((dst_positive_code_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table)) * S ((dst_positive_code_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table)) + ((dst_positive_scale_concat_secondslicesource_table) + (dst_positive_scale_concat_secondslicesource_table))) + (((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) * S ((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) + ((dst_negative_scale_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)))) + ((((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) * S ((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) + ((dst_negative_scale_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table))) + (((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) * S ((dst_negative_code_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)) + ((dst_negative_scale_concat_secondslicesource_table) + (dst_negative_scale_concat_secondslicesource_table)))))) /\ (forall dst_index_concat_secondslicesource_table. (exists pvs_le_gap_concat_secondslicesource_tabledomain. pvs_le_gap_concat_secondslicesource_tabledomain + (dst_index_concat_secondslicesource_table) = (0)) -> exists dst_positive_concat_secondslicesource_table dst_negative_concat_secondslicesource_table dst_value_concat_secondslicesource_table. ((((exists ff_h_pvs_concat_secondslicesource_tableentrypositive. ff_h_pvs_concat_secondslicesource_tableentrypositive + S (dst_positive_concat_secondslicesource_table) = S ((S (dst_index_concat_secondslicesource_table)) * dst_positive_scale_concat_secondslicesource_table)) /\ exists ff_q_pvs_concat_secondslicesource_tableentrypositive. dst_positive_code_concat_secondslicesource_table = ff_q_pvs_concat_secondslicesource_tableentrypositive * S ((S (dst_index_concat_secondslicesource_table)) * dst_positive_scale_concat_secondslicesource_table) + (dst_positive_concat_secondslicesource_table))) /\ (((((exists ff_h_pvs_concat_secondslicesource_tableentrynegative. ff_h_pvs_concat_secondslicesource_tableentrynegative + S (dst_negative_concat_secondslicesource_table) = S ((S (dst_index_concat_secondslicesource_table)) * dst_negative_scale_concat_secondslicesource_table)) /\ exists ff_q_pvs_concat_secondslicesource_tableentrynegative. dst_negative_code_concat_secondslicesource_table = ff_q_pvs_concat_secondslicesource_tableentrynegative * S ((S (dst_index_concat_secondslicesource_table)) * dst_negative_scale_concat_secondslicesource_table) + (dst_negative_concat_secondslicesource_table))) /\ (exists ge_balance_positive_concat_secondslicesource_tableentryvalue ge_balance_negative_concat_secondslicesource_tableentryvalue. (((((dst_value_concat_secondslicesource_table) = 2 * (ge_balance_positive_concat_secondslicesource_tableentryvalue) /\ (ge_balance_negative_concat_secondslicesource_tableentryvalue) = 0) \/ exists ge_signed_half_concat_secondslicesource_tableentryvaluedecode. (((dst_value_concat_secondslicesource_table) = 2 * ge_signed_half_concat_secondslicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_secondslicesource_tableentryvalue) = 0) /\ (ge_balance_negative_concat_secondslicesource_tableentryvalue) = S ge_signed_half_concat_secondslicesource_tableentryvaluedecode))) /\ ((dst_positive_concat_secondslicesource_table) + ge_balance_negative_concat_secondslicesource_tableentryvalue = (dst_negative_concat_secondslicesource_table) + ge_balance_positive_concat_secondslicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_concat_secondsliceoutput_table dst_positive_scale_concat_secondsliceoutput_table dst_negative_code_concat_secondsliceoutput_table dst_negative_scale_concat_secondsliceoutput_table. (((srs_slice_concat_second) = (((((dst_positive_code_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table)) * S ((dst_positive_code_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table)) + ((dst_positive_scale_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table))) + (((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) * S ((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) + ((dst_negative_scale_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)))) * S ((((dst_positive_code_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table)) * S ((dst_positive_code_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table)) + ((dst_positive_scale_concat_secondsliceoutput_table) + (dst_positive_scale_concat_secondsliceoutput_table))) + (((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) * S ((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) + ((dst_negative_scale_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)))) + ((((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) * S ((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) + ((dst_negative_scale_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table))) + (((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) * S ((dst_negative_code_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)) + ((dst_negative_scale_concat_secondsliceoutput_table) + (dst_negative_scale_concat_secondsliceoutput_table)))))) /\ (forall dst_index_concat_secondsliceoutput_table. (exists pvs_le_gap_concat_secondsliceoutput_tabledomain. pvs_le_gap_concat_secondsliceoutput_tabledomain + (dst_index_concat_secondsliceoutput_table) = (q)) -> exists dst_positive_concat_secondsliceoutput_table dst_negative_concat_secondsliceoutput_table dst_value_concat_secondsliceoutput_table. ((((exists ff_h_pvs_concat_secondsliceoutput_tableentrypositive. ff_h_pvs_concat_secondsliceoutput_tableentrypositive + S (dst_positive_concat_secondsliceoutput_table) = S ((S (dst_index_concat_secondsliceoutput_table)) * dst_positive_scale_concat_secondsliceoutput_table)) /\ exists ff_q_pvs_concat_secondsliceoutput_tableentrypositive. dst_positive_code_concat_secondsliceoutput_table = ff_q_pvs_concat_secondsliceoutput_tableentrypositive * S ((S (dst_index_concat_secondsliceoutput_table)) * dst_positive_scale_concat_secondsliceoutput_table) + (dst_positive_concat_secondsliceoutput_table))) /\ (((((exists ff_h_pvs_concat_secondsliceoutput_tableentrynegative. ff_h_pvs_concat_secondsliceoutput_tableentrynegative + S (dst_negative_concat_secondsliceoutput_table) = S ((S (dst_index_concat_secondsliceoutput_table)) * dst_negative_scale_concat_secondsliceoutput_table)) /\ exists ff_q_pvs_concat_secondsliceoutput_tableentrynegative. dst_negative_code_concat_secondsliceoutput_table = ff_q_pvs_concat_secondsliceoutput_tableentrynegative * S ((S (dst_index_concat_secondsliceoutput_table)) * dst_negative_scale_concat_secondsliceoutput_table) + (dst_negative_concat_secondsliceoutput_table))) /\ (exists ge_balance_positive_concat_secondsliceoutput_tableentryvalue ge_balance_negative_concat_secondsliceoutput_tableentryvalue. (((((dst_value_concat_secondsliceoutput_table) = 2 * (ge_balance_positive_concat_secondsliceoutput_tableentryvalue) /\ (ge_balance_negative_concat_secondsliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_concat_secondsliceoutput_tableentryvaluedecode. (((dst_value_concat_secondsliceoutput_table) = 2 * ge_signed_half_concat_secondsliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_secondsliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_concat_secondsliceoutput_tableentryvalue) = S ge_signed_half_concat_secondsliceoutput_tableentryvaluedecode))) /\ ((dst_positive_concat_secondsliceoutput_table) + ge_balance_negative_concat_secondsliceoutput_tableentryvalue = (dst_negative_concat_secondsliceoutput_table) + ge_balance_positive_concat_secondsliceoutput_tableentryvalue))))))))) /\ (forall srs_index_concat_secondslice. (exists pvs_gap_concat_secondslicebound. pvs_gap_concat_secondslicebound + S (srs_index_concat_secondslice) = (q)) -> exists srs_value_concat_secondslice. (((exists dst_positive_code_concat_secondsliceentrysource dst_positive_scale_concat_secondsliceentrysource dst_negative_code_concat_secondsliceentrysource dst_negative_scale_concat_secondsliceentrysource dst_positive_concat_secondsliceentrysource dst_negative_concat_secondsliceentrysource. (((F) = (((((dst_positive_code_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource)) * S ((dst_positive_code_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource)) + ((dst_positive_scale_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource))) + (((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) * S ((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) + ((dst_negative_scale_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)))) * S ((((dst_positive_code_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource)) * S ((dst_positive_code_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource)) + ((dst_positive_scale_concat_secondsliceentrysource) + (dst_positive_scale_concat_secondsliceentrysource))) + (((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) * S ((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) + ((dst_negative_scale_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)))) + ((((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) * S ((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) + ((dst_negative_scale_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource))) + (((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) * S ((dst_negative_code_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)) + ((dst_negative_scale_concat_secondsliceentrysource) + (dst_negative_scale_concat_secondsliceentrysource)))))) /\ (((((exists ff_h_pvs_concat_secondsliceentrysourcepositive. ff_h_pvs_concat_secondsliceentrysourcepositive + S (dst_positive_concat_secondsliceentrysource) = S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_secondslice))))) * dst_positive_scale_concat_secondsliceentrysource)) /\ exists ff_q_pvs_concat_secondsliceentrysourcepositive. dst_positive_code_concat_secondsliceentrysource = ff_q_pvs_concat_secondsliceentrysourcepositive * S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_secondslice))))) * dst_positive_scale_concat_secondsliceentrysource) + (dst_positive_concat_secondsliceentrysource))) /\ (((((exists ff_h_pvs_concat_secondsliceentrysourcenegative. ff_h_pvs_concat_secondsliceentrysourcenegative + S (dst_negative_concat_secondsliceentrysource) = S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_secondslice))))) * dst_negative_scale_concat_secondsliceentrysource)) /\ exists ff_q_pvs_concat_secondsliceentrysourcenegative. dst_negative_code_concat_secondsliceentrysource = ff_q_pvs_concat_secondsliceentrysourcenegative * S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_secondslice))))) * dst_negative_scale_concat_secondsliceentrysource) + (dst_negative_concat_secondsliceentrysource))) /\ (exists ge_balance_positive_concat_secondsliceentrysourcevalue ge_balance_negative_concat_secondsliceentrysourcevalue. (((((srs_value_concat_secondslice) = 2 * (ge_balance_positive_concat_secondsliceentrysourcevalue) /\ (ge_balance_negative_concat_secondsliceentrysourcevalue) = 0) \/ exists ge_signed_half_concat_secondsliceentrysourcevaluedecode. (((srs_value_concat_secondslice) = 2 * ge_signed_half_concat_secondsliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_concat_secondsliceentrysourcevalue) = 0) /\ (ge_balance_negative_concat_secondsliceentrysourcevalue) = S ge_signed_half_concat_secondsliceentrysourcevaluedecode))) /\ ((dst_positive_concat_secondsliceentrysource) + ge_balance_negative_concat_secondsliceentrysourcevalue = (dst_negative_concat_secondsliceentrysource) + ge_balance_positive_concat_secondsliceentrysourcevalue))))))))) /\ (exists dst_positive_code_concat_secondsliceentryoutput dst_positive_scale_concat_secondsliceentryoutput dst_negative_code_concat_secondsliceentryoutput dst_negative_scale_concat_secondsliceentryoutput dst_positive_concat_secondsliceentryoutput dst_negative_concat_secondsliceentryoutput. (((srs_slice_concat_second) = (((((dst_positive_code_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput)) * S ((dst_positive_code_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput)) + ((dst_positive_scale_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput))) + (((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) * S ((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) + ((dst_negative_scale_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)))) * S ((((dst_positive_code_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput)) * S ((dst_positive_code_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput)) + ((dst_positive_scale_concat_secondsliceentryoutput) + (dst_positive_scale_concat_secondsliceentryoutput))) + (((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) * S ((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) + ((dst_negative_scale_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)))) + ((((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) * S ((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) + ((dst_negative_scale_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput))) + (((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) * S ((dst_negative_code_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)) + ((dst_negative_scale_concat_secondsliceentryoutput) + (dst_negative_scale_concat_secondsliceentryoutput)))))) /\ (((((exists ff_h_pvs_concat_secondsliceentryoutputpositive. ff_h_pvs_concat_secondsliceentryoutputpositive + S (dst_positive_concat_secondsliceentryoutput) = S ((S (srs_index_concat_secondslice)) * dst_positive_scale_concat_secondsliceentryoutput)) /\ exists ff_q_pvs_concat_secondsliceentryoutputpositive. dst_positive_code_concat_secondsliceentryoutput = ff_q_pvs_concat_secondsliceentryoutputpositive * S ((S (srs_index_concat_secondslice)) * dst_positive_scale_concat_secondsliceentryoutput) + (dst_positive_concat_secondsliceentryoutput))) /\ (((((exists ff_h_pvs_concat_secondsliceentryoutputnegative. ff_h_pvs_concat_secondsliceentryoutputnegative + S (dst_negative_concat_secondsliceentryoutput) = S ((S (srs_index_concat_secondslice)) * dst_negative_scale_concat_secondsliceentryoutput)) /\ exists ff_q_pvs_concat_secondsliceentryoutputnegative. dst_negative_code_concat_secondsliceentryoutput = ff_q_pvs_concat_secondsliceentryoutputnegative * S ((S (srs_index_concat_secondslice)) * dst_negative_scale_concat_secondsliceentryoutput) + (dst_negative_concat_secondsliceentryoutput))) /\ (exists ge_balance_positive_concat_secondsliceentryoutputvalue ge_balance_negative_concat_secondsliceentryoutputvalue. (((((srs_value_concat_secondslice) = 2 * (ge_balance_positive_concat_secondsliceentryoutputvalue) /\ (ge_balance_negative_concat_secondsliceentryoutputvalue) = 0) \/ exists ge_signed_half_concat_secondsliceentryoutputvaluedecode. (((srs_value_concat_secondslice) = 2 * ge_signed_half_concat_secondsliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_concat_secondsliceentryoutputvalue) = 0) /\ (ge_balance_negative_concat_secondsliceentryoutputvalue) = S ge_signed_half_concat_secondsliceentryoutputvaluedecode))) /\ ((dst_positive_concat_secondsliceentryoutput) + ge_balance_negative_concat_secondsliceentryoutputvalue = (dst_negative_concat_secondsliceentryoutput) + ge_balance_positive_concat_secondsliceentryoutputvalue)))))))))))))))) /\ (exists dst_positive_code_concat_secondsum dst_positive_scale_concat_secondsum dst_negative_code_concat_secondsum dst_negative_scale_concat_secondsum dst_positive_sum_concat_secondsum dst_negative_sum_concat_secondsum. (((srs_slice_concat_second) = (((((dst_positive_code_concat_secondsum) + (dst_positive_scale_concat_secondsum)) * S ((dst_positive_code_concat_secondsum) + (dst_positive_scale_concat_secondsum)) + ((dst_positive_scale_concat_secondsum) + (dst_positive_scale_concat_secondsum))) + (((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) * S ((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) + ((dst_negative_scale_concat_secondsum) + (dst_negative_scale_concat_secondsum)))) * S ((((dst_positive_code_concat_secondsum) + (dst_positive_scale_concat_secondsum)) * S ((dst_positive_code_concat_secondsum) + (dst_positive_scale_concat_secondsum)) + ((dst_positive_scale_concat_secondsum) + (dst_positive_scale_concat_secondsum))) + (((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) * S ((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) + ((dst_negative_scale_concat_secondsum) + (dst_negative_scale_concat_secondsum)))) + ((((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) * S ((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) + ((dst_negative_scale_concat_secondsum) + (dst_negative_scale_concat_secondsum))) + (((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) * S ((dst_negative_code_concat_secondsum) + (dst_negative_scale_concat_secondsum)) + ((dst_negative_scale_concat_secondsum) + (dst_negative_scale_concat_secondsum)))))) /\ (((exists fs_u_dst_concat_secondsumpositive fs_v_dst_concat_secondsumpositive. ((((exists fs_h_dst_concat_secondsumpositive_body_start. fs_h_dst_concat_secondsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_secondsumpositive)) /\ exists fs_q_dst_concat_secondsumpositive_body_start. fs_u_dst_concat_secondsumpositive = fs_q_dst_concat_secondsumpositive_body_start * S ((S (0)) * fs_v_dst_concat_secondsumpositive) + (0))) /\ ((((exists fs_h_dst_concat_secondsumpositive_body_terminal. fs_h_dst_concat_secondsumpositive_body_terminal + S (dst_positive_sum_concat_secondsum) = S ((S (q)) * fs_v_dst_concat_secondsumpositive)) /\ exists fs_q_dst_concat_secondsumpositive_body_terminal. fs_u_dst_concat_secondsumpositive = fs_q_dst_concat_secondsumpositive_body_terminal * S ((S (q)) * fs_v_dst_concat_secondsumpositive) + (dst_positive_sum_concat_secondsum))) /\ forall fs_i_dst_concat_secondsumpositive_body_steps. (exists fs_lt_dst_concat_secondsumpositive_body_steps_bound. fs_lt_dst_concat_secondsumpositive_body_steps_bound + S fs_i_dst_concat_secondsumpositive_body_steps = q) -> exists fs_a_dst_concat_secondsumpositive_body_steps fs_r_dst_concat_secondsumpositive_body_steps fs_s_dst_concat_secondsumpositive_body_steps. ((((exists fs_h_dst_concat_secondsumpositive_body_steps_summand. fs_h_dst_concat_secondsumpositive_body_steps_summand + S (fs_a_dst_concat_secondsumpositive_body_steps) = S ((S (fs_i_dst_concat_secondsumpositive_body_steps)) * dst_positive_scale_concat_secondsum)) /\ exists fs_q_dst_concat_secondsumpositive_body_steps_summand. dst_positive_code_concat_secondsum = fs_q_dst_concat_secondsumpositive_body_steps_summand * S ((S (fs_i_dst_concat_secondsumpositive_body_steps)) * dst_positive_scale_concat_secondsum) + (fs_a_dst_concat_secondsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_secondsumpositive_body_steps_partial. fs_h_dst_concat_secondsumpositive_body_steps_partial + S (fs_r_dst_concat_secondsumpositive_body_steps) = S ((S (fs_i_dst_concat_secondsumpositive_body_steps)) * fs_v_dst_concat_secondsumpositive)) /\ exists fs_q_dst_concat_secondsumpositive_body_steps_partial. fs_u_dst_concat_secondsumpositive = fs_q_dst_concat_secondsumpositive_body_steps_partial * S ((S (fs_i_dst_concat_secondsumpositive_body_steps)) * fs_v_dst_concat_secondsumpositive) + (fs_r_dst_concat_secondsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_secondsumpositive_body_steps_successor. fs_h_dst_concat_secondsumpositive_body_steps_successor + S (fs_s_dst_concat_secondsumpositive_body_steps) = S ((S (S fs_i_dst_concat_secondsumpositive_body_steps)) * fs_v_dst_concat_secondsumpositive)) /\ exists fs_q_dst_concat_secondsumpositive_body_steps_successor. fs_u_dst_concat_secondsumpositive = fs_q_dst_concat_secondsumpositive_body_steps_successor * S ((S (S fs_i_dst_concat_secondsumpositive_body_steps)) * fs_v_dst_concat_secondsumpositive) + (fs_s_dst_concat_secondsumpositive_body_steps))) /\ fs_s_dst_concat_secondsumpositive_body_steps = fs_r_dst_concat_secondsumpositive_body_steps + fs_a_dst_concat_secondsumpositive_body_steps)))))) /\ (((exists fs_u_dst_concat_secondsumnegative fs_v_dst_concat_secondsumnegative. ((((exists fs_h_dst_concat_secondsumnegative_body_start. fs_h_dst_concat_secondsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_secondsumnegative)) /\ exists fs_q_dst_concat_secondsumnegative_body_start. fs_u_dst_concat_secondsumnegative = fs_q_dst_concat_secondsumnegative_body_start * S ((S (0)) * fs_v_dst_concat_secondsumnegative) + (0))) /\ ((((exists fs_h_dst_concat_secondsumnegative_body_terminal. fs_h_dst_concat_secondsumnegative_body_terminal + S (dst_negative_sum_concat_secondsum) = S ((S (q)) * fs_v_dst_concat_secondsumnegative)) /\ exists fs_q_dst_concat_secondsumnegative_body_terminal. fs_u_dst_concat_secondsumnegative = fs_q_dst_concat_secondsumnegative_body_terminal * S ((S (q)) * fs_v_dst_concat_secondsumnegative) + (dst_negative_sum_concat_secondsum))) /\ forall fs_i_dst_concat_secondsumnegative_body_steps. (exists fs_lt_dst_concat_secondsumnegative_body_steps_bound. fs_lt_dst_concat_secondsumnegative_body_steps_bound + S fs_i_dst_concat_secondsumnegative_body_steps = q) -> exists fs_a_dst_concat_secondsumnegative_body_steps fs_r_dst_concat_secondsumnegative_body_steps fs_s_dst_concat_secondsumnegative_body_steps. ((((exists fs_h_dst_concat_secondsumnegative_body_steps_summand. fs_h_dst_concat_secondsumnegative_body_steps_summand + S (fs_a_dst_concat_secondsumnegative_body_steps) = S ((S (fs_i_dst_concat_secondsumnegative_body_steps)) * dst_negative_scale_concat_secondsum)) /\ exists fs_q_dst_concat_secondsumnegative_body_steps_summand. dst_negative_code_concat_secondsum = fs_q_dst_concat_secondsumnegative_body_steps_summand * S ((S (fs_i_dst_concat_secondsumnegative_body_steps)) * dst_negative_scale_concat_secondsum) + (fs_a_dst_concat_secondsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_secondsumnegative_body_steps_partial. fs_h_dst_concat_secondsumnegative_body_steps_partial + S (fs_r_dst_concat_secondsumnegative_body_steps) = S ((S (fs_i_dst_concat_secondsumnegative_body_steps)) * fs_v_dst_concat_secondsumnegative)) /\ exists fs_q_dst_concat_secondsumnegative_body_steps_partial. fs_u_dst_concat_secondsumnegative = fs_q_dst_concat_secondsumnegative_body_steps_partial * S ((S (fs_i_dst_concat_secondsumnegative_body_steps)) * fs_v_dst_concat_secondsumnegative) + (fs_r_dst_concat_secondsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_secondsumnegative_body_steps_successor. fs_h_dst_concat_secondsumnegative_body_steps_successor + S (fs_s_dst_concat_secondsumnegative_body_steps) = S ((S (S fs_i_dst_concat_secondsumnegative_body_steps)) * fs_v_dst_concat_secondsumnegative)) /\ exists fs_q_dst_concat_secondsumnegative_body_steps_successor. fs_u_dst_concat_secondsumnegative = fs_q_dst_concat_secondsumnegative_body_steps_successor * S ((S (S fs_i_dst_concat_secondsumnegative_body_steps)) * fs_v_dst_concat_secondsumnegative) + (fs_s_dst_concat_secondsumnegative_body_steps))) /\ fs_s_dst_concat_secondsumnegative_body_steps = fs_r_dst_concat_secondsumnegative_body_steps + fs_a_dst_concat_secondsumnegative_body_steps)))))) /\ (exists ge_balance_positive_concat_secondsumresult ge_balance_negative_concat_secondsumresult. (((((b) = 2 * (ge_balance_positive_concat_secondsumresult) /\ (ge_balance_negative_concat_secondsumresult) = 0) \/ exists ge_signed_half_concat_secondsumresultdecode. (((b) = 2 * ge_signed_half_concat_secondsumresultdecode + 1 /\ (ge_balance_positive_concat_secondsumresult) = 0) /\ (ge_balance_negative_concat_secondsumresult) = S ge_signed_half_concat_secondsumresultdecode))) /\ ((dst_positive_sum_concat_secondsum) + ge_balance_negative_concat_secondsumresult = (dst_negative_sum_concat_secondsum) + ge_balance_positive_concat_secondsumresult))))))))))) -> (exists dsa_ap_concat_add dsa_an_concat_add dsa_bp_concat_add dsa_bn_concat_add dsa_cp_concat_add dsa_cn_concat_add. (((((a) = 2 * (dsa_ap_concat_add) /\ (dsa_an_concat_add) = 0) \/ exists ge_signed_half_concat_addleft. (((a) = 2 * ge_signed_half_concat_addleft + 1 /\ (dsa_ap_concat_add) = 0) /\ (dsa_an_concat_add) = S ge_signed_half_concat_addleft))) /\ ((((((b) = 2 * (dsa_bp_concat_add) /\ (dsa_bn_concat_add) = 0) \/ exists ge_signed_half_concat_addright. (((b) = 2 * ge_signed_half_concat_addright + 1 /\ (dsa_bp_concat_add) = 0) /\ (dsa_bn_concat_add) = S ge_signed_half_concat_addright))) /\ ((((((c) = 2 * (dsa_cp_concat_add) /\ (dsa_cn_concat_add) = 0) \/ exists ge_signed_half_concat_addoutput. (((c) = 2 * ge_signed_half_concat_addoutput + 1 /\ (dsa_cp_concat_add) = 0) /\ (dsa_cn_concat_add) = S ge_signed_half_concat_addoutput))) /\ ((dsa_ap_concat_add + dsa_bp_concat_add) + dsa_cn_concat_add = (dsa_an_concat_add + dsa_bn_concat_add) + dsa_cp_concat_add))))))) -> (exists srs_slice_concat_result. ((((exists dst_positive_code_concat_resultslicesource_table dst_positive_scale_concat_resultslicesource_table dst_negative_code_concat_resultslicesource_table dst_negative_scale_concat_resultslicesource_table. (((F) = (((((dst_positive_code_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table)) * S ((dst_positive_code_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table)) + ((dst_positive_scale_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table))) + (((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) * S ((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) + ((dst_negative_scale_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)))) * S ((((dst_positive_code_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table)) * S ((dst_positive_code_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table)) + ((dst_positive_scale_concat_resultslicesource_table) + (dst_positive_scale_concat_resultslicesource_table))) + (((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) * S ((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) + ((dst_negative_scale_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)))) + ((((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) * S ((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) + ((dst_negative_scale_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table))) + (((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) * S ((dst_negative_code_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)) + ((dst_negative_scale_concat_resultslicesource_table) + (dst_negative_scale_concat_resultslicesource_table)))))) /\ (forall dst_index_concat_resultslicesource_table. (exists pvs_le_gap_concat_resultslicesource_tabledomain. pvs_le_gap_concat_resultslicesource_tabledomain + (dst_index_concat_resultslicesource_table) = (0)) -> exists dst_positive_concat_resultslicesource_table dst_negative_concat_resultslicesource_table dst_value_concat_resultslicesource_table. ((((exists ff_h_pvs_concat_resultslicesource_tableentrypositive. ff_h_pvs_concat_resultslicesource_tableentrypositive + S (dst_positive_concat_resultslicesource_table) = S ((S (dst_index_concat_resultslicesource_table)) * dst_positive_scale_concat_resultslicesource_table)) /\ exists ff_q_pvs_concat_resultslicesource_tableentrypositive. dst_positive_code_concat_resultslicesource_table = ff_q_pvs_concat_resultslicesource_tableentrypositive * S ((S (dst_index_concat_resultslicesource_table)) * dst_positive_scale_concat_resultslicesource_table) + (dst_positive_concat_resultslicesource_table))) /\ (((((exists ff_h_pvs_concat_resultslicesource_tableentrynegative. ff_h_pvs_concat_resultslicesource_tableentrynegative + S (dst_negative_concat_resultslicesource_table) = S ((S (dst_index_concat_resultslicesource_table)) * dst_negative_scale_concat_resultslicesource_table)) /\ exists ff_q_pvs_concat_resultslicesource_tableentrynegative. dst_negative_code_concat_resultslicesource_table = ff_q_pvs_concat_resultslicesource_tableentrynegative * S ((S (dst_index_concat_resultslicesource_table)) * dst_negative_scale_concat_resultslicesource_table) + (dst_negative_concat_resultslicesource_table))) /\ (exists ge_balance_positive_concat_resultslicesource_tableentryvalue ge_balance_negative_concat_resultslicesource_tableentryvalue. (((((dst_value_concat_resultslicesource_table) = 2 * (ge_balance_positive_concat_resultslicesource_tableentryvalue) /\ (ge_balance_negative_concat_resultslicesource_tableentryvalue) = 0) \/ exists ge_signed_half_concat_resultslicesource_tableentryvaluedecode. (((dst_value_concat_resultslicesource_table) = 2 * ge_signed_half_concat_resultslicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_resultslicesource_tableentryvalue) = 0) /\ (ge_balance_negative_concat_resultslicesource_tableentryvalue) = S ge_signed_half_concat_resultslicesource_tableentryvaluedecode))) /\ ((dst_positive_concat_resultslicesource_table) + ge_balance_negative_concat_resultslicesource_tableentryvalue = (dst_negative_concat_resultslicesource_table) + ge_balance_positive_concat_resultslicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_concat_resultsliceoutput_table dst_positive_scale_concat_resultsliceoutput_table dst_negative_code_concat_resultsliceoutput_table dst_negative_scale_concat_resultsliceoutput_table. (((srs_slice_concat_result) = (((((dst_positive_code_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table)) * S ((dst_positive_code_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table)) + ((dst_positive_scale_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table))) + (((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) * S ((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) + ((dst_negative_scale_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)))) * S ((((dst_positive_code_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table)) * S ((dst_positive_code_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table)) + ((dst_positive_scale_concat_resultsliceoutput_table) + (dst_positive_scale_concat_resultsliceoutput_table))) + (((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) * S ((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) + ((dst_negative_scale_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)))) + ((((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) * S ((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) + ((dst_negative_scale_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table))) + (((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) * S ((dst_negative_code_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)) + ((dst_negative_scale_concat_resultsliceoutput_table) + (dst_negative_scale_concat_resultsliceoutput_table)))))) /\ (forall dst_index_concat_resultsliceoutput_table. (exists pvs_le_gap_concat_resultsliceoutput_tabledomain. pvs_le_gap_concat_resultsliceoutput_tabledomain + (dst_index_concat_resultsliceoutput_table) = (p+q)) -> exists dst_positive_concat_resultsliceoutput_table dst_negative_concat_resultsliceoutput_table dst_value_concat_resultsliceoutput_table. ((((exists ff_h_pvs_concat_resultsliceoutput_tableentrypositive. ff_h_pvs_concat_resultsliceoutput_tableentrypositive + S (dst_positive_concat_resultsliceoutput_table) = S ((S (dst_index_concat_resultsliceoutput_table)) * dst_positive_scale_concat_resultsliceoutput_table)) /\ exists ff_q_pvs_concat_resultsliceoutput_tableentrypositive. dst_positive_code_concat_resultsliceoutput_table = ff_q_pvs_concat_resultsliceoutput_tableentrypositive * S ((S (dst_index_concat_resultsliceoutput_table)) * dst_positive_scale_concat_resultsliceoutput_table) + (dst_positive_concat_resultsliceoutput_table))) /\ (((((exists ff_h_pvs_concat_resultsliceoutput_tableentrynegative. ff_h_pvs_concat_resultsliceoutput_tableentrynegative + S (dst_negative_concat_resultsliceoutput_table) = S ((S (dst_index_concat_resultsliceoutput_table)) * dst_negative_scale_concat_resultsliceoutput_table)) /\ exists ff_q_pvs_concat_resultsliceoutput_tableentrynegative. dst_negative_code_concat_resultsliceoutput_table = ff_q_pvs_concat_resultsliceoutput_tableentrynegative * S ((S (dst_index_concat_resultsliceoutput_table)) * dst_negative_scale_concat_resultsliceoutput_table) + (dst_negative_concat_resultsliceoutput_table))) /\ (exists ge_balance_positive_concat_resultsliceoutput_tableentryvalue ge_balance_negative_concat_resultsliceoutput_tableentryvalue. (((((dst_value_concat_resultsliceoutput_table) = 2 * (ge_balance_positive_concat_resultsliceoutput_tableentryvalue) /\ (ge_balance_negative_concat_resultsliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_concat_resultsliceoutput_tableentryvaluedecode. (((dst_value_concat_resultsliceoutput_table) = 2 * ge_signed_half_concat_resultsliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_resultsliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_concat_resultsliceoutput_tableentryvalue) = S ge_signed_half_concat_resultsliceoutput_tableentryvaluedecode))) /\ ((dst_positive_concat_resultsliceoutput_table) + ge_balance_negative_concat_resultsliceoutput_tableentryvalue = (dst_negative_concat_resultsliceoutput_table) + ge_balance_positive_concat_resultsliceoutput_tableentryvalue))))))))) /\ (forall srs_index_concat_resultslice. (exists pvs_gap_concat_resultslicebound. pvs_gap_concat_resultslicebound + S (srs_index_concat_resultslice) = (p+q)) -> exists srs_value_concat_resultslice. (((exists dst_positive_code_concat_resultsliceentrysource dst_positive_scale_concat_resultsliceentrysource dst_negative_code_concat_resultsliceentrysource dst_negative_scale_concat_resultsliceentrysource dst_positive_concat_resultsliceentrysource dst_negative_concat_resultsliceentrysource. (((F) = (((((dst_positive_code_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource)) * S ((dst_positive_code_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource)) + ((dst_positive_scale_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource))) + (((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) * S ((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) + ((dst_negative_scale_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)))) * S ((((dst_positive_code_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource)) * S ((dst_positive_code_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource)) + ((dst_positive_scale_concat_resultsliceentrysource) + (dst_positive_scale_concat_resultsliceentrysource))) + (((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) * S ((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) + ((dst_negative_scale_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)))) + ((((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) * S ((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) + ((dst_negative_scale_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource))) + (((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) * S ((dst_negative_code_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)) + ((dst_negative_scale_concat_resultsliceentrysource) + (dst_negative_scale_concat_resultsliceentrysource)))))) /\ (((((exists ff_h_pvs_concat_resultsliceentrysourcepositive. ff_h_pvs_concat_resultsliceentrysourcepositive + S (dst_positive_concat_resultsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_resultslice))))) * dst_positive_scale_concat_resultsliceentrysource)) /\ exists ff_q_pvs_concat_resultsliceentrysourcepositive. dst_positive_code_concat_resultsliceentrysource = ff_q_pvs_concat_resultsliceentrysourcepositive * S ((S (((o) + ((s) * (srs_index_concat_resultslice))))) * dst_positive_scale_concat_resultsliceentrysource) + (dst_positive_concat_resultsliceentrysource))) /\ (((((exists ff_h_pvs_concat_resultsliceentrysourcenegative. ff_h_pvs_concat_resultsliceentrysourcenegative + S (dst_negative_concat_resultsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_resultslice))))) * dst_negative_scale_concat_resultsliceentrysource)) /\ exists ff_q_pvs_concat_resultsliceentrysourcenegative. dst_negative_code_concat_resultsliceentrysource = ff_q_pvs_concat_resultsliceentrysourcenegative * S ((S (((o) + ((s) * (srs_index_concat_resultslice))))) * dst_negative_scale_concat_resultsliceentrysource) + (dst_negative_concat_resultsliceentrysource))) /\ (exists ge_balance_positive_concat_resultsliceentrysourcevalue ge_balance_negative_concat_resultsliceentrysourcevalue. (((((srs_value_concat_resultslice) = 2 * (ge_balance_positive_concat_resultsliceentrysourcevalue) /\ (ge_balance_negative_concat_resultsliceentrysourcevalue) = 0) \/ exists ge_signed_half_concat_resultsliceentrysourcevaluedecode. (((srs_value_concat_resultslice) = 2 * ge_signed_half_concat_resultsliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_concat_resultsliceentrysourcevalue) = 0) /\ (ge_balance_negative_concat_resultsliceentrysourcevalue) = S ge_signed_half_concat_resultsliceentrysourcevaluedecode))) /\ ((dst_positive_concat_resultsliceentrysource) + ge_balance_negative_concat_resultsliceentrysourcevalue = (dst_negative_concat_resultsliceentrysource) + ge_balance_positive_concat_resultsliceentrysourcevalue))))))))) /\ (exists dst_positive_code_concat_resultsliceentryoutput dst_positive_scale_concat_resultsliceentryoutput dst_negative_code_concat_resultsliceentryoutput dst_negative_scale_concat_resultsliceentryoutput dst_positive_concat_resultsliceentryoutput dst_negative_concat_resultsliceentryoutput. (((srs_slice_concat_result) = (((((dst_positive_code_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput)) * S ((dst_positive_code_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput)) + ((dst_positive_scale_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput))) + (((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) * S ((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) + ((dst_negative_scale_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)))) * S ((((dst_positive_code_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput)) * S ((dst_positive_code_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput)) + ((dst_positive_scale_concat_resultsliceentryoutput) + (dst_positive_scale_concat_resultsliceentryoutput))) + (((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) * S ((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) + ((dst_negative_scale_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)))) + ((((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) * S ((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) + ((dst_negative_scale_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput))) + (((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) * S ((dst_negative_code_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)) + ((dst_negative_scale_concat_resultsliceentryoutput) + (dst_negative_scale_concat_resultsliceentryoutput)))))) /\ (((((exists ff_h_pvs_concat_resultsliceentryoutputpositive. ff_h_pvs_concat_resultsliceentryoutputpositive + S (dst_positive_concat_resultsliceentryoutput) = S ((S (srs_index_concat_resultslice)) * dst_positive_scale_concat_resultsliceentryoutput)) /\ exists ff_q_pvs_concat_resultsliceentryoutputpositive. dst_positive_code_concat_resultsliceentryoutput = ff_q_pvs_concat_resultsliceentryoutputpositive * S ((S (srs_index_concat_resultslice)) * dst_positive_scale_concat_resultsliceentryoutput) + (dst_positive_concat_resultsliceentryoutput))) /\ (((((exists ff_h_pvs_concat_resultsliceentryoutputnegative. ff_h_pvs_concat_resultsliceentryoutputnegative + S (dst_negative_concat_resultsliceentryoutput) = S ((S (srs_index_concat_resultslice)) * dst_negative_scale_concat_resultsliceentryoutput)) /\ exists ff_q_pvs_concat_resultsliceentryoutputnegative. dst_negative_code_concat_resultsliceentryoutput = ff_q_pvs_concat_resultsliceentryoutputnegative * S ((S (srs_index_concat_resultslice)) * dst_negative_scale_concat_resultsliceentryoutput) + (dst_negative_concat_resultsliceentryoutput))) /\ (exists ge_balance_positive_concat_resultsliceentryoutputvalue ge_balance_negative_concat_resultsliceentryoutputvalue. (((((srs_value_concat_resultslice) = 2 * (ge_balance_positive_concat_resultsliceentryoutputvalue) /\ (ge_balance_negative_concat_resultsliceentryoutputvalue) = 0) \/ exists ge_signed_half_concat_resultsliceentryoutputvaluedecode. (((srs_value_concat_resultslice) = 2 * ge_signed_half_concat_resultsliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_concat_resultsliceentryoutputvalue) = 0) /\ (ge_balance_negative_concat_resultsliceentryoutputvalue) = S ge_signed_half_concat_resultsliceentryoutputvaluedecode))) /\ ((dst_positive_concat_resultsliceentryoutput) + ge_balance_negative_concat_resultsliceentryoutputvalue = (dst_negative_concat_resultsliceentryoutput) + ge_balance_positive_concat_resultsliceentryoutputvalue)))))))))))))))) /\ (exists dst_positive_code_concat_resultsum dst_positive_scale_concat_resultsum dst_negative_code_concat_resultsum dst_negative_scale_concat_resultsum dst_positive_sum_concat_resultsum dst_negative_sum_concat_resultsum. (((srs_slice_concat_result) = (((((dst_positive_code_concat_resultsum) + (dst_positive_scale_concat_resultsum)) * S ((dst_positive_code_concat_resultsum) + (dst_positive_scale_concat_resultsum)) + ((dst_positive_scale_concat_resultsum) + (dst_positive_scale_concat_resultsum))) + (((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) * S ((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) + ((dst_negative_scale_concat_resultsum) + (dst_negative_scale_concat_resultsum)))) * S ((((dst_positive_code_concat_resultsum) + (dst_positive_scale_concat_resultsum)) * S ((dst_positive_code_concat_resultsum) + (dst_positive_scale_concat_resultsum)) + ((dst_positive_scale_concat_resultsum) + (dst_positive_scale_concat_resultsum))) + (((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) * S ((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) + ((dst_negative_scale_concat_resultsum) + (dst_negative_scale_concat_resultsum)))) + ((((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) * S ((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) + ((dst_negative_scale_concat_resultsum) + (dst_negative_scale_concat_resultsum))) + (((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) * S ((dst_negative_code_concat_resultsum) + (dst_negative_scale_concat_resultsum)) + ((dst_negative_scale_concat_resultsum) + (dst_negative_scale_concat_resultsum)))))) /\ (((exists fs_u_dst_concat_resultsumpositive fs_v_dst_concat_resultsumpositive. ((((exists fs_h_dst_concat_resultsumpositive_body_start. fs_h_dst_concat_resultsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_resultsumpositive)) /\ exists fs_q_dst_concat_resultsumpositive_body_start. fs_u_dst_concat_resultsumpositive = fs_q_dst_concat_resultsumpositive_body_start * S ((S (0)) * fs_v_dst_concat_resultsumpositive) + (0))) /\ ((((exists fs_h_dst_concat_resultsumpositive_body_terminal. fs_h_dst_concat_resultsumpositive_body_terminal + S (dst_positive_sum_concat_resultsum) = S ((S (p+q)) * fs_v_dst_concat_resultsumpositive)) /\ exists fs_q_dst_concat_resultsumpositive_body_terminal. fs_u_dst_concat_resultsumpositive = fs_q_dst_concat_resultsumpositive_body_terminal * S ((S (p+q)) * fs_v_dst_concat_resultsumpositive) + (dst_positive_sum_concat_resultsum))) /\ forall fs_i_dst_concat_resultsumpositive_body_steps. (exists fs_lt_dst_concat_resultsumpositive_body_steps_bound. fs_lt_dst_concat_resultsumpositive_body_steps_bound + S fs_i_dst_concat_resultsumpositive_body_steps = p+q) -> exists fs_a_dst_concat_resultsumpositive_body_steps fs_r_dst_concat_resultsumpositive_body_steps fs_s_dst_concat_resultsumpositive_body_steps. ((((exists fs_h_dst_concat_resultsumpositive_body_steps_summand. fs_h_dst_concat_resultsumpositive_body_steps_summand + S (fs_a_dst_concat_resultsumpositive_body_steps) = S ((S (fs_i_dst_concat_resultsumpositive_body_steps)) * dst_positive_scale_concat_resultsum)) /\ exists fs_q_dst_concat_resultsumpositive_body_steps_summand. dst_positive_code_concat_resultsum = fs_q_dst_concat_resultsumpositive_body_steps_summand * S ((S (fs_i_dst_concat_resultsumpositive_body_steps)) * dst_positive_scale_concat_resultsum) + (fs_a_dst_concat_resultsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_resultsumpositive_body_steps_partial. fs_h_dst_concat_resultsumpositive_body_steps_partial + S (fs_r_dst_concat_resultsumpositive_body_steps) = S ((S (fs_i_dst_concat_resultsumpositive_body_steps)) * fs_v_dst_concat_resultsumpositive)) /\ exists fs_q_dst_concat_resultsumpositive_body_steps_partial. fs_u_dst_concat_resultsumpositive = fs_q_dst_concat_resultsumpositive_body_steps_partial * S ((S (fs_i_dst_concat_resultsumpositive_body_steps)) * fs_v_dst_concat_resultsumpositive) + (fs_r_dst_concat_resultsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_resultsumpositive_body_steps_successor. fs_h_dst_concat_resultsumpositive_body_steps_successor + S (fs_s_dst_concat_resultsumpositive_body_steps) = S ((S (S fs_i_dst_concat_resultsumpositive_body_steps)) * fs_v_dst_concat_resultsumpositive)) /\ exists fs_q_dst_concat_resultsumpositive_body_steps_successor. fs_u_dst_concat_resultsumpositive = fs_q_dst_concat_resultsumpositive_body_steps_successor * S ((S (S fs_i_dst_concat_resultsumpositive_body_steps)) * fs_v_dst_concat_resultsumpositive) + (fs_s_dst_concat_resultsumpositive_body_steps))) /\ fs_s_dst_concat_resultsumpositive_body_steps = fs_r_dst_concat_resultsumpositive_body_steps + fs_a_dst_concat_resultsumpositive_body_steps)))))) /\ (((exists fs_u_dst_concat_resultsumnegative fs_v_dst_concat_resultsumnegative. ((((exists fs_h_dst_concat_resultsumnegative_body_start. fs_h_dst_concat_resultsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_resultsumnegative)) /\ exists fs_q_dst_concat_resultsumnegative_body_start. fs_u_dst_concat_resultsumnegative = fs_q_dst_concat_resultsumnegative_body_start * S ((S (0)) * fs_v_dst_concat_resultsumnegative) + (0))) /\ ((((exists fs_h_dst_concat_resultsumnegative_body_terminal. fs_h_dst_concat_resultsumnegative_body_terminal + S (dst_negative_sum_concat_resultsum) = S ((S (p+q)) * fs_v_dst_concat_resultsumnegative)) /\ exists fs_q_dst_concat_resultsumnegative_body_terminal. fs_u_dst_concat_resultsumnegative = fs_q_dst_concat_resultsumnegative_body_terminal * S ((S (p+q)) * fs_v_dst_concat_resultsumnegative) + (dst_negative_sum_concat_resultsum))) /\ forall fs_i_dst_concat_resultsumnegative_body_steps. (exists fs_lt_dst_concat_resultsumnegative_body_steps_bound. fs_lt_dst_concat_resultsumnegative_body_steps_bound + S fs_i_dst_concat_resultsumnegative_body_steps = p+q) -> exists fs_a_dst_concat_resultsumnegative_body_steps fs_r_dst_concat_resultsumnegative_body_steps fs_s_dst_concat_resultsumnegative_body_steps. ((((exists fs_h_dst_concat_resultsumnegative_body_steps_summand. fs_h_dst_concat_resultsumnegative_body_steps_summand + S (fs_a_dst_concat_resultsumnegative_body_steps) = S ((S (fs_i_dst_concat_resultsumnegative_body_steps)) * dst_negative_scale_concat_resultsum)) /\ exists fs_q_dst_concat_resultsumnegative_body_steps_summand. dst_negative_code_concat_resultsum = fs_q_dst_concat_resultsumnegative_body_steps_summand * S ((S (fs_i_dst_concat_resultsumnegative_body_steps)) * dst_negative_scale_concat_resultsum) + (fs_a_dst_concat_resultsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_resultsumnegative_body_steps_partial. fs_h_dst_concat_resultsumnegative_body_steps_partial + S (fs_r_dst_concat_resultsumnegative_body_steps) = S ((S (fs_i_dst_concat_resultsumnegative_body_steps)) * fs_v_dst_concat_resultsumnegative)) /\ exists fs_q_dst_concat_resultsumnegative_body_steps_partial. fs_u_dst_concat_resultsumnegative = fs_q_dst_concat_resultsumnegative_body_steps_partial * S ((S (fs_i_dst_concat_resultsumnegative_body_steps)) * fs_v_dst_concat_resultsumnegative) + (fs_r_dst_concat_resultsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_resultsumnegative_body_steps_successor. fs_h_dst_concat_resultsumnegative_body_steps_successor + S (fs_s_dst_concat_resultsumnegative_body_steps) = S ((S (S fs_i_dst_concat_resultsumnegative_body_steps)) * fs_v_dst_concat_resultsumnegative)) /\ exists fs_q_dst_concat_resultsumnegative_body_steps_successor. fs_u_dst_concat_resultsumnegative = fs_q_dst_concat_resultsumnegative_body_steps_successor * S ((S (S fs_i_dst_concat_resultsumnegative_body_steps)) * fs_v_dst_concat_resultsumnegative) + (fs_s_dst_concat_resultsumnegative_body_steps))) /\ fs_s_dst_concat_resultsumnegative_body_steps = fs_r_dst_concat_resultsumnegative_body_steps + fs_a_dst_concat_resultsumnegative_body_steps)))))) /\ (exists ge_balance_positive_concat_resultsumresult ge_balance_negative_concat_resultsumresult. (((((c) = 2 * (ge_balance_positive_concat_resultsumresult) /\ (ge_balance_negative_concat_resultsumresult) = 0) \/ exists ge_signed_half_concat_resultsumresultdecode. (((c) = 2 * ge_signed_half_concat_resultsumresultdecode + 1 /\ (ge_balance_positive_concat_resultsumresult) = 0) /\ (ge_balance_negative_concat_resultsumresult) = S ge_signed_half_concat_resultsumresultdecode))) /\ ((dst_positive_sum_concat_resultsum) + ge_balance_negative_concat_resultsumresult = (dst_negative_sum_concat_resultsum) + ge_balance_positive_concat_resultsumresult)))))))))))

Constructive proof overview

Generated structural guide

Ordinary length induction concatenates actual affine sum traces at offset o+s*p, including zero length and zero stride.

The unchanged tactic script uses 9 declared prerequisites and contains 130 exact native proof lines.

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

Proof neighborhood

Direct dependencies

signed_rectangular_slice_sum_empty_value Alpha theorem; checked-use authorized signed_add_functional Alpha theorem; checked-use authorized signed_add_zero_right Alpha theorem; checked-use authorized signed_rectangular_slice_sum_successor_decompose Alpha theorem; checked-use authorized signed_add_total Alpha theorem; checked-use authorized signed_table_add_reassociate Alpha theorem; checked-use authorized add_assoc Stable theorem; checked-use authorized mul_add Stable theorem; checked-use authorized signed_rectangular_slice_sum_successor_intro 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

130 script commands · 22 reading checkpoints · 9 local claims

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

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

01Induction on qL1–10

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L1
    induction q
  2. L2
    intro F
  3. L3
    intro o
  4. L4
    intro s
  5. L5
    intro p
  6. L6
    intro a
  7. L7
    intro b
  8. L8
    intro c
  9. L9
    intro ha
  10. L10
    intro hb
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hadd
03Establish hb0L12–20

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

  1. L12
    have hb0 : b=0
  2. L13
    specialize signed_rectangular_slice_sum_empty_value (F)
  3. L14
    specialize signed_rectangular_slice_sum_empty_value (((o) + ((s) * (p))))
  4. L15
    specialize signed_rectangular_slice_sum_empty_value (s)
  5. L16
    specialize signed_rectangular_slice_sum_empty_value (b)
  6. L17
    apply signed_rectangular_slice_sum_empty_value
  7. L18
    exact hb
  8. L19
    rewrite hb0 at hadd
  9. L20
    rewrite hb0 at hadd
04Establish hcaL21–30

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

  1. L21
    have hca : c=a
  2. L22
    specialize signed_add_functional (a)
  3. L23
    specialize signed_add_functional (0)
  4. L24
    specialize signed_add_functional (c)
  5. L25
    specialize signed_add_functional (a)
  6. L26
    apply signed_add_functional
  7. L27
    exact hadd
  8. L28
    specialize signed_add_zero_right (a)
  9. L29
    apply signed_add_zero_right
  10. L30
    rewrite hca
05Calculate and transport equalitiesL31–31

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

  1. L31
    rewrite hca
06Establish hlengthL32–41

Establish this local claim before using it. It is not an additional assumption.

  1. L32
    have hlength : p+0=p
  2. L33
    simp
  3. L34
    rewrite hlength
  4. L35
    rewrite hlength
  5. L36
    rewrite hlength
  6. L37
    rewrite hlength
  7. L38
    rewrite hlength
  8. L39
    rewrite hlength
  9. L40
    rewrite hlength
  10. L41
    rewrite hlength
07Use earlier factsL42–42

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

  1. L42
    exact ha
08Fix variables and assumptionsL43–52

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

  1. L43
    intro F
  2. L44
    intro o
  3. L45
    intro s
  4. L46
    intro p
  5. L47
    intro a
  6. L48
    intro b
  7. L49
    intro c
  8. L50
    intro ha
  9. L51
    intro hb
  10. L52
    intro hadd
09Establish hdL53–60

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

  1. L53
    have hd : ∃ u. ∃ v. SignedSliceSum(F,o + s · p,s,q,u) ∧ (ArithAt(F,o + s · p + s · q,v) ∧ SignedAdd(u,v,b))Definitions: SignedAddArithAtSignedSliceSum
  2. L54
    specialize signed_rectangular_slice_sum_successor_decompose (F)
  3. L55
    specialize signed_rectangular_slice_sum_successor_decompose (((o) + ((s) * (p))))
  4. L56
    specialize signed_rectangular_slice_sum_successor_decompose (s)
  5. L57
    specialize signed_rectangular_slice_sum_successor_decompose (q)
  6. L58
    specialize signed_rectangular_slice_sum_successor_decompose (b)
  7. L59
    apply signed_rectangular_slice_sum_successor_decompose
  8. L60
    exact hb
10Separate the logical casesL61–64

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

  1. L61
    cases hd
  2. L62
    cases hd_witness
  3. L63
    cases hd_witness_witness
  4. L64
    cases hd_witness_witness_right
11Establish htL65–68

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

  1. L65
    have ht : ∃ t. SignedAdd(a,x,t)Definitions: SignedAdd
  2. L66
    specialize signed_add_total (a)
  3. L67
    specialize signed_add_total (x)
  4. L68
    apply signed_add_total
12Separate the logical casesL69–69

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

  1. L69
    cases ht
13Establish hpL70–79

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

  1. L70
    have hp : SignedSliceSum(F,o,s,p + q,x2)Definitions: SignedSliceSum
  2. L71
    specialize IH (F)
  3. L72
    specialize IH (o)
  4. L73
    specialize IH (s)
  5. L74
    specialize IH (p)
  6. L75
    specialize IH (a)
  7. L76
    specialize IH (x)
  8. L77
    specialize IH (x2)
  9. L78
    apply IH
  10. L79
    exact ha
14Use earlier factsL80–81

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

  1. L80
    exact hd_witness_witness_left
  2. L81
    exact ht_witness
15Establish hnextL82–91

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

  1. L82
    have hnext : SignedAdd(x2,x1,c)Definitions: SignedAdd
  2. L83
    specialize signed_table_add_reassociate (a)
  3. L84
    specialize signed_table_add_reassociate (x)
  4. L85
    specialize signed_table_add_reassociate (x1)
  5. L86
    specialize signed_table_add_reassociate (x2)
  6. L87
    specialize signed_table_add_reassociate (b)
  7. L88
    specialize signed_table_add_reassociate (c)
  8. L89
    apply signed_table_add_reassociate
  9. L90
    exact ht_witness
  10. L91
    exact hd_witness_witness_right_right
16Use earlier factsL92–92

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

  1. L92
    exact hadd
17Establish hindexL93–102

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

  1. L93
    have hindex : ((((o) + ((s) * (p)))) + ((s) * (q))) = ((o) + ((s) * (p+q)))
  2. L94
    trans o+(s*p+s*q)
  3. L95
    specialize add_assoc (o)
  4. L96
    specialize add_assoc (s*p)
  5. L97
    specialize add_assoc (s*q)
  6. L98
    apply add_assoc
  7. L99
    congr
  8. L100
    refl
  9. L101
    symm
  10. L102
    specialize mul_add (s)
18Use earlier factsL103–105

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

  1. L103
    specialize mul_add (p)
  2. L104
    specialize mul_add (q)
  3. L105
    apply mul_add
19Calculate and transport equalitiesL106–109

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

  1. L106
    rewrite hindex at hd_witness_witness_right_left
  2. L107
    rewrite hindex at hd_witness_witness_right_left
  3. L108
    rewrite hindex at hd_witness_witness_right_left
  4. L109
    rewrite hindex at hd_witness_witness_right_left
20Establish hlengthL110–119

Establish this local claim before using it. It is not an additional assumption.

  1. L110
    have hlength : p+S q=S(p+q)
  2. L111
    simp
  3. L112
    rewrite hlength
  4. L113
    rewrite hlength
  5. L114
    rewrite hlength
  6. L115
    rewrite hlength
  7. L116
    rewrite hlength
  8. L117
    rewrite hlength
  9. L118
    rewrite hlength
  10. L119
    rewrite hlength
21Use earlier factsL120–129

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

  1. L120
    specialize signed_rectangular_slice_sum_successor_intro (F)
  2. L121
    specialize signed_rectangular_slice_sum_successor_intro (o)
  3. L122
    specialize signed_rectangular_slice_sum_successor_intro (s)
  4. L123
    specialize signed_rectangular_slice_sum_successor_intro (p+q)
  5. L124
    specialize signed_rectangular_slice_sum_successor_intro (x2)
  6. L125
    specialize signed_rectangular_slice_sum_successor_intro (x1)
  7. L126
    specialize signed_rectangular_slice_sum_successor_intro (c)
  8. L127
    apply signed_rectangular_slice_sum_successor_intro
  9. L128
    exact hp
  10. L129
    exact hd_witness_witness_right_left
22Use earlier factsL130–130

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

  1. L130
    exact hnext

Library-wide reading audit

Original exact command ledger · 130 lines
  1. 0001induction q
  2. 0002intro F
  3. 0003intro o
  4. 0004intro s
  5. 0005intro p
  6. 0006intro a
  7. 0007intro b
  8. 0008intro c
  9. 0009intro ha
  10. 0010intro hb
  11. 0011intro hadd
  12. 0012have hb0 : b=0
  13. 0013specialize signed_rectangular_slice_sum_empty_value (F)
  14. 0014specialize signed_rectangular_slice_sum_empty_value (((o) + ((s) * (p))))
  15. 0015specialize signed_rectangular_slice_sum_empty_value (s)
  16. 0016specialize signed_rectangular_slice_sum_empty_value (b)
  17. 0017apply signed_rectangular_slice_sum_empty_value
  18. 0018exact hb
  19. 0019rewrite hb0 at hadd
  20. 0020rewrite hb0 at hadd
  21. 0021have hca : c=a
  22. 0022specialize signed_add_functional (a)
  23. 0023specialize signed_add_functional (0)
  24. 0024specialize signed_add_functional (c)
  25. 0025specialize signed_add_functional (a)
  26. 0026apply signed_add_functional
  27. 0027exact hadd
  28. 0028specialize signed_add_zero_right (a)
  29. 0029apply signed_add_zero_right
  30. 0030rewrite hca
  31. 0031rewrite hca
  32. 0032have hlength : p+0=p
  33. 0033simp
  34. 0034rewrite hlength
  35. 0035rewrite hlength
  36. 0036rewrite hlength
  37. 0037rewrite hlength
  38. 0038rewrite hlength
  39. 0039rewrite hlength
  40. 0040rewrite hlength
  41. 0041rewrite hlength
  42. 0042exact ha
  43. 0043intro F
  44. 0044intro o
  45. 0045intro s
  46. 0046intro p
  47. 0047intro a
  48. 0048intro b
  49. 0049intro c
  50. 0050intro ha
  51. 0051intro hb
  52. 0052intro hadd
  53. 0053have hd : exists u v. (((exists srs_slice_concat_tail_prefix. ((((exists dst_positive_code_concat_tail_prefixslicesource_table dst_positive_scale_concat_tail_prefixslicesource_table dst_negative_code_concat_tail_prefixslicesource_table dst_negative_scale_concat_tail_prefixslicesource_table. (((F) = (((((dst_positive_code_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table)) * S ((dst_positive_code_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table)) + ((dst_positive_scale_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table))) + (((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) * S ((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) + ((dst_negative_scale_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)))) * S ((((dst_positive_code_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table)) * S ((dst_positive_code_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table)) + ((dst_positive_scale_concat_tail_prefixslicesource_table) + (dst_positive_scale_concat_tail_prefixslicesource_table))) + (((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) * S ((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) + ((dst_negative_scale_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)))) + ((((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) * S ((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) + ((dst_negative_scale_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table))) + (((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) * S ((dst_negative_code_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)) + ((dst_negative_scale_concat_tail_prefixslicesource_table) + (dst_negative_scale_concat_tail_prefixslicesource_table)))))) /\ (forall dst_index_concat_tail_prefixslicesource_table. (exists pvs_le_gap_concat_tail_prefixslicesource_tabledomain. pvs_le_gap_concat_tail_prefixslicesource_tabledomain + (dst_index_concat_tail_prefixslicesource_table) = (0)) -> exists dst_positive_concat_tail_prefixslicesource_table dst_negative_concat_tail_prefixslicesource_table dst_value_concat_tail_prefixslicesource_table. ((((exists ff_h_pvs_concat_tail_prefixslicesource_tableentrypositive. ff_h_pvs_concat_tail_prefixslicesource_tableentrypositive + S (dst_positive_concat_tail_prefixslicesource_table) = S ((S (dst_index_concat_tail_prefixslicesource_table)) * dst_positive_scale_concat_tail_prefixslicesource_table)) /\ exists ff_q_pvs_concat_tail_prefixslicesource_tableentrypositive. dst_positive_code_concat_tail_prefixslicesource_table = ff_q_pvs_concat_tail_prefixslicesource_tableentrypositive * S ((S (dst_index_concat_tail_prefixslicesource_table)) * dst_positive_scale_concat_tail_prefixslicesource_table) + (dst_positive_concat_tail_prefixslicesource_table))) /\ (((((exists ff_h_pvs_concat_tail_prefixslicesource_tableentrynegative. ff_h_pvs_concat_tail_prefixslicesource_tableentrynegative + S (dst_negative_concat_tail_prefixslicesource_table) = S ((S (dst_index_concat_tail_prefixslicesource_table)) * dst_negative_scale_concat_tail_prefixslicesource_table)) /\ exists ff_q_pvs_concat_tail_prefixslicesource_tableentrynegative. dst_negative_code_concat_tail_prefixslicesource_table = ff_q_pvs_concat_tail_prefixslicesource_tableentrynegative * S ((S (dst_index_concat_tail_prefixslicesource_table)) * dst_negative_scale_concat_tail_prefixslicesource_table) + (dst_negative_concat_tail_prefixslicesource_table))) /\ (exists ge_balance_positive_concat_tail_prefixslicesource_tableentryvalue ge_balance_negative_concat_tail_prefixslicesource_tableentryvalue. (((((dst_value_concat_tail_prefixslicesource_table) = 2 * (ge_balance_positive_concat_tail_prefixslicesource_tableentryvalue) /\ (ge_balance_negative_concat_tail_prefixslicesource_tableentryvalue) = 0) \/ exists ge_signed_half_concat_tail_prefixslicesource_tableentryvaluedecode. (((dst_value_concat_tail_prefixslicesource_table) = 2 * ge_signed_half_concat_tail_prefixslicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_tail_prefixslicesource_tableentryvalue) = 0) /\ (ge_balance_negative_concat_tail_prefixslicesource_tableentryvalue) = S ge_signed_half_concat_tail_prefixslicesource_tableentryvaluedecode))) /\ ((dst_positive_concat_tail_prefixslicesource_table) + ge_balance_negative_concat_tail_prefixslicesource_tableentryvalue = (dst_negative_concat_tail_prefixslicesource_table) + ge_balance_positive_concat_tail_prefixslicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_concat_tail_prefixsliceoutput_table dst_positive_scale_concat_tail_prefixsliceoutput_table dst_negative_code_concat_tail_prefixsliceoutput_table dst_negative_scale_concat_tail_prefixsliceoutput_table. (((srs_slice_concat_tail_prefix) = (((((dst_positive_code_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_positive_code_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table)) + ((dst_positive_scale_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table))) + (((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) + ((dst_negative_scale_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)))) * S ((((dst_positive_code_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_positive_code_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table)) + ((dst_positive_scale_concat_tail_prefixsliceoutput_table) + (dst_positive_scale_concat_tail_prefixsliceoutput_table))) + (((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) + ((dst_negative_scale_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)))) + ((((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) + ((dst_negative_scale_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table))) + (((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) * S ((dst_negative_code_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)) + ((dst_negative_scale_concat_tail_prefixsliceoutput_table) + (dst_negative_scale_concat_tail_prefixsliceoutput_table)))))) /\ (forall dst_index_concat_tail_prefixsliceoutput_table. (exists pvs_le_gap_concat_tail_prefixsliceoutput_tabledomain. pvs_le_gap_concat_tail_prefixsliceoutput_tabledomain + (dst_index_concat_tail_prefixsliceoutput_table) = (q)) -> exists dst_positive_concat_tail_prefixsliceoutput_table dst_negative_concat_tail_prefixsliceoutput_table dst_value_concat_tail_prefixsliceoutput_table. ((((exists ff_h_pvs_concat_tail_prefixsliceoutput_tableentrypositive. ff_h_pvs_concat_tail_prefixsliceoutput_tableentrypositive + S (dst_positive_concat_tail_prefixsliceoutput_table) = S ((S (dst_index_concat_tail_prefixsliceoutput_table)) * dst_positive_scale_concat_tail_prefixsliceoutput_table)) /\ exists ff_q_pvs_concat_tail_prefixsliceoutput_tableentrypositive. dst_positive_code_concat_tail_prefixsliceoutput_table = ff_q_pvs_concat_tail_prefixsliceoutput_tableentrypositive * S ((S (dst_index_concat_tail_prefixsliceoutput_table)) * dst_positive_scale_concat_tail_prefixsliceoutput_table) + (dst_positive_concat_tail_prefixsliceoutput_table))) /\ (((((exists ff_h_pvs_concat_tail_prefixsliceoutput_tableentrynegative. ff_h_pvs_concat_tail_prefixsliceoutput_tableentrynegative + S (dst_negative_concat_tail_prefixsliceoutput_table) = S ((S (dst_index_concat_tail_prefixsliceoutput_table)) * dst_negative_scale_concat_tail_prefixsliceoutput_table)) /\ exists ff_q_pvs_concat_tail_prefixsliceoutput_tableentrynegative. dst_negative_code_concat_tail_prefixsliceoutput_table = ff_q_pvs_concat_tail_prefixsliceoutput_tableentrynegative * S ((S (dst_index_concat_tail_prefixsliceoutput_table)) * dst_negative_scale_concat_tail_prefixsliceoutput_table) + (dst_negative_concat_tail_prefixsliceoutput_table))) /\ (exists ge_balance_positive_concat_tail_prefixsliceoutput_tableentryvalue ge_balance_negative_concat_tail_prefixsliceoutput_tableentryvalue. (((((dst_value_concat_tail_prefixsliceoutput_table) = 2 * (ge_balance_positive_concat_tail_prefixsliceoutput_tableentryvalue) /\ (ge_balance_negative_concat_tail_prefixsliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_concat_tail_prefixsliceoutput_tableentryvaluedecode. (((dst_value_concat_tail_prefixsliceoutput_table) = 2 * ge_signed_half_concat_tail_prefixsliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_tail_prefixsliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_concat_tail_prefixsliceoutput_tableentryvalue) = S ge_signed_half_concat_tail_prefixsliceoutput_tableentryvaluedecode))) /\ ((dst_positive_concat_tail_prefixsliceoutput_table) + ge_balance_negative_concat_tail_prefixsliceoutput_tableentryvalue = (dst_negative_concat_tail_prefixsliceoutput_table) + ge_balance_positive_concat_tail_prefixsliceoutput_tableentryvalue))))))))) /\ (forall srs_index_concat_tail_prefixslice. (exists pvs_gap_concat_tail_prefixslicebound. pvs_gap_concat_tail_prefixslicebound + S (srs_index_concat_tail_prefixslice) = (q)) -> exists srs_value_concat_tail_prefixslice. (((exists dst_positive_code_concat_tail_prefixsliceentrysource dst_positive_scale_concat_tail_prefixsliceentrysource dst_negative_code_concat_tail_prefixsliceentrysource dst_negative_scale_concat_tail_prefixsliceentrysource dst_positive_concat_tail_prefixsliceentrysource dst_negative_concat_tail_prefixsliceentrysource. (((F) = (((((dst_positive_code_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource)) * S ((dst_positive_code_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource)) + ((dst_positive_scale_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource))) + (((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) * S ((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) + ((dst_negative_scale_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)))) * S ((((dst_positive_code_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource)) * S ((dst_positive_code_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource)) + ((dst_positive_scale_concat_tail_prefixsliceentrysource) + (dst_positive_scale_concat_tail_prefixsliceentrysource))) + (((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) * S ((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) + ((dst_negative_scale_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)))) + ((((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) * S ((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) + ((dst_negative_scale_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource))) + (((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) * S ((dst_negative_code_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)) + ((dst_negative_scale_concat_tail_prefixsliceentrysource) + (dst_negative_scale_concat_tail_prefixsliceentrysource)))))) /\ (((((exists ff_h_pvs_concat_tail_prefixsliceentrysourcepositive. ff_h_pvs_concat_tail_prefixsliceentrysourcepositive + S (dst_positive_concat_tail_prefixsliceentrysource) = S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_tail_prefixslice))))) * dst_positive_scale_concat_tail_prefixsliceentrysource)) /\ exists ff_q_pvs_concat_tail_prefixsliceentrysourcepositive. dst_positive_code_concat_tail_prefixsliceentrysource = ff_q_pvs_concat_tail_prefixsliceentrysourcepositive * S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_tail_prefixslice))))) * dst_positive_scale_concat_tail_prefixsliceentrysource) + (dst_positive_concat_tail_prefixsliceentrysource))) /\ (((((exists ff_h_pvs_concat_tail_prefixsliceentrysourcenegative. ff_h_pvs_concat_tail_prefixsliceentrysourcenegative + S (dst_negative_concat_tail_prefixsliceentrysource) = S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_tail_prefixslice))))) * dst_negative_scale_concat_tail_prefixsliceentrysource)) /\ exists ff_q_pvs_concat_tail_prefixsliceentrysourcenegative. dst_negative_code_concat_tail_prefixsliceentrysource = ff_q_pvs_concat_tail_prefixsliceentrysourcenegative * S ((S (((((o) + ((s) * (p)))) + ((s) * (srs_index_concat_tail_prefixslice))))) * dst_negative_scale_concat_tail_prefixsliceentrysource) + (dst_negative_concat_tail_prefixsliceentrysource))) /\ (exists ge_balance_positive_concat_tail_prefixsliceentrysourcevalue ge_balance_negative_concat_tail_prefixsliceentrysourcevalue. (((((srs_value_concat_tail_prefixslice) = 2 * (ge_balance_positive_concat_tail_prefixsliceentrysourcevalue) /\ (ge_balance_negative_concat_tail_prefixsliceentrysourcevalue) = 0) \/ exists ge_signed_half_concat_tail_prefixsliceentrysourcevaluedecode. (((srs_value_concat_tail_prefixslice) = 2 * ge_signed_half_concat_tail_prefixsliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_concat_tail_prefixsliceentrysourcevalue) = 0) /\ (ge_balance_negative_concat_tail_prefixsliceentrysourcevalue) = S ge_signed_half_concat_tail_prefixsliceentrysourcevaluedecode))) /\ ((dst_positive_concat_tail_prefixsliceentrysource) + ge_balance_negative_concat_tail_prefixsliceentrysourcevalue = (dst_negative_concat_tail_prefixsliceentrysource) + ge_balance_positive_concat_tail_prefixsliceentrysourcevalue))))))))) /\ (exists dst_positive_code_concat_tail_prefixsliceentryoutput dst_positive_scale_concat_tail_prefixsliceentryoutput dst_negative_code_concat_tail_prefixsliceentryoutput dst_negative_scale_concat_tail_prefixsliceentryoutput dst_positive_concat_tail_prefixsliceentryoutput dst_negative_concat_tail_prefixsliceentryoutput. (((srs_slice_concat_tail_prefix) = (((((dst_positive_code_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_positive_code_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput)) + ((dst_positive_scale_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput))) + (((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) + ((dst_negative_scale_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)))) * S ((((dst_positive_code_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_positive_code_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput)) + ((dst_positive_scale_concat_tail_prefixsliceentryoutput) + (dst_positive_scale_concat_tail_prefixsliceentryoutput))) + (((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) + ((dst_negative_scale_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)))) + ((((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) + ((dst_negative_scale_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput))) + (((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) * S ((dst_negative_code_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)) + ((dst_negative_scale_concat_tail_prefixsliceentryoutput) + (dst_negative_scale_concat_tail_prefixsliceentryoutput)))))) /\ (((((exists ff_h_pvs_concat_tail_prefixsliceentryoutputpositive. ff_h_pvs_concat_tail_prefixsliceentryoutputpositive + S (dst_positive_concat_tail_prefixsliceentryoutput) = S ((S (srs_index_concat_tail_prefixslice)) * dst_positive_scale_concat_tail_prefixsliceentryoutput)) /\ exists ff_q_pvs_concat_tail_prefixsliceentryoutputpositive. dst_positive_code_concat_tail_prefixsliceentryoutput = ff_q_pvs_concat_tail_prefixsliceentryoutputpositive * S ((S (srs_index_concat_tail_prefixslice)) * dst_positive_scale_concat_tail_prefixsliceentryoutput) + (dst_positive_concat_tail_prefixsliceentryoutput))) /\ (((((exists ff_h_pvs_concat_tail_prefixsliceentryoutputnegative. ff_h_pvs_concat_tail_prefixsliceentryoutputnegative + S (dst_negative_concat_tail_prefixsliceentryoutput) = S ((S (srs_index_concat_tail_prefixslice)) * dst_negative_scale_concat_tail_prefixsliceentryoutput)) /\ exists ff_q_pvs_concat_tail_prefixsliceentryoutputnegative. dst_negative_code_concat_tail_prefixsliceentryoutput = ff_q_pvs_concat_tail_prefixsliceentryoutputnegative * S ((S (srs_index_concat_tail_prefixslice)) * dst_negative_scale_concat_tail_prefixsliceentryoutput) + (dst_negative_concat_tail_prefixsliceentryoutput))) /\ (exists ge_balance_positive_concat_tail_prefixsliceentryoutputvalue ge_balance_negative_concat_tail_prefixsliceentryoutputvalue. (((((srs_value_concat_tail_prefixslice) = 2 * (ge_balance_positive_concat_tail_prefixsliceentryoutputvalue) /\ (ge_balance_negative_concat_tail_prefixsliceentryoutputvalue) = 0) \/ exists ge_signed_half_concat_tail_prefixsliceentryoutputvaluedecode. (((srs_value_concat_tail_prefixslice) = 2 * ge_signed_half_concat_tail_prefixsliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_concat_tail_prefixsliceentryoutputvalue) = 0) /\ (ge_balance_negative_concat_tail_prefixsliceentryoutputvalue) = S ge_signed_half_concat_tail_prefixsliceentryoutputvaluedecode))) /\ ((dst_positive_concat_tail_prefixsliceentryoutput) + ge_balance_negative_concat_tail_prefixsliceentryoutputvalue = (dst_negative_concat_tail_prefixsliceentryoutput) + ge_balance_positive_concat_tail_prefixsliceentryoutputvalue)))))))))))))))) /\ (exists dst_positive_code_concat_tail_prefixsum dst_positive_scale_concat_tail_prefixsum dst_negative_code_concat_tail_prefixsum dst_negative_scale_concat_tail_prefixsum dst_positive_sum_concat_tail_prefixsum dst_negative_sum_concat_tail_prefixsum. (((srs_slice_concat_tail_prefix) = (((((dst_positive_code_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum)) * S ((dst_positive_code_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum)) + ((dst_positive_scale_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum))) + (((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) * S ((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) + ((dst_negative_scale_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)))) * S ((((dst_positive_code_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum)) * S ((dst_positive_code_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum)) + ((dst_positive_scale_concat_tail_prefixsum) + (dst_positive_scale_concat_tail_prefixsum))) + (((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) * S ((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) + ((dst_negative_scale_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)))) + ((((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) * S ((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) + ((dst_negative_scale_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum))) + (((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) * S ((dst_negative_code_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)) + ((dst_negative_scale_concat_tail_prefixsum) + (dst_negative_scale_concat_tail_prefixsum)))))) /\ (((exists fs_u_dst_concat_tail_prefixsumpositive fs_v_dst_concat_tail_prefixsumpositive. ((((exists fs_h_dst_concat_tail_prefixsumpositive_body_start. fs_h_dst_concat_tail_prefixsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_tail_prefixsumpositive)) /\ exists fs_q_dst_concat_tail_prefixsumpositive_body_start. fs_u_dst_concat_tail_prefixsumpositive = fs_q_dst_concat_tail_prefixsumpositive_body_start * S ((S (0)) * fs_v_dst_concat_tail_prefixsumpositive) + (0))) /\ ((((exists fs_h_dst_concat_tail_prefixsumpositive_body_terminal. fs_h_dst_concat_tail_prefixsumpositive_body_terminal + S (dst_positive_sum_concat_tail_prefixsum) = S ((S (q)) * fs_v_dst_concat_tail_prefixsumpositive)) /\ exists fs_q_dst_concat_tail_prefixsumpositive_body_terminal. fs_u_dst_concat_tail_prefixsumpositive = fs_q_dst_concat_tail_prefixsumpositive_body_terminal * S ((S (q)) * fs_v_dst_concat_tail_prefixsumpositive) + (dst_positive_sum_concat_tail_prefixsum))) /\ forall fs_i_dst_concat_tail_prefixsumpositive_body_steps. (exists fs_lt_dst_concat_tail_prefixsumpositive_body_steps_bound. fs_lt_dst_concat_tail_prefixsumpositive_body_steps_bound + S fs_i_dst_concat_tail_prefixsumpositive_body_steps = q) -> exists fs_a_dst_concat_tail_prefixsumpositive_body_steps fs_r_dst_concat_tail_prefixsumpositive_body_steps fs_s_dst_concat_tail_prefixsumpositive_body_steps. ((((exists fs_h_dst_concat_tail_prefixsumpositive_body_steps_summand. fs_h_dst_concat_tail_prefixsumpositive_body_steps_summand + S (fs_a_dst_concat_tail_prefixsumpositive_body_steps) = S ((S (fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * dst_positive_scale_concat_tail_prefixsum)) /\ exists fs_q_dst_concat_tail_prefixsumpositive_body_steps_summand. dst_positive_code_concat_tail_prefixsum = fs_q_dst_concat_tail_prefixsumpositive_body_steps_summand * S ((S (fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * dst_positive_scale_concat_tail_prefixsum) + (fs_a_dst_concat_tail_prefixsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_tail_prefixsumpositive_body_steps_partial. fs_h_dst_concat_tail_prefixsumpositive_body_steps_partial + S (fs_r_dst_concat_tail_prefixsumpositive_body_steps) = S ((S (fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * fs_v_dst_concat_tail_prefixsumpositive)) /\ exists fs_q_dst_concat_tail_prefixsumpositive_body_steps_partial. fs_u_dst_concat_tail_prefixsumpositive = fs_q_dst_concat_tail_prefixsumpositive_body_steps_partial * S ((S (fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * fs_v_dst_concat_tail_prefixsumpositive) + (fs_r_dst_concat_tail_prefixsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_tail_prefixsumpositive_body_steps_successor. fs_h_dst_concat_tail_prefixsumpositive_body_steps_successor + S (fs_s_dst_concat_tail_prefixsumpositive_body_steps) = S ((S (S fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * fs_v_dst_concat_tail_prefixsumpositive)) /\ exists fs_q_dst_concat_tail_prefixsumpositive_body_steps_successor. fs_u_dst_concat_tail_prefixsumpositive = fs_q_dst_concat_tail_prefixsumpositive_body_steps_successor * S ((S (S fs_i_dst_concat_tail_prefixsumpositive_body_steps)) * fs_v_dst_concat_tail_prefixsumpositive) + (fs_s_dst_concat_tail_prefixsumpositive_body_steps))) /\ fs_s_dst_concat_tail_prefixsumpositive_body_steps = fs_r_dst_concat_tail_prefixsumpositive_body_steps + fs_a_dst_concat_tail_prefixsumpositive_body_steps)))))) /\ (((exists fs_u_dst_concat_tail_prefixsumnegative fs_v_dst_concat_tail_prefixsumnegative. ((((exists fs_h_dst_concat_tail_prefixsumnegative_body_start. fs_h_dst_concat_tail_prefixsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_tail_prefixsumnegative)) /\ exists fs_q_dst_concat_tail_prefixsumnegative_body_start. fs_u_dst_concat_tail_prefixsumnegative = fs_q_dst_concat_tail_prefixsumnegative_body_start * S ((S (0)) * fs_v_dst_concat_tail_prefixsumnegative) + (0))) /\ ((((exists fs_h_dst_concat_tail_prefixsumnegative_body_terminal. fs_h_dst_concat_tail_prefixsumnegative_body_terminal + S (dst_negative_sum_concat_tail_prefixsum) = S ((S (q)) * fs_v_dst_concat_tail_prefixsumnegative)) /\ exists fs_q_dst_concat_tail_prefixsumnegative_body_terminal. fs_u_dst_concat_tail_prefixsumnegative = fs_q_dst_concat_tail_prefixsumnegative_body_terminal * S ((S (q)) * fs_v_dst_concat_tail_prefixsumnegative) + (dst_negative_sum_concat_tail_prefixsum))) /\ forall fs_i_dst_concat_tail_prefixsumnegative_body_steps. (exists fs_lt_dst_concat_tail_prefixsumnegative_body_steps_bound. fs_lt_dst_concat_tail_prefixsumnegative_body_steps_bound + S fs_i_dst_concat_tail_prefixsumnegative_body_steps = q) -> exists fs_a_dst_concat_tail_prefixsumnegative_body_steps fs_r_dst_concat_tail_prefixsumnegative_body_steps fs_s_dst_concat_tail_prefixsumnegative_body_steps. ((((exists fs_h_dst_concat_tail_prefixsumnegative_body_steps_summand. fs_h_dst_concat_tail_prefixsumnegative_body_steps_summand + S (fs_a_dst_concat_tail_prefixsumnegative_body_steps) = S ((S (fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * dst_negative_scale_concat_tail_prefixsum)) /\ exists fs_q_dst_concat_tail_prefixsumnegative_body_steps_summand. dst_negative_code_concat_tail_prefixsum = fs_q_dst_concat_tail_prefixsumnegative_body_steps_summand * S ((S (fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * dst_negative_scale_concat_tail_prefixsum) + (fs_a_dst_concat_tail_prefixsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_tail_prefixsumnegative_body_steps_partial. fs_h_dst_concat_tail_prefixsumnegative_body_steps_partial + S (fs_r_dst_concat_tail_prefixsumnegative_body_steps) = S ((S (fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * fs_v_dst_concat_tail_prefixsumnegative)) /\ exists fs_q_dst_concat_tail_prefixsumnegative_body_steps_partial. fs_u_dst_concat_tail_prefixsumnegative = fs_q_dst_concat_tail_prefixsumnegative_body_steps_partial * S ((S (fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * fs_v_dst_concat_tail_prefixsumnegative) + (fs_r_dst_concat_tail_prefixsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_tail_prefixsumnegative_body_steps_successor. fs_h_dst_concat_tail_prefixsumnegative_body_steps_successor + S (fs_s_dst_concat_tail_prefixsumnegative_body_steps) = S ((S (S fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * fs_v_dst_concat_tail_prefixsumnegative)) /\ exists fs_q_dst_concat_tail_prefixsumnegative_body_steps_successor. fs_u_dst_concat_tail_prefixsumnegative = fs_q_dst_concat_tail_prefixsumnegative_body_steps_successor * S ((S (S fs_i_dst_concat_tail_prefixsumnegative_body_steps)) * fs_v_dst_concat_tail_prefixsumnegative) + (fs_s_dst_concat_tail_prefixsumnegative_body_steps))) /\ fs_s_dst_concat_tail_prefixsumnegative_body_steps = fs_r_dst_concat_tail_prefixsumnegative_body_steps + fs_a_dst_concat_tail_prefixsumnegative_body_steps)))))) /\ (exists ge_balance_positive_concat_tail_prefixsumresult ge_balance_negative_concat_tail_prefixsumresult. (((((u) = 2 * (ge_balance_positive_concat_tail_prefixsumresult) /\ (ge_balance_negative_concat_tail_prefixsumresult) = 0) \/ exists ge_signed_half_concat_tail_prefixsumresultdecode. (((u) = 2 * ge_signed_half_concat_tail_prefixsumresultdecode + 1 /\ (ge_balance_positive_concat_tail_prefixsumresult) = 0) /\ (ge_balance_negative_concat_tail_prefixsumresult) = S ge_signed_half_concat_tail_prefixsumresultdecode))) /\ ((dst_positive_sum_concat_tail_prefixsum) + ge_balance_negative_concat_tail_prefixsumresult = (dst_negative_sum_concat_tail_prefixsum) + ge_balance_positive_concat_tail_prefixsumresult))))))))))) /\ (((exists dst_positive_code_concat_tail_last dst_positive_scale_concat_tail_last dst_negative_code_concat_tail_last dst_negative_scale_concat_tail_last dst_positive_concat_tail_last dst_negative_concat_tail_last. (((F) = (((((dst_positive_code_concat_tail_last) + (dst_positive_scale_concat_tail_last)) * S ((dst_positive_code_concat_tail_last) + (dst_positive_scale_concat_tail_last)) + ((dst_positive_scale_concat_tail_last) + (dst_positive_scale_concat_tail_last))) + (((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) * S ((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) + ((dst_negative_scale_concat_tail_last) + (dst_negative_scale_concat_tail_last)))) * S ((((dst_positive_code_concat_tail_last) + (dst_positive_scale_concat_tail_last)) * S ((dst_positive_code_concat_tail_last) + (dst_positive_scale_concat_tail_last)) + ((dst_positive_scale_concat_tail_last) + (dst_positive_scale_concat_tail_last))) + (((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) * S ((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) + ((dst_negative_scale_concat_tail_last) + (dst_negative_scale_concat_tail_last)))) + ((((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) * S ((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) + ((dst_negative_scale_concat_tail_last) + (dst_negative_scale_concat_tail_last))) + (((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) * S ((dst_negative_code_concat_tail_last) + (dst_negative_scale_concat_tail_last)) + ((dst_negative_scale_concat_tail_last) + (dst_negative_scale_concat_tail_last)))))) /\ (((((exists ff_h_pvs_concat_tail_lastpositive. ff_h_pvs_concat_tail_lastpositive + S (dst_positive_concat_tail_last) = S ((S (((((o) + ((s) * (p)))) + ((s) * (q))))) * dst_positive_scale_concat_tail_last)) /\ exists ff_q_pvs_concat_tail_lastpositive. dst_positive_code_concat_tail_last = ff_q_pvs_concat_tail_lastpositive * S ((S (((((o) + ((s) * (p)))) + ((s) * (q))))) * dst_positive_scale_concat_tail_last) + (dst_positive_concat_tail_last))) /\ (((((exists ff_h_pvs_concat_tail_lastnegative. ff_h_pvs_concat_tail_lastnegative + S (dst_negative_concat_tail_last) = S ((S (((((o) + ((s) * (p)))) + ((s) * (q))))) * dst_negative_scale_concat_tail_last)) /\ exists ff_q_pvs_concat_tail_lastnegative. dst_negative_code_concat_tail_last = ff_q_pvs_concat_tail_lastnegative * S ((S (((((o) + ((s) * (p)))) + ((s) * (q))))) * dst_negative_scale_concat_tail_last) + (dst_negative_concat_tail_last))) /\ (exists ge_balance_positive_concat_tail_lastvalue ge_balance_negative_concat_tail_lastvalue. (((((v) = 2 * (ge_balance_positive_concat_tail_lastvalue) /\ (ge_balance_negative_concat_tail_lastvalue) = 0) \/ exists ge_signed_half_concat_tail_lastvaluedecode. (((v) = 2 * ge_signed_half_concat_tail_lastvaluedecode + 1 /\ (ge_balance_positive_concat_tail_lastvalue) = 0) /\ (ge_balance_negative_concat_tail_lastvalue) = S ge_signed_half_concat_tail_lastvaluedecode))) /\ ((dst_positive_concat_tail_last) + ge_balance_negative_concat_tail_lastvalue = (dst_negative_concat_tail_last) + ge_balance_positive_concat_tail_lastvalue))))))))) /\ (exists dsa_ap_concat_tail_add dsa_an_concat_tail_add dsa_bp_concat_tail_add dsa_bn_concat_tail_add dsa_cp_concat_tail_add dsa_cn_concat_tail_add. (((((u) = 2 * (dsa_ap_concat_tail_add) /\ (dsa_an_concat_tail_add) = 0) \/ exists ge_signed_half_concat_tail_addleft. (((u) = 2 * ge_signed_half_concat_tail_addleft + 1 /\ (dsa_ap_concat_tail_add) = 0) /\ (dsa_an_concat_tail_add) = S ge_signed_half_concat_tail_addleft))) /\ ((((((v) = 2 * (dsa_bp_concat_tail_add) /\ (dsa_bn_concat_tail_add) = 0) \/ exists ge_signed_half_concat_tail_addright. (((v) = 2 * ge_signed_half_concat_tail_addright + 1 /\ (dsa_bp_concat_tail_add) = 0) /\ (dsa_bn_concat_tail_add) = S ge_signed_half_concat_tail_addright))) /\ ((((((b) = 2 * (dsa_cp_concat_tail_add) /\ (dsa_cn_concat_tail_add) = 0) \/ exists ge_signed_half_concat_tail_addoutput. (((b) = 2 * ge_signed_half_concat_tail_addoutput + 1 /\ (dsa_cp_concat_tail_add) = 0) /\ (dsa_cn_concat_tail_add) = S ge_signed_half_concat_tail_addoutput))) /\ ((dsa_ap_concat_tail_add + dsa_bp_concat_tail_add) + dsa_cn_concat_tail_add = (dsa_an_concat_tail_add + dsa_bn_concat_tail_add) + dsa_cp_concat_tail_add)))))))))))
  54. 0054specialize signed_rectangular_slice_sum_successor_decompose (F)
  55. 0055specialize signed_rectangular_slice_sum_successor_decompose (((o) + ((s) * (p))))
  56. 0056specialize signed_rectangular_slice_sum_successor_decompose (s)
  57. 0057specialize signed_rectangular_slice_sum_successor_decompose (q)
  58. 0058specialize signed_rectangular_slice_sum_successor_decompose (b)
  59. 0059apply signed_rectangular_slice_sum_successor_decompose
  60. 0060exact hb
  61. 0061cases hd
  62. 0062cases hd_witness
  63. 0063cases hd_witness_witness
  64. 0064cases hd_witness_witness_right
  65. 0065have ht : exists t. (exists dsa_ap_concat_intermediate dsa_an_concat_intermediate dsa_bp_concat_intermediate dsa_bn_concat_intermediate dsa_cp_concat_intermediate dsa_cn_concat_intermediate. (((((a) = 2 * (dsa_ap_concat_intermediate) /\ (dsa_an_concat_intermediate) = 0) \/ exists ge_signed_half_concat_intermediateleft. (((a) = 2 * ge_signed_half_concat_intermediateleft + 1 /\ (dsa_ap_concat_intermediate) = 0) /\ (dsa_an_concat_intermediate) = S ge_signed_half_concat_intermediateleft))) /\ ((((((x) = 2 * (dsa_bp_concat_intermediate) /\ (dsa_bn_concat_intermediate) = 0) \/ exists ge_signed_half_concat_intermediateright. (((x) = 2 * ge_signed_half_concat_intermediateright + 1 /\ (dsa_bp_concat_intermediate) = 0) /\ (dsa_bn_concat_intermediate) = S ge_signed_half_concat_intermediateright))) /\ ((((((t) = 2 * (dsa_cp_concat_intermediate) /\ (dsa_cn_concat_intermediate) = 0) \/ exists ge_signed_half_concat_intermediateoutput. (((t) = 2 * ge_signed_half_concat_intermediateoutput + 1 /\ (dsa_cp_concat_intermediate) = 0) /\ (dsa_cn_concat_intermediate) = S ge_signed_half_concat_intermediateoutput))) /\ ((dsa_ap_concat_intermediate + dsa_bp_concat_intermediate) + dsa_cn_concat_intermediate = (dsa_an_concat_intermediate + dsa_bn_concat_intermediate) + dsa_cp_concat_intermediate)))))))
  66. 0066specialize signed_add_total (a)
  67. 0067specialize signed_add_total (x)
  68. 0068apply signed_add_total
  69. 0069cases ht
  70. 0070have hp : exists srs_slice_concat_prefix. ((((exists dst_positive_code_concat_prefixslicesource_table dst_positive_scale_concat_prefixslicesource_table dst_negative_code_concat_prefixslicesource_table dst_negative_scale_concat_prefixslicesource_table. (((F) = (((((dst_positive_code_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table)) * S ((dst_positive_code_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table)) + ((dst_positive_scale_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table))) + (((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) * S ((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) + ((dst_negative_scale_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)))) * S ((((dst_positive_code_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table)) * S ((dst_positive_code_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table)) + ((dst_positive_scale_concat_prefixslicesource_table) + (dst_positive_scale_concat_prefixslicesource_table))) + (((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) * S ((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) + ((dst_negative_scale_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)))) + ((((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) * S ((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) + ((dst_negative_scale_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table))) + (((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) * S ((dst_negative_code_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)) + ((dst_negative_scale_concat_prefixslicesource_table) + (dst_negative_scale_concat_prefixslicesource_table)))))) /\ (forall dst_index_concat_prefixslicesource_table. (exists pvs_le_gap_concat_prefixslicesource_tabledomain. pvs_le_gap_concat_prefixslicesource_tabledomain + (dst_index_concat_prefixslicesource_table) = (0)) -> exists dst_positive_concat_prefixslicesource_table dst_negative_concat_prefixslicesource_table dst_value_concat_prefixslicesource_table. ((((exists ff_h_pvs_concat_prefixslicesource_tableentrypositive. ff_h_pvs_concat_prefixslicesource_tableentrypositive + S (dst_positive_concat_prefixslicesource_table) = S ((S (dst_index_concat_prefixslicesource_table)) * dst_positive_scale_concat_prefixslicesource_table)) /\ exists ff_q_pvs_concat_prefixslicesource_tableentrypositive. dst_positive_code_concat_prefixslicesource_table = ff_q_pvs_concat_prefixslicesource_tableentrypositive * S ((S (dst_index_concat_prefixslicesource_table)) * dst_positive_scale_concat_prefixslicesource_table) + (dst_positive_concat_prefixslicesource_table))) /\ (((((exists ff_h_pvs_concat_prefixslicesource_tableentrynegative. ff_h_pvs_concat_prefixslicesource_tableentrynegative + S (dst_negative_concat_prefixslicesource_table) = S ((S (dst_index_concat_prefixslicesource_table)) * dst_negative_scale_concat_prefixslicesource_table)) /\ exists ff_q_pvs_concat_prefixslicesource_tableentrynegative. dst_negative_code_concat_prefixslicesource_table = ff_q_pvs_concat_prefixslicesource_tableentrynegative * S ((S (dst_index_concat_prefixslicesource_table)) * dst_negative_scale_concat_prefixslicesource_table) + (dst_negative_concat_prefixslicesource_table))) /\ (exists ge_balance_positive_concat_prefixslicesource_tableentryvalue ge_balance_negative_concat_prefixslicesource_tableentryvalue. (((((dst_value_concat_prefixslicesource_table) = 2 * (ge_balance_positive_concat_prefixslicesource_tableentryvalue) /\ (ge_balance_negative_concat_prefixslicesource_tableentryvalue) = 0) \/ exists ge_signed_half_concat_prefixslicesource_tableentryvaluedecode. (((dst_value_concat_prefixslicesource_table) = 2 * ge_signed_half_concat_prefixslicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_prefixslicesource_tableentryvalue) = 0) /\ (ge_balance_negative_concat_prefixslicesource_tableentryvalue) = S ge_signed_half_concat_prefixslicesource_tableentryvaluedecode))) /\ ((dst_positive_concat_prefixslicesource_table) + ge_balance_negative_concat_prefixslicesource_tableentryvalue = (dst_negative_concat_prefixslicesource_table) + ge_balance_positive_concat_prefixslicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_concat_prefixsliceoutput_table dst_positive_scale_concat_prefixsliceoutput_table dst_negative_code_concat_prefixsliceoutput_table dst_negative_scale_concat_prefixsliceoutput_table. (((srs_slice_concat_prefix) = (((((dst_positive_code_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table)) * S ((dst_positive_code_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table)) + ((dst_positive_scale_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table))) + (((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) * S ((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) + ((dst_negative_scale_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)))) * S ((((dst_positive_code_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table)) * S ((dst_positive_code_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table)) + ((dst_positive_scale_concat_prefixsliceoutput_table) + (dst_positive_scale_concat_prefixsliceoutput_table))) + (((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) * S ((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) + ((dst_negative_scale_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)))) + ((((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) * S ((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) + ((dst_negative_scale_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table))) + (((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) * S ((dst_negative_code_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)) + ((dst_negative_scale_concat_prefixsliceoutput_table) + (dst_negative_scale_concat_prefixsliceoutput_table)))))) /\ (forall dst_index_concat_prefixsliceoutput_table. (exists pvs_le_gap_concat_prefixsliceoutput_tabledomain. pvs_le_gap_concat_prefixsliceoutput_tabledomain + (dst_index_concat_prefixsliceoutput_table) = (p+q)) -> exists dst_positive_concat_prefixsliceoutput_table dst_negative_concat_prefixsliceoutput_table dst_value_concat_prefixsliceoutput_table. ((((exists ff_h_pvs_concat_prefixsliceoutput_tableentrypositive. ff_h_pvs_concat_prefixsliceoutput_tableentrypositive + S (dst_positive_concat_prefixsliceoutput_table) = S ((S (dst_index_concat_prefixsliceoutput_table)) * dst_positive_scale_concat_prefixsliceoutput_table)) /\ exists ff_q_pvs_concat_prefixsliceoutput_tableentrypositive. dst_positive_code_concat_prefixsliceoutput_table = ff_q_pvs_concat_prefixsliceoutput_tableentrypositive * S ((S (dst_index_concat_prefixsliceoutput_table)) * dst_positive_scale_concat_prefixsliceoutput_table) + (dst_positive_concat_prefixsliceoutput_table))) /\ (((((exists ff_h_pvs_concat_prefixsliceoutput_tableentrynegative. ff_h_pvs_concat_prefixsliceoutput_tableentrynegative + S (dst_negative_concat_prefixsliceoutput_table) = S ((S (dst_index_concat_prefixsliceoutput_table)) * dst_negative_scale_concat_prefixsliceoutput_table)) /\ exists ff_q_pvs_concat_prefixsliceoutput_tableentrynegative. dst_negative_code_concat_prefixsliceoutput_table = ff_q_pvs_concat_prefixsliceoutput_tableentrynegative * S ((S (dst_index_concat_prefixsliceoutput_table)) * dst_negative_scale_concat_prefixsliceoutput_table) + (dst_negative_concat_prefixsliceoutput_table))) /\ (exists ge_balance_positive_concat_prefixsliceoutput_tableentryvalue ge_balance_negative_concat_prefixsliceoutput_tableentryvalue. (((((dst_value_concat_prefixsliceoutput_table) = 2 * (ge_balance_positive_concat_prefixsliceoutput_tableentryvalue) /\ (ge_balance_negative_concat_prefixsliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_concat_prefixsliceoutput_tableentryvaluedecode. (((dst_value_concat_prefixsliceoutput_table) = 2 * ge_signed_half_concat_prefixsliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_concat_prefixsliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_concat_prefixsliceoutput_tableentryvalue) = S ge_signed_half_concat_prefixsliceoutput_tableentryvaluedecode))) /\ ((dst_positive_concat_prefixsliceoutput_table) + ge_balance_negative_concat_prefixsliceoutput_tableentryvalue = (dst_negative_concat_prefixsliceoutput_table) + ge_balance_positive_concat_prefixsliceoutput_tableentryvalue))))))))) /\ (forall srs_index_concat_prefixslice. (exists pvs_gap_concat_prefixslicebound. pvs_gap_concat_prefixslicebound + S (srs_index_concat_prefixslice) = (p+q)) -> exists srs_value_concat_prefixslice. (((exists dst_positive_code_concat_prefixsliceentrysource dst_positive_scale_concat_prefixsliceentrysource dst_negative_code_concat_prefixsliceentrysource dst_negative_scale_concat_prefixsliceentrysource dst_positive_concat_prefixsliceentrysource dst_negative_concat_prefixsliceentrysource. (((F) = (((((dst_positive_code_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource)) * S ((dst_positive_code_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource)) + ((dst_positive_scale_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource))) + (((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) * S ((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) + ((dst_negative_scale_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)))) * S ((((dst_positive_code_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource)) * S ((dst_positive_code_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource)) + ((dst_positive_scale_concat_prefixsliceentrysource) + (dst_positive_scale_concat_prefixsliceentrysource))) + (((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) * S ((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) + ((dst_negative_scale_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)))) + ((((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) * S ((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) + ((dst_negative_scale_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource))) + (((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) * S ((dst_negative_code_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)) + ((dst_negative_scale_concat_prefixsliceentrysource) + (dst_negative_scale_concat_prefixsliceentrysource)))))) /\ (((((exists ff_h_pvs_concat_prefixsliceentrysourcepositive. ff_h_pvs_concat_prefixsliceentrysourcepositive + S (dst_positive_concat_prefixsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_prefixslice))))) * dst_positive_scale_concat_prefixsliceentrysource)) /\ exists ff_q_pvs_concat_prefixsliceentrysourcepositive. dst_positive_code_concat_prefixsliceentrysource = ff_q_pvs_concat_prefixsliceentrysourcepositive * S ((S (((o) + ((s) * (srs_index_concat_prefixslice))))) * dst_positive_scale_concat_prefixsliceentrysource) + (dst_positive_concat_prefixsliceentrysource))) /\ (((((exists ff_h_pvs_concat_prefixsliceentrysourcenegative. ff_h_pvs_concat_prefixsliceentrysourcenegative + S (dst_negative_concat_prefixsliceentrysource) = S ((S (((o) + ((s) * (srs_index_concat_prefixslice))))) * dst_negative_scale_concat_prefixsliceentrysource)) /\ exists ff_q_pvs_concat_prefixsliceentrysourcenegative. dst_negative_code_concat_prefixsliceentrysource = ff_q_pvs_concat_prefixsliceentrysourcenegative * S ((S (((o) + ((s) * (srs_index_concat_prefixslice))))) * dst_negative_scale_concat_prefixsliceentrysource) + (dst_negative_concat_prefixsliceentrysource))) /\ (exists ge_balance_positive_concat_prefixsliceentrysourcevalue ge_balance_negative_concat_prefixsliceentrysourcevalue. (((((srs_value_concat_prefixslice) = 2 * (ge_balance_positive_concat_prefixsliceentrysourcevalue) /\ (ge_balance_negative_concat_prefixsliceentrysourcevalue) = 0) \/ exists ge_signed_half_concat_prefixsliceentrysourcevaluedecode. (((srs_value_concat_prefixslice) = 2 * ge_signed_half_concat_prefixsliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_concat_prefixsliceentrysourcevalue) = 0) /\ (ge_balance_negative_concat_prefixsliceentrysourcevalue) = S ge_signed_half_concat_prefixsliceentrysourcevaluedecode))) /\ ((dst_positive_concat_prefixsliceentrysource) + ge_balance_negative_concat_prefixsliceentrysourcevalue = (dst_negative_concat_prefixsliceentrysource) + ge_balance_positive_concat_prefixsliceentrysourcevalue))))))))) /\ (exists dst_positive_code_concat_prefixsliceentryoutput dst_positive_scale_concat_prefixsliceentryoutput dst_negative_code_concat_prefixsliceentryoutput dst_negative_scale_concat_prefixsliceentryoutput dst_positive_concat_prefixsliceentryoutput dst_negative_concat_prefixsliceentryoutput. (((srs_slice_concat_prefix) = (((((dst_positive_code_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput)) * S ((dst_positive_code_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput)) + ((dst_positive_scale_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput))) + (((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) * S ((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) + ((dst_negative_scale_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)))) * S ((((dst_positive_code_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput)) * S ((dst_positive_code_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput)) + ((dst_positive_scale_concat_prefixsliceentryoutput) + (dst_positive_scale_concat_prefixsliceentryoutput))) + (((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) * S ((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) + ((dst_negative_scale_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)))) + ((((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) * S ((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) + ((dst_negative_scale_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput))) + (((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) * S ((dst_negative_code_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)) + ((dst_negative_scale_concat_prefixsliceentryoutput) + (dst_negative_scale_concat_prefixsliceentryoutput)))))) /\ (((((exists ff_h_pvs_concat_prefixsliceentryoutputpositive. ff_h_pvs_concat_prefixsliceentryoutputpositive + S (dst_positive_concat_prefixsliceentryoutput) = S ((S (srs_index_concat_prefixslice)) * dst_positive_scale_concat_prefixsliceentryoutput)) /\ exists ff_q_pvs_concat_prefixsliceentryoutputpositive. dst_positive_code_concat_prefixsliceentryoutput = ff_q_pvs_concat_prefixsliceentryoutputpositive * S ((S (srs_index_concat_prefixslice)) * dst_positive_scale_concat_prefixsliceentryoutput) + (dst_positive_concat_prefixsliceentryoutput))) /\ (((((exists ff_h_pvs_concat_prefixsliceentryoutputnegative. ff_h_pvs_concat_prefixsliceentryoutputnegative + S (dst_negative_concat_prefixsliceentryoutput) = S ((S (srs_index_concat_prefixslice)) * dst_negative_scale_concat_prefixsliceentryoutput)) /\ exists ff_q_pvs_concat_prefixsliceentryoutputnegative. dst_negative_code_concat_prefixsliceentryoutput = ff_q_pvs_concat_prefixsliceentryoutputnegative * S ((S (srs_index_concat_prefixslice)) * dst_negative_scale_concat_prefixsliceentryoutput) + (dst_negative_concat_prefixsliceentryoutput))) /\ (exists ge_balance_positive_concat_prefixsliceentryoutputvalue ge_balance_negative_concat_prefixsliceentryoutputvalue. (((((srs_value_concat_prefixslice) = 2 * (ge_balance_positive_concat_prefixsliceentryoutputvalue) /\ (ge_balance_negative_concat_prefixsliceentryoutputvalue) = 0) \/ exists ge_signed_half_concat_prefixsliceentryoutputvaluedecode. (((srs_value_concat_prefixslice) = 2 * ge_signed_half_concat_prefixsliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_concat_prefixsliceentryoutputvalue) = 0) /\ (ge_balance_negative_concat_prefixsliceentryoutputvalue) = S ge_signed_half_concat_prefixsliceentryoutputvaluedecode))) /\ ((dst_positive_concat_prefixsliceentryoutput) + ge_balance_negative_concat_prefixsliceentryoutputvalue = (dst_negative_concat_prefixsliceentryoutput) + ge_balance_positive_concat_prefixsliceentryoutputvalue)))))))))))))))) /\ (exists dst_positive_code_concat_prefixsum dst_positive_scale_concat_prefixsum dst_negative_code_concat_prefixsum dst_negative_scale_concat_prefixsum dst_positive_sum_concat_prefixsum dst_negative_sum_concat_prefixsum. (((srs_slice_concat_prefix) = (((((dst_positive_code_concat_prefixsum) + (dst_positive_scale_concat_prefixsum)) * S ((dst_positive_code_concat_prefixsum) + (dst_positive_scale_concat_prefixsum)) + ((dst_positive_scale_concat_prefixsum) + (dst_positive_scale_concat_prefixsum))) + (((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) * S ((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) + ((dst_negative_scale_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)))) * S ((((dst_positive_code_concat_prefixsum) + (dst_positive_scale_concat_prefixsum)) * S ((dst_positive_code_concat_prefixsum) + (dst_positive_scale_concat_prefixsum)) + ((dst_positive_scale_concat_prefixsum) + (dst_positive_scale_concat_prefixsum))) + (((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) * S ((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) + ((dst_negative_scale_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)))) + ((((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) * S ((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) + ((dst_negative_scale_concat_prefixsum) + (dst_negative_scale_concat_prefixsum))) + (((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) * S ((dst_negative_code_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)) + ((dst_negative_scale_concat_prefixsum) + (dst_negative_scale_concat_prefixsum)))))) /\ (((exists fs_u_dst_concat_prefixsumpositive fs_v_dst_concat_prefixsumpositive. ((((exists fs_h_dst_concat_prefixsumpositive_body_start. fs_h_dst_concat_prefixsumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_prefixsumpositive)) /\ exists fs_q_dst_concat_prefixsumpositive_body_start. fs_u_dst_concat_prefixsumpositive = fs_q_dst_concat_prefixsumpositive_body_start * S ((S (0)) * fs_v_dst_concat_prefixsumpositive) + (0))) /\ ((((exists fs_h_dst_concat_prefixsumpositive_body_terminal. fs_h_dst_concat_prefixsumpositive_body_terminal + S (dst_positive_sum_concat_prefixsum) = S ((S (p+q)) * fs_v_dst_concat_prefixsumpositive)) /\ exists fs_q_dst_concat_prefixsumpositive_body_terminal. fs_u_dst_concat_prefixsumpositive = fs_q_dst_concat_prefixsumpositive_body_terminal * S ((S (p+q)) * fs_v_dst_concat_prefixsumpositive) + (dst_positive_sum_concat_prefixsum))) /\ forall fs_i_dst_concat_prefixsumpositive_body_steps. (exists fs_lt_dst_concat_prefixsumpositive_body_steps_bound. fs_lt_dst_concat_prefixsumpositive_body_steps_bound + S fs_i_dst_concat_prefixsumpositive_body_steps = p+q) -> exists fs_a_dst_concat_prefixsumpositive_body_steps fs_r_dst_concat_prefixsumpositive_body_steps fs_s_dst_concat_prefixsumpositive_body_steps. ((((exists fs_h_dst_concat_prefixsumpositive_body_steps_summand. fs_h_dst_concat_prefixsumpositive_body_steps_summand + S (fs_a_dst_concat_prefixsumpositive_body_steps) = S ((S (fs_i_dst_concat_prefixsumpositive_body_steps)) * dst_positive_scale_concat_prefixsum)) /\ exists fs_q_dst_concat_prefixsumpositive_body_steps_summand. dst_positive_code_concat_prefixsum = fs_q_dst_concat_prefixsumpositive_body_steps_summand * S ((S (fs_i_dst_concat_prefixsumpositive_body_steps)) * dst_positive_scale_concat_prefixsum) + (fs_a_dst_concat_prefixsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_prefixsumpositive_body_steps_partial. fs_h_dst_concat_prefixsumpositive_body_steps_partial + S (fs_r_dst_concat_prefixsumpositive_body_steps) = S ((S (fs_i_dst_concat_prefixsumpositive_body_steps)) * fs_v_dst_concat_prefixsumpositive)) /\ exists fs_q_dst_concat_prefixsumpositive_body_steps_partial. fs_u_dst_concat_prefixsumpositive = fs_q_dst_concat_prefixsumpositive_body_steps_partial * S ((S (fs_i_dst_concat_prefixsumpositive_body_steps)) * fs_v_dst_concat_prefixsumpositive) + (fs_r_dst_concat_prefixsumpositive_body_steps))) /\ ((((exists fs_h_dst_concat_prefixsumpositive_body_steps_successor. fs_h_dst_concat_prefixsumpositive_body_steps_successor + S (fs_s_dst_concat_prefixsumpositive_body_steps) = S ((S (S fs_i_dst_concat_prefixsumpositive_body_steps)) * fs_v_dst_concat_prefixsumpositive)) /\ exists fs_q_dst_concat_prefixsumpositive_body_steps_successor. fs_u_dst_concat_prefixsumpositive = fs_q_dst_concat_prefixsumpositive_body_steps_successor * S ((S (S fs_i_dst_concat_prefixsumpositive_body_steps)) * fs_v_dst_concat_prefixsumpositive) + (fs_s_dst_concat_prefixsumpositive_body_steps))) /\ fs_s_dst_concat_prefixsumpositive_body_steps = fs_r_dst_concat_prefixsumpositive_body_steps + fs_a_dst_concat_prefixsumpositive_body_steps)))))) /\ (((exists fs_u_dst_concat_prefixsumnegative fs_v_dst_concat_prefixsumnegative. ((((exists fs_h_dst_concat_prefixsumnegative_body_start. fs_h_dst_concat_prefixsumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_concat_prefixsumnegative)) /\ exists fs_q_dst_concat_prefixsumnegative_body_start. fs_u_dst_concat_prefixsumnegative = fs_q_dst_concat_prefixsumnegative_body_start * S ((S (0)) * fs_v_dst_concat_prefixsumnegative) + (0))) /\ ((((exists fs_h_dst_concat_prefixsumnegative_body_terminal. fs_h_dst_concat_prefixsumnegative_body_terminal + S (dst_negative_sum_concat_prefixsum) = S ((S (p+q)) * fs_v_dst_concat_prefixsumnegative)) /\ exists fs_q_dst_concat_prefixsumnegative_body_terminal. fs_u_dst_concat_prefixsumnegative = fs_q_dst_concat_prefixsumnegative_body_terminal * S ((S (p+q)) * fs_v_dst_concat_prefixsumnegative) + (dst_negative_sum_concat_prefixsum))) /\ forall fs_i_dst_concat_prefixsumnegative_body_steps. (exists fs_lt_dst_concat_prefixsumnegative_body_steps_bound. fs_lt_dst_concat_prefixsumnegative_body_steps_bound + S fs_i_dst_concat_prefixsumnegative_body_steps = p+q) -> exists fs_a_dst_concat_prefixsumnegative_body_steps fs_r_dst_concat_prefixsumnegative_body_steps fs_s_dst_concat_prefixsumnegative_body_steps. ((((exists fs_h_dst_concat_prefixsumnegative_body_steps_summand. fs_h_dst_concat_prefixsumnegative_body_steps_summand + S (fs_a_dst_concat_prefixsumnegative_body_steps) = S ((S (fs_i_dst_concat_prefixsumnegative_body_steps)) * dst_negative_scale_concat_prefixsum)) /\ exists fs_q_dst_concat_prefixsumnegative_body_steps_summand. dst_negative_code_concat_prefixsum = fs_q_dst_concat_prefixsumnegative_body_steps_summand * S ((S (fs_i_dst_concat_prefixsumnegative_body_steps)) * dst_negative_scale_concat_prefixsum) + (fs_a_dst_concat_prefixsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_prefixsumnegative_body_steps_partial. fs_h_dst_concat_prefixsumnegative_body_steps_partial + S (fs_r_dst_concat_prefixsumnegative_body_steps) = S ((S (fs_i_dst_concat_prefixsumnegative_body_steps)) * fs_v_dst_concat_prefixsumnegative)) /\ exists fs_q_dst_concat_prefixsumnegative_body_steps_partial. fs_u_dst_concat_prefixsumnegative = fs_q_dst_concat_prefixsumnegative_body_steps_partial * S ((S (fs_i_dst_concat_prefixsumnegative_body_steps)) * fs_v_dst_concat_prefixsumnegative) + (fs_r_dst_concat_prefixsumnegative_body_steps))) /\ ((((exists fs_h_dst_concat_prefixsumnegative_body_steps_successor. fs_h_dst_concat_prefixsumnegative_body_steps_successor + S (fs_s_dst_concat_prefixsumnegative_body_steps) = S ((S (S fs_i_dst_concat_prefixsumnegative_body_steps)) * fs_v_dst_concat_prefixsumnegative)) /\ exists fs_q_dst_concat_prefixsumnegative_body_steps_successor. fs_u_dst_concat_prefixsumnegative = fs_q_dst_concat_prefixsumnegative_body_steps_successor * S ((S (S fs_i_dst_concat_prefixsumnegative_body_steps)) * fs_v_dst_concat_prefixsumnegative) + (fs_s_dst_concat_prefixsumnegative_body_steps))) /\ fs_s_dst_concat_prefixsumnegative_body_steps = fs_r_dst_concat_prefixsumnegative_body_steps + fs_a_dst_concat_prefixsumnegative_body_steps)))))) /\ (exists ge_balance_positive_concat_prefixsumresult ge_balance_negative_concat_prefixsumresult. (((((x2) = 2 * (ge_balance_positive_concat_prefixsumresult) /\ (ge_balance_negative_concat_prefixsumresult) = 0) \/ exists ge_signed_half_concat_prefixsumresultdecode. (((x2) = 2 * ge_signed_half_concat_prefixsumresultdecode + 1 /\ (ge_balance_positive_concat_prefixsumresult) = 0) /\ (ge_balance_negative_concat_prefixsumresult) = S ge_signed_half_concat_prefixsumresultdecode))) /\ ((dst_positive_sum_concat_prefixsum) + ge_balance_negative_concat_prefixsumresult = (dst_negative_sum_concat_prefixsum) + ge_balance_positive_concat_prefixsumresult))))))))))
  71. 0071specialize IH (F)
  72. 0072specialize IH (o)
  73. 0073specialize IH (s)
  74. 0074specialize IH (p)
  75. 0075specialize IH (a)
  76. 0076specialize IH (x)
  77. 0077specialize IH (x2)
  78. 0078apply IH
  79. 0079exact ha
  80. 0080exact hd_witness_witness_left
  81. 0081exact ht_witness
  82. 0082have hnext : exists dsa_ap_concat_next_add dsa_an_concat_next_add dsa_bp_concat_next_add dsa_bn_concat_next_add dsa_cp_concat_next_add dsa_cn_concat_next_add. (((((x2) = 2 * (dsa_ap_concat_next_add) /\ (dsa_an_concat_next_add) = 0) \/ exists ge_signed_half_concat_next_addleft. (((x2) = 2 * ge_signed_half_concat_next_addleft + 1 /\ (dsa_ap_concat_next_add) = 0) /\ (dsa_an_concat_next_add) = S ge_signed_half_concat_next_addleft))) /\ ((((((x1) = 2 * (dsa_bp_concat_next_add) /\ (dsa_bn_concat_next_add) = 0) \/ exists ge_signed_half_concat_next_addright. (((x1) = 2 * ge_signed_half_concat_next_addright + 1 /\ (dsa_bp_concat_next_add) = 0) /\ (dsa_bn_concat_next_add) = S ge_signed_half_concat_next_addright))) /\ ((((((c) = 2 * (dsa_cp_concat_next_add) /\ (dsa_cn_concat_next_add) = 0) \/ exists ge_signed_half_concat_next_addoutput. (((c) = 2 * ge_signed_half_concat_next_addoutput + 1 /\ (dsa_cp_concat_next_add) = 0) /\ (dsa_cn_concat_next_add) = S ge_signed_half_concat_next_addoutput))) /\ ((dsa_ap_concat_next_add + dsa_bp_concat_next_add) + dsa_cn_concat_next_add = (dsa_an_concat_next_add + dsa_bn_concat_next_add) + dsa_cp_concat_next_add))))))
  83. 0083specialize signed_table_add_reassociate (a)
  84. 0084specialize signed_table_add_reassociate (x)
  85. 0085specialize signed_table_add_reassociate (x1)
  86. 0086specialize signed_table_add_reassociate (x2)
  87. 0087specialize signed_table_add_reassociate (b)
  88. 0088specialize signed_table_add_reassociate (c)
  89. 0089apply signed_table_add_reassociate
  90. 0090exact ht_witness
  91. 0091exact hd_witness_witness_right_right
  92. 0092exact hadd
  93. 0093have hindex : ((((o) + ((s) * (p)))) + ((s) * (q))) = ((o) + ((s) * (p+q)))
  94. 0094trans o+(s*p+s*q)
  95. 0095specialize add_assoc (o)
  96. 0096specialize add_assoc (s*p)
  97. 0097specialize add_assoc (s*q)
  98. 0098apply add_assoc
  99. 0099congr
  100. 0100refl
  101. 0101symm
  102. 0102specialize mul_add (s)
  103. 0103specialize mul_add (p)
  104. 0104specialize mul_add (q)
  105. 0105apply mul_add
  106. 0106rewrite hindex at hd_witness_witness_right_left
  107. 0107rewrite hindex at hd_witness_witness_right_left
  108. 0108rewrite hindex at hd_witness_witness_right_left
  109. 0109rewrite hindex at hd_witness_witness_right_left
  110. 0110have hlength : p+S q=S(p+q)
  111. 0111simp
  112. 0112rewrite hlength
  113. 0113rewrite hlength
  114. 0114rewrite hlength
  115. 0115rewrite hlength
  116. 0116rewrite hlength
  117. 0117rewrite hlength
  118. 0118rewrite hlength
  119. 0119rewrite hlength
  120. 0120specialize signed_rectangular_slice_sum_successor_intro (F)
  121. 0121specialize signed_rectangular_slice_sum_successor_intro (o)
  122. 0122specialize signed_rectangular_slice_sum_successor_intro (s)
  123. 0123specialize signed_rectangular_slice_sum_successor_intro (p+q)
  124. 0124specialize signed_rectangular_slice_sum_successor_intro (x2)
  125. 0125specialize signed_rectangular_slice_sum_successor_intro (x1)
  126. 0126specialize signed_rectangular_slice_sum_successor_intro (c)
  127. 0127apply signed_rectangular_slice_sum_successor_intro
  128. 0128exact hp
  129. 0129exact hd_witness_witness_right_left
  130. 0130exact hnext