DC0027

dirichlet_convolution_from_padded_prefix

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

An actual longer summand prefix computes the same convolution after its proved zero tail is removed.

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

Exact expanded first-order arithmetic statement

forall F G n L M z. ~(n=0) -> (exists pvs_le_gap_padded_bound. pvs_le_gap_padded_bound + (n) = (L)) -> (((exists dst_positive_code_padded_prefixtable dst_positive_scale_padded_prefixtable dst_negative_code_padded_prefixtable dst_negative_scale_padded_prefixtable. (((M) = (((((dst_positive_code_padded_prefixtable) + (dst_positive_scale_padded_prefixtable)) * S ((dst_positive_code_padded_prefixtable) + (dst_positive_scale_padded_prefixtable)) + ((dst_positive_scale_padded_prefixtable) + (dst_positive_scale_padded_prefixtable))) + (((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) * S ((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) + ((dst_negative_scale_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)))) * S ((((dst_positive_code_padded_prefixtable) + (dst_positive_scale_padded_prefixtable)) * S ((dst_positive_code_padded_prefixtable) + (dst_positive_scale_padded_prefixtable)) + ((dst_positive_scale_padded_prefixtable) + (dst_positive_scale_padded_prefixtable))) + (((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) * S ((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) + ((dst_negative_scale_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)))) + ((((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) * S ((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) + ((dst_negative_scale_padded_prefixtable) + (dst_negative_scale_padded_prefixtable))) + (((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) * S ((dst_negative_code_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)) + ((dst_negative_scale_padded_prefixtable) + (dst_negative_scale_padded_prefixtable)))))) /\ (forall dst_index_padded_prefixtable. (exists pvs_le_gap_padded_prefixtabledomain. pvs_le_gap_padded_prefixtabledomain + (dst_index_padded_prefixtable) = (L)) -> exists dst_positive_padded_prefixtable dst_negative_padded_prefixtable dst_value_padded_prefixtable. ((((exists ff_h_pvs_padded_prefixtableentrypositive. ff_h_pvs_padded_prefixtableentrypositive + S (dst_positive_padded_prefixtable) = S ((S (dst_index_padded_prefixtable)) * dst_positive_scale_padded_prefixtable)) /\ exists ff_q_pvs_padded_prefixtableentrypositive. dst_positive_code_padded_prefixtable = ff_q_pvs_padded_prefixtableentrypositive * S ((S (dst_index_padded_prefixtable)) * dst_positive_scale_padded_prefixtable) + (dst_positive_padded_prefixtable))) /\ (((((exists ff_h_pvs_padded_prefixtableentrynegative. ff_h_pvs_padded_prefixtableentrynegative + S (dst_negative_padded_prefixtable) = S ((S (dst_index_padded_prefixtable)) * dst_negative_scale_padded_prefixtable)) /\ exists ff_q_pvs_padded_prefixtableentrynegative. dst_negative_code_padded_prefixtable = ff_q_pvs_padded_prefixtableentrynegative * S ((S (dst_index_padded_prefixtable)) * dst_negative_scale_padded_prefixtable) + (dst_negative_padded_prefixtable))) /\ (exists ge_balance_positive_padded_prefixtableentryvalue ge_balance_negative_padded_prefixtableentryvalue. (((((dst_value_padded_prefixtable) = 2 * (ge_balance_positive_padded_prefixtableentryvalue) /\ (ge_balance_negative_padded_prefixtableentryvalue) = 0) \/ exists ge_signed_half_padded_prefixtableentryvaluedecode. (((dst_value_padded_prefixtable) = 2 * ge_signed_half_padded_prefixtableentryvaluedecode + 1 /\ (ge_balance_positive_padded_prefixtableentryvalue) = 0) /\ (ge_balance_negative_padded_prefixtableentryvalue) = S ge_signed_half_padded_prefixtableentryvaluedecode))) /\ ((dst_positive_padded_prefixtable) + ge_balance_negative_padded_prefixtableentryvalue = (dst_negative_padded_prefixtable) + ge_balance_positive_padded_prefixtableentryvalue))))))))) /\ (forall dc_index_padded_prefix dc_value_padded_prefix. (exists pvs_le_gap_padded_prefixdomain. pvs_le_gap_padded_prefixdomain + (dc_index_padded_prefix) = (L)) -> (exists dst_positive_code_padded_prefixlookup dst_positive_scale_padded_prefixlookup dst_negative_code_padded_prefixlookup dst_negative_scale_padded_prefixlookup dst_positive_padded_prefixlookup dst_negative_padded_prefixlookup. (((M) = (((((dst_positive_code_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup)) * S ((dst_positive_code_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup)) + ((dst_positive_scale_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup))) + (((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) * S ((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) + ((dst_negative_scale_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)))) * S ((((dst_positive_code_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup)) * S ((dst_positive_code_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup)) + ((dst_positive_scale_padded_prefixlookup) + (dst_positive_scale_padded_prefixlookup))) + (((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) * S ((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) + ((dst_negative_scale_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)))) + ((((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) * S ((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) + ((dst_negative_scale_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup))) + (((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) * S ((dst_negative_code_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)) + ((dst_negative_scale_padded_prefixlookup) + (dst_negative_scale_padded_prefixlookup)))))) /\ (((((exists ff_h_pvs_padded_prefixlookuppositive. ff_h_pvs_padded_prefixlookuppositive + S (dst_positive_padded_prefixlookup) = S ((S (dc_index_padded_prefix)) * dst_positive_scale_padded_prefixlookup)) /\ exists ff_q_pvs_padded_prefixlookuppositive. dst_positive_code_padded_prefixlookup = ff_q_pvs_padded_prefixlookuppositive * S ((S (dc_index_padded_prefix)) * dst_positive_scale_padded_prefixlookup) + (dst_positive_padded_prefixlookup))) /\ (((((exists ff_h_pvs_padded_prefixlookupnegative. ff_h_pvs_padded_prefixlookupnegative + S (dst_negative_padded_prefixlookup) = S ((S (dc_index_padded_prefix)) * dst_negative_scale_padded_prefixlookup)) /\ exists ff_q_pvs_padded_prefixlookupnegative. dst_negative_code_padded_prefixlookup = ff_q_pvs_padded_prefixlookupnegative * S ((S (dc_index_padded_prefix)) * dst_negative_scale_padded_prefixlookup) + (dst_negative_padded_prefixlookup))) /\ (exists ge_balance_positive_padded_prefixlookupvalue ge_balance_negative_padded_prefixlookupvalue. (((((dc_value_padded_prefix) = 2 * (ge_balance_positive_padded_prefixlookupvalue) /\ (ge_balance_negative_padded_prefixlookupvalue) = 0) \/ exists ge_signed_half_padded_prefixlookupvaluedecode. (((dc_value_padded_prefix) = 2 * ge_signed_half_padded_prefixlookupvaluedecode + 1 /\ (ge_balance_positive_padded_prefixlookupvalue) = 0) /\ (ge_balance_negative_padded_prefixlookupvalue) = S ge_signed_half_padded_prefixlookupvaluedecode))) /\ ((dst_positive_padded_prefixlookup) + ge_balance_negative_padded_prefixlookupvalue = (dst_negative_padded_prefixlookup) + ge_balance_positive_padded_prefixlookupvalue))))))))) -> ((((~((dc_index_padded_prefix)=0)) /\ (exists dc_quotient_padded_prefixentry dc_left_padded_prefixentry dc_right_padded_prefixentry. (((n)=(dc_index_padded_prefix)*dc_quotient_padded_prefixentry) /\ (((exists dst_positive_code_padded_prefixentryleft dst_positive_scale_padded_prefixentryleft dst_negative_code_padded_prefixentryleft dst_negative_scale_padded_prefixentryleft dst_positive_padded_prefixentryleft dst_negative_padded_prefixentryleft. (((F) = (((((dst_positive_code_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft)) * S ((dst_positive_code_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft)) + ((dst_positive_scale_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft))) + (((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) * S ((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) + ((dst_negative_scale_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)))) * S ((((dst_positive_code_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft)) * S ((dst_positive_code_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft)) + ((dst_positive_scale_padded_prefixentryleft) + (dst_positive_scale_padded_prefixentryleft))) + (((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) * S ((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) + ((dst_negative_scale_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)))) + ((((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) * S ((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) + ((dst_negative_scale_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft))) + (((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) * S ((dst_negative_code_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)) + ((dst_negative_scale_padded_prefixentryleft) + (dst_negative_scale_padded_prefixentryleft)))))) /\ (((((exists ff_h_pvs_padded_prefixentryleftpositive. ff_h_pvs_padded_prefixentryleftpositive + S (dst_positive_padded_prefixentryleft) = S ((S (dc_index_padded_prefix)) * dst_positive_scale_padded_prefixentryleft)) /\ exists ff_q_pvs_padded_prefixentryleftpositive. dst_positive_code_padded_prefixentryleft = ff_q_pvs_padded_prefixentryleftpositive * S ((S (dc_index_padded_prefix)) * dst_positive_scale_padded_prefixentryleft) + (dst_positive_padded_prefixentryleft))) /\ (((((exists ff_h_pvs_padded_prefixentryleftnegative. ff_h_pvs_padded_prefixentryleftnegative + S (dst_negative_padded_prefixentryleft) = S ((S (dc_index_padded_prefix)) * dst_negative_scale_padded_prefixentryleft)) /\ exists ff_q_pvs_padded_prefixentryleftnegative. dst_negative_code_padded_prefixentryleft = ff_q_pvs_padded_prefixentryleftnegative * S ((S (dc_index_padded_prefix)) * dst_negative_scale_padded_prefixentryleft) + (dst_negative_padded_prefixentryleft))) /\ (exists ge_balance_positive_padded_prefixentryleftvalue ge_balance_negative_padded_prefixentryleftvalue. (((((dc_left_padded_prefixentry) = 2 * (ge_balance_positive_padded_prefixentryleftvalue) /\ (ge_balance_negative_padded_prefixentryleftvalue) = 0) \/ exists ge_signed_half_padded_prefixentryleftvaluedecode. (((dc_left_padded_prefixentry) = 2 * ge_signed_half_padded_prefixentryleftvaluedecode + 1 /\ (ge_balance_positive_padded_prefixentryleftvalue) = 0) /\ (ge_balance_negative_padded_prefixentryleftvalue) = S ge_signed_half_padded_prefixentryleftvaluedecode))) /\ ((dst_positive_padded_prefixentryleft) + ge_balance_negative_padded_prefixentryleftvalue = (dst_negative_padded_prefixentryleft) + ge_balance_positive_padded_prefixentryleftvalue))))))))) /\ (((exists dst_positive_code_padded_prefixentryright dst_positive_scale_padded_prefixentryright dst_negative_code_padded_prefixentryright dst_negative_scale_padded_prefixentryright dst_positive_padded_prefixentryright dst_negative_padded_prefixentryright. (((G) = (((((dst_positive_code_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright)) * S ((dst_positive_code_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright)) + ((dst_positive_scale_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright))) + (((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) * S ((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) + ((dst_negative_scale_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)))) * S ((((dst_positive_code_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright)) * S ((dst_positive_code_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright)) + ((dst_positive_scale_padded_prefixentryright) + (dst_positive_scale_padded_prefixentryright))) + (((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) * S ((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) + ((dst_negative_scale_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)))) + ((((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) * S ((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) + ((dst_negative_scale_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright))) + (((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) * S ((dst_negative_code_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)) + ((dst_negative_scale_padded_prefixentryright) + (dst_negative_scale_padded_prefixentryright)))))) /\ (((((exists ff_h_pvs_padded_prefixentryrightpositive. ff_h_pvs_padded_prefixentryrightpositive + S (dst_positive_padded_prefixentryright) = S ((S (dc_quotient_padded_prefixentry)) * dst_positive_scale_padded_prefixentryright)) /\ exists ff_q_pvs_padded_prefixentryrightpositive. dst_positive_code_padded_prefixentryright = ff_q_pvs_padded_prefixentryrightpositive * S ((S (dc_quotient_padded_prefixentry)) * dst_positive_scale_padded_prefixentryright) + (dst_positive_padded_prefixentryright))) /\ (((((exists ff_h_pvs_padded_prefixentryrightnegative. ff_h_pvs_padded_prefixentryrightnegative + S (dst_negative_padded_prefixentryright) = S ((S (dc_quotient_padded_prefixentry)) * dst_negative_scale_padded_prefixentryright)) /\ exists ff_q_pvs_padded_prefixentryrightnegative. dst_negative_code_padded_prefixentryright = ff_q_pvs_padded_prefixentryrightnegative * S ((S (dc_quotient_padded_prefixentry)) * dst_negative_scale_padded_prefixentryright) + (dst_negative_padded_prefixentryright))) /\ (exists ge_balance_positive_padded_prefixentryrightvalue ge_balance_negative_padded_prefixentryrightvalue. (((((dc_right_padded_prefixentry) = 2 * (ge_balance_positive_padded_prefixentryrightvalue) /\ (ge_balance_negative_padded_prefixentryrightvalue) = 0) \/ exists ge_signed_half_padded_prefixentryrightvaluedecode. (((dc_right_padded_prefixentry) = 2 * ge_signed_half_padded_prefixentryrightvaluedecode + 1 /\ (ge_balance_positive_padded_prefixentryrightvalue) = 0) /\ (ge_balance_negative_padded_prefixentryrightvalue) = S ge_signed_half_padded_prefixentryrightvaluedecode))) /\ ((dst_positive_padded_prefixentryright) + ge_balance_negative_padded_prefixentryrightvalue = (dst_negative_padded_prefixentryright) + ge_balance_positive_padded_prefixentryrightvalue))))))))) /\ (exists sto_ap_padded_prefixentryproduct sto_an_padded_prefixentryproduct sto_bp_padded_prefixentryproduct sto_bn_padded_prefixentryproduct sto_cp_padded_prefixentryproduct sto_cn_padded_prefixentryproduct. (((((dc_left_padded_prefixentry) = 2 * (sto_ap_padded_prefixentryproduct) /\ (sto_an_padded_prefixentryproduct) = 0) \/ exists ge_signed_half_padded_prefixentryproductleft. (((dc_left_padded_prefixentry) = 2 * ge_signed_half_padded_prefixentryproductleft + 1 /\ (sto_ap_padded_prefixentryproduct) = 0) /\ (sto_an_padded_prefixentryproduct) = S ge_signed_half_padded_prefixentryproductleft))) /\ ((((((dc_right_padded_prefixentry) = 2 * (sto_bp_padded_prefixentryproduct) /\ (sto_bn_padded_prefixentryproduct) = 0) \/ exists ge_signed_half_padded_prefixentryproductright. (((dc_right_padded_prefixentry) = 2 * ge_signed_half_padded_prefixentryproductright + 1 /\ (sto_bp_padded_prefixentryproduct) = 0) /\ (sto_bn_padded_prefixentryproduct) = S ge_signed_half_padded_prefixentryproductright))) /\ ((((((dc_value_padded_prefix) = 2 * (sto_cp_padded_prefixentryproduct) /\ (sto_cn_padded_prefixentryproduct) = 0) \/ exists ge_signed_half_padded_prefixentryproductoutput. (((dc_value_padded_prefix) = 2 * ge_signed_half_padded_prefixentryproductoutput + 1 /\ (sto_cp_padded_prefixentryproduct) = 0) /\ (sto_cn_padded_prefixentryproduct) = S ge_signed_half_padded_prefixentryproductoutput))) /\ ((sto_ap_padded_prefixentryproduct * sto_bp_padded_prefixentryproduct + sto_an_padded_prefixentryproduct * sto_bn_padded_prefixentryproduct) + sto_cn_padded_prefixentryproduct = (sto_ap_padded_prefixentryproduct * sto_bn_padded_prefixentryproduct + sto_an_padded_prefixentryproduct * sto_bp_padded_prefixentryproduct) + sto_cp_padded_prefixentryproduct))))))))))))))) \/ ((((dc_index_padded_prefix)=0 \/ ~(exists pvs_factor_padded_prefixentrynondivisor. (n) = (dc_index_padded_prefix) * pvs_factor_padded_prefixentrynondivisor)) /\ ((dc_value_padded_prefix)=0))))))) -> (exists dst_positive_code_padded_sum dst_positive_scale_padded_sum dst_negative_code_padded_sum dst_negative_scale_padded_sum dst_positive_sum_padded_sum dst_negative_sum_padded_sum. (((M) = (((((dst_positive_code_padded_sum) + (dst_positive_scale_padded_sum)) * S ((dst_positive_code_padded_sum) + (dst_positive_scale_padded_sum)) + ((dst_positive_scale_padded_sum) + (dst_positive_scale_padded_sum))) + (((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) * S ((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) + ((dst_negative_scale_padded_sum) + (dst_negative_scale_padded_sum)))) * S ((((dst_positive_code_padded_sum) + (dst_positive_scale_padded_sum)) * S ((dst_positive_code_padded_sum) + (dst_positive_scale_padded_sum)) + ((dst_positive_scale_padded_sum) + (dst_positive_scale_padded_sum))) + (((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) * S ((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) + ((dst_negative_scale_padded_sum) + (dst_negative_scale_padded_sum)))) + ((((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) * S ((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) + ((dst_negative_scale_padded_sum) + (dst_negative_scale_padded_sum))) + (((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) * S ((dst_negative_code_padded_sum) + (dst_negative_scale_padded_sum)) + ((dst_negative_scale_padded_sum) + (dst_negative_scale_padded_sum)))))) /\ (((exists fs_u_dst_padded_sumpositive fs_v_dst_padded_sumpositive. ((((exists fs_h_dst_padded_sumpositive_body_start. fs_h_dst_padded_sumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_sumpositive)) /\ exists fs_q_dst_padded_sumpositive_body_start. fs_u_dst_padded_sumpositive = fs_q_dst_padded_sumpositive_body_start * S ((S (0)) * fs_v_dst_padded_sumpositive) + (0))) /\ ((((exists fs_h_dst_padded_sumpositive_body_terminal. fs_h_dst_padded_sumpositive_body_terminal + S (dst_positive_sum_padded_sum) = S ((S (S L)) * fs_v_dst_padded_sumpositive)) /\ exists fs_q_dst_padded_sumpositive_body_terminal. fs_u_dst_padded_sumpositive = fs_q_dst_padded_sumpositive_body_terminal * S ((S (S L)) * fs_v_dst_padded_sumpositive) + (dst_positive_sum_padded_sum))) /\ forall fs_i_dst_padded_sumpositive_body_steps. (exists fs_lt_dst_padded_sumpositive_body_steps_bound. fs_lt_dst_padded_sumpositive_body_steps_bound + S fs_i_dst_padded_sumpositive_body_steps = S L) -> exists fs_a_dst_padded_sumpositive_body_steps fs_r_dst_padded_sumpositive_body_steps fs_s_dst_padded_sumpositive_body_steps. ((((exists fs_h_dst_padded_sumpositive_body_steps_summand. fs_h_dst_padded_sumpositive_body_steps_summand + S (fs_a_dst_padded_sumpositive_body_steps) = S ((S (fs_i_dst_padded_sumpositive_body_steps)) * dst_positive_scale_padded_sum)) /\ exists fs_q_dst_padded_sumpositive_body_steps_summand. dst_positive_code_padded_sum = fs_q_dst_padded_sumpositive_body_steps_summand * S ((S (fs_i_dst_padded_sumpositive_body_steps)) * dst_positive_scale_padded_sum) + (fs_a_dst_padded_sumpositive_body_steps))) /\ ((((exists fs_h_dst_padded_sumpositive_body_steps_partial. fs_h_dst_padded_sumpositive_body_steps_partial + S (fs_r_dst_padded_sumpositive_body_steps) = S ((S (fs_i_dst_padded_sumpositive_body_steps)) * fs_v_dst_padded_sumpositive)) /\ exists fs_q_dst_padded_sumpositive_body_steps_partial. fs_u_dst_padded_sumpositive = fs_q_dst_padded_sumpositive_body_steps_partial * S ((S (fs_i_dst_padded_sumpositive_body_steps)) * fs_v_dst_padded_sumpositive) + (fs_r_dst_padded_sumpositive_body_steps))) /\ ((((exists fs_h_dst_padded_sumpositive_body_steps_successor. fs_h_dst_padded_sumpositive_body_steps_successor + S (fs_s_dst_padded_sumpositive_body_steps) = S ((S (S fs_i_dst_padded_sumpositive_body_steps)) * fs_v_dst_padded_sumpositive)) /\ exists fs_q_dst_padded_sumpositive_body_steps_successor. fs_u_dst_padded_sumpositive = fs_q_dst_padded_sumpositive_body_steps_successor * S ((S (S fs_i_dst_padded_sumpositive_body_steps)) * fs_v_dst_padded_sumpositive) + (fs_s_dst_padded_sumpositive_body_steps))) /\ fs_s_dst_padded_sumpositive_body_steps = fs_r_dst_padded_sumpositive_body_steps + fs_a_dst_padded_sumpositive_body_steps)))))) /\ (((exists fs_u_dst_padded_sumnegative fs_v_dst_padded_sumnegative. ((((exists fs_h_dst_padded_sumnegative_body_start. fs_h_dst_padded_sumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_sumnegative)) /\ exists fs_q_dst_padded_sumnegative_body_start. fs_u_dst_padded_sumnegative = fs_q_dst_padded_sumnegative_body_start * S ((S (0)) * fs_v_dst_padded_sumnegative) + (0))) /\ ((((exists fs_h_dst_padded_sumnegative_body_terminal. fs_h_dst_padded_sumnegative_body_terminal + S (dst_negative_sum_padded_sum) = S ((S (S L)) * fs_v_dst_padded_sumnegative)) /\ exists fs_q_dst_padded_sumnegative_body_terminal. fs_u_dst_padded_sumnegative = fs_q_dst_padded_sumnegative_body_terminal * S ((S (S L)) * fs_v_dst_padded_sumnegative) + (dst_negative_sum_padded_sum))) /\ forall fs_i_dst_padded_sumnegative_body_steps. (exists fs_lt_dst_padded_sumnegative_body_steps_bound. fs_lt_dst_padded_sumnegative_body_steps_bound + S fs_i_dst_padded_sumnegative_body_steps = S L) -> exists fs_a_dst_padded_sumnegative_body_steps fs_r_dst_padded_sumnegative_body_steps fs_s_dst_padded_sumnegative_body_steps. ((((exists fs_h_dst_padded_sumnegative_body_steps_summand. fs_h_dst_padded_sumnegative_body_steps_summand + S (fs_a_dst_padded_sumnegative_body_steps) = S ((S (fs_i_dst_padded_sumnegative_body_steps)) * dst_negative_scale_padded_sum)) /\ exists fs_q_dst_padded_sumnegative_body_steps_summand. dst_negative_code_padded_sum = fs_q_dst_padded_sumnegative_body_steps_summand * S ((S (fs_i_dst_padded_sumnegative_body_steps)) * dst_negative_scale_padded_sum) + (fs_a_dst_padded_sumnegative_body_steps))) /\ ((((exists fs_h_dst_padded_sumnegative_body_steps_partial. fs_h_dst_padded_sumnegative_body_steps_partial + S (fs_r_dst_padded_sumnegative_body_steps) = S ((S (fs_i_dst_padded_sumnegative_body_steps)) * fs_v_dst_padded_sumnegative)) /\ exists fs_q_dst_padded_sumnegative_body_steps_partial. fs_u_dst_padded_sumnegative = fs_q_dst_padded_sumnegative_body_steps_partial * S ((S (fs_i_dst_padded_sumnegative_body_steps)) * fs_v_dst_padded_sumnegative) + (fs_r_dst_padded_sumnegative_body_steps))) /\ ((((exists fs_h_dst_padded_sumnegative_body_steps_successor. fs_h_dst_padded_sumnegative_body_steps_successor + S (fs_s_dst_padded_sumnegative_body_steps) = S ((S (S fs_i_dst_padded_sumnegative_body_steps)) * fs_v_dst_padded_sumnegative)) /\ exists fs_q_dst_padded_sumnegative_body_steps_successor. fs_u_dst_padded_sumnegative = fs_q_dst_padded_sumnegative_body_steps_successor * S ((S (S fs_i_dst_padded_sumnegative_body_steps)) * fs_v_dst_padded_sumnegative) + (fs_s_dst_padded_sumnegative_body_steps))) /\ fs_s_dst_padded_sumnegative_body_steps = fs_r_dst_padded_sumnegative_body_steps + fs_a_dst_padded_sumnegative_body_steps)))))) /\ (exists ge_balance_positive_padded_sumresult ge_balance_negative_padded_sumresult. (((((z) = 2 * (ge_balance_positive_padded_sumresult) /\ (ge_balance_negative_padded_sumresult) = 0) \/ exists ge_signed_half_padded_sumresultdecode. (((z) = 2 * ge_signed_half_padded_sumresultdecode + 1 /\ (ge_balance_positive_padded_sumresult) = 0) /\ (ge_balance_negative_padded_sumresult) = S ge_signed_half_padded_sumresultdecode))) /\ ((dst_positive_sum_padded_sum) + ge_balance_negative_padded_sumresult = (dst_negative_sum_padded_sum) + ge_balance_positive_padded_sumresult))))))))) -> (((~((n)=0)) /\ (exists dc_mask_padded_result. ((((exists dst_positive_code_padded_resultmasktable dst_positive_scale_padded_resultmasktable dst_negative_code_padded_resultmasktable dst_negative_scale_padded_resultmasktable. (((dc_mask_padded_result) = (((((dst_positive_code_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable)) * S ((dst_positive_code_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable)) + ((dst_positive_scale_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable))) + (((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) * S ((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) + ((dst_negative_scale_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)))) * S ((((dst_positive_code_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable)) * S ((dst_positive_code_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable)) + ((dst_positive_scale_padded_resultmasktable) + (dst_positive_scale_padded_resultmasktable))) + (((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) * S ((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) + ((dst_negative_scale_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)))) + ((((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) * S ((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) + ((dst_negative_scale_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable))) + (((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) * S ((dst_negative_code_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)) + ((dst_negative_scale_padded_resultmasktable) + (dst_negative_scale_padded_resultmasktable)))))) /\ (forall dst_index_padded_resultmasktable. (exists pvs_le_gap_padded_resultmasktabledomain. pvs_le_gap_padded_resultmasktabledomain + (dst_index_padded_resultmasktable) = (n)) -> exists dst_positive_padded_resultmasktable dst_negative_padded_resultmasktable dst_value_padded_resultmasktable. ((((exists ff_h_pvs_padded_resultmasktableentrypositive. ff_h_pvs_padded_resultmasktableentrypositive + S (dst_positive_padded_resultmasktable) = S ((S (dst_index_padded_resultmasktable)) * dst_positive_scale_padded_resultmasktable)) /\ exists ff_q_pvs_padded_resultmasktableentrypositive. dst_positive_code_padded_resultmasktable = ff_q_pvs_padded_resultmasktableentrypositive * S ((S (dst_index_padded_resultmasktable)) * dst_positive_scale_padded_resultmasktable) + (dst_positive_padded_resultmasktable))) /\ (((((exists ff_h_pvs_padded_resultmasktableentrynegative. ff_h_pvs_padded_resultmasktableentrynegative + S (dst_negative_padded_resultmasktable) = S ((S (dst_index_padded_resultmasktable)) * dst_negative_scale_padded_resultmasktable)) /\ exists ff_q_pvs_padded_resultmasktableentrynegative. dst_negative_code_padded_resultmasktable = ff_q_pvs_padded_resultmasktableentrynegative * S ((S (dst_index_padded_resultmasktable)) * dst_negative_scale_padded_resultmasktable) + (dst_negative_padded_resultmasktable))) /\ (exists ge_balance_positive_padded_resultmasktableentryvalue ge_balance_negative_padded_resultmasktableentryvalue. (((((dst_value_padded_resultmasktable) = 2 * (ge_balance_positive_padded_resultmasktableentryvalue) /\ (ge_balance_negative_padded_resultmasktableentryvalue) = 0) \/ exists ge_signed_half_padded_resultmasktableentryvaluedecode. (((dst_value_padded_resultmasktable) = 2 * ge_signed_half_padded_resultmasktableentryvaluedecode + 1 /\ (ge_balance_positive_padded_resultmasktableentryvalue) = 0) /\ (ge_balance_negative_padded_resultmasktableentryvalue) = S ge_signed_half_padded_resultmasktableentryvaluedecode))) /\ ((dst_positive_padded_resultmasktable) + ge_balance_negative_padded_resultmasktableentryvalue = (dst_negative_padded_resultmasktable) + ge_balance_positive_padded_resultmasktableentryvalue))))))))) /\ (forall dc_index_padded_resultmask dc_value_padded_resultmask. (exists pvs_le_gap_padded_resultmaskdomain. pvs_le_gap_padded_resultmaskdomain + (dc_index_padded_resultmask) = (n)) -> (exists dst_positive_code_padded_resultmasklookup dst_positive_scale_padded_resultmasklookup dst_negative_code_padded_resultmasklookup dst_negative_scale_padded_resultmasklookup dst_positive_padded_resultmasklookup dst_negative_padded_resultmasklookup. (((dc_mask_padded_result) = (((((dst_positive_code_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup)) * S ((dst_positive_code_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup)) + ((dst_positive_scale_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup))) + (((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) * S ((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) + ((dst_negative_scale_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)))) * S ((((dst_positive_code_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup)) * S ((dst_positive_code_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup)) + ((dst_positive_scale_padded_resultmasklookup) + (dst_positive_scale_padded_resultmasklookup))) + (((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) * S ((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) + ((dst_negative_scale_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)))) + ((((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) * S ((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) + ((dst_negative_scale_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup))) + (((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) * S ((dst_negative_code_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)) + ((dst_negative_scale_padded_resultmasklookup) + (dst_negative_scale_padded_resultmasklookup)))))) /\ (((((exists ff_h_pvs_padded_resultmasklookuppositive. ff_h_pvs_padded_resultmasklookuppositive + S (dst_positive_padded_resultmasklookup) = S ((S (dc_index_padded_resultmask)) * dst_positive_scale_padded_resultmasklookup)) /\ exists ff_q_pvs_padded_resultmasklookuppositive. dst_positive_code_padded_resultmasklookup = ff_q_pvs_padded_resultmasklookuppositive * S ((S (dc_index_padded_resultmask)) * dst_positive_scale_padded_resultmasklookup) + (dst_positive_padded_resultmasklookup))) /\ (((((exists ff_h_pvs_padded_resultmasklookupnegative. ff_h_pvs_padded_resultmasklookupnegative + S (dst_negative_padded_resultmasklookup) = S ((S (dc_index_padded_resultmask)) * dst_negative_scale_padded_resultmasklookup)) /\ exists ff_q_pvs_padded_resultmasklookupnegative. dst_negative_code_padded_resultmasklookup = ff_q_pvs_padded_resultmasklookupnegative * S ((S (dc_index_padded_resultmask)) * dst_negative_scale_padded_resultmasklookup) + (dst_negative_padded_resultmasklookup))) /\ (exists ge_balance_positive_padded_resultmasklookupvalue ge_balance_negative_padded_resultmasklookupvalue. (((((dc_value_padded_resultmask) = 2 * (ge_balance_positive_padded_resultmasklookupvalue) /\ (ge_balance_negative_padded_resultmasklookupvalue) = 0) \/ exists ge_signed_half_padded_resultmasklookupvaluedecode. (((dc_value_padded_resultmask) = 2 * ge_signed_half_padded_resultmasklookupvaluedecode + 1 /\ (ge_balance_positive_padded_resultmasklookupvalue) = 0) /\ (ge_balance_negative_padded_resultmasklookupvalue) = S ge_signed_half_padded_resultmasklookupvaluedecode))) /\ ((dst_positive_padded_resultmasklookup) + ge_balance_negative_padded_resultmasklookupvalue = (dst_negative_padded_resultmasklookup) + ge_balance_positive_padded_resultmasklookupvalue))))))))) -> ((((~((dc_index_padded_resultmask)=0)) /\ (exists dc_quotient_padded_resultmaskentry dc_left_padded_resultmaskentry dc_right_padded_resultmaskentry. (((n)=(dc_index_padded_resultmask)*dc_quotient_padded_resultmaskentry) /\ (((exists dst_positive_code_padded_resultmaskentryleft dst_positive_scale_padded_resultmaskentryleft dst_negative_code_padded_resultmaskentryleft dst_negative_scale_padded_resultmaskentryleft dst_positive_padded_resultmaskentryleft dst_negative_padded_resultmaskentryleft. (((F) = (((((dst_positive_code_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft)) * S ((dst_positive_code_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft)) + ((dst_positive_scale_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft))) + (((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) * S ((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) + ((dst_negative_scale_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)))) * S ((((dst_positive_code_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft)) * S ((dst_positive_code_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft)) + ((dst_positive_scale_padded_resultmaskentryleft) + (dst_positive_scale_padded_resultmaskentryleft))) + (((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) * S ((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) + ((dst_negative_scale_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)))) + ((((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) * S ((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) + ((dst_negative_scale_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft))) + (((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) * S ((dst_negative_code_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)) + ((dst_negative_scale_padded_resultmaskentryleft) + (dst_negative_scale_padded_resultmaskentryleft)))))) /\ (((((exists ff_h_pvs_padded_resultmaskentryleftpositive. ff_h_pvs_padded_resultmaskentryleftpositive + S (dst_positive_padded_resultmaskentryleft) = S ((S (dc_index_padded_resultmask)) * dst_positive_scale_padded_resultmaskentryleft)) /\ exists ff_q_pvs_padded_resultmaskentryleftpositive. dst_positive_code_padded_resultmaskentryleft = ff_q_pvs_padded_resultmaskentryleftpositive * S ((S (dc_index_padded_resultmask)) * dst_positive_scale_padded_resultmaskentryleft) + (dst_positive_padded_resultmaskentryleft))) /\ (((((exists ff_h_pvs_padded_resultmaskentryleftnegative. ff_h_pvs_padded_resultmaskentryleftnegative + S (dst_negative_padded_resultmaskentryleft) = S ((S (dc_index_padded_resultmask)) * dst_negative_scale_padded_resultmaskentryleft)) /\ exists ff_q_pvs_padded_resultmaskentryleftnegative. dst_negative_code_padded_resultmaskentryleft = ff_q_pvs_padded_resultmaskentryleftnegative * S ((S (dc_index_padded_resultmask)) * dst_negative_scale_padded_resultmaskentryleft) + (dst_negative_padded_resultmaskentryleft))) /\ (exists ge_balance_positive_padded_resultmaskentryleftvalue ge_balance_negative_padded_resultmaskentryleftvalue. (((((dc_left_padded_resultmaskentry) = 2 * (ge_balance_positive_padded_resultmaskentryleftvalue) /\ (ge_balance_negative_padded_resultmaskentryleftvalue) = 0) \/ exists ge_signed_half_padded_resultmaskentryleftvaluedecode. (((dc_left_padded_resultmaskentry) = 2 * ge_signed_half_padded_resultmaskentryleftvaluedecode + 1 /\ (ge_balance_positive_padded_resultmaskentryleftvalue) = 0) /\ (ge_balance_negative_padded_resultmaskentryleftvalue) = S ge_signed_half_padded_resultmaskentryleftvaluedecode))) /\ ((dst_positive_padded_resultmaskentryleft) + ge_balance_negative_padded_resultmaskentryleftvalue = (dst_negative_padded_resultmaskentryleft) + ge_balance_positive_padded_resultmaskentryleftvalue))))))))) /\ (((exists dst_positive_code_padded_resultmaskentryright dst_positive_scale_padded_resultmaskentryright dst_negative_code_padded_resultmaskentryright dst_negative_scale_padded_resultmaskentryright dst_positive_padded_resultmaskentryright dst_negative_padded_resultmaskentryright. (((G) = (((((dst_positive_code_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright)) * S ((dst_positive_code_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright)) + ((dst_positive_scale_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright))) + (((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) * S ((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) + ((dst_negative_scale_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)))) * S ((((dst_positive_code_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright)) * S ((dst_positive_code_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright)) + ((dst_positive_scale_padded_resultmaskentryright) + (dst_positive_scale_padded_resultmaskentryright))) + (((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) * S ((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) + ((dst_negative_scale_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)))) + ((((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) * S ((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) + ((dst_negative_scale_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright))) + (((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) * S ((dst_negative_code_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)) + ((dst_negative_scale_padded_resultmaskentryright) + (dst_negative_scale_padded_resultmaskentryright)))))) /\ (((((exists ff_h_pvs_padded_resultmaskentryrightpositive. ff_h_pvs_padded_resultmaskentryrightpositive + S (dst_positive_padded_resultmaskentryright) = S ((S (dc_quotient_padded_resultmaskentry)) * dst_positive_scale_padded_resultmaskentryright)) /\ exists ff_q_pvs_padded_resultmaskentryrightpositive. dst_positive_code_padded_resultmaskentryright = ff_q_pvs_padded_resultmaskentryrightpositive * S ((S (dc_quotient_padded_resultmaskentry)) * dst_positive_scale_padded_resultmaskentryright) + (dst_positive_padded_resultmaskentryright))) /\ (((((exists ff_h_pvs_padded_resultmaskentryrightnegative. ff_h_pvs_padded_resultmaskentryrightnegative + S (dst_negative_padded_resultmaskentryright) = S ((S (dc_quotient_padded_resultmaskentry)) * dst_negative_scale_padded_resultmaskentryright)) /\ exists ff_q_pvs_padded_resultmaskentryrightnegative. dst_negative_code_padded_resultmaskentryright = ff_q_pvs_padded_resultmaskentryrightnegative * S ((S (dc_quotient_padded_resultmaskentry)) * dst_negative_scale_padded_resultmaskentryright) + (dst_negative_padded_resultmaskentryright))) /\ (exists ge_balance_positive_padded_resultmaskentryrightvalue ge_balance_negative_padded_resultmaskentryrightvalue. (((((dc_right_padded_resultmaskentry) = 2 * (ge_balance_positive_padded_resultmaskentryrightvalue) /\ (ge_balance_negative_padded_resultmaskentryrightvalue) = 0) \/ exists ge_signed_half_padded_resultmaskentryrightvaluedecode. (((dc_right_padded_resultmaskentry) = 2 * ge_signed_half_padded_resultmaskentryrightvaluedecode + 1 /\ (ge_balance_positive_padded_resultmaskentryrightvalue) = 0) /\ (ge_balance_negative_padded_resultmaskentryrightvalue) = S ge_signed_half_padded_resultmaskentryrightvaluedecode))) /\ ((dst_positive_padded_resultmaskentryright) + ge_balance_negative_padded_resultmaskentryrightvalue = (dst_negative_padded_resultmaskentryright) + ge_balance_positive_padded_resultmaskentryrightvalue))))))))) /\ (exists sto_ap_padded_resultmaskentryproduct sto_an_padded_resultmaskentryproduct sto_bp_padded_resultmaskentryproduct sto_bn_padded_resultmaskentryproduct sto_cp_padded_resultmaskentryproduct sto_cn_padded_resultmaskentryproduct. (((((dc_left_padded_resultmaskentry) = 2 * (sto_ap_padded_resultmaskentryproduct) /\ (sto_an_padded_resultmaskentryproduct) = 0) \/ exists ge_signed_half_padded_resultmaskentryproductleft. (((dc_left_padded_resultmaskentry) = 2 * ge_signed_half_padded_resultmaskentryproductleft + 1 /\ (sto_ap_padded_resultmaskentryproduct) = 0) /\ (sto_an_padded_resultmaskentryproduct) = S ge_signed_half_padded_resultmaskentryproductleft))) /\ ((((((dc_right_padded_resultmaskentry) = 2 * (sto_bp_padded_resultmaskentryproduct) /\ (sto_bn_padded_resultmaskentryproduct) = 0) \/ exists ge_signed_half_padded_resultmaskentryproductright. (((dc_right_padded_resultmaskentry) = 2 * ge_signed_half_padded_resultmaskentryproductright + 1 /\ (sto_bp_padded_resultmaskentryproduct) = 0) /\ (sto_bn_padded_resultmaskentryproduct) = S ge_signed_half_padded_resultmaskentryproductright))) /\ ((((((dc_value_padded_resultmask) = 2 * (sto_cp_padded_resultmaskentryproduct) /\ (sto_cn_padded_resultmaskentryproduct) = 0) \/ exists ge_signed_half_padded_resultmaskentryproductoutput. (((dc_value_padded_resultmask) = 2 * ge_signed_half_padded_resultmaskentryproductoutput + 1 /\ (sto_cp_padded_resultmaskentryproduct) = 0) /\ (sto_cn_padded_resultmaskentryproduct) = S ge_signed_half_padded_resultmaskentryproductoutput))) /\ ((sto_ap_padded_resultmaskentryproduct * sto_bp_padded_resultmaskentryproduct + sto_an_padded_resultmaskentryproduct * sto_bn_padded_resultmaskentryproduct) + sto_cn_padded_resultmaskentryproduct = (sto_ap_padded_resultmaskentryproduct * sto_bn_padded_resultmaskentryproduct + sto_an_padded_resultmaskentryproduct * sto_bp_padded_resultmaskentryproduct) + sto_cp_padded_resultmaskentryproduct))))))))))))))) \/ ((((dc_index_padded_resultmask)=0 \/ ~(exists pvs_factor_padded_resultmaskentrynondivisor. (n) = (dc_index_padded_resultmask) * pvs_factor_padded_resultmaskentrynondivisor)) /\ ((dc_value_padded_resultmask)=0))))))) /\ (exists dst_positive_code_padded_resultfold dst_positive_scale_padded_resultfold dst_negative_code_padded_resultfold dst_negative_scale_padded_resultfold dst_positive_sum_padded_resultfold dst_negative_sum_padded_resultfold. (((dc_mask_padded_result) = (((((dst_positive_code_padded_resultfold) + (dst_positive_scale_padded_resultfold)) * S ((dst_positive_code_padded_resultfold) + (dst_positive_scale_padded_resultfold)) + ((dst_positive_scale_padded_resultfold) + (dst_positive_scale_padded_resultfold))) + (((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) * S ((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) + ((dst_negative_scale_padded_resultfold) + (dst_negative_scale_padded_resultfold)))) * S ((((dst_positive_code_padded_resultfold) + (dst_positive_scale_padded_resultfold)) * S ((dst_positive_code_padded_resultfold) + (dst_positive_scale_padded_resultfold)) + ((dst_positive_scale_padded_resultfold) + (dst_positive_scale_padded_resultfold))) + (((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) * S ((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) + ((dst_negative_scale_padded_resultfold) + (dst_negative_scale_padded_resultfold)))) + ((((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) * S ((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) + ((dst_negative_scale_padded_resultfold) + (dst_negative_scale_padded_resultfold))) + (((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) * S ((dst_negative_code_padded_resultfold) + (dst_negative_scale_padded_resultfold)) + ((dst_negative_scale_padded_resultfold) + (dst_negative_scale_padded_resultfold)))))) /\ (((exists fs_u_dst_padded_resultfoldpositive fs_v_dst_padded_resultfoldpositive. ((((exists fs_h_dst_padded_resultfoldpositive_body_start. fs_h_dst_padded_resultfoldpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_resultfoldpositive)) /\ exists fs_q_dst_padded_resultfoldpositive_body_start. fs_u_dst_padded_resultfoldpositive = fs_q_dst_padded_resultfoldpositive_body_start * S ((S (0)) * fs_v_dst_padded_resultfoldpositive) + (0))) /\ ((((exists fs_h_dst_padded_resultfoldpositive_body_terminal. fs_h_dst_padded_resultfoldpositive_body_terminal + S (dst_positive_sum_padded_resultfold) = S ((S (S (n))) * fs_v_dst_padded_resultfoldpositive)) /\ exists fs_q_dst_padded_resultfoldpositive_body_terminal. fs_u_dst_padded_resultfoldpositive = fs_q_dst_padded_resultfoldpositive_body_terminal * S ((S (S (n))) * fs_v_dst_padded_resultfoldpositive) + (dst_positive_sum_padded_resultfold))) /\ forall fs_i_dst_padded_resultfoldpositive_body_steps. (exists fs_lt_dst_padded_resultfoldpositive_body_steps_bound. fs_lt_dst_padded_resultfoldpositive_body_steps_bound + S fs_i_dst_padded_resultfoldpositive_body_steps = S (n)) -> exists fs_a_dst_padded_resultfoldpositive_body_steps fs_r_dst_padded_resultfoldpositive_body_steps fs_s_dst_padded_resultfoldpositive_body_steps. ((((exists fs_h_dst_padded_resultfoldpositive_body_steps_summand. fs_h_dst_padded_resultfoldpositive_body_steps_summand + S (fs_a_dst_padded_resultfoldpositive_body_steps) = S ((S (fs_i_dst_padded_resultfoldpositive_body_steps)) * dst_positive_scale_padded_resultfold)) /\ exists fs_q_dst_padded_resultfoldpositive_body_steps_summand. dst_positive_code_padded_resultfold = fs_q_dst_padded_resultfoldpositive_body_steps_summand * S ((S (fs_i_dst_padded_resultfoldpositive_body_steps)) * dst_positive_scale_padded_resultfold) + (fs_a_dst_padded_resultfoldpositive_body_steps))) /\ ((((exists fs_h_dst_padded_resultfoldpositive_body_steps_partial. fs_h_dst_padded_resultfoldpositive_body_steps_partial + S (fs_r_dst_padded_resultfoldpositive_body_steps) = S ((S (fs_i_dst_padded_resultfoldpositive_body_steps)) * fs_v_dst_padded_resultfoldpositive)) /\ exists fs_q_dst_padded_resultfoldpositive_body_steps_partial. fs_u_dst_padded_resultfoldpositive = fs_q_dst_padded_resultfoldpositive_body_steps_partial * S ((S (fs_i_dst_padded_resultfoldpositive_body_steps)) * fs_v_dst_padded_resultfoldpositive) + (fs_r_dst_padded_resultfoldpositive_body_steps))) /\ ((((exists fs_h_dst_padded_resultfoldpositive_body_steps_successor. fs_h_dst_padded_resultfoldpositive_body_steps_successor + S (fs_s_dst_padded_resultfoldpositive_body_steps) = S ((S (S fs_i_dst_padded_resultfoldpositive_body_steps)) * fs_v_dst_padded_resultfoldpositive)) /\ exists fs_q_dst_padded_resultfoldpositive_body_steps_successor. fs_u_dst_padded_resultfoldpositive = fs_q_dst_padded_resultfoldpositive_body_steps_successor * S ((S (S fs_i_dst_padded_resultfoldpositive_body_steps)) * fs_v_dst_padded_resultfoldpositive) + (fs_s_dst_padded_resultfoldpositive_body_steps))) /\ fs_s_dst_padded_resultfoldpositive_body_steps = fs_r_dst_padded_resultfoldpositive_body_steps + fs_a_dst_padded_resultfoldpositive_body_steps)))))) /\ (((exists fs_u_dst_padded_resultfoldnegative fs_v_dst_padded_resultfoldnegative. ((((exists fs_h_dst_padded_resultfoldnegative_body_start. fs_h_dst_padded_resultfoldnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_resultfoldnegative)) /\ exists fs_q_dst_padded_resultfoldnegative_body_start. fs_u_dst_padded_resultfoldnegative = fs_q_dst_padded_resultfoldnegative_body_start * S ((S (0)) * fs_v_dst_padded_resultfoldnegative) + (0))) /\ ((((exists fs_h_dst_padded_resultfoldnegative_body_terminal. fs_h_dst_padded_resultfoldnegative_body_terminal + S (dst_negative_sum_padded_resultfold) = S ((S (S (n))) * fs_v_dst_padded_resultfoldnegative)) /\ exists fs_q_dst_padded_resultfoldnegative_body_terminal. fs_u_dst_padded_resultfoldnegative = fs_q_dst_padded_resultfoldnegative_body_terminal * S ((S (S (n))) * fs_v_dst_padded_resultfoldnegative) + (dst_negative_sum_padded_resultfold))) /\ forall fs_i_dst_padded_resultfoldnegative_body_steps. (exists fs_lt_dst_padded_resultfoldnegative_body_steps_bound. fs_lt_dst_padded_resultfoldnegative_body_steps_bound + S fs_i_dst_padded_resultfoldnegative_body_steps = S (n)) -> exists fs_a_dst_padded_resultfoldnegative_body_steps fs_r_dst_padded_resultfoldnegative_body_steps fs_s_dst_padded_resultfoldnegative_body_steps. ((((exists fs_h_dst_padded_resultfoldnegative_body_steps_summand. fs_h_dst_padded_resultfoldnegative_body_steps_summand + S (fs_a_dst_padded_resultfoldnegative_body_steps) = S ((S (fs_i_dst_padded_resultfoldnegative_body_steps)) * dst_negative_scale_padded_resultfold)) /\ exists fs_q_dst_padded_resultfoldnegative_body_steps_summand. dst_negative_code_padded_resultfold = fs_q_dst_padded_resultfoldnegative_body_steps_summand * S ((S (fs_i_dst_padded_resultfoldnegative_body_steps)) * dst_negative_scale_padded_resultfold) + (fs_a_dst_padded_resultfoldnegative_body_steps))) /\ ((((exists fs_h_dst_padded_resultfoldnegative_body_steps_partial. fs_h_dst_padded_resultfoldnegative_body_steps_partial + S (fs_r_dst_padded_resultfoldnegative_body_steps) = S ((S (fs_i_dst_padded_resultfoldnegative_body_steps)) * fs_v_dst_padded_resultfoldnegative)) /\ exists fs_q_dst_padded_resultfoldnegative_body_steps_partial. fs_u_dst_padded_resultfoldnegative = fs_q_dst_padded_resultfoldnegative_body_steps_partial * S ((S (fs_i_dst_padded_resultfoldnegative_body_steps)) * fs_v_dst_padded_resultfoldnegative) + (fs_r_dst_padded_resultfoldnegative_body_steps))) /\ ((((exists fs_h_dst_padded_resultfoldnegative_body_steps_successor. fs_h_dst_padded_resultfoldnegative_body_steps_successor + S (fs_s_dst_padded_resultfoldnegative_body_steps) = S ((S (S fs_i_dst_padded_resultfoldnegative_body_steps)) * fs_v_dst_padded_resultfoldnegative)) /\ exists fs_q_dst_padded_resultfoldnegative_body_steps_successor. fs_u_dst_padded_resultfoldnegative = fs_q_dst_padded_resultfoldnegative_body_steps_successor * S ((S (S fs_i_dst_padded_resultfoldnegative_body_steps)) * fs_v_dst_padded_resultfoldnegative) + (fs_s_dst_padded_resultfoldnegative_body_steps))) /\ fs_s_dst_padded_resultfoldnegative_body_steps = fs_r_dst_padded_resultfoldnegative_body_steps + fs_a_dst_padded_resultfoldnegative_body_steps)))))) /\ (exists ge_balance_positive_padded_resultfoldresult ge_balance_negative_padded_resultfoldresult. (((((z) = 2 * (ge_balance_positive_padded_resultfoldresult) /\ (ge_balance_negative_padded_resultfoldresult) = 0) \/ exists ge_signed_half_padded_resultfoldresultdecode. (((z) = 2 * ge_signed_half_padded_resultfoldresultdecode + 1 /\ (ge_balance_positive_padded_resultfoldresult) = 0) /\ (ge_balance_negative_padded_resultfoldresult) = S ge_signed_half_padded_resultfoldresultdecode))) /\ ((dst_positive_sum_padded_resultfold) + ge_balance_negative_padded_resultfoldresult = (dst_negative_sum_padded_resultfold) + ge_balance_positive_padded_resultfoldresult)))))))))))))

Constructive proof overview

Generated structural guide

An actual longer summand prefix computes the same convolution after its proved zero tail is removed.

The unchanged tactic script uses 5 declared prerequisites and contains 55 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 signed_prefix_sum_zero_tail Alpha theorem; checked-use authorized succ_le_succ Stable theorem; checked-use authorized DC0026 dirichlet_convolution_prefix_zero_tail DC000D dirichlet_convolution_prefix_restrict

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

55 script commands · 13 reading checkpoints · 2 local claims

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

Named ingredients (2)

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

01Fix variables and assumptionsL1–10

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

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro n
  4. L4
    intro L
  5. L5
    intro M
  6. L6
    intro z
  7. L7
    intro hn
  8. L8
    intro hbound
  9. L9
    intro hp
  10. L10
    intro hs
02Separate the logical casesL11–11

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

  1. L11
    cases hp
03Establish hshortL12–17

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

  1. L12
    have hshort : ∃ a. SignedPrefixSum(M,S n,a)Definitions: SignedPrefixSum
  2. L13
    specialize arithmetic_signed_sum_exists (L)
  3. L14
    specialize arithmetic_signed_sum_exists (M)
  4. L15
    specialize arithmetic_signed_sum_exists (S n)
  5. L16
    apply arithmetic_signed_sum_exists
  6. L17
    exact hp_left
04Separate the logical casesL18–18

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

  1. L18
    cases hshort
05Establish heL19–28

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

  1. L19
    have he : x=z
  2. L20
    specialize signed_prefix_sum_zero_tail (M)
  3. L21
    specialize signed_prefix_sum_zero_tail (S n)
  4. L22
    specialize signed_prefix_sum_zero_tail (S L)
  5. L23
    specialize signed_prefix_sum_zero_tail (x)
  6. L24
    specialize signed_prefix_sum_zero_tail (z)
  7. L25
    apply signed_prefix_sum_zero_tail
  8. L26
    specialize succ_le_succ (n)
  9. L27
    specialize succ_le_succ (L)
  10. L28
    apply succ_le_succ
06Use earlier factsL29–38

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

  1. L29
    exact hbound
  2. L30
    specialize dirichlet_convolution_prefix_zero_tail (F)
  3. L31
    specialize dirichlet_convolution_prefix_zero_tail (G)
  4. L32
    specialize dirichlet_convolution_prefix_zero_tail (n)
  5. L33
    specialize dirichlet_convolution_prefix_zero_tail (L)
  6. L34
    specialize dirichlet_convolution_prefix_zero_tail (M)
  7. L35
    apply dirichlet_convolution_prefix_zero_tail
  8. L36
    exact hn
  9. L37
    exact hp
  10. L38
    exact hshort_witness
07Use earlier factsL39–39

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

  1. L39
    exact hs
08Calculate and transport equalitiesL40–41

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

  1. L40
    rewrite he at hshort_witness
  2. L41
    rewrite he at hshort_witness
09Separate the logical casesL42–42

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

  1. L42
    split
10Use earlier factsL43–43

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

  1. L43
    exact hn
11Construct an explicit witnessL44–44

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

  1. L44
    exists M
12Separate the logical casesL45–45

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

  1. L45
    split
13Use earlier factsL46–55

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

  1. L46
    specialize dirichlet_convolution_prefix_restrict (F)
  2. L47
    specialize dirichlet_convolution_prefix_restrict (G)
  3. L48
    specialize dirichlet_convolution_prefix_restrict (n)
  4. L49
    specialize dirichlet_convolution_prefix_restrict (L)
  5. L50
    specialize dirichlet_convolution_prefix_restrict (n)
  6. L51
    specialize dirichlet_convolution_prefix_restrict (M)
  7. L52
    apply dirichlet_convolution_prefix_restrict
  8. L53
    exact hp
  9. L54
    exact hbound
  10. L55
    exact hshort_witness

Library-wide reading audit

Original exact command ledger · 55 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro n
  4. 0004intro L
  5. 0005intro M
  6. 0006intro z
  7. 0007intro hn
  8. 0008intro hbound
  9. 0009intro hp
  10. 0010intro hs
  11. 0011cases hp
  12. 0012have hshort : exists a. (exists dst_positive_code_padded_actual_short dst_positive_scale_padded_actual_short dst_negative_code_padded_actual_short dst_negative_scale_padded_actual_short dst_positive_sum_padded_actual_short dst_negative_sum_padded_actual_short. (((M) = (((((dst_positive_code_padded_actual_short) + (dst_positive_scale_padded_actual_short)) * S ((dst_positive_code_padded_actual_short) + (dst_positive_scale_padded_actual_short)) + ((dst_positive_scale_padded_actual_short) + (dst_positive_scale_padded_actual_short))) + (((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) * S ((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) + ((dst_negative_scale_padded_actual_short) + (dst_negative_scale_padded_actual_short)))) * S ((((dst_positive_code_padded_actual_short) + (dst_positive_scale_padded_actual_short)) * S ((dst_positive_code_padded_actual_short) + (dst_positive_scale_padded_actual_short)) + ((dst_positive_scale_padded_actual_short) + (dst_positive_scale_padded_actual_short))) + (((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) * S ((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) + ((dst_negative_scale_padded_actual_short) + (dst_negative_scale_padded_actual_short)))) + ((((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) * S ((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) + ((dst_negative_scale_padded_actual_short) + (dst_negative_scale_padded_actual_short))) + (((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) * S ((dst_negative_code_padded_actual_short) + (dst_negative_scale_padded_actual_short)) + ((dst_negative_scale_padded_actual_short) + (dst_negative_scale_padded_actual_short)))))) /\ (((exists fs_u_dst_padded_actual_shortpositive fs_v_dst_padded_actual_shortpositive. ((((exists fs_h_dst_padded_actual_shortpositive_body_start. fs_h_dst_padded_actual_shortpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_actual_shortpositive)) /\ exists fs_q_dst_padded_actual_shortpositive_body_start. fs_u_dst_padded_actual_shortpositive = fs_q_dst_padded_actual_shortpositive_body_start * S ((S (0)) * fs_v_dst_padded_actual_shortpositive) + (0))) /\ ((((exists fs_h_dst_padded_actual_shortpositive_body_terminal. fs_h_dst_padded_actual_shortpositive_body_terminal + S (dst_positive_sum_padded_actual_short) = S ((S (S n)) * fs_v_dst_padded_actual_shortpositive)) /\ exists fs_q_dst_padded_actual_shortpositive_body_terminal. fs_u_dst_padded_actual_shortpositive = fs_q_dst_padded_actual_shortpositive_body_terminal * S ((S (S n)) * fs_v_dst_padded_actual_shortpositive) + (dst_positive_sum_padded_actual_short))) /\ forall fs_i_dst_padded_actual_shortpositive_body_steps. (exists fs_lt_dst_padded_actual_shortpositive_body_steps_bound. fs_lt_dst_padded_actual_shortpositive_body_steps_bound + S fs_i_dst_padded_actual_shortpositive_body_steps = S n) -> exists fs_a_dst_padded_actual_shortpositive_body_steps fs_r_dst_padded_actual_shortpositive_body_steps fs_s_dst_padded_actual_shortpositive_body_steps. ((((exists fs_h_dst_padded_actual_shortpositive_body_steps_summand. fs_h_dst_padded_actual_shortpositive_body_steps_summand + S (fs_a_dst_padded_actual_shortpositive_body_steps) = S ((S (fs_i_dst_padded_actual_shortpositive_body_steps)) * dst_positive_scale_padded_actual_short)) /\ exists fs_q_dst_padded_actual_shortpositive_body_steps_summand. dst_positive_code_padded_actual_short = fs_q_dst_padded_actual_shortpositive_body_steps_summand * S ((S (fs_i_dst_padded_actual_shortpositive_body_steps)) * dst_positive_scale_padded_actual_short) + (fs_a_dst_padded_actual_shortpositive_body_steps))) /\ ((((exists fs_h_dst_padded_actual_shortpositive_body_steps_partial. fs_h_dst_padded_actual_shortpositive_body_steps_partial + S (fs_r_dst_padded_actual_shortpositive_body_steps) = S ((S (fs_i_dst_padded_actual_shortpositive_body_steps)) * fs_v_dst_padded_actual_shortpositive)) /\ exists fs_q_dst_padded_actual_shortpositive_body_steps_partial. fs_u_dst_padded_actual_shortpositive = fs_q_dst_padded_actual_shortpositive_body_steps_partial * S ((S (fs_i_dst_padded_actual_shortpositive_body_steps)) * fs_v_dst_padded_actual_shortpositive) + (fs_r_dst_padded_actual_shortpositive_body_steps))) /\ ((((exists fs_h_dst_padded_actual_shortpositive_body_steps_successor. fs_h_dst_padded_actual_shortpositive_body_steps_successor + S (fs_s_dst_padded_actual_shortpositive_body_steps) = S ((S (S fs_i_dst_padded_actual_shortpositive_body_steps)) * fs_v_dst_padded_actual_shortpositive)) /\ exists fs_q_dst_padded_actual_shortpositive_body_steps_successor. fs_u_dst_padded_actual_shortpositive = fs_q_dst_padded_actual_shortpositive_body_steps_successor * S ((S (S fs_i_dst_padded_actual_shortpositive_body_steps)) * fs_v_dst_padded_actual_shortpositive) + (fs_s_dst_padded_actual_shortpositive_body_steps))) /\ fs_s_dst_padded_actual_shortpositive_body_steps = fs_r_dst_padded_actual_shortpositive_body_steps + fs_a_dst_padded_actual_shortpositive_body_steps)))))) /\ (((exists fs_u_dst_padded_actual_shortnegative fs_v_dst_padded_actual_shortnegative. ((((exists fs_h_dst_padded_actual_shortnegative_body_start. fs_h_dst_padded_actual_shortnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_padded_actual_shortnegative)) /\ exists fs_q_dst_padded_actual_shortnegative_body_start. fs_u_dst_padded_actual_shortnegative = fs_q_dst_padded_actual_shortnegative_body_start * S ((S (0)) * fs_v_dst_padded_actual_shortnegative) + (0))) /\ ((((exists fs_h_dst_padded_actual_shortnegative_body_terminal. fs_h_dst_padded_actual_shortnegative_body_terminal + S (dst_negative_sum_padded_actual_short) = S ((S (S n)) * fs_v_dst_padded_actual_shortnegative)) /\ exists fs_q_dst_padded_actual_shortnegative_body_terminal. fs_u_dst_padded_actual_shortnegative = fs_q_dst_padded_actual_shortnegative_body_terminal * S ((S (S n)) * fs_v_dst_padded_actual_shortnegative) + (dst_negative_sum_padded_actual_short))) /\ forall fs_i_dst_padded_actual_shortnegative_body_steps. (exists fs_lt_dst_padded_actual_shortnegative_body_steps_bound. fs_lt_dst_padded_actual_shortnegative_body_steps_bound + S fs_i_dst_padded_actual_shortnegative_body_steps = S n) -> exists fs_a_dst_padded_actual_shortnegative_body_steps fs_r_dst_padded_actual_shortnegative_body_steps fs_s_dst_padded_actual_shortnegative_body_steps. ((((exists fs_h_dst_padded_actual_shortnegative_body_steps_summand. fs_h_dst_padded_actual_shortnegative_body_steps_summand + S (fs_a_dst_padded_actual_shortnegative_body_steps) = S ((S (fs_i_dst_padded_actual_shortnegative_body_steps)) * dst_negative_scale_padded_actual_short)) /\ exists fs_q_dst_padded_actual_shortnegative_body_steps_summand. dst_negative_code_padded_actual_short = fs_q_dst_padded_actual_shortnegative_body_steps_summand * S ((S (fs_i_dst_padded_actual_shortnegative_body_steps)) * dst_negative_scale_padded_actual_short) + (fs_a_dst_padded_actual_shortnegative_body_steps))) /\ ((((exists fs_h_dst_padded_actual_shortnegative_body_steps_partial. fs_h_dst_padded_actual_shortnegative_body_steps_partial + S (fs_r_dst_padded_actual_shortnegative_body_steps) = S ((S (fs_i_dst_padded_actual_shortnegative_body_steps)) * fs_v_dst_padded_actual_shortnegative)) /\ exists fs_q_dst_padded_actual_shortnegative_body_steps_partial. fs_u_dst_padded_actual_shortnegative = fs_q_dst_padded_actual_shortnegative_body_steps_partial * S ((S (fs_i_dst_padded_actual_shortnegative_body_steps)) * fs_v_dst_padded_actual_shortnegative) + (fs_r_dst_padded_actual_shortnegative_body_steps))) /\ ((((exists fs_h_dst_padded_actual_shortnegative_body_steps_successor. fs_h_dst_padded_actual_shortnegative_body_steps_successor + S (fs_s_dst_padded_actual_shortnegative_body_steps) = S ((S (S fs_i_dst_padded_actual_shortnegative_body_steps)) * fs_v_dst_padded_actual_shortnegative)) /\ exists fs_q_dst_padded_actual_shortnegative_body_steps_successor. fs_u_dst_padded_actual_shortnegative = fs_q_dst_padded_actual_shortnegative_body_steps_successor * S ((S (S fs_i_dst_padded_actual_shortnegative_body_steps)) * fs_v_dst_padded_actual_shortnegative) + (fs_s_dst_padded_actual_shortnegative_body_steps))) /\ fs_s_dst_padded_actual_shortnegative_body_steps = fs_r_dst_padded_actual_shortnegative_body_steps + fs_a_dst_padded_actual_shortnegative_body_steps)))))) /\ (exists ge_balance_positive_padded_actual_shortresult ge_balance_negative_padded_actual_shortresult. (((((a) = 2 * (ge_balance_positive_padded_actual_shortresult) /\ (ge_balance_negative_padded_actual_shortresult) = 0) \/ exists ge_signed_half_padded_actual_shortresultdecode. (((a) = 2 * ge_signed_half_padded_actual_shortresultdecode + 1 /\ (ge_balance_positive_padded_actual_shortresult) = 0) /\ (ge_balance_negative_padded_actual_shortresult) = S ge_signed_half_padded_actual_shortresultdecode))) /\ ((dst_positive_sum_padded_actual_short) + ge_balance_negative_padded_actual_shortresult = (dst_negative_sum_padded_actual_short) + ge_balance_positive_padded_actual_shortresult)))))))))
  13. 0013specialize arithmetic_signed_sum_exists (L)
  14. 0014specialize arithmetic_signed_sum_exists (M)
  15. 0015specialize arithmetic_signed_sum_exists (S n)
  16. 0016apply arithmetic_signed_sum_exists
  17. 0017exact hp_left
  18. 0018cases hshort
  19. 0019have he : x=z
  20. 0020specialize signed_prefix_sum_zero_tail (M)
  21. 0021specialize signed_prefix_sum_zero_tail (S n)
  22. 0022specialize signed_prefix_sum_zero_tail (S L)
  23. 0023specialize signed_prefix_sum_zero_tail (x)
  24. 0024specialize signed_prefix_sum_zero_tail (z)
  25. 0025apply signed_prefix_sum_zero_tail
  26. 0026specialize succ_le_succ (n)
  27. 0027specialize succ_le_succ (L)
  28. 0028apply succ_le_succ
  29. 0029exact hbound
  30. 0030specialize dirichlet_convolution_prefix_zero_tail (F)
  31. 0031specialize dirichlet_convolution_prefix_zero_tail (G)
  32. 0032specialize dirichlet_convolution_prefix_zero_tail (n)
  33. 0033specialize dirichlet_convolution_prefix_zero_tail (L)
  34. 0034specialize dirichlet_convolution_prefix_zero_tail (M)
  35. 0035apply dirichlet_convolution_prefix_zero_tail
  36. 0036exact hn
  37. 0037exact hp
  38. 0038exact hshort_witness
  39. 0039exact hs
  40. 0040rewrite he at hshort_witness
  41. 0041rewrite he at hshort_witness
  42. 0042split
  43. 0043exact hn
  44. 0044exists M
  45. 0045split
  46. 0046specialize dirichlet_convolution_prefix_restrict (F)
  47. 0047specialize dirichlet_convolution_prefix_restrict (G)
  48. 0048specialize dirichlet_convolution_prefix_restrict (n)
  49. 0049specialize dirichlet_convolution_prefix_restrict (L)
  50. 0050specialize dirichlet_convolution_prefix_restrict (n)
  51. 0051specialize dirichlet_convolution_prefix_restrict (M)
  52. 0052apply dirichlet_convolution_prefix_restrict
  53. 0053exact hp
  54. 0054exact hbound
  55. 0055exact hshort_witness