DC0020

dirichlet_convolution_prefix_value_from_entry

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

Every independently justified summand value is present in the actual prefix, by constructed lookup and functionality.

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 d z. (((exists dst_positive_code_value_prefixtable dst_positive_scale_value_prefixtable dst_negative_code_value_prefixtable dst_negative_scale_value_prefixtable. (((M) = (((((dst_positive_code_value_prefixtable) + (dst_positive_scale_value_prefixtable)) * S ((dst_positive_code_value_prefixtable) + (dst_positive_scale_value_prefixtable)) + ((dst_positive_scale_value_prefixtable) + (dst_positive_scale_value_prefixtable))) + (((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) * S ((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) + ((dst_negative_scale_value_prefixtable) + (dst_negative_scale_value_prefixtable)))) * S ((((dst_positive_code_value_prefixtable) + (dst_positive_scale_value_prefixtable)) * S ((dst_positive_code_value_prefixtable) + (dst_positive_scale_value_prefixtable)) + ((dst_positive_scale_value_prefixtable) + (dst_positive_scale_value_prefixtable))) + (((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) * S ((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) + ((dst_negative_scale_value_prefixtable) + (dst_negative_scale_value_prefixtable)))) + ((((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) * S ((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) + ((dst_negative_scale_value_prefixtable) + (dst_negative_scale_value_prefixtable))) + (((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) * S ((dst_negative_code_value_prefixtable) + (dst_negative_scale_value_prefixtable)) + ((dst_negative_scale_value_prefixtable) + (dst_negative_scale_value_prefixtable)))))) /\ (forall dst_index_value_prefixtable. (exists pvs_le_gap_value_prefixtabledomain. pvs_le_gap_value_prefixtabledomain + (dst_index_value_prefixtable) = (l)) -> exists dst_positive_value_prefixtable dst_negative_value_prefixtable dst_value_value_prefixtable. ((((exists ff_h_pvs_value_prefixtableentrypositive. ff_h_pvs_value_prefixtableentrypositive + S (dst_positive_value_prefixtable) = S ((S (dst_index_value_prefixtable)) * dst_positive_scale_value_prefixtable)) /\ exists ff_q_pvs_value_prefixtableentrypositive. dst_positive_code_value_prefixtable = ff_q_pvs_value_prefixtableentrypositive * S ((S (dst_index_value_prefixtable)) * dst_positive_scale_value_prefixtable) + (dst_positive_value_prefixtable))) /\ (((((exists ff_h_pvs_value_prefixtableentrynegative. ff_h_pvs_value_prefixtableentrynegative + S (dst_negative_value_prefixtable) = S ((S (dst_index_value_prefixtable)) * dst_negative_scale_value_prefixtable)) /\ exists ff_q_pvs_value_prefixtableentrynegative. dst_negative_code_value_prefixtable = ff_q_pvs_value_prefixtableentrynegative * S ((S (dst_index_value_prefixtable)) * dst_negative_scale_value_prefixtable) + (dst_negative_value_prefixtable))) /\ (exists ge_balance_positive_value_prefixtableentryvalue ge_balance_negative_value_prefixtableentryvalue. (((((dst_value_value_prefixtable) = 2 * (ge_balance_positive_value_prefixtableentryvalue) /\ (ge_balance_negative_value_prefixtableentryvalue) = 0) \/ exists ge_signed_half_value_prefixtableentryvaluedecode. (((dst_value_value_prefixtable) = 2 * ge_signed_half_value_prefixtableentryvaluedecode + 1 /\ (ge_balance_positive_value_prefixtableentryvalue) = 0) /\ (ge_balance_negative_value_prefixtableentryvalue) = S ge_signed_half_value_prefixtableentryvaluedecode))) /\ ((dst_positive_value_prefixtable) + ge_balance_negative_value_prefixtableentryvalue = (dst_negative_value_prefixtable) + ge_balance_positive_value_prefixtableentryvalue))))))))) /\ (forall dc_index_value_prefix dc_value_value_prefix. (exists pvs_le_gap_value_prefixdomain. pvs_le_gap_value_prefixdomain + (dc_index_value_prefix) = (l)) -> (exists dst_positive_code_value_prefixlookup dst_positive_scale_value_prefixlookup dst_negative_code_value_prefixlookup dst_negative_scale_value_prefixlookup dst_positive_value_prefixlookup dst_negative_value_prefixlookup. (((M) = (((((dst_positive_code_value_prefixlookup) + (dst_positive_scale_value_prefixlookup)) * S ((dst_positive_code_value_prefixlookup) + (dst_positive_scale_value_prefixlookup)) + ((dst_positive_scale_value_prefixlookup) + (dst_positive_scale_value_prefixlookup))) + (((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) * S ((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) + ((dst_negative_scale_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)))) * S ((((dst_positive_code_value_prefixlookup) + (dst_positive_scale_value_prefixlookup)) * S ((dst_positive_code_value_prefixlookup) + (dst_positive_scale_value_prefixlookup)) + ((dst_positive_scale_value_prefixlookup) + (dst_positive_scale_value_prefixlookup))) + (((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) * S ((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) + ((dst_negative_scale_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)))) + ((((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) * S ((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) + ((dst_negative_scale_value_prefixlookup) + (dst_negative_scale_value_prefixlookup))) + (((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) * S ((dst_negative_code_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)) + ((dst_negative_scale_value_prefixlookup) + (dst_negative_scale_value_prefixlookup)))))) /\ (((((exists ff_h_pvs_value_prefixlookuppositive. ff_h_pvs_value_prefixlookuppositive + S (dst_positive_value_prefixlookup) = S ((S (dc_index_value_prefix)) * dst_positive_scale_value_prefixlookup)) /\ exists ff_q_pvs_value_prefixlookuppositive. dst_positive_code_value_prefixlookup = ff_q_pvs_value_prefixlookuppositive * S ((S (dc_index_value_prefix)) * dst_positive_scale_value_prefixlookup) + (dst_positive_value_prefixlookup))) /\ (((((exists ff_h_pvs_value_prefixlookupnegative. ff_h_pvs_value_prefixlookupnegative + S (dst_negative_value_prefixlookup) = S ((S (dc_index_value_prefix)) * dst_negative_scale_value_prefixlookup)) /\ exists ff_q_pvs_value_prefixlookupnegative. dst_negative_code_value_prefixlookup = ff_q_pvs_value_prefixlookupnegative * S ((S (dc_index_value_prefix)) * dst_negative_scale_value_prefixlookup) + (dst_negative_value_prefixlookup))) /\ (exists ge_balance_positive_value_prefixlookupvalue ge_balance_negative_value_prefixlookupvalue. (((((dc_value_value_prefix) = 2 * (ge_balance_positive_value_prefixlookupvalue) /\ (ge_balance_negative_value_prefixlookupvalue) = 0) \/ exists ge_signed_half_value_prefixlookupvaluedecode. (((dc_value_value_prefix) = 2 * ge_signed_half_value_prefixlookupvaluedecode + 1 /\ (ge_balance_positive_value_prefixlookupvalue) = 0) /\ (ge_balance_negative_value_prefixlookupvalue) = S ge_signed_half_value_prefixlookupvaluedecode))) /\ ((dst_positive_value_prefixlookup) + ge_balance_negative_value_prefixlookupvalue = (dst_negative_value_prefixlookup) + ge_balance_positive_value_prefixlookupvalue))))))))) -> ((((~((dc_index_value_prefix)=0)) /\ (exists dc_quotient_value_prefixentry dc_left_value_prefixentry dc_right_value_prefixentry. (((n)=(dc_index_value_prefix)*dc_quotient_value_prefixentry) /\ (((exists dst_positive_code_value_prefixentryleft dst_positive_scale_value_prefixentryleft dst_negative_code_value_prefixentryleft dst_negative_scale_value_prefixentryleft dst_positive_value_prefixentryleft dst_negative_value_prefixentryleft. (((F) = (((((dst_positive_code_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft)) * S ((dst_positive_code_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft)) + ((dst_positive_scale_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft))) + (((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) * S ((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) + ((dst_negative_scale_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)))) * S ((((dst_positive_code_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft)) * S ((dst_positive_code_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft)) + ((dst_positive_scale_value_prefixentryleft) + (dst_positive_scale_value_prefixentryleft))) + (((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) * S ((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) + ((dst_negative_scale_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)))) + ((((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) * S ((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) + ((dst_negative_scale_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft))) + (((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) * S ((dst_negative_code_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)) + ((dst_negative_scale_value_prefixentryleft) + (dst_negative_scale_value_prefixentryleft)))))) /\ (((((exists ff_h_pvs_value_prefixentryleftpositive. ff_h_pvs_value_prefixentryleftpositive + S (dst_positive_value_prefixentryleft) = S ((S (dc_index_value_prefix)) * dst_positive_scale_value_prefixentryleft)) /\ exists ff_q_pvs_value_prefixentryleftpositive. dst_positive_code_value_prefixentryleft = ff_q_pvs_value_prefixentryleftpositive * S ((S (dc_index_value_prefix)) * dst_positive_scale_value_prefixentryleft) + (dst_positive_value_prefixentryleft))) /\ (((((exists ff_h_pvs_value_prefixentryleftnegative. ff_h_pvs_value_prefixentryleftnegative + S (dst_negative_value_prefixentryleft) = S ((S (dc_index_value_prefix)) * dst_negative_scale_value_prefixentryleft)) /\ exists ff_q_pvs_value_prefixentryleftnegative. dst_negative_code_value_prefixentryleft = ff_q_pvs_value_prefixentryleftnegative * S ((S (dc_index_value_prefix)) * dst_negative_scale_value_prefixentryleft) + (dst_negative_value_prefixentryleft))) /\ (exists ge_balance_positive_value_prefixentryleftvalue ge_balance_negative_value_prefixentryleftvalue. (((((dc_left_value_prefixentry) = 2 * (ge_balance_positive_value_prefixentryleftvalue) /\ (ge_balance_negative_value_prefixentryleftvalue) = 0) \/ exists ge_signed_half_value_prefixentryleftvaluedecode. (((dc_left_value_prefixentry) = 2 * ge_signed_half_value_prefixentryleftvaluedecode + 1 /\ (ge_balance_positive_value_prefixentryleftvalue) = 0) /\ (ge_balance_negative_value_prefixentryleftvalue) = S ge_signed_half_value_prefixentryleftvaluedecode))) /\ ((dst_positive_value_prefixentryleft) + ge_balance_negative_value_prefixentryleftvalue = (dst_negative_value_prefixentryleft) + ge_balance_positive_value_prefixentryleftvalue))))))))) /\ (((exists dst_positive_code_value_prefixentryright dst_positive_scale_value_prefixentryright dst_negative_code_value_prefixentryright dst_negative_scale_value_prefixentryright dst_positive_value_prefixentryright dst_negative_value_prefixentryright. (((G) = (((((dst_positive_code_value_prefixentryright) + (dst_positive_scale_value_prefixentryright)) * S ((dst_positive_code_value_prefixentryright) + (dst_positive_scale_value_prefixentryright)) + ((dst_positive_scale_value_prefixentryright) + (dst_positive_scale_value_prefixentryright))) + (((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) * S ((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) + ((dst_negative_scale_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)))) * S ((((dst_positive_code_value_prefixentryright) + (dst_positive_scale_value_prefixentryright)) * S ((dst_positive_code_value_prefixentryright) + (dst_positive_scale_value_prefixentryright)) + ((dst_positive_scale_value_prefixentryright) + (dst_positive_scale_value_prefixentryright))) + (((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) * S ((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) + ((dst_negative_scale_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)))) + ((((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) * S ((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) + ((dst_negative_scale_value_prefixentryright) + (dst_negative_scale_value_prefixentryright))) + (((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) * S ((dst_negative_code_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)) + ((dst_negative_scale_value_prefixentryright) + (dst_negative_scale_value_prefixentryright)))))) /\ (((((exists ff_h_pvs_value_prefixentryrightpositive. ff_h_pvs_value_prefixentryrightpositive + S (dst_positive_value_prefixentryright) = S ((S (dc_quotient_value_prefixentry)) * dst_positive_scale_value_prefixentryright)) /\ exists ff_q_pvs_value_prefixentryrightpositive. dst_positive_code_value_prefixentryright = ff_q_pvs_value_prefixentryrightpositive * S ((S (dc_quotient_value_prefixentry)) * dst_positive_scale_value_prefixentryright) + (dst_positive_value_prefixentryright))) /\ (((((exists ff_h_pvs_value_prefixentryrightnegative. ff_h_pvs_value_prefixentryrightnegative + S (dst_negative_value_prefixentryright) = S ((S (dc_quotient_value_prefixentry)) * dst_negative_scale_value_prefixentryright)) /\ exists ff_q_pvs_value_prefixentryrightnegative. dst_negative_code_value_prefixentryright = ff_q_pvs_value_prefixentryrightnegative * S ((S (dc_quotient_value_prefixentry)) * dst_negative_scale_value_prefixentryright) + (dst_negative_value_prefixentryright))) /\ (exists ge_balance_positive_value_prefixentryrightvalue ge_balance_negative_value_prefixentryrightvalue. (((((dc_right_value_prefixentry) = 2 * (ge_balance_positive_value_prefixentryrightvalue) /\ (ge_balance_negative_value_prefixentryrightvalue) = 0) \/ exists ge_signed_half_value_prefixentryrightvaluedecode. (((dc_right_value_prefixentry) = 2 * ge_signed_half_value_prefixentryrightvaluedecode + 1 /\ (ge_balance_positive_value_prefixentryrightvalue) = 0) /\ (ge_balance_negative_value_prefixentryrightvalue) = S ge_signed_half_value_prefixentryrightvaluedecode))) /\ ((dst_positive_value_prefixentryright) + ge_balance_negative_value_prefixentryrightvalue = (dst_negative_value_prefixentryright) + ge_balance_positive_value_prefixentryrightvalue))))))))) /\ (exists sto_ap_value_prefixentryproduct sto_an_value_prefixentryproduct sto_bp_value_prefixentryproduct sto_bn_value_prefixentryproduct sto_cp_value_prefixentryproduct sto_cn_value_prefixentryproduct. (((((dc_left_value_prefixentry) = 2 * (sto_ap_value_prefixentryproduct) /\ (sto_an_value_prefixentryproduct) = 0) \/ exists ge_signed_half_value_prefixentryproductleft. (((dc_left_value_prefixentry) = 2 * ge_signed_half_value_prefixentryproductleft + 1 /\ (sto_ap_value_prefixentryproduct) = 0) /\ (sto_an_value_prefixentryproduct) = S ge_signed_half_value_prefixentryproductleft))) /\ ((((((dc_right_value_prefixentry) = 2 * (sto_bp_value_prefixentryproduct) /\ (sto_bn_value_prefixentryproduct) = 0) \/ exists ge_signed_half_value_prefixentryproductright. (((dc_right_value_prefixentry) = 2 * ge_signed_half_value_prefixentryproductright + 1 /\ (sto_bp_value_prefixentryproduct) = 0) /\ (sto_bn_value_prefixentryproduct) = S ge_signed_half_value_prefixentryproductright))) /\ ((((((dc_value_value_prefix) = 2 * (sto_cp_value_prefixentryproduct) /\ (sto_cn_value_prefixentryproduct) = 0) \/ exists ge_signed_half_value_prefixentryproductoutput. (((dc_value_value_prefix) = 2 * ge_signed_half_value_prefixentryproductoutput + 1 /\ (sto_cp_value_prefixentryproduct) = 0) /\ (sto_cn_value_prefixentryproduct) = S ge_signed_half_value_prefixentryproductoutput))) /\ ((sto_ap_value_prefixentryproduct * sto_bp_value_prefixentryproduct + sto_an_value_prefixentryproduct * sto_bn_value_prefixentryproduct) + sto_cn_value_prefixentryproduct = (sto_ap_value_prefixentryproduct * sto_bn_value_prefixentryproduct + sto_an_value_prefixentryproduct * sto_bp_value_prefixentryproduct) + sto_cp_value_prefixentryproduct))))))))))))))) \/ ((((dc_index_value_prefix)=0 \/ ~(exists pvs_factor_value_prefixentrynondivisor. (n) = (dc_index_value_prefix) * pvs_factor_value_prefixentrynondivisor)) /\ ((dc_value_value_prefix)=0))))))) -> (exists pvs_le_gap_value_bound. pvs_le_gap_value_bound + (d) = (l)) -> ((((~((d)=0)) /\ (exists dc_quotient_value_graph dc_left_value_graph dc_right_value_graph. (((n)=(d)*dc_quotient_value_graph) /\ (((exists dst_positive_code_value_graphleft dst_positive_scale_value_graphleft dst_negative_code_value_graphleft dst_negative_scale_value_graphleft dst_positive_value_graphleft dst_negative_value_graphleft. (((F) = (((((dst_positive_code_value_graphleft) + (dst_positive_scale_value_graphleft)) * S ((dst_positive_code_value_graphleft) + (dst_positive_scale_value_graphleft)) + ((dst_positive_scale_value_graphleft) + (dst_positive_scale_value_graphleft))) + (((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) * S ((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) + ((dst_negative_scale_value_graphleft) + (dst_negative_scale_value_graphleft)))) * S ((((dst_positive_code_value_graphleft) + (dst_positive_scale_value_graphleft)) * S ((dst_positive_code_value_graphleft) + (dst_positive_scale_value_graphleft)) + ((dst_positive_scale_value_graphleft) + (dst_positive_scale_value_graphleft))) + (((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) * S ((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) + ((dst_negative_scale_value_graphleft) + (dst_negative_scale_value_graphleft)))) + ((((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) * S ((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) + ((dst_negative_scale_value_graphleft) + (dst_negative_scale_value_graphleft))) + (((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) * S ((dst_negative_code_value_graphleft) + (dst_negative_scale_value_graphleft)) + ((dst_negative_scale_value_graphleft) + (dst_negative_scale_value_graphleft)))))) /\ (((((exists ff_h_pvs_value_graphleftpositive. ff_h_pvs_value_graphleftpositive + S (dst_positive_value_graphleft) = S ((S (d)) * dst_positive_scale_value_graphleft)) /\ exists ff_q_pvs_value_graphleftpositive. dst_positive_code_value_graphleft = ff_q_pvs_value_graphleftpositive * S ((S (d)) * dst_positive_scale_value_graphleft) + (dst_positive_value_graphleft))) /\ (((((exists ff_h_pvs_value_graphleftnegative. ff_h_pvs_value_graphleftnegative + S (dst_negative_value_graphleft) = S ((S (d)) * dst_negative_scale_value_graphleft)) /\ exists ff_q_pvs_value_graphleftnegative. dst_negative_code_value_graphleft = ff_q_pvs_value_graphleftnegative * S ((S (d)) * dst_negative_scale_value_graphleft) + (dst_negative_value_graphleft))) /\ (exists ge_balance_positive_value_graphleftvalue ge_balance_negative_value_graphleftvalue. (((((dc_left_value_graph) = 2 * (ge_balance_positive_value_graphleftvalue) /\ (ge_balance_negative_value_graphleftvalue) = 0) \/ exists ge_signed_half_value_graphleftvaluedecode. (((dc_left_value_graph) = 2 * ge_signed_half_value_graphleftvaluedecode + 1 /\ (ge_balance_positive_value_graphleftvalue) = 0) /\ (ge_balance_negative_value_graphleftvalue) = S ge_signed_half_value_graphleftvaluedecode))) /\ ((dst_positive_value_graphleft) + ge_balance_negative_value_graphleftvalue = (dst_negative_value_graphleft) + ge_balance_positive_value_graphleftvalue))))))))) /\ (((exists dst_positive_code_value_graphright dst_positive_scale_value_graphright dst_negative_code_value_graphright dst_negative_scale_value_graphright dst_positive_value_graphright dst_negative_value_graphright. (((G) = (((((dst_positive_code_value_graphright) + (dst_positive_scale_value_graphright)) * S ((dst_positive_code_value_graphright) + (dst_positive_scale_value_graphright)) + ((dst_positive_scale_value_graphright) + (dst_positive_scale_value_graphright))) + (((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) * S ((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) + ((dst_negative_scale_value_graphright) + (dst_negative_scale_value_graphright)))) * S ((((dst_positive_code_value_graphright) + (dst_positive_scale_value_graphright)) * S ((dst_positive_code_value_graphright) + (dst_positive_scale_value_graphright)) + ((dst_positive_scale_value_graphright) + (dst_positive_scale_value_graphright))) + (((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) * S ((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) + ((dst_negative_scale_value_graphright) + (dst_negative_scale_value_graphright)))) + ((((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) * S ((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) + ((dst_negative_scale_value_graphright) + (dst_negative_scale_value_graphright))) + (((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) * S ((dst_negative_code_value_graphright) + (dst_negative_scale_value_graphright)) + ((dst_negative_scale_value_graphright) + (dst_negative_scale_value_graphright)))))) /\ (((((exists ff_h_pvs_value_graphrightpositive. ff_h_pvs_value_graphrightpositive + S (dst_positive_value_graphright) = S ((S (dc_quotient_value_graph)) * dst_positive_scale_value_graphright)) /\ exists ff_q_pvs_value_graphrightpositive. dst_positive_code_value_graphright = ff_q_pvs_value_graphrightpositive * S ((S (dc_quotient_value_graph)) * dst_positive_scale_value_graphright) + (dst_positive_value_graphright))) /\ (((((exists ff_h_pvs_value_graphrightnegative. ff_h_pvs_value_graphrightnegative + S (dst_negative_value_graphright) = S ((S (dc_quotient_value_graph)) * dst_negative_scale_value_graphright)) /\ exists ff_q_pvs_value_graphrightnegative. dst_negative_code_value_graphright = ff_q_pvs_value_graphrightnegative * S ((S (dc_quotient_value_graph)) * dst_negative_scale_value_graphright) + (dst_negative_value_graphright))) /\ (exists ge_balance_positive_value_graphrightvalue ge_balance_negative_value_graphrightvalue. (((((dc_right_value_graph) = 2 * (ge_balance_positive_value_graphrightvalue) /\ (ge_balance_negative_value_graphrightvalue) = 0) \/ exists ge_signed_half_value_graphrightvaluedecode. (((dc_right_value_graph) = 2 * ge_signed_half_value_graphrightvaluedecode + 1 /\ (ge_balance_positive_value_graphrightvalue) = 0) /\ (ge_balance_negative_value_graphrightvalue) = S ge_signed_half_value_graphrightvaluedecode))) /\ ((dst_positive_value_graphright) + ge_balance_negative_value_graphrightvalue = (dst_negative_value_graphright) + ge_balance_positive_value_graphrightvalue))))))))) /\ (exists sto_ap_value_graphproduct sto_an_value_graphproduct sto_bp_value_graphproduct sto_bn_value_graphproduct sto_cp_value_graphproduct sto_cn_value_graphproduct. (((((dc_left_value_graph) = 2 * (sto_ap_value_graphproduct) /\ (sto_an_value_graphproduct) = 0) \/ exists ge_signed_half_value_graphproductleft. (((dc_left_value_graph) = 2 * ge_signed_half_value_graphproductleft + 1 /\ (sto_ap_value_graphproduct) = 0) /\ (sto_an_value_graphproduct) = S ge_signed_half_value_graphproductleft))) /\ ((((((dc_right_value_graph) = 2 * (sto_bp_value_graphproduct) /\ (sto_bn_value_graphproduct) = 0) \/ exists ge_signed_half_value_graphproductright. (((dc_right_value_graph) = 2 * ge_signed_half_value_graphproductright + 1 /\ (sto_bp_value_graphproduct) = 0) /\ (sto_bn_value_graphproduct) = S ge_signed_half_value_graphproductright))) /\ ((((((z) = 2 * (sto_cp_value_graphproduct) /\ (sto_cn_value_graphproduct) = 0) \/ exists ge_signed_half_value_graphproductoutput. (((z) = 2 * ge_signed_half_value_graphproductoutput + 1 /\ (sto_cp_value_graphproduct) = 0) /\ (sto_cn_value_graphproduct) = S ge_signed_half_value_graphproductoutput))) /\ ((sto_ap_value_graphproduct * sto_bp_value_graphproduct + sto_an_value_graphproduct * sto_bn_value_graphproduct) + sto_cn_value_graphproduct = (sto_ap_value_graphproduct * sto_bn_value_graphproduct + sto_an_value_graphproduct * sto_bp_value_graphproduct) + sto_cp_value_graphproduct))))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_value_graphnondivisor. (n) = (d) * pvs_factor_value_graphnondivisor)) /\ ((z)=0)))) -> (exists dst_positive_code_value_result dst_positive_scale_value_result dst_negative_code_value_result dst_negative_scale_value_result dst_positive_value_result dst_negative_value_result. (((M) = (((((dst_positive_code_value_result) + (dst_positive_scale_value_result)) * S ((dst_positive_code_value_result) + (dst_positive_scale_value_result)) + ((dst_positive_scale_value_result) + (dst_positive_scale_value_result))) + (((dst_negative_code_value_result) + (dst_negative_scale_value_result)) * S ((dst_negative_code_value_result) + (dst_negative_scale_value_result)) + ((dst_negative_scale_value_result) + (dst_negative_scale_value_result)))) * S ((((dst_positive_code_value_result) + (dst_positive_scale_value_result)) * S ((dst_positive_code_value_result) + (dst_positive_scale_value_result)) + ((dst_positive_scale_value_result) + (dst_positive_scale_value_result))) + (((dst_negative_code_value_result) + (dst_negative_scale_value_result)) * S ((dst_negative_code_value_result) + (dst_negative_scale_value_result)) + ((dst_negative_scale_value_result) + (dst_negative_scale_value_result)))) + ((((dst_negative_code_value_result) + (dst_negative_scale_value_result)) * S ((dst_negative_code_value_result) + (dst_negative_scale_value_result)) + ((dst_negative_scale_value_result) + (dst_negative_scale_value_result))) + (((dst_negative_code_value_result) + (dst_negative_scale_value_result)) * S ((dst_negative_code_value_result) + (dst_negative_scale_value_result)) + ((dst_negative_scale_value_result) + (dst_negative_scale_value_result)))))) /\ (((((exists ff_h_pvs_value_resultpositive. ff_h_pvs_value_resultpositive + S (dst_positive_value_result) = S ((S (d)) * dst_positive_scale_value_result)) /\ exists ff_q_pvs_value_resultpositive. dst_positive_code_value_result = ff_q_pvs_value_resultpositive * S ((S (d)) * dst_positive_scale_value_result) + (dst_positive_value_result))) /\ (((((exists ff_h_pvs_value_resultnegative. ff_h_pvs_value_resultnegative + S (dst_negative_value_result) = S ((S (d)) * dst_negative_scale_value_result)) /\ exists ff_q_pvs_value_resultnegative. dst_negative_code_value_result = ff_q_pvs_value_resultnegative * S ((S (d)) * dst_negative_scale_value_result) + (dst_negative_value_result))) /\ (exists ge_balance_positive_value_resultvalue ge_balance_negative_value_resultvalue. (((((z) = 2 * (ge_balance_positive_value_resultvalue) /\ (ge_balance_negative_value_resultvalue) = 0) \/ exists ge_signed_half_value_resultvaluedecode. (((z) = 2 * ge_signed_half_value_resultvaluedecode + 1 /\ (ge_balance_positive_value_resultvalue) = 0) /\ (ge_balance_negative_value_resultvalue) = S ge_signed_half_value_resultvaluedecode))) /\ ((dst_positive_value_result) + ge_balance_negative_value_resultvalue = (dst_negative_value_result) + ge_balance_positive_value_resultvalue)))))))))

Constructive proof overview

Generated structural guide

Every independently justified summand value is present in the actual prefix, by constructed lookup and functionality.

The unchanged tactic script uses 2 declared prerequisites and contains 36 exact native proof lines.

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

Proof neighborhood

Direct dependencies

divisor_signed_table_lookup Alpha theorem; checked-use authorized DC0006 dirichlet_convolution_entry_functional

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

36 script commands · 8 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 (1)

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 d
  7. L7
    intro z
  8. L8
    intro hp
  9. L9
    intro hd
  10. L10
    intro he
02Separate the logical casesL11–11

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

  1. L11
    cases hp
03Establish hvL12–18

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

  1. L12
    have hv : ∃ v. ArithAt(M,d,v)Definitions: ArithAt
  2. L13
    specialize divisor_signed_table_lookup (l)
  3. L14
    specialize divisor_signed_table_lookup (M)
  4. L15
    specialize divisor_signed_table_lookup (d)
  5. L16
    apply divisor_signed_table_lookup
  6. L17
    exact hp_left
  7. L18
    exact hd
04Separate the logical casesL19–19

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

  1. L19
    cases hv
05Establish heqL20–29

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

  1. L20
    have heq : z=x
  2. L21
    specialize dirichlet_convolution_entry_functional (F)
  3. L22
    specialize dirichlet_convolution_entry_functional (G)
  4. L23
    specialize dirichlet_convolution_entry_functional (n)
  5. L24
    specialize dirichlet_convolution_entry_functional (d)
  6. L25
    specialize dirichlet_convolution_entry_functional (z)
  7. L26
    specialize dirichlet_convolution_entry_functional (x)
  8. L27
    apply dirichlet_convolution_entry_functional
  9. L28
    exact he
  10. L29
    specialize hp_right (d)
06Use earlier factsL30–33

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

  1. L30
    specialize hp_right (x)
  2. L31
    apply hp_right
  3. L32
    exact hd
  4. L33
    exact hv_witness
07Calculate and transport equalitiesL34–35

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

  1. L34
    rewrite heq
  2. L35
    rewrite heq
08Use earlier factsL36–36

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

  1. L36
    exact hv_witness

Library-wide reading audit

Original exact command ledger · 36 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro n
  4. 0004intro l
  5. 0005intro M
  6. 0006intro d
  7. 0007intro z
  8. 0008intro hp
  9. 0009intro hd
  10. 0010intro he
  11. 0011cases hp
  12. 0012have hv : exists v. (exists dst_positive_code_prefix_value_lookup dst_positive_scale_prefix_value_lookup dst_negative_code_prefix_value_lookup dst_negative_scale_prefix_value_lookup dst_positive_prefix_value_lookup dst_negative_prefix_value_lookup. (((M) = (((((dst_positive_code_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup)) * S ((dst_positive_code_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup)) + ((dst_positive_scale_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup))) + (((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) * S ((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) + ((dst_negative_scale_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)))) * S ((((dst_positive_code_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup)) * S ((dst_positive_code_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup)) + ((dst_positive_scale_prefix_value_lookup) + (dst_positive_scale_prefix_value_lookup))) + (((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) * S ((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) + ((dst_negative_scale_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)))) + ((((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) * S ((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) + ((dst_negative_scale_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup))) + (((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) * S ((dst_negative_code_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)) + ((dst_negative_scale_prefix_value_lookup) + (dst_negative_scale_prefix_value_lookup)))))) /\ (((((exists ff_h_pvs_prefix_value_lookuppositive. ff_h_pvs_prefix_value_lookuppositive + S (dst_positive_prefix_value_lookup) = S ((S (d)) * dst_positive_scale_prefix_value_lookup)) /\ exists ff_q_pvs_prefix_value_lookuppositive. dst_positive_code_prefix_value_lookup = ff_q_pvs_prefix_value_lookuppositive * S ((S (d)) * dst_positive_scale_prefix_value_lookup) + (dst_positive_prefix_value_lookup))) /\ (((((exists ff_h_pvs_prefix_value_lookupnegative. ff_h_pvs_prefix_value_lookupnegative + S (dst_negative_prefix_value_lookup) = S ((S (d)) * dst_negative_scale_prefix_value_lookup)) /\ exists ff_q_pvs_prefix_value_lookupnegative. dst_negative_code_prefix_value_lookup = ff_q_pvs_prefix_value_lookupnegative * S ((S (d)) * dst_negative_scale_prefix_value_lookup) + (dst_negative_prefix_value_lookup))) /\ (exists ge_balance_positive_prefix_value_lookupvalue ge_balance_negative_prefix_value_lookupvalue. (((((v) = 2 * (ge_balance_positive_prefix_value_lookupvalue) /\ (ge_balance_negative_prefix_value_lookupvalue) = 0) \/ exists ge_signed_half_prefix_value_lookupvaluedecode. (((v) = 2 * ge_signed_half_prefix_value_lookupvaluedecode + 1 /\ (ge_balance_positive_prefix_value_lookupvalue) = 0) /\ (ge_balance_negative_prefix_value_lookupvalue) = S ge_signed_half_prefix_value_lookupvaluedecode))) /\ ((dst_positive_prefix_value_lookup) + ge_balance_negative_prefix_value_lookupvalue = (dst_negative_prefix_value_lookup) + ge_balance_positive_prefix_value_lookupvalue)))))))))
  13. 0013specialize divisor_signed_table_lookup (l)
  14. 0014specialize divisor_signed_table_lookup (M)
  15. 0015specialize divisor_signed_table_lookup (d)
  16. 0016apply divisor_signed_table_lookup
  17. 0017exact hp_left
  18. 0018exact hd
  19. 0019cases hv
  20. 0020have heq : z=x
  21. 0021specialize dirichlet_convolution_entry_functional (F)
  22. 0022specialize dirichlet_convolution_entry_functional (G)
  23. 0023specialize dirichlet_convolution_entry_functional (n)
  24. 0024specialize dirichlet_convolution_entry_functional (d)
  25. 0025specialize dirichlet_convolution_entry_functional (z)
  26. 0026specialize dirichlet_convolution_entry_functional (x)
  27. 0027apply dirichlet_convolution_entry_functional
  28. 0028exact he
  29. 0029specialize hp_right (d)
  30. 0030specialize hp_right (x)
  31. 0031apply hp_right
  32. 0032exact hd
  33. 0033exact hv_witness
  34. 0034rewrite heq
  35. 0035rewrite heq
  36. 0036exact hv_witness