DT0005

dirichlet_convolution_last_entry_iff

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

For n>0 the final divisor entry is exactly F(n)*G(1), using the actual quotient witness n=n*1 in both directions.

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 a b z. ~(n=0) -> (exists dst_positive_code_endpoint_first dst_positive_scale_endpoint_first dst_negative_code_endpoint_first dst_negative_scale_endpoint_first dst_positive_endpoint_first dst_negative_endpoint_first. (((F) = (((((dst_positive_code_endpoint_first) + (dst_positive_scale_endpoint_first)) * S ((dst_positive_code_endpoint_first) + (dst_positive_scale_endpoint_first)) + ((dst_positive_scale_endpoint_first) + (dst_positive_scale_endpoint_first))) + (((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) * S ((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) + ((dst_negative_scale_endpoint_first) + (dst_negative_scale_endpoint_first)))) * S ((((dst_positive_code_endpoint_first) + (dst_positive_scale_endpoint_first)) * S ((dst_positive_code_endpoint_first) + (dst_positive_scale_endpoint_first)) + ((dst_positive_scale_endpoint_first) + (dst_positive_scale_endpoint_first))) + (((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) * S ((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) + ((dst_negative_scale_endpoint_first) + (dst_negative_scale_endpoint_first)))) + ((((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) * S ((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) + ((dst_negative_scale_endpoint_first) + (dst_negative_scale_endpoint_first))) + (((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) * S ((dst_negative_code_endpoint_first) + (dst_negative_scale_endpoint_first)) + ((dst_negative_scale_endpoint_first) + (dst_negative_scale_endpoint_first)))))) /\ (((((exists ff_h_pvs_endpoint_firstpositive. ff_h_pvs_endpoint_firstpositive + S (dst_positive_endpoint_first) = S ((S (n)) * dst_positive_scale_endpoint_first)) /\ exists ff_q_pvs_endpoint_firstpositive. dst_positive_code_endpoint_first = ff_q_pvs_endpoint_firstpositive * S ((S (n)) * dst_positive_scale_endpoint_first) + (dst_positive_endpoint_first))) /\ (((((exists ff_h_pvs_endpoint_firstnegative. ff_h_pvs_endpoint_firstnegative + S (dst_negative_endpoint_first) = S ((S (n)) * dst_negative_scale_endpoint_first)) /\ exists ff_q_pvs_endpoint_firstnegative. dst_negative_code_endpoint_first = ff_q_pvs_endpoint_firstnegative * S ((S (n)) * dst_negative_scale_endpoint_first) + (dst_negative_endpoint_first))) /\ (exists ge_balance_positive_endpoint_firstvalue ge_balance_negative_endpoint_firstvalue. (((((a) = 2 * (ge_balance_positive_endpoint_firstvalue) /\ (ge_balance_negative_endpoint_firstvalue) = 0) \/ exists ge_signed_half_endpoint_firstvaluedecode. (((a) = 2 * ge_signed_half_endpoint_firstvaluedecode + 1 /\ (ge_balance_positive_endpoint_firstvalue) = 0) /\ (ge_balance_negative_endpoint_firstvalue) = S ge_signed_half_endpoint_firstvaluedecode))) /\ ((dst_positive_endpoint_first) + ge_balance_negative_endpoint_firstvalue = (dst_negative_endpoint_first) + ge_balance_positive_endpoint_firstvalue))))))))) -> (exists dst_positive_code_endpoint_second dst_positive_scale_endpoint_second dst_negative_code_endpoint_second dst_negative_scale_endpoint_second dst_positive_endpoint_second dst_negative_endpoint_second. (((G) = (((((dst_positive_code_endpoint_second) + (dst_positive_scale_endpoint_second)) * S ((dst_positive_code_endpoint_second) + (dst_positive_scale_endpoint_second)) + ((dst_positive_scale_endpoint_second) + (dst_positive_scale_endpoint_second))) + (((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) * S ((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) + ((dst_negative_scale_endpoint_second) + (dst_negative_scale_endpoint_second)))) * S ((((dst_positive_code_endpoint_second) + (dst_positive_scale_endpoint_second)) * S ((dst_positive_code_endpoint_second) + (dst_positive_scale_endpoint_second)) + ((dst_positive_scale_endpoint_second) + (dst_positive_scale_endpoint_second))) + (((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) * S ((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) + ((dst_negative_scale_endpoint_second) + (dst_negative_scale_endpoint_second)))) + ((((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) * S ((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) + ((dst_negative_scale_endpoint_second) + (dst_negative_scale_endpoint_second))) + (((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) * S ((dst_negative_code_endpoint_second) + (dst_negative_scale_endpoint_second)) + ((dst_negative_scale_endpoint_second) + (dst_negative_scale_endpoint_second)))))) /\ (((((exists ff_h_pvs_endpoint_secondpositive. ff_h_pvs_endpoint_secondpositive + S (dst_positive_endpoint_second) = S ((S (1)) * dst_positive_scale_endpoint_second)) /\ exists ff_q_pvs_endpoint_secondpositive. dst_positive_code_endpoint_second = ff_q_pvs_endpoint_secondpositive * S ((S (1)) * dst_positive_scale_endpoint_second) + (dst_positive_endpoint_second))) /\ (((((exists ff_h_pvs_endpoint_secondnegative. ff_h_pvs_endpoint_secondnegative + S (dst_negative_endpoint_second) = S ((S (1)) * dst_negative_scale_endpoint_second)) /\ exists ff_q_pvs_endpoint_secondnegative. dst_negative_code_endpoint_second = ff_q_pvs_endpoint_secondnegative * S ((S (1)) * dst_negative_scale_endpoint_second) + (dst_negative_endpoint_second))) /\ (exists ge_balance_positive_endpoint_secondvalue ge_balance_negative_endpoint_secondvalue. (((((b) = 2 * (ge_balance_positive_endpoint_secondvalue) /\ (ge_balance_negative_endpoint_secondvalue) = 0) \/ exists ge_signed_half_endpoint_secondvaluedecode. (((b) = 2 * ge_signed_half_endpoint_secondvaluedecode + 1 /\ (ge_balance_positive_endpoint_secondvalue) = 0) /\ (ge_balance_negative_endpoint_secondvalue) = S ge_signed_half_endpoint_secondvaluedecode))) /\ ((dst_positive_endpoint_second) + ge_balance_negative_endpoint_secondvalue = (dst_negative_endpoint_second) + ge_balance_positive_endpoint_secondvalue))))))))) -> ((((((~((n)=0)) /\ (exists dc_quotient_endpoint_summand dc_left_endpoint_summand dc_right_endpoint_summand. (((n)=(n)*dc_quotient_endpoint_summand) /\ (((exists dst_positive_code_endpoint_summandleft dst_positive_scale_endpoint_summandleft dst_negative_code_endpoint_summandleft dst_negative_scale_endpoint_summandleft dst_positive_endpoint_summandleft dst_negative_endpoint_summandleft. (((F) = (((((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) * S ((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) + ((dst_positive_scale_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))) * S ((((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) * S ((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) + ((dst_positive_scale_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))) + ((((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))))) /\ (((((exists ff_h_pvs_endpoint_summandleftpositive. ff_h_pvs_endpoint_summandleftpositive + S (dst_positive_endpoint_summandleft) = S ((S (n)) * dst_positive_scale_endpoint_summandleft)) /\ exists ff_q_pvs_endpoint_summandleftpositive. dst_positive_code_endpoint_summandleft = ff_q_pvs_endpoint_summandleftpositive * S ((S (n)) * dst_positive_scale_endpoint_summandleft) + (dst_positive_endpoint_summandleft))) /\ (((((exists ff_h_pvs_endpoint_summandleftnegative. ff_h_pvs_endpoint_summandleftnegative + S (dst_negative_endpoint_summandleft) = S ((S (n)) * dst_negative_scale_endpoint_summandleft)) /\ exists ff_q_pvs_endpoint_summandleftnegative. dst_negative_code_endpoint_summandleft = ff_q_pvs_endpoint_summandleftnegative * S ((S (n)) * dst_negative_scale_endpoint_summandleft) + (dst_negative_endpoint_summandleft))) /\ (exists ge_balance_positive_endpoint_summandleftvalue ge_balance_negative_endpoint_summandleftvalue. (((((dc_left_endpoint_summand) = 2 * (ge_balance_positive_endpoint_summandleftvalue) /\ (ge_balance_negative_endpoint_summandleftvalue) = 0) \/ exists ge_signed_half_endpoint_summandleftvaluedecode. (((dc_left_endpoint_summand) = 2 * ge_signed_half_endpoint_summandleftvaluedecode + 1 /\ (ge_balance_positive_endpoint_summandleftvalue) = 0) /\ (ge_balance_negative_endpoint_summandleftvalue) = S ge_signed_half_endpoint_summandleftvaluedecode))) /\ ((dst_positive_endpoint_summandleft) + ge_balance_negative_endpoint_summandleftvalue = (dst_negative_endpoint_summandleft) + ge_balance_positive_endpoint_summandleftvalue))))))))) /\ (((exists dst_positive_code_endpoint_summandright dst_positive_scale_endpoint_summandright dst_negative_code_endpoint_summandright dst_negative_scale_endpoint_summandright dst_positive_endpoint_summandright dst_negative_endpoint_summandright. (((G) = (((((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) * S ((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) + ((dst_positive_scale_endpoint_summandright) + (dst_positive_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))) * S ((((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) * S ((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) + ((dst_positive_scale_endpoint_summandright) + (dst_positive_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))) + ((((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))))) /\ (((((exists ff_h_pvs_endpoint_summandrightpositive. ff_h_pvs_endpoint_summandrightpositive + S (dst_positive_endpoint_summandright) = S ((S (dc_quotient_endpoint_summand)) * dst_positive_scale_endpoint_summandright)) /\ exists ff_q_pvs_endpoint_summandrightpositive. dst_positive_code_endpoint_summandright = ff_q_pvs_endpoint_summandrightpositive * S ((S (dc_quotient_endpoint_summand)) * dst_positive_scale_endpoint_summandright) + (dst_positive_endpoint_summandright))) /\ (((((exists ff_h_pvs_endpoint_summandrightnegative. ff_h_pvs_endpoint_summandrightnegative + S (dst_negative_endpoint_summandright) = S ((S (dc_quotient_endpoint_summand)) * dst_negative_scale_endpoint_summandright)) /\ exists ff_q_pvs_endpoint_summandrightnegative. dst_negative_code_endpoint_summandright = ff_q_pvs_endpoint_summandrightnegative * S ((S (dc_quotient_endpoint_summand)) * dst_negative_scale_endpoint_summandright) + (dst_negative_endpoint_summandright))) /\ (exists ge_balance_positive_endpoint_summandrightvalue ge_balance_negative_endpoint_summandrightvalue. (((((dc_right_endpoint_summand) = 2 * (ge_balance_positive_endpoint_summandrightvalue) /\ (ge_balance_negative_endpoint_summandrightvalue) = 0) \/ exists ge_signed_half_endpoint_summandrightvaluedecode. (((dc_right_endpoint_summand) = 2 * ge_signed_half_endpoint_summandrightvaluedecode + 1 /\ (ge_balance_positive_endpoint_summandrightvalue) = 0) /\ (ge_balance_negative_endpoint_summandrightvalue) = S ge_signed_half_endpoint_summandrightvaluedecode))) /\ ((dst_positive_endpoint_summandright) + ge_balance_negative_endpoint_summandrightvalue = (dst_negative_endpoint_summandright) + ge_balance_positive_endpoint_summandrightvalue))))))))) /\ (exists sto_ap_endpoint_summandproduct sto_an_endpoint_summandproduct sto_bp_endpoint_summandproduct sto_bn_endpoint_summandproduct sto_cp_endpoint_summandproduct sto_cn_endpoint_summandproduct. (((((dc_left_endpoint_summand) = 2 * (sto_ap_endpoint_summandproduct) /\ (sto_an_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductleft. (((dc_left_endpoint_summand) = 2 * ge_signed_half_endpoint_summandproductleft + 1 /\ (sto_ap_endpoint_summandproduct) = 0) /\ (sto_an_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductleft))) /\ ((((((dc_right_endpoint_summand) = 2 * (sto_bp_endpoint_summandproduct) /\ (sto_bn_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductright. (((dc_right_endpoint_summand) = 2 * ge_signed_half_endpoint_summandproductright + 1 /\ (sto_bp_endpoint_summandproduct) = 0) /\ (sto_bn_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductright))) /\ ((((((z) = 2 * (sto_cp_endpoint_summandproduct) /\ (sto_cn_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductoutput. (((z) = 2 * ge_signed_half_endpoint_summandproductoutput + 1 /\ (sto_cp_endpoint_summandproduct) = 0) /\ (sto_cn_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductoutput))) /\ ((sto_ap_endpoint_summandproduct * sto_bp_endpoint_summandproduct + sto_an_endpoint_summandproduct * sto_bn_endpoint_summandproduct) + sto_cn_endpoint_summandproduct = (sto_ap_endpoint_summandproduct * sto_bn_endpoint_summandproduct + sto_an_endpoint_summandproduct * sto_bp_endpoint_summandproduct) + sto_cp_endpoint_summandproduct))))))))))))))) \/ ((((n)=0 \/ ~(exists pvs_factor_endpoint_summandnondivisor. (n) = (n) * pvs_factor_endpoint_summandnondivisor)) /\ ((z)=0)))) -> (exists sto_ap_endpoint_product sto_an_endpoint_product sto_bp_endpoint_product sto_bn_endpoint_product sto_cp_endpoint_product sto_cn_endpoint_product. (((((a) = 2 * (sto_ap_endpoint_product) /\ (sto_an_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productleft. (((a) = 2 * ge_signed_half_endpoint_productleft + 1 /\ (sto_ap_endpoint_product) = 0) /\ (sto_an_endpoint_product) = S ge_signed_half_endpoint_productleft))) /\ ((((((b) = 2 * (sto_bp_endpoint_product) /\ (sto_bn_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productright. (((b) = 2 * ge_signed_half_endpoint_productright + 1 /\ (sto_bp_endpoint_product) = 0) /\ (sto_bn_endpoint_product) = S ge_signed_half_endpoint_productright))) /\ ((((((z) = 2 * (sto_cp_endpoint_product) /\ (sto_cn_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productoutput. (((z) = 2 * ge_signed_half_endpoint_productoutput + 1 /\ (sto_cp_endpoint_product) = 0) /\ (sto_cn_endpoint_product) = S ge_signed_half_endpoint_productoutput))) /\ ((sto_ap_endpoint_product * sto_bp_endpoint_product + sto_an_endpoint_product * sto_bn_endpoint_product) + sto_cn_endpoint_product = (sto_ap_endpoint_product * sto_bn_endpoint_product + sto_an_endpoint_product * sto_bp_endpoint_product) + sto_cp_endpoint_product)))))))) /\ ((exists sto_ap_endpoint_product sto_an_endpoint_product sto_bp_endpoint_product sto_bn_endpoint_product sto_cp_endpoint_product sto_cn_endpoint_product. (((((a) = 2 * (sto_ap_endpoint_product) /\ (sto_an_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productleft. (((a) = 2 * ge_signed_half_endpoint_productleft + 1 /\ (sto_ap_endpoint_product) = 0) /\ (sto_an_endpoint_product) = S ge_signed_half_endpoint_productleft))) /\ ((((((b) = 2 * (sto_bp_endpoint_product) /\ (sto_bn_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productright. (((b) = 2 * ge_signed_half_endpoint_productright + 1 /\ (sto_bp_endpoint_product) = 0) /\ (sto_bn_endpoint_product) = S ge_signed_half_endpoint_productright))) /\ ((((((z) = 2 * (sto_cp_endpoint_product) /\ (sto_cn_endpoint_product) = 0) \/ exists ge_signed_half_endpoint_productoutput. (((z) = 2 * ge_signed_half_endpoint_productoutput + 1 /\ (sto_cp_endpoint_product) = 0) /\ (sto_cn_endpoint_product) = S ge_signed_half_endpoint_productoutput))) /\ ((sto_ap_endpoint_product * sto_bp_endpoint_product + sto_an_endpoint_product * sto_bn_endpoint_product) + sto_cn_endpoint_product = (sto_ap_endpoint_product * sto_bn_endpoint_product + sto_an_endpoint_product * sto_bp_endpoint_product) + sto_cp_endpoint_product))))))) -> ((((~((n)=0)) /\ (exists dc_quotient_endpoint_summand dc_left_endpoint_summand dc_right_endpoint_summand. (((n)=(n)*dc_quotient_endpoint_summand) /\ (((exists dst_positive_code_endpoint_summandleft dst_positive_scale_endpoint_summandleft dst_negative_code_endpoint_summandleft dst_negative_scale_endpoint_summandleft dst_positive_endpoint_summandleft dst_negative_endpoint_summandleft. (((F) = (((((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) * S ((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) + ((dst_positive_scale_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))) * S ((((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) * S ((dst_positive_code_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft)) + ((dst_positive_scale_endpoint_summandleft) + (dst_positive_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))) + ((((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft))) + (((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) * S ((dst_negative_code_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)) + ((dst_negative_scale_endpoint_summandleft) + (dst_negative_scale_endpoint_summandleft)))))) /\ (((((exists ff_h_pvs_endpoint_summandleftpositive. ff_h_pvs_endpoint_summandleftpositive + S (dst_positive_endpoint_summandleft) = S ((S (n)) * dst_positive_scale_endpoint_summandleft)) /\ exists ff_q_pvs_endpoint_summandleftpositive. dst_positive_code_endpoint_summandleft = ff_q_pvs_endpoint_summandleftpositive * S ((S (n)) * dst_positive_scale_endpoint_summandleft) + (dst_positive_endpoint_summandleft))) /\ (((((exists ff_h_pvs_endpoint_summandleftnegative. ff_h_pvs_endpoint_summandleftnegative + S (dst_negative_endpoint_summandleft) = S ((S (n)) * dst_negative_scale_endpoint_summandleft)) /\ exists ff_q_pvs_endpoint_summandleftnegative. dst_negative_code_endpoint_summandleft = ff_q_pvs_endpoint_summandleftnegative * S ((S (n)) * dst_negative_scale_endpoint_summandleft) + (dst_negative_endpoint_summandleft))) /\ (exists ge_balance_positive_endpoint_summandleftvalue ge_balance_negative_endpoint_summandleftvalue. (((((dc_left_endpoint_summand) = 2 * (ge_balance_positive_endpoint_summandleftvalue) /\ (ge_balance_negative_endpoint_summandleftvalue) = 0) \/ exists ge_signed_half_endpoint_summandleftvaluedecode. (((dc_left_endpoint_summand) = 2 * ge_signed_half_endpoint_summandleftvaluedecode + 1 /\ (ge_balance_positive_endpoint_summandleftvalue) = 0) /\ (ge_balance_negative_endpoint_summandleftvalue) = S ge_signed_half_endpoint_summandleftvaluedecode))) /\ ((dst_positive_endpoint_summandleft) + ge_balance_negative_endpoint_summandleftvalue = (dst_negative_endpoint_summandleft) + ge_balance_positive_endpoint_summandleftvalue))))))))) /\ (((exists dst_positive_code_endpoint_summandright dst_positive_scale_endpoint_summandright dst_negative_code_endpoint_summandright dst_negative_scale_endpoint_summandright dst_positive_endpoint_summandright dst_negative_endpoint_summandright. (((G) = (((((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) * S ((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) + ((dst_positive_scale_endpoint_summandright) + (dst_positive_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))) * S ((((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) * S ((dst_positive_code_endpoint_summandright) + (dst_positive_scale_endpoint_summandright)) + ((dst_positive_scale_endpoint_summandright) + (dst_positive_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))) + ((((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright))) + (((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) * S ((dst_negative_code_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)) + ((dst_negative_scale_endpoint_summandright) + (dst_negative_scale_endpoint_summandright)))))) /\ (((((exists ff_h_pvs_endpoint_summandrightpositive. ff_h_pvs_endpoint_summandrightpositive + S (dst_positive_endpoint_summandright) = S ((S (dc_quotient_endpoint_summand)) * dst_positive_scale_endpoint_summandright)) /\ exists ff_q_pvs_endpoint_summandrightpositive. dst_positive_code_endpoint_summandright = ff_q_pvs_endpoint_summandrightpositive * S ((S (dc_quotient_endpoint_summand)) * dst_positive_scale_endpoint_summandright) + (dst_positive_endpoint_summandright))) /\ (((((exists ff_h_pvs_endpoint_summandrightnegative. ff_h_pvs_endpoint_summandrightnegative + S (dst_negative_endpoint_summandright) = S ((S (dc_quotient_endpoint_summand)) * dst_negative_scale_endpoint_summandright)) /\ exists ff_q_pvs_endpoint_summandrightnegative. dst_negative_code_endpoint_summandright = ff_q_pvs_endpoint_summandrightnegative * S ((S (dc_quotient_endpoint_summand)) * dst_negative_scale_endpoint_summandright) + (dst_negative_endpoint_summandright))) /\ (exists ge_balance_positive_endpoint_summandrightvalue ge_balance_negative_endpoint_summandrightvalue. (((((dc_right_endpoint_summand) = 2 * (ge_balance_positive_endpoint_summandrightvalue) /\ (ge_balance_negative_endpoint_summandrightvalue) = 0) \/ exists ge_signed_half_endpoint_summandrightvaluedecode. (((dc_right_endpoint_summand) = 2 * ge_signed_half_endpoint_summandrightvaluedecode + 1 /\ (ge_balance_positive_endpoint_summandrightvalue) = 0) /\ (ge_balance_negative_endpoint_summandrightvalue) = S ge_signed_half_endpoint_summandrightvaluedecode))) /\ ((dst_positive_endpoint_summandright) + ge_balance_negative_endpoint_summandrightvalue = (dst_negative_endpoint_summandright) + ge_balance_positive_endpoint_summandrightvalue))))))))) /\ (exists sto_ap_endpoint_summandproduct sto_an_endpoint_summandproduct sto_bp_endpoint_summandproduct sto_bn_endpoint_summandproduct sto_cp_endpoint_summandproduct sto_cn_endpoint_summandproduct. (((((dc_left_endpoint_summand) = 2 * (sto_ap_endpoint_summandproduct) /\ (sto_an_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductleft. (((dc_left_endpoint_summand) = 2 * ge_signed_half_endpoint_summandproductleft + 1 /\ (sto_ap_endpoint_summandproduct) = 0) /\ (sto_an_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductleft))) /\ ((((((dc_right_endpoint_summand) = 2 * (sto_bp_endpoint_summandproduct) /\ (sto_bn_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductright. (((dc_right_endpoint_summand) = 2 * ge_signed_half_endpoint_summandproductright + 1 /\ (sto_bp_endpoint_summandproduct) = 0) /\ (sto_bn_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductright))) /\ ((((((z) = 2 * (sto_cp_endpoint_summandproduct) /\ (sto_cn_endpoint_summandproduct) = 0) \/ exists ge_signed_half_endpoint_summandproductoutput. (((z) = 2 * ge_signed_half_endpoint_summandproductoutput + 1 /\ (sto_cp_endpoint_summandproduct) = 0) /\ (sto_cn_endpoint_summandproduct) = S ge_signed_half_endpoint_summandproductoutput))) /\ ((sto_ap_endpoint_summandproduct * sto_bp_endpoint_summandproduct + sto_an_endpoint_summandproduct * sto_bn_endpoint_summandproduct) + sto_cn_endpoint_summandproduct = (sto_ap_endpoint_summandproduct * sto_bn_endpoint_summandproduct + sto_an_endpoint_summandproduct * sto_bp_endpoint_summandproduct) + sto_cp_endpoint_summandproduct))))))))))))))) \/ ((((n)=0 \/ ~(exists pvs_factor_endpoint_summandnondivisor. (n) = (n) * pvs_factor_endpoint_summandnondivisor)) /\ ((z)=0))))))

Constructive proof overview

Generated structural guide

For n>0 the final divisor entry is exactly F(n)*G(1), using the actual quotient witness n=n*1 in both directions.

The unchanged tactic script uses 3 declared prerequisites and contains 42 exact native proof lines.

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

Proof neighborhood

Direct dependencies

dirichlet_convolution_entry_quotient_product Alpha theorem; checked-use authorized mul_one Stable theorem; checked-use authorized dirichlet_convolution_entry_from_quotient Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

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

Read the argument

Proof checkpoints

42 script commands · 10 reading checkpoints · 0 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.

01Fix variables and assumptionsL1–9

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 a
  5. L5
    intro b
  6. L6
    intro z
  7. L7
    intro hn
  8. L8
    intro ha
  9. L9
    intro hb
02Separate the logical casesL10–10

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

  1. L10
    split
03Fix variables and assumptionsL11–11

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

  1. L11
    intro he
04Use earlier factsL12–21

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

  1. L12
    specialize dirichlet_convolution_entry_quotient_product (F)
  2. L13
    specialize dirichlet_convolution_entry_quotient_product (G)
  3. L14
    specialize dirichlet_convolution_entry_quotient_product (n)
  4. L15
    specialize dirichlet_convolution_entry_quotient_product (n)
  5. L16
    specialize dirichlet_convolution_entry_quotient_product (1)
  6. L17
    specialize dirichlet_convolution_entry_quotient_product (a)
  7. L18
    specialize dirichlet_convolution_entry_quotient_product (b)
  8. L19
    specialize dirichlet_convolution_entry_quotient_product (z)
  9. L20
    apply dirichlet_convolution_entry_quotient_product
  10. L21
    exact hn
05Calculate and transport equalitiesL22–22

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

  1. L22
    symm
06Use earlier factsL23–26

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

  1. L23
    apply mul_one
  2. L24
    exact ha
  3. L25
    exact hb
  4. L26
    exact he
07Fix variables and assumptionsL27–27

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

  1. L27
    intro hp
08Use earlier factsL28–37

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

  1. L28
    specialize dirichlet_convolution_entry_from_quotient (F)
  2. L29
    specialize dirichlet_convolution_entry_from_quotient (G)
  3. L30
    specialize dirichlet_convolution_entry_from_quotient (n)
  4. L31
    specialize dirichlet_convolution_entry_from_quotient (n)
  5. L32
    specialize dirichlet_convolution_entry_from_quotient (1)
  6. L33
    specialize dirichlet_convolution_entry_from_quotient (a)
  7. L34
    specialize dirichlet_convolution_entry_from_quotient (b)
  8. L35
    specialize dirichlet_convolution_entry_from_quotient (z)
  9. L36
    apply dirichlet_convolution_entry_from_quotient
  10. L37
    exact hn
09Calculate and transport equalitiesL38–38

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

  1. L38
    symm
10Use earlier factsL39–42

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

  1. L39
    apply mul_one
  2. L40
    exact ha
  3. L41
    exact hb
  4. L42
    exact hp

Library-wide reading audit

Original exact command ledger · 42 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro n
  4. 0004intro a
  5. 0005intro b
  6. 0006intro z
  7. 0007intro hn
  8. 0008intro ha
  9. 0009intro hb
  10. 0010split
  11. 0011intro he
  12. 0012specialize dirichlet_convolution_entry_quotient_product (F)
  13. 0013specialize dirichlet_convolution_entry_quotient_product (G)
  14. 0014specialize dirichlet_convolution_entry_quotient_product (n)
  15. 0015specialize dirichlet_convolution_entry_quotient_product (n)
  16. 0016specialize dirichlet_convolution_entry_quotient_product (1)
  17. 0017specialize dirichlet_convolution_entry_quotient_product (a)
  18. 0018specialize dirichlet_convolution_entry_quotient_product (b)
  19. 0019specialize dirichlet_convolution_entry_quotient_product (z)
  20. 0020apply dirichlet_convolution_entry_quotient_product
  21. 0021exact hn
  22. 0022symm
  23. 0023apply mul_one
  24. 0024exact ha
  25. 0025exact hb
  26. 0026exact he
  27. 0027intro hp
  28. 0028specialize dirichlet_convolution_entry_from_quotient (F)
  29. 0029specialize dirichlet_convolution_entry_from_quotient (G)
  30. 0030specialize dirichlet_convolution_entry_from_quotient (n)
  31. 0031specialize dirichlet_convolution_entry_from_quotient (n)
  32. 0032specialize dirichlet_convolution_entry_from_quotient (1)
  33. 0033specialize dirichlet_convolution_entry_from_quotient (a)
  34. 0034specialize dirichlet_convolution_entry_from_quotient (b)
  35. 0035specialize dirichlet_convolution_entry_from_quotient (z)
  36. 0036apply dirichlet_convolution_entry_from_quotient
  37. 0037exact hn
  38. 0038symm
  39. 0039apply mul_one
  40. 0040exact ha
  41. 0041exact hb
  42. 0042exact hp