Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Exact expanded first-order arithmetic statement
forall F k l z. (exists dst_positive_code_pad_table dst_positive_scale_pad_table dst_negative_code_pad_table dst_negative_scale_pad_table. (((F) = (((((dst_positive_code_pad_table) + (dst_positive_scale_pad_table)) * S ((dst_positive_code_pad_table) + (dst_positive_scale_pad_table)) + ((dst_positive_scale_pad_table) + (dst_positive_scale_pad_table))) + (((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) * S ((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) + ((dst_negative_scale_pad_table) + (dst_negative_scale_pad_table)))) * S ((((dst_positive_code_pad_table) + (dst_positive_scale_pad_table)) * S ((dst_positive_code_pad_table) + (dst_positive_scale_pad_table)) + ((dst_positive_scale_pad_table) + (dst_positive_scale_pad_table))) + (((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) * S ((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) + ((dst_negative_scale_pad_table) + (dst_negative_scale_pad_table)))) + ((((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) * S ((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) + ((dst_negative_scale_pad_table) + (dst_negative_scale_pad_table))) + (((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) * S ((dst_negative_code_pad_table) + (dst_negative_scale_pad_table)) + ((dst_negative_scale_pad_table) + (dst_negative_scale_pad_table)))))) /\ (forall dst_index_pad_table. (exists pvs_le_gap_pad_tabledomain. pvs_le_gap_pad_tabledomain + (dst_index_pad_table) = (0)) -> exists dst_positive_pad_table dst_negative_pad_table dst_value_pad_table. ((((exists ff_h_pvs_pad_tableentrypositive. ff_h_pvs_pad_tableentrypositive + S (dst_positive_pad_table) = S ((S (dst_index_pad_table)) * dst_positive_scale_pad_table)) /\ exists ff_q_pvs_pad_tableentrypositive. dst_positive_code_pad_table = ff_q_pvs_pad_tableentrypositive * S ((S (dst_index_pad_table)) * dst_positive_scale_pad_table) + (dst_positive_pad_table))) /\ (((((exists ff_h_pvs_pad_tableentrynegative. ff_h_pvs_pad_tableentrynegative + S (dst_negative_pad_table) = S ((S (dst_index_pad_table)) * dst_negative_scale_pad_table)) /\ exists ff_q_pvs_pad_tableentrynegative. dst_negative_code_pad_table = ff_q_pvs_pad_tableentrynegative * S ((S (dst_index_pad_table)) * dst_negative_scale_pad_table) + (dst_negative_pad_table))) /\ (exists ge_balance_positive_pad_tableentryvalue ge_balance_negative_pad_tableentryvalue. (((((dst_value_pad_table) = 2 * (ge_balance_positive_pad_tableentryvalue) /\ (ge_balance_negative_pad_tableentryvalue) = 0) \/ exists ge_signed_half_pad_tableentryvaluedecode. (((dst_value_pad_table) = 2 * ge_signed_half_pad_tableentryvaluedecode + 1 /\ (ge_balance_positive_pad_tableentryvalue) = 0) /\ (ge_balance_negative_pad_tableentryvalue) = S ge_signed_half_pad_tableentryvaluedecode))) /\ ((dst_positive_pad_table) + ge_balance_negative_pad_tableentryvalue = (dst_negative_pad_table) + ge_balance_positive_pad_tableentryvalue))))))))) -> (exists pvs_le_gap_pad_bound. pvs_le_gap_pad_bound + (k) = (l)) -> (forall sfs_index_pad_zero_window sfs_value_pad_zero_window. (exists pvs_le_gap_pad_zero_windowlower. pvs_le_gap_pad_zero_windowlower + (k) = (sfs_index_pad_zero_window)) -> (exists pvs_gap_pad_zero_windowupper. pvs_gap_pad_zero_windowupper + S (sfs_index_pad_zero_window) = (l)) -> (exists dst_positive_code_pad_zero_windowentry dst_positive_scale_pad_zero_windowentry dst_negative_code_pad_zero_windowentry dst_negative_scale_pad_zero_windowentry dst_positive_pad_zero_windowentry dst_negative_pad_zero_windowentry. (((F) = (((((dst_positive_code_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry)) * S ((dst_positive_code_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry)) + ((dst_positive_scale_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry))) + (((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) * S ((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) + ((dst_negative_scale_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)))) * S ((((dst_positive_code_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry)) * S ((dst_positive_code_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry)) + ((dst_positive_scale_pad_zero_windowentry) + (dst_positive_scale_pad_zero_windowentry))) + (((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) * S ((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) + ((dst_negative_scale_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)))) + ((((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) * S ((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) + ((dst_negative_scale_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry))) + (((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) * S ((dst_negative_code_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)) + ((dst_negative_scale_pad_zero_windowentry) + (dst_negative_scale_pad_zero_windowentry)))))) /\ (((((exists ff_h_pvs_pad_zero_windowentrypositive. ff_h_pvs_pad_zero_windowentrypositive + S (dst_positive_pad_zero_windowentry) = S ((S (sfs_index_pad_zero_window)) * dst_positive_scale_pad_zero_windowentry)) /\ exists ff_q_pvs_pad_zero_windowentrypositive. dst_positive_code_pad_zero_windowentry = ff_q_pvs_pad_zero_windowentrypositive * S ((S (sfs_index_pad_zero_window)) * dst_positive_scale_pad_zero_windowentry) + (dst_positive_pad_zero_windowentry))) /\ (((((exists ff_h_pvs_pad_zero_windowentrynegative. ff_h_pvs_pad_zero_windowentrynegative + S (dst_negative_pad_zero_windowentry) = S ((S (sfs_index_pad_zero_window)) * dst_negative_scale_pad_zero_windowentry)) /\ exists ff_q_pvs_pad_zero_windowentrynegative. dst_negative_code_pad_zero_windowentry = ff_q_pvs_pad_zero_windowentrynegative * S ((S (sfs_index_pad_zero_window)) * dst_negative_scale_pad_zero_windowentry) + (dst_negative_pad_zero_windowentry))) /\ (exists ge_balance_positive_pad_zero_windowentryvalue ge_balance_negative_pad_zero_windowentryvalue. (((((sfs_value_pad_zero_window) = 2 * (ge_balance_positive_pad_zero_windowentryvalue) /\ (ge_balance_negative_pad_zero_windowentryvalue) = 0) \/ exists ge_signed_half_pad_zero_windowentryvaluedecode. (((sfs_value_pad_zero_window) = 2 * ge_signed_half_pad_zero_windowentryvaluedecode + 1 /\ (ge_balance_positive_pad_zero_windowentryvalue) = 0) /\ (ge_balance_negative_pad_zero_windowentryvalue) = S ge_signed_half_pad_zero_windowentryvaluedecode))) /\ ((dst_positive_pad_zero_windowentry) + ge_balance_negative_pad_zero_windowentryvalue = (dst_negative_pad_zero_windowentry) + ge_balance_positive_pad_zero_windowentryvalue))))))))) -> sfs_value_pad_zero_window=0) -> (((exists dst_positive_code_pad_short dst_positive_scale_pad_short dst_negative_code_pad_short dst_negative_scale_pad_short dst_positive_sum_pad_short dst_negative_sum_pad_short. (((F) = (((((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) * S ((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) + ((dst_positive_scale_pad_short) + (dst_positive_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))) * S ((((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) * S ((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) + ((dst_positive_scale_pad_short) + (dst_positive_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))) + ((((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))))) /\ (((exists fs_u_dst_pad_shortpositive fs_v_dst_pad_shortpositive. ((((exists fs_h_dst_pad_shortpositive_body_start. fs_h_dst_pad_shortpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_start. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_start * S ((S (0)) * fs_v_dst_pad_shortpositive) + (0))) /\ ((((exists fs_h_dst_pad_shortpositive_body_terminal. fs_h_dst_pad_shortpositive_body_terminal + S (dst_positive_sum_pad_short) = S ((S (k)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_terminal. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_terminal * S ((S (k)) * fs_v_dst_pad_shortpositive) + (dst_positive_sum_pad_short))) /\ forall fs_i_dst_pad_shortpositive_body_steps. (exists fs_lt_dst_pad_shortpositive_body_steps_bound. fs_lt_dst_pad_shortpositive_body_steps_bound + S fs_i_dst_pad_shortpositive_body_steps = k) -> exists fs_a_dst_pad_shortpositive_body_steps fs_r_dst_pad_shortpositive_body_steps fs_s_dst_pad_shortpositive_body_steps. ((((exists fs_h_dst_pad_shortpositive_body_steps_summand. fs_h_dst_pad_shortpositive_body_steps_summand + S (fs_a_dst_pad_shortpositive_body_steps) = S ((S (fs_i_dst_pad_shortpositive_body_steps)) * dst_positive_scale_pad_short)) /\ exists fs_q_dst_pad_shortpositive_body_steps_summand. dst_positive_code_pad_short = fs_q_dst_pad_shortpositive_body_steps_summand * S ((S (fs_i_dst_pad_shortpositive_body_steps)) * dst_positive_scale_pad_short) + (fs_a_dst_pad_shortpositive_body_steps))) /\ ((((exists fs_h_dst_pad_shortpositive_body_steps_partial. fs_h_dst_pad_shortpositive_body_steps_partial + S (fs_r_dst_pad_shortpositive_body_steps) = S ((S (fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_steps_partial. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_steps_partial * S ((S (fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive) + (fs_r_dst_pad_shortpositive_body_steps))) /\ ((((exists fs_h_dst_pad_shortpositive_body_steps_successor. fs_h_dst_pad_shortpositive_body_steps_successor + S (fs_s_dst_pad_shortpositive_body_steps) = S ((S (S fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_steps_successor. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_steps_successor * S ((S (S fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive) + (fs_s_dst_pad_shortpositive_body_steps))) /\ fs_s_dst_pad_shortpositive_body_steps = fs_r_dst_pad_shortpositive_body_steps + fs_a_dst_pad_shortpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_shortnegative fs_v_dst_pad_shortnegative. ((((exists fs_h_dst_pad_shortnegative_body_start. fs_h_dst_pad_shortnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_start. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_start * S ((S (0)) * fs_v_dst_pad_shortnegative) + (0))) /\ ((((exists fs_h_dst_pad_shortnegative_body_terminal. fs_h_dst_pad_shortnegative_body_terminal + S (dst_negative_sum_pad_short) = S ((S (k)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_terminal. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_terminal * S ((S (k)) * fs_v_dst_pad_shortnegative) + (dst_negative_sum_pad_short))) /\ forall fs_i_dst_pad_shortnegative_body_steps. (exists fs_lt_dst_pad_shortnegative_body_steps_bound. fs_lt_dst_pad_shortnegative_body_steps_bound + S fs_i_dst_pad_shortnegative_body_steps = k) -> exists fs_a_dst_pad_shortnegative_body_steps fs_r_dst_pad_shortnegative_body_steps fs_s_dst_pad_shortnegative_body_steps. ((((exists fs_h_dst_pad_shortnegative_body_steps_summand. fs_h_dst_pad_shortnegative_body_steps_summand + S (fs_a_dst_pad_shortnegative_body_steps) = S ((S (fs_i_dst_pad_shortnegative_body_steps)) * dst_negative_scale_pad_short)) /\ exists fs_q_dst_pad_shortnegative_body_steps_summand. dst_negative_code_pad_short = fs_q_dst_pad_shortnegative_body_steps_summand * S ((S (fs_i_dst_pad_shortnegative_body_steps)) * dst_negative_scale_pad_short) + (fs_a_dst_pad_shortnegative_body_steps))) /\ ((((exists fs_h_dst_pad_shortnegative_body_steps_partial. fs_h_dst_pad_shortnegative_body_steps_partial + S (fs_r_dst_pad_shortnegative_body_steps) = S ((S (fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_steps_partial. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_steps_partial * S ((S (fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative) + (fs_r_dst_pad_shortnegative_body_steps))) /\ ((((exists fs_h_dst_pad_shortnegative_body_steps_successor. fs_h_dst_pad_shortnegative_body_steps_successor + S (fs_s_dst_pad_shortnegative_body_steps) = S ((S (S fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_steps_successor. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_steps_successor * S ((S (S fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative) + (fs_s_dst_pad_shortnegative_body_steps))) /\ fs_s_dst_pad_shortnegative_body_steps = fs_r_dst_pad_shortnegative_body_steps + fs_a_dst_pad_shortnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_shortresult ge_balance_negative_pad_shortresult. (((((z) = 2 * (ge_balance_positive_pad_shortresult) /\ (ge_balance_negative_pad_shortresult) = 0) \/ exists ge_signed_half_pad_shortresultdecode. (((z) = 2 * ge_signed_half_pad_shortresultdecode + 1 /\ (ge_balance_positive_pad_shortresult) = 0) /\ (ge_balance_negative_pad_shortresult) = S ge_signed_half_pad_shortresultdecode))) /\ ((dst_positive_sum_pad_short) + ge_balance_negative_pad_shortresult = (dst_negative_sum_pad_short) + ge_balance_positive_pad_shortresult))))))))) -> (exists dst_positive_code_pad_long dst_positive_scale_pad_long dst_negative_code_pad_long dst_negative_scale_pad_long dst_positive_sum_pad_long dst_negative_sum_pad_long. (((F) = (((((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) * S ((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) + ((dst_positive_scale_pad_long) + (dst_positive_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))) * S ((((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) * S ((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) + ((dst_positive_scale_pad_long) + (dst_positive_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))) + ((((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))))) /\ (((exists fs_u_dst_pad_longpositive fs_v_dst_pad_longpositive. ((((exists fs_h_dst_pad_longpositive_body_start. fs_h_dst_pad_longpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_start. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_start * S ((S (0)) * fs_v_dst_pad_longpositive) + (0))) /\ ((((exists fs_h_dst_pad_longpositive_body_terminal. fs_h_dst_pad_longpositive_body_terminal + S (dst_positive_sum_pad_long) = S ((S (l)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_terminal. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_terminal * S ((S (l)) * fs_v_dst_pad_longpositive) + (dst_positive_sum_pad_long))) /\ forall fs_i_dst_pad_longpositive_body_steps. (exists fs_lt_dst_pad_longpositive_body_steps_bound. fs_lt_dst_pad_longpositive_body_steps_bound + S fs_i_dst_pad_longpositive_body_steps = l) -> exists fs_a_dst_pad_longpositive_body_steps fs_r_dst_pad_longpositive_body_steps fs_s_dst_pad_longpositive_body_steps. ((((exists fs_h_dst_pad_longpositive_body_steps_summand. fs_h_dst_pad_longpositive_body_steps_summand + S (fs_a_dst_pad_longpositive_body_steps) = S ((S (fs_i_dst_pad_longpositive_body_steps)) * dst_positive_scale_pad_long)) /\ exists fs_q_dst_pad_longpositive_body_steps_summand. dst_positive_code_pad_long = fs_q_dst_pad_longpositive_body_steps_summand * S ((S (fs_i_dst_pad_longpositive_body_steps)) * dst_positive_scale_pad_long) + (fs_a_dst_pad_longpositive_body_steps))) /\ ((((exists fs_h_dst_pad_longpositive_body_steps_partial. fs_h_dst_pad_longpositive_body_steps_partial + S (fs_r_dst_pad_longpositive_body_steps) = S ((S (fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_steps_partial. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_steps_partial * S ((S (fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive) + (fs_r_dst_pad_longpositive_body_steps))) /\ ((((exists fs_h_dst_pad_longpositive_body_steps_successor. fs_h_dst_pad_longpositive_body_steps_successor + S (fs_s_dst_pad_longpositive_body_steps) = S ((S (S fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_steps_successor. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_steps_successor * S ((S (S fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive) + (fs_s_dst_pad_longpositive_body_steps))) /\ fs_s_dst_pad_longpositive_body_steps = fs_r_dst_pad_longpositive_body_steps + fs_a_dst_pad_longpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_longnegative fs_v_dst_pad_longnegative. ((((exists fs_h_dst_pad_longnegative_body_start. fs_h_dst_pad_longnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_start. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_start * S ((S (0)) * fs_v_dst_pad_longnegative) + (0))) /\ ((((exists fs_h_dst_pad_longnegative_body_terminal. fs_h_dst_pad_longnegative_body_terminal + S (dst_negative_sum_pad_long) = S ((S (l)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_terminal. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_terminal * S ((S (l)) * fs_v_dst_pad_longnegative) + (dst_negative_sum_pad_long))) /\ forall fs_i_dst_pad_longnegative_body_steps. (exists fs_lt_dst_pad_longnegative_body_steps_bound. fs_lt_dst_pad_longnegative_body_steps_bound + S fs_i_dst_pad_longnegative_body_steps = l) -> exists fs_a_dst_pad_longnegative_body_steps fs_r_dst_pad_longnegative_body_steps fs_s_dst_pad_longnegative_body_steps. ((((exists fs_h_dst_pad_longnegative_body_steps_summand. fs_h_dst_pad_longnegative_body_steps_summand + S (fs_a_dst_pad_longnegative_body_steps) = S ((S (fs_i_dst_pad_longnegative_body_steps)) * dst_negative_scale_pad_long)) /\ exists fs_q_dst_pad_longnegative_body_steps_summand. dst_negative_code_pad_long = fs_q_dst_pad_longnegative_body_steps_summand * S ((S (fs_i_dst_pad_longnegative_body_steps)) * dst_negative_scale_pad_long) + (fs_a_dst_pad_longnegative_body_steps))) /\ ((((exists fs_h_dst_pad_longnegative_body_steps_partial. fs_h_dst_pad_longnegative_body_steps_partial + S (fs_r_dst_pad_longnegative_body_steps) = S ((S (fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_steps_partial. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_steps_partial * S ((S (fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative) + (fs_r_dst_pad_longnegative_body_steps))) /\ ((((exists fs_h_dst_pad_longnegative_body_steps_successor. fs_h_dst_pad_longnegative_body_steps_successor + S (fs_s_dst_pad_longnegative_body_steps) = S ((S (S fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_steps_successor. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_steps_successor * S ((S (S fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative) + (fs_s_dst_pad_longnegative_body_steps))) /\ fs_s_dst_pad_longnegative_body_steps = fs_r_dst_pad_longnegative_body_steps + fs_a_dst_pad_longnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_longresult ge_balance_negative_pad_longresult. (((((z) = 2 * (ge_balance_positive_pad_longresult) /\ (ge_balance_negative_pad_longresult) = 0) \/ exists ge_signed_half_pad_longresultdecode. (((z) = 2 * ge_signed_half_pad_longresultdecode + 1 /\ (ge_balance_positive_pad_longresult) = 0) /\ (ge_balance_negative_pad_longresult) = S ge_signed_half_pad_longresultdecode))) /\ ((dst_positive_sum_pad_long) + ge_balance_negative_pad_longresult = (dst_negative_sum_pad_long) + ge_balance_positive_pad_longresult)))))))))) /\ ((exists dst_positive_code_pad_long dst_positive_scale_pad_long dst_negative_code_pad_long dst_negative_scale_pad_long dst_positive_sum_pad_long dst_negative_sum_pad_long. (((F) = (((((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) * S ((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) + ((dst_positive_scale_pad_long) + (dst_positive_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))) * S ((((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) * S ((dst_positive_code_pad_long) + (dst_positive_scale_pad_long)) + ((dst_positive_scale_pad_long) + (dst_positive_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))) + ((((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long))) + (((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) * S ((dst_negative_code_pad_long) + (dst_negative_scale_pad_long)) + ((dst_negative_scale_pad_long) + (dst_negative_scale_pad_long)))))) /\ (((exists fs_u_dst_pad_longpositive fs_v_dst_pad_longpositive. ((((exists fs_h_dst_pad_longpositive_body_start. fs_h_dst_pad_longpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_start. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_start * S ((S (0)) * fs_v_dst_pad_longpositive) + (0))) /\ ((((exists fs_h_dst_pad_longpositive_body_terminal. fs_h_dst_pad_longpositive_body_terminal + S (dst_positive_sum_pad_long) = S ((S (l)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_terminal. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_terminal * S ((S (l)) * fs_v_dst_pad_longpositive) + (dst_positive_sum_pad_long))) /\ forall fs_i_dst_pad_longpositive_body_steps. (exists fs_lt_dst_pad_longpositive_body_steps_bound. fs_lt_dst_pad_longpositive_body_steps_bound + S fs_i_dst_pad_longpositive_body_steps = l) -> exists fs_a_dst_pad_longpositive_body_steps fs_r_dst_pad_longpositive_body_steps fs_s_dst_pad_longpositive_body_steps. ((((exists fs_h_dst_pad_longpositive_body_steps_summand. fs_h_dst_pad_longpositive_body_steps_summand + S (fs_a_dst_pad_longpositive_body_steps) = S ((S (fs_i_dst_pad_longpositive_body_steps)) * dst_positive_scale_pad_long)) /\ exists fs_q_dst_pad_longpositive_body_steps_summand. dst_positive_code_pad_long = fs_q_dst_pad_longpositive_body_steps_summand * S ((S (fs_i_dst_pad_longpositive_body_steps)) * dst_positive_scale_pad_long) + (fs_a_dst_pad_longpositive_body_steps))) /\ ((((exists fs_h_dst_pad_longpositive_body_steps_partial. fs_h_dst_pad_longpositive_body_steps_partial + S (fs_r_dst_pad_longpositive_body_steps) = S ((S (fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_steps_partial. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_steps_partial * S ((S (fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive) + (fs_r_dst_pad_longpositive_body_steps))) /\ ((((exists fs_h_dst_pad_longpositive_body_steps_successor. fs_h_dst_pad_longpositive_body_steps_successor + S (fs_s_dst_pad_longpositive_body_steps) = S ((S (S fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive)) /\ exists fs_q_dst_pad_longpositive_body_steps_successor. fs_u_dst_pad_longpositive = fs_q_dst_pad_longpositive_body_steps_successor * S ((S (S fs_i_dst_pad_longpositive_body_steps)) * fs_v_dst_pad_longpositive) + (fs_s_dst_pad_longpositive_body_steps))) /\ fs_s_dst_pad_longpositive_body_steps = fs_r_dst_pad_longpositive_body_steps + fs_a_dst_pad_longpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_longnegative fs_v_dst_pad_longnegative. ((((exists fs_h_dst_pad_longnegative_body_start. fs_h_dst_pad_longnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_start. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_start * S ((S (0)) * fs_v_dst_pad_longnegative) + (0))) /\ ((((exists fs_h_dst_pad_longnegative_body_terminal. fs_h_dst_pad_longnegative_body_terminal + S (dst_negative_sum_pad_long) = S ((S (l)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_terminal. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_terminal * S ((S (l)) * fs_v_dst_pad_longnegative) + (dst_negative_sum_pad_long))) /\ forall fs_i_dst_pad_longnegative_body_steps. (exists fs_lt_dst_pad_longnegative_body_steps_bound. fs_lt_dst_pad_longnegative_body_steps_bound + S fs_i_dst_pad_longnegative_body_steps = l) -> exists fs_a_dst_pad_longnegative_body_steps fs_r_dst_pad_longnegative_body_steps fs_s_dst_pad_longnegative_body_steps. ((((exists fs_h_dst_pad_longnegative_body_steps_summand. fs_h_dst_pad_longnegative_body_steps_summand + S (fs_a_dst_pad_longnegative_body_steps) = S ((S (fs_i_dst_pad_longnegative_body_steps)) * dst_negative_scale_pad_long)) /\ exists fs_q_dst_pad_longnegative_body_steps_summand. dst_negative_code_pad_long = fs_q_dst_pad_longnegative_body_steps_summand * S ((S (fs_i_dst_pad_longnegative_body_steps)) * dst_negative_scale_pad_long) + (fs_a_dst_pad_longnegative_body_steps))) /\ ((((exists fs_h_dst_pad_longnegative_body_steps_partial. fs_h_dst_pad_longnegative_body_steps_partial + S (fs_r_dst_pad_longnegative_body_steps) = S ((S (fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_steps_partial. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_steps_partial * S ((S (fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative) + (fs_r_dst_pad_longnegative_body_steps))) /\ ((((exists fs_h_dst_pad_longnegative_body_steps_successor. fs_h_dst_pad_longnegative_body_steps_successor + S (fs_s_dst_pad_longnegative_body_steps) = S ((S (S fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative)) /\ exists fs_q_dst_pad_longnegative_body_steps_successor. fs_u_dst_pad_longnegative = fs_q_dst_pad_longnegative_body_steps_successor * S ((S (S fs_i_dst_pad_longnegative_body_steps)) * fs_v_dst_pad_longnegative) + (fs_s_dst_pad_longnegative_body_steps))) /\ fs_s_dst_pad_longnegative_body_steps = fs_r_dst_pad_longnegative_body_steps + fs_a_dst_pad_longnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_longresult ge_balance_negative_pad_longresult. (((((z) = 2 * (ge_balance_positive_pad_longresult) /\ (ge_balance_negative_pad_longresult) = 0) \/ exists ge_signed_half_pad_longresultdecode. (((z) = 2 * ge_signed_half_pad_longresultdecode + 1 /\ (ge_balance_positive_pad_longresult) = 0) /\ (ge_balance_negative_pad_longresult) = S ge_signed_half_pad_longresultdecode))) /\ ((dst_positive_sum_pad_long) + ge_balance_negative_pad_longresult = (dst_negative_sum_pad_long) + ge_balance_positive_pad_longresult))))))))) -> (exists dst_positive_code_pad_short dst_positive_scale_pad_short dst_negative_code_pad_short dst_negative_scale_pad_short dst_positive_sum_pad_short dst_negative_sum_pad_short. (((F) = (((((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) * S ((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) + ((dst_positive_scale_pad_short) + (dst_positive_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))) * S ((((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) * S ((dst_positive_code_pad_short) + (dst_positive_scale_pad_short)) + ((dst_positive_scale_pad_short) + (dst_positive_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))) + ((((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short))) + (((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) * S ((dst_negative_code_pad_short) + (dst_negative_scale_pad_short)) + ((dst_negative_scale_pad_short) + (dst_negative_scale_pad_short)))))) /\ (((exists fs_u_dst_pad_shortpositive fs_v_dst_pad_shortpositive. ((((exists fs_h_dst_pad_shortpositive_body_start. fs_h_dst_pad_shortpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_start. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_start * S ((S (0)) * fs_v_dst_pad_shortpositive) + (0))) /\ ((((exists fs_h_dst_pad_shortpositive_body_terminal. fs_h_dst_pad_shortpositive_body_terminal + S (dst_positive_sum_pad_short) = S ((S (k)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_terminal. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_terminal * S ((S (k)) * fs_v_dst_pad_shortpositive) + (dst_positive_sum_pad_short))) /\ forall fs_i_dst_pad_shortpositive_body_steps. (exists fs_lt_dst_pad_shortpositive_body_steps_bound. fs_lt_dst_pad_shortpositive_body_steps_bound + S fs_i_dst_pad_shortpositive_body_steps = k) -> exists fs_a_dst_pad_shortpositive_body_steps fs_r_dst_pad_shortpositive_body_steps fs_s_dst_pad_shortpositive_body_steps. ((((exists fs_h_dst_pad_shortpositive_body_steps_summand. fs_h_dst_pad_shortpositive_body_steps_summand + S (fs_a_dst_pad_shortpositive_body_steps) = S ((S (fs_i_dst_pad_shortpositive_body_steps)) * dst_positive_scale_pad_short)) /\ exists fs_q_dst_pad_shortpositive_body_steps_summand. dst_positive_code_pad_short = fs_q_dst_pad_shortpositive_body_steps_summand * S ((S (fs_i_dst_pad_shortpositive_body_steps)) * dst_positive_scale_pad_short) + (fs_a_dst_pad_shortpositive_body_steps))) /\ ((((exists fs_h_dst_pad_shortpositive_body_steps_partial. fs_h_dst_pad_shortpositive_body_steps_partial + S (fs_r_dst_pad_shortpositive_body_steps) = S ((S (fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_steps_partial. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_steps_partial * S ((S (fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive) + (fs_r_dst_pad_shortpositive_body_steps))) /\ ((((exists fs_h_dst_pad_shortpositive_body_steps_successor. fs_h_dst_pad_shortpositive_body_steps_successor + S (fs_s_dst_pad_shortpositive_body_steps) = S ((S (S fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive)) /\ exists fs_q_dst_pad_shortpositive_body_steps_successor. fs_u_dst_pad_shortpositive = fs_q_dst_pad_shortpositive_body_steps_successor * S ((S (S fs_i_dst_pad_shortpositive_body_steps)) * fs_v_dst_pad_shortpositive) + (fs_s_dst_pad_shortpositive_body_steps))) /\ fs_s_dst_pad_shortpositive_body_steps = fs_r_dst_pad_shortpositive_body_steps + fs_a_dst_pad_shortpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_shortnegative fs_v_dst_pad_shortnegative. ((((exists fs_h_dst_pad_shortnegative_body_start. fs_h_dst_pad_shortnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_start. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_start * S ((S (0)) * fs_v_dst_pad_shortnegative) + (0))) /\ ((((exists fs_h_dst_pad_shortnegative_body_terminal. fs_h_dst_pad_shortnegative_body_terminal + S (dst_negative_sum_pad_short) = S ((S (k)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_terminal. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_terminal * S ((S (k)) * fs_v_dst_pad_shortnegative) + (dst_negative_sum_pad_short))) /\ forall fs_i_dst_pad_shortnegative_body_steps. (exists fs_lt_dst_pad_shortnegative_body_steps_bound. fs_lt_dst_pad_shortnegative_body_steps_bound + S fs_i_dst_pad_shortnegative_body_steps = k) -> exists fs_a_dst_pad_shortnegative_body_steps fs_r_dst_pad_shortnegative_body_steps fs_s_dst_pad_shortnegative_body_steps. ((((exists fs_h_dst_pad_shortnegative_body_steps_summand. fs_h_dst_pad_shortnegative_body_steps_summand + S (fs_a_dst_pad_shortnegative_body_steps) = S ((S (fs_i_dst_pad_shortnegative_body_steps)) * dst_negative_scale_pad_short)) /\ exists fs_q_dst_pad_shortnegative_body_steps_summand. dst_negative_code_pad_short = fs_q_dst_pad_shortnegative_body_steps_summand * S ((S (fs_i_dst_pad_shortnegative_body_steps)) * dst_negative_scale_pad_short) + (fs_a_dst_pad_shortnegative_body_steps))) /\ ((((exists fs_h_dst_pad_shortnegative_body_steps_partial. fs_h_dst_pad_shortnegative_body_steps_partial + S (fs_r_dst_pad_shortnegative_body_steps) = S ((S (fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_steps_partial. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_steps_partial * S ((S (fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative) + (fs_r_dst_pad_shortnegative_body_steps))) /\ ((((exists fs_h_dst_pad_shortnegative_body_steps_successor. fs_h_dst_pad_shortnegative_body_steps_successor + S (fs_s_dst_pad_shortnegative_body_steps) = S ((S (S fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative)) /\ exists fs_q_dst_pad_shortnegative_body_steps_successor. fs_u_dst_pad_shortnegative = fs_q_dst_pad_shortnegative_body_steps_successor * S ((S (S fs_i_dst_pad_shortnegative_body_steps)) * fs_v_dst_pad_shortnegative) + (fs_s_dst_pad_shortnegative_body_steps))) /\ fs_s_dst_pad_shortnegative_body_steps = fs_r_dst_pad_shortnegative_body_steps + fs_a_dst_pad_shortnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_shortresult ge_balance_negative_pad_shortresult. (((((z) = 2 * (ge_balance_positive_pad_shortresult) /\ (ge_balance_negative_pad_shortresult) = 0) \/ exists ge_signed_half_pad_shortresultdecode. (((z) = 2 * ge_signed_half_pad_shortresultdecode + 1 /\ (ge_balance_positive_pad_shortresult) = 0) /\ (ge_balance_negative_pad_shortresult) = S ge_signed_half_pad_shortresultdecode))) /\ ((dst_positive_sum_pad_short) + ge_balance_negative_pad_shortresult = (dst_negative_sum_pad_short) + ge_balance_positive_pad_shortresult)))))))))))Constructive proof overview
Generated structural guide
Actually construct either fold from the other across a proved zero tail; both implications retain real finite-sum witnesses.
The unchanged tactic script uses 2 declared prerequisites and contains 53 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
arithmetic_signed_sum_exists Alpha theorem; checked-use authorized ZS0004 signed_prefix_sum_zero_tailDirect 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
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (1)
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–8
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
split
03Fix variables and assumptionsL9–9
Work with arbitrary variables or the premises of the current implication.
- L9
intro hs
04Establish htL10–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply arithmetic signed sum exists.
05Separate the logical casesL16–16
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
cases ht
06Establish heL17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed prefix sum zero tail.
- L17
have he : x=z - L18
symm - L19
specialize signed_prefix_sum_zero_tail (F) - L20
specialize signed_prefix_sum_zero_tail (k) - L21
specialize signed_prefix_sum_zero_tail (l) - L22
specialize signed_prefix_sum_zero_tail (z) - L23
specialize signed_prefix_sum_zero_tail (x) - L24
apply signed_prefix_sum_zero_tail - L25
exact hkl - L26
exact hz
07Use earlier factsL27–28
08Calculate and transport equalitiesL29–30
09Use earlier factsL31–31
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L31
exact ht_witness
10Fix variables and assumptionsL32–32
Work with arbitrary variables or the premises of the current implication.
- L32
intro hs
11Establish htL33–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply arithmetic signed sum exists.
12Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
cases ht
13Establish heL40–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed prefix sum zero tail.
- L40
have he : x=z - L41
specialize signed_prefix_sum_zero_tail (F) - L42
specialize signed_prefix_sum_zero_tail (k) - L43
specialize signed_prefix_sum_zero_tail (l) - L44
specialize signed_prefix_sum_zero_tail (x) - L45
specialize signed_prefix_sum_zero_tail (z) - L46
apply signed_prefix_sum_zero_tail - L47
exact hkl - L48
exact hz - L49
exact ht_witness
14Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hs
15Calculate and transport equalitiesL51–52
16Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L53
exact ht_witness
Original exact command ledger · 53 lines
- 0001
intro F - 0002
intro k - 0003
intro l - 0004
intro z - 0005
intro hF - 0006
intro hkl - 0007
intro hz - 0008
split - 0009
intro hs - 0010
have ht : exists a. (exists dst_positive_code_pad_forward_construct dst_positive_scale_pad_forward_construct dst_negative_code_pad_forward_construct dst_negative_scale_pad_forward_construct dst_positive_sum_pad_forward_construct dst_negative_sum_pad_forward_construct. (((F) = (((((dst_positive_code_pad_forward_construct) + (dst_positive_scale_pad_forward_construct)) * S ((dst_positive_code_pad_forward_construct) + (dst_positive_scale_pad_forward_construct)) + ((dst_positive_scale_pad_forward_construct) + (dst_positive_scale_pad_forward_construct))) + (((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) * S ((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) + ((dst_negative_scale_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)))) * S ((((dst_positive_code_pad_forward_construct) + (dst_positive_scale_pad_forward_construct)) * S ((dst_positive_code_pad_forward_construct) + (dst_positive_scale_pad_forward_construct)) + ((dst_positive_scale_pad_forward_construct) + (dst_positive_scale_pad_forward_construct))) + (((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) * S ((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) + ((dst_negative_scale_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)))) + ((((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) * S ((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) + ((dst_negative_scale_pad_forward_construct) + (dst_negative_scale_pad_forward_construct))) + (((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) * S ((dst_negative_code_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)) + ((dst_negative_scale_pad_forward_construct) + (dst_negative_scale_pad_forward_construct)))))) /\ (((exists fs_u_dst_pad_forward_constructpositive fs_v_dst_pad_forward_constructpositive. ((((exists fs_h_dst_pad_forward_constructpositive_body_start. fs_h_dst_pad_forward_constructpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_forward_constructpositive)) /\ exists fs_q_dst_pad_forward_constructpositive_body_start. fs_u_dst_pad_forward_constructpositive = fs_q_dst_pad_forward_constructpositive_body_start * S ((S (0)) * fs_v_dst_pad_forward_constructpositive) + (0))) /\ ((((exists fs_h_dst_pad_forward_constructpositive_body_terminal. fs_h_dst_pad_forward_constructpositive_body_terminal + S (dst_positive_sum_pad_forward_construct) = S ((S (l)) * fs_v_dst_pad_forward_constructpositive)) /\ exists fs_q_dst_pad_forward_constructpositive_body_terminal. fs_u_dst_pad_forward_constructpositive = fs_q_dst_pad_forward_constructpositive_body_terminal * S ((S (l)) * fs_v_dst_pad_forward_constructpositive) + (dst_positive_sum_pad_forward_construct))) /\ forall fs_i_dst_pad_forward_constructpositive_body_steps. (exists fs_lt_dst_pad_forward_constructpositive_body_steps_bound. fs_lt_dst_pad_forward_constructpositive_body_steps_bound + S fs_i_dst_pad_forward_constructpositive_body_steps = l) -> exists fs_a_dst_pad_forward_constructpositive_body_steps fs_r_dst_pad_forward_constructpositive_body_steps fs_s_dst_pad_forward_constructpositive_body_steps. ((((exists fs_h_dst_pad_forward_constructpositive_body_steps_summand. fs_h_dst_pad_forward_constructpositive_body_steps_summand + S (fs_a_dst_pad_forward_constructpositive_body_steps) = S ((S (fs_i_dst_pad_forward_constructpositive_body_steps)) * dst_positive_scale_pad_forward_construct)) /\ exists fs_q_dst_pad_forward_constructpositive_body_steps_summand. dst_positive_code_pad_forward_construct = fs_q_dst_pad_forward_constructpositive_body_steps_summand * S ((S (fs_i_dst_pad_forward_constructpositive_body_steps)) * dst_positive_scale_pad_forward_construct) + (fs_a_dst_pad_forward_constructpositive_body_steps))) /\ ((((exists fs_h_dst_pad_forward_constructpositive_body_steps_partial. fs_h_dst_pad_forward_constructpositive_body_steps_partial + S (fs_r_dst_pad_forward_constructpositive_body_steps) = S ((S (fs_i_dst_pad_forward_constructpositive_body_steps)) * fs_v_dst_pad_forward_constructpositive)) /\ exists fs_q_dst_pad_forward_constructpositive_body_steps_partial. fs_u_dst_pad_forward_constructpositive = fs_q_dst_pad_forward_constructpositive_body_steps_partial * S ((S (fs_i_dst_pad_forward_constructpositive_body_steps)) * fs_v_dst_pad_forward_constructpositive) + (fs_r_dst_pad_forward_constructpositive_body_steps))) /\ ((((exists fs_h_dst_pad_forward_constructpositive_body_steps_successor. fs_h_dst_pad_forward_constructpositive_body_steps_successor + S (fs_s_dst_pad_forward_constructpositive_body_steps) = S ((S (S fs_i_dst_pad_forward_constructpositive_body_steps)) * fs_v_dst_pad_forward_constructpositive)) /\ exists fs_q_dst_pad_forward_constructpositive_body_steps_successor. fs_u_dst_pad_forward_constructpositive = fs_q_dst_pad_forward_constructpositive_body_steps_successor * S ((S (S fs_i_dst_pad_forward_constructpositive_body_steps)) * fs_v_dst_pad_forward_constructpositive) + (fs_s_dst_pad_forward_constructpositive_body_steps))) /\ fs_s_dst_pad_forward_constructpositive_body_steps = fs_r_dst_pad_forward_constructpositive_body_steps + fs_a_dst_pad_forward_constructpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_forward_constructnegative fs_v_dst_pad_forward_constructnegative. ((((exists fs_h_dst_pad_forward_constructnegative_body_start. fs_h_dst_pad_forward_constructnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_forward_constructnegative)) /\ exists fs_q_dst_pad_forward_constructnegative_body_start. fs_u_dst_pad_forward_constructnegative = fs_q_dst_pad_forward_constructnegative_body_start * S ((S (0)) * fs_v_dst_pad_forward_constructnegative) + (0))) /\ ((((exists fs_h_dst_pad_forward_constructnegative_body_terminal. fs_h_dst_pad_forward_constructnegative_body_terminal + S (dst_negative_sum_pad_forward_construct) = S ((S (l)) * fs_v_dst_pad_forward_constructnegative)) /\ exists fs_q_dst_pad_forward_constructnegative_body_terminal. fs_u_dst_pad_forward_constructnegative = fs_q_dst_pad_forward_constructnegative_body_terminal * S ((S (l)) * fs_v_dst_pad_forward_constructnegative) + (dst_negative_sum_pad_forward_construct))) /\ forall fs_i_dst_pad_forward_constructnegative_body_steps. (exists fs_lt_dst_pad_forward_constructnegative_body_steps_bound. fs_lt_dst_pad_forward_constructnegative_body_steps_bound + S fs_i_dst_pad_forward_constructnegative_body_steps = l) -> exists fs_a_dst_pad_forward_constructnegative_body_steps fs_r_dst_pad_forward_constructnegative_body_steps fs_s_dst_pad_forward_constructnegative_body_steps. ((((exists fs_h_dst_pad_forward_constructnegative_body_steps_summand. fs_h_dst_pad_forward_constructnegative_body_steps_summand + S (fs_a_dst_pad_forward_constructnegative_body_steps) = S ((S (fs_i_dst_pad_forward_constructnegative_body_steps)) * dst_negative_scale_pad_forward_construct)) /\ exists fs_q_dst_pad_forward_constructnegative_body_steps_summand. dst_negative_code_pad_forward_construct = fs_q_dst_pad_forward_constructnegative_body_steps_summand * S ((S (fs_i_dst_pad_forward_constructnegative_body_steps)) * dst_negative_scale_pad_forward_construct) + (fs_a_dst_pad_forward_constructnegative_body_steps))) /\ ((((exists fs_h_dst_pad_forward_constructnegative_body_steps_partial. fs_h_dst_pad_forward_constructnegative_body_steps_partial + S (fs_r_dst_pad_forward_constructnegative_body_steps) = S ((S (fs_i_dst_pad_forward_constructnegative_body_steps)) * fs_v_dst_pad_forward_constructnegative)) /\ exists fs_q_dst_pad_forward_constructnegative_body_steps_partial. fs_u_dst_pad_forward_constructnegative = fs_q_dst_pad_forward_constructnegative_body_steps_partial * S ((S (fs_i_dst_pad_forward_constructnegative_body_steps)) * fs_v_dst_pad_forward_constructnegative) + (fs_r_dst_pad_forward_constructnegative_body_steps))) /\ ((((exists fs_h_dst_pad_forward_constructnegative_body_steps_successor. fs_h_dst_pad_forward_constructnegative_body_steps_successor + S (fs_s_dst_pad_forward_constructnegative_body_steps) = S ((S (S fs_i_dst_pad_forward_constructnegative_body_steps)) * fs_v_dst_pad_forward_constructnegative)) /\ exists fs_q_dst_pad_forward_constructnegative_body_steps_successor. fs_u_dst_pad_forward_constructnegative = fs_q_dst_pad_forward_constructnegative_body_steps_successor * S ((S (S fs_i_dst_pad_forward_constructnegative_body_steps)) * fs_v_dst_pad_forward_constructnegative) + (fs_s_dst_pad_forward_constructnegative_body_steps))) /\ fs_s_dst_pad_forward_constructnegative_body_steps = fs_r_dst_pad_forward_constructnegative_body_steps + fs_a_dst_pad_forward_constructnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_forward_constructresult ge_balance_negative_pad_forward_constructresult. (((((a) = 2 * (ge_balance_positive_pad_forward_constructresult) /\ (ge_balance_negative_pad_forward_constructresult) = 0) \/ exists ge_signed_half_pad_forward_constructresultdecode. (((a) = 2 * ge_signed_half_pad_forward_constructresultdecode + 1 /\ (ge_balance_positive_pad_forward_constructresult) = 0) /\ (ge_balance_negative_pad_forward_constructresult) = S ge_signed_half_pad_forward_constructresultdecode))) /\ ((dst_positive_sum_pad_forward_construct) + ge_balance_negative_pad_forward_constructresult = (dst_negative_sum_pad_forward_construct) + ge_balance_positive_pad_forward_constructresult))))))))) - 0011
specialize arithmetic_signed_sum_exists (0) - 0012
specialize arithmetic_signed_sum_exists (F) - 0013
specialize arithmetic_signed_sum_exists (l) - 0014
apply arithmetic_signed_sum_exists - 0015
exact hF - 0016
cases ht - 0017
have he : x=z - 0018
symm - 0019
specialize signed_prefix_sum_zero_tail (F) - 0020
specialize signed_prefix_sum_zero_tail (k) - 0021
specialize signed_prefix_sum_zero_tail (l) - 0022
specialize signed_prefix_sum_zero_tail (z) - 0023
specialize signed_prefix_sum_zero_tail (x) - 0024
apply signed_prefix_sum_zero_tail - 0025
exact hkl - 0026
exact hz - 0027
exact hs - 0028
exact ht_witness - 0029
rewrite he at ht_witness - 0030
rewrite he at ht_witness - 0031
exact ht_witness - 0032
intro hs - 0033
have ht : exists a. (exists dst_positive_code_pad_reverse_construct dst_positive_scale_pad_reverse_construct dst_negative_code_pad_reverse_construct dst_negative_scale_pad_reverse_construct dst_positive_sum_pad_reverse_construct dst_negative_sum_pad_reverse_construct. (((F) = (((((dst_positive_code_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct)) * S ((dst_positive_code_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct)) + ((dst_positive_scale_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct))) + (((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) * S ((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) + ((dst_negative_scale_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)))) * S ((((dst_positive_code_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct)) * S ((dst_positive_code_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct)) + ((dst_positive_scale_pad_reverse_construct) + (dst_positive_scale_pad_reverse_construct))) + (((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) * S ((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) + ((dst_negative_scale_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)))) + ((((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) * S ((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) + ((dst_negative_scale_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct))) + (((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) * S ((dst_negative_code_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)) + ((dst_negative_scale_pad_reverse_construct) + (dst_negative_scale_pad_reverse_construct)))))) /\ (((exists fs_u_dst_pad_reverse_constructpositive fs_v_dst_pad_reverse_constructpositive. ((((exists fs_h_dst_pad_reverse_constructpositive_body_start. fs_h_dst_pad_reverse_constructpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_reverse_constructpositive)) /\ exists fs_q_dst_pad_reverse_constructpositive_body_start. fs_u_dst_pad_reverse_constructpositive = fs_q_dst_pad_reverse_constructpositive_body_start * S ((S (0)) * fs_v_dst_pad_reverse_constructpositive) + (0))) /\ ((((exists fs_h_dst_pad_reverse_constructpositive_body_terminal. fs_h_dst_pad_reverse_constructpositive_body_terminal + S (dst_positive_sum_pad_reverse_construct) = S ((S (k)) * fs_v_dst_pad_reverse_constructpositive)) /\ exists fs_q_dst_pad_reverse_constructpositive_body_terminal. fs_u_dst_pad_reverse_constructpositive = fs_q_dst_pad_reverse_constructpositive_body_terminal * S ((S (k)) * fs_v_dst_pad_reverse_constructpositive) + (dst_positive_sum_pad_reverse_construct))) /\ forall fs_i_dst_pad_reverse_constructpositive_body_steps. (exists fs_lt_dst_pad_reverse_constructpositive_body_steps_bound. fs_lt_dst_pad_reverse_constructpositive_body_steps_bound + S fs_i_dst_pad_reverse_constructpositive_body_steps = k) -> exists fs_a_dst_pad_reverse_constructpositive_body_steps fs_r_dst_pad_reverse_constructpositive_body_steps fs_s_dst_pad_reverse_constructpositive_body_steps. ((((exists fs_h_dst_pad_reverse_constructpositive_body_steps_summand. fs_h_dst_pad_reverse_constructpositive_body_steps_summand + S (fs_a_dst_pad_reverse_constructpositive_body_steps) = S ((S (fs_i_dst_pad_reverse_constructpositive_body_steps)) * dst_positive_scale_pad_reverse_construct)) /\ exists fs_q_dst_pad_reverse_constructpositive_body_steps_summand. dst_positive_code_pad_reverse_construct = fs_q_dst_pad_reverse_constructpositive_body_steps_summand * S ((S (fs_i_dst_pad_reverse_constructpositive_body_steps)) * dst_positive_scale_pad_reverse_construct) + (fs_a_dst_pad_reverse_constructpositive_body_steps))) /\ ((((exists fs_h_dst_pad_reverse_constructpositive_body_steps_partial. fs_h_dst_pad_reverse_constructpositive_body_steps_partial + S (fs_r_dst_pad_reverse_constructpositive_body_steps) = S ((S (fs_i_dst_pad_reverse_constructpositive_body_steps)) * fs_v_dst_pad_reverse_constructpositive)) /\ exists fs_q_dst_pad_reverse_constructpositive_body_steps_partial. fs_u_dst_pad_reverse_constructpositive = fs_q_dst_pad_reverse_constructpositive_body_steps_partial * S ((S (fs_i_dst_pad_reverse_constructpositive_body_steps)) * fs_v_dst_pad_reverse_constructpositive) + (fs_r_dst_pad_reverse_constructpositive_body_steps))) /\ ((((exists fs_h_dst_pad_reverse_constructpositive_body_steps_successor. fs_h_dst_pad_reverse_constructpositive_body_steps_successor + S (fs_s_dst_pad_reverse_constructpositive_body_steps) = S ((S (S fs_i_dst_pad_reverse_constructpositive_body_steps)) * fs_v_dst_pad_reverse_constructpositive)) /\ exists fs_q_dst_pad_reverse_constructpositive_body_steps_successor. fs_u_dst_pad_reverse_constructpositive = fs_q_dst_pad_reverse_constructpositive_body_steps_successor * S ((S (S fs_i_dst_pad_reverse_constructpositive_body_steps)) * fs_v_dst_pad_reverse_constructpositive) + (fs_s_dst_pad_reverse_constructpositive_body_steps))) /\ fs_s_dst_pad_reverse_constructpositive_body_steps = fs_r_dst_pad_reverse_constructpositive_body_steps + fs_a_dst_pad_reverse_constructpositive_body_steps)))))) /\ (((exists fs_u_dst_pad_reverse_constructnegative fs_v_dst_pad_reverse_constructnegative. ((((exists fs_h_dst_pad_reverse_constructnegative_body_start. fs_h_dst_pad_reverse_constructnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_pad_reverse_constructnegative)) /\ exists fs_q_dst_pad_reverse_constructnegative_body_start. fs_u_dst_pad_reverse_constructnegative = fs_q_dst_pad_reverse_constructnegative_body_start * S ((S (0)) * fs_v_dst_pad_reverse_constructnegative) + (0))) /\ ((((exists fs_h_dst_pad_reverse_constructnegative_body_terminal. fs_h_dst_pad_reverse_constructnegative_body_terminal + S (dst_negative_sum_pad_reverse_construct) = S ((S (k)) * fs_v_dst_pad_reverse_constructnegative)) /\ exists fs_q_dst_pad_reverse_constructnegative_body_terminal. fs_u_dst_pad_reverse_constructnegative = fs_q_dst_pad_reverse_constructnegative_body_terminal * S ((S (k)) * fs_v_dst_pad_reverse_constructnegative) + (dst_negative_sum_pad_reverse_construct))) /\ forall fs_i_dst_pad_reverse_constructnegative_body_steps. (exists fs_lt_dst_pad_reverse_constructnegative_body_steps_bound. fs_lt_dst_pad_reverse_constructnegative_body_steps_bound + S fs_i_dst_pad_reverse_constructnegative_body_steps = k) -> exists fs_a_dst_pad_reverse_constructnegative_body_steps fs_r_dst_pad_reverse_constructnegative_body_steps fs_s_dst_pad_reverse_constructnegative_body_steps. ((((exists fs_h_dst_pad_reverse_constructnegative_body_steps_summand. fs_h_dst_pad_reverse_constructnegative_body_steps_summand + S (fs_a_dst_pad_reverse_constructnegative_body_steps) = S ((S (fs_i_dst_pad_reverse_constructnegative_body_steps)) * dst_negative_scale_pad_reverse_construct)) /\ exists fs_q_dst_pad_reverse_constructnegative_body_steps_summand. dst_negative_code_pad_reverse_construct = fs_q_dst_pad_reverse_constructnegative_body_steps_summand * S ((S (fs_i_dst_pad_reverse_constructnegative_body_steps)) * dst_negative_scale_pad_reverse_construct) + (fs_a_dst_pad_reverse_constructnegative_body_steps))) /\ ((((exists fs_h_dst_pad_reverse_constructnegative_body_steps_partial. fs_h_dst_pad_reverse_constructnegative_body_steps_partial + S (fs_r_dst_pad_reverse_constructnegative_body_steps) = S ((S (fs_i_dst_pad_reverse_constructnegative_body_steps)) * fs_v_dst_pad_reverse_constructnegative)) /\ exists fs_q_dst_pad_reverse_constructnegative_body_steps_partial. fs_u_dst_pad_reverse_constructnegative = fs_q_dst_pad_reverse_constructnegative_body_steps_partial * S ((S (fs_i_dst_pad_reverse_constructnegative_body_steps)) * fs_v_dst_pad_reverse_constructnegative) + (fs_r_dst_pad_reverse_constructnegative_body_steps))) /\ ((((exists fs_h_dst_pad_reverse_constructnegative_body_steps_successor. fs_h_dst_pad_reverse_constructnegative_body_steps_successor + S (fs_s_dst_pad_reverse_constructnegative_body_steps) = S ((S (S fs_i_dst_pad_reverse_constructnegative_body_steps)) * fs_v_dst_pad_reverse_constructnegative)) /\ exists fs_q_dst_pad_reverse_constructnegative_body_steps_successor. fs_u_dst_pad_reverse_constructnegative = fs_q_dst_pad_reverse_constructnegative_body_steps_successor * S ((S (S fs_i_dst_pad_reverse_constructnegative_body_steps)) * fs_v_dst_pad_reverse_constructnegative) + (fs_s_dst_pad_reverse_constructnegative_body_steps))) /\ fs_s_dst_pad_reverse_constructnegative_body_steps = fs_r_dst_pad_reverse_constructnegative_body_steps + fs_a_dst_pad_reverse_constructnegative_body_steps)))))) /\ (exists ge_balance_positive_pad_reverse_constructresult ge_balance_negative_pad_reverse_constructresult. (((((a) = 2 * (ge_balance_positive_pad_reverse_constructresult) /\ (ge_balance_negative_pad_reverse_constructresult) = 0) \/ exists ge_signed_half_pad_reverse_constructresultdecode. (((a) = 2 * ge_signed_half_pad_reverse_constructresultdecode + 1 /\ (ge_balance_positive_pad_reverse_constructresult) = 0) /\ (ge_balance_negative_pad_reverse_constructresult) = S ge_signed_half_pad_reverse_constructresultdecode))) /\ ((dst_positive_sum_pad_reverse_construct) + ge_balance_negative_pad_reverse_constructresult = (dst_negative_sum_pad_reverse_construct) + ge_balance_positive_pad_reverse_constructresult))))))))) - 0034
specialize arithmetic_signed_sum_exists (0) - 0035
specialize arithmetic_signed_sum_exists (F) - 0036
specialize arithmetic_signed_sum_exists (k) - 0037
apply arithmetic_signed_sum_exists - 0038
exact hF - 0039
cases ht - 0040
have he : x=z - 0041
specialize signed_prefix_sum_zero_tail (F) - 0042
specialize signed_prefix_sum_zero_tail (k) - 0043
specialize signed_prefix_sum_zero_tail (l) - 0044
specialize signed_prefix_sum_zero_tail (x) - 0045
specialize signed_prefix_sum_zero_tail (z) - 0046
apply signed_prefix_sum_zero_tail - 0047
exact hkl - 0048
exact hz - 0049
exact ht_witness - 0050
exact hs - 0051
rewrite he at ht_witness - 0052
rewrite he at ht_witness - 0053
exact ht_witness