DC0008

dirichlet_convolution_prefix_zero_constructor

A real singleton zero table supplies the inclusive zero prefix for every fixed input, independently of F(0) and G(0).

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

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

Each retained summand has a witnessed n=d*q and actual signed multiplication. Zero and nondivisors contribute zero. Input and output values at zero are unrestricted; uniqueness is for positive represented values. The separate inverse family proves the unit-at-one criterion. Full G009 multiplicative-function closure is now admitted in the separate Alpha-v32 multiplicative-convolution family.

Exact theorem in conservative defined notation

∀ F. ∀ G. ∀ n. ∀ M. ArithTable(0,M)ArithAt(M,0,0)DirichletPrefix(F,G,n,0,M)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall F G n M. (exists dst_positive_code_base_table dst_positive_scale_base_table dst_negative_code_base_table dst_negative_scale_base_table. (((M) = (((((dst_positive_code_base_table) + (dst_positive_scale_base_table)) * S ((dst_positive_code_base_table) + (dst_positive_scale_base_table)) + ((dst_positive_scale_base_table) + (dst_positive_scale_base_table))) + (((dst_negative_code_base_table) + (dst_negative_scale_base_table)) * S ((dst_negative_code_base_table) + (dst_negative_scale_base_table)) + ((dst_negative_scale_base_table) + (dst_negative_scale_base_table)))) * S ((((dst_positive_code_base_table) + (dst_positive_scale_base_table)) * S ((dst_positive_code_base_table) + (dst_positive_scale_base_table)) + ((dst_positive_scale_base_table) + (dst_positive_scale_base_table))) + (((dst_negative_code_base_table) + (dst_negative_scale_base_table)) * S ((dst_negative_code_base_table) + (dst_negative_scale_base_table)) + ((dst_negative_scale_base_table) + (dst_negative_scale_base_table)))) + ((((dst_negative_code_base_table) + (dst_negative_scale_base_table)) * S ((dst_negative_code_base_table) + (dst_negative_scale_base_table)) + ((dst_negative_scale_base_table) + (dst_negative_scale_base_table))) + (((dst_negative_code_base_table) + (dst_negative_scale_base_table)) * S ((dst_negative_code_base_table) + (dst_negative_scale_base_table)) + ((dst_negative_scale_base_table) + (dst_negative_scale_base_table)))))) /\ (forall dst_index_base_table. (exists pvs_le_gap_base_tabledomain. pvs_le_gap_base_tabledomain + (dst_index_base_table) = (0)) -> exists dst_positive_base_table dst_negative_base_table dst_value_base_table. ((((exists ff_h_pvs_base_tableentrypositive. ff_h_pvs_base_tableentrypositive + S (dst_positive_base_table) = S ((S (dst_index_base_table)) * dst_positive_scale_base_table)) /\ exists ff_q_pvs_base_tableentrypositive. dst_positive_code_base_table = ff_q_pvs_base_tableentrypositive * S ((S (dst_index_base_table)) * dst_positive_scale_base_table) + (dst_positive_base_table))) /\ (((((exists ff_h_pvs_base_tableentrynegative. ff_h_pvs_base_tableentrynegative + S (dst_negative_base_table) = S ((S (dst_index_base_table)) * dst_negative_scale_base_table)) /\ exists ff_q_pvs_base_tableentrynegative. dst_negative_code_base_table = ff_q_pvs_base_tableentrynegative * S ((S (dst_index_base_table)) * dst_negative_scale_base_table) + (dst_negative_base_table))) /\ (exists ge_balance_positive_base_tableentryvalue ge_balance_negative_base_tableentryvalue. (((((dst_value_base_table) = 2 * (ge_balance_positive_base_tableentryvalue) /\ (ge_balance_negative_base_tableentryvalue) = 0) \/ exists ge_signed_half_base_tableentryvaluedecode. (((dst_value_base_table) = 2 * ge_signed_half_base_tableentryvaluedecode + 1 /\ (ge_balance_positive_base_tableentryvalue) = 0) /\ (ge_balance_negative_base_tableentryvalue) = S ge_signed_half_base_tableentryvaluedecode))) /\ ((dst_positive_base_table) + ge_balance_negative_base_tableentryvalue = (dst_negative_base_table) + ge_balance_positive_base_tableentryvalue))))))))) -> (exists dst_positive_code_base_entry dst_positive_scale_base_entry dst_negative_code_base_entry dst_negative_scale_base_entry dst_positive_base_entry dst_negative_base_entry. (((M) = (((((dst_positive_code_base_entry) + (dst_positive_scale_base_entry)) * S ((dst_positive_code_base_entry) + (dst_positive_scale_base_entry)) + ((dst_positive_scale_base_entry) + (dst_positive_scale_base_entry))) + (((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) * S ((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) + ((dst_negative_scale_base_entry) + (dst_negative_scale_base_entry)))) * S ((((dst_positive_code_base_entry) + (dst_positive_scale_base_entry)) * S ((dst_positive_code_base_entry) + (dst_positive_scale_base_entry)) + ((dst_positive_scale_base_entry) + (dst_positive_scale_base_entry))) + (((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) * S ((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) + ((dst_negative_scale_base_entry) + (dst_negative_scale_base_entry)))) + ((((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) * S ((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) + ((dst_negative_scale_base_entry) + (dst_negative_scale_base_entry))) + (((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) * S ((dst_negative_code_base_entry) + (dst_negative_scale_base_entry)) + ((dst_negative_scale_base_entry) + (dst_negative_scale_base_entry)))))) /\ (((((exists ff_h_pvs_base_entrypositive. ff_h_pvs_base_entrypositive + S (dst_positive_base_entry) = S ((S (0)) * dst_positive_scale_base_entry)) /\ exists ff_q_pvs_base_entrypositive. dst_positive_code_base_entry = ff_q_pvs_base_entrypositive * S ((S (0)) * dst_positive_scale_base_entry) + (dst_positive_base_entry))) /\ (((((exists ff_h_pvs_base_entrynegative. ff_h_pvs_base_entrynegative + S (dst_negative_base_entry) = S ((S (0)) * dst_negative_scale_base_entry)) /\ exists ff_q_pvs_base_entrynegative. dst_negative_code_base_entry = ff_q_pvs_base_entrynegative * S ((S (0)) * dst_negative_scale_base_entry) + (dst_negative_base_entry))) /\ (exists ge_balance_positive_base_entryvalue ge_balance_negative_base_entryvalue. (((((0) = 2 * (ge_balance_positive_base_entryvalue) /\ (ge_balance_negative_base_entryvalue) = 0) \/ exists ge_signed_half_base_entryvaluedecode. (((0) = 2 * ge_signed_half_base_entryvaluedecode + 1 /\ (ge_balance_positive_base_entryvalue) = 0) /\ (ge_balance_negative_base_entryvalue) = S ge_signed_half_base_entryvaluedecode))) /\ ((dst_positive_base_entry) + ge_balance_negative_base_entryvalue = (dst_negative_base_entry) + ge_balance_positive_base_entryvalue))))))))) -> (((exists dst_positive_code_base_resulttable dst_positive_scale_base_resulttable dst_negative_code_base_resulttable dst_negative_scale_base_resulttable. (((M) = (((((dst_positive_code_base_resulttable) + (dst_positive_scale_base_resulttable)) * S ((dst_positive_code_base_resulttable) + (dst_positive_scale_base_resulttable)) + ((dst_positive_scale_base_resulttable) + (dst_positive_scale_base_resulttable))) + (((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) * S ((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) + ((dst_negative_scale_base_resulttable) + (dst_negative_scale_base_resulttable)))) * S ((((dst_positive_code_base_resulttable) + (dst_positive_scale_base_resulttable)) * S ((dst_positive_code_base_resulttable) + (dst_positive_scale_base_resulttable)) + ((dst_positive_scale_base_resulttable) + (dst_positive_scale_base_resulttable))) + (((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) * S ((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) + ((dst_negative_scale_base_resulttable) + (dst_negative_scale_base_resulttable)))) + ((((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) * S ((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) + ((dst_negative_scale_base_resulttable) + (dst_negative_scale_base_resulttable))) + (((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) * S ((dst_negative_code_base_resulttable) + (dst_negative_scale_base_resulttable)) + ((dst_negative_scale_base_resulttable) + (dst_negative_scale_base_resulttable)))))) /\ (forall dst_index_base_resulttable. (exists pvs_le_gap_base_resulttabledomain. pvs_le_gap_base_resulttabledomain + (dst_index_base_resulttable) = (0)) -> exists dst_positive_base_resulttable dst_negative_base_resulttable dst_value_base_resulttable. ((((exists ff_h_pvs_base_resulttableentrypositive. ff_h_pvs_base_resulttableentrypositive + S (dst_positive_base_resulttable) = S ((S (dst_index_base_resulttable)) * dst_positive_scale_base_resulttable)) /\ exists ff_q_pvs_base_resulttableentrypositive. dst_positive_code_base_resulttable = ff_q_pvs_base_resulttableentrypositive * S ((S (dst_index_base_resulttable)) * dst_positive_scale_base_resulttable) + (dst_positive_base_resulttable))) /\ (((((exists ff_h_pvs_base_resulttableentrynegative. ff_h_pvs_base_resulttableentrynegative + S (dst_negative_base_resulttable) = S ((S (dst_index_base_resulttable)) * dst_negative_scale_base_resulttable)) /\ exists ff_q_pvs_base_resulttableentrynegative. dst_negative_code_base_resulttable = ff_q_pvs_base_resulttableentrynegative * S ((S (dst_index_base_resulttable)) * dst_negative_scale_base_resulttable) + (dst_negative_base_resulttable))) /\ (exists ge_balance_positive_base_resulttableentryvalue ge_balance_negative_base_resulttableentryvalue. (((((dst_value_base_resulttable) = 2 * (ge_balance_positive_base_resulttableentryvalue) /\ (ge_balance_negative_base_resulttableentryvalue) = 0) \/ exists ge_signed_half_base_resulttableentryvaluedecode. (((dst_value_base_resulttable) = 2 * ge_signed_half_base_resulttableentryvaluedecode + 1 /\ (ge_balance_positive_base_resulttableentryvalue) = 0) /\ (ge_balance_negative_base_resulttableentryvalue) = S ge_signed_half_base_resulttableentryvaluedecode))) /\ ((dst_positive_base_resulttable) + ge_balance_negative_base_resulttableentryvalue = (dst_negative_base_resulttable) + ge_balance_positive_base_resulttableentryvalue))))))))) /\ (forall dc_index_base_result dc_value_base_result. (exists pvs_le_gap_base_resultdomain. pvs_le_gap_base_resultdomain + (dc_index_base_result) = (0)) -> (exists dst_positive_code_base_resultlookup dst_positive_scale_base_resultlookup dst_negative_code_base_resultlookup dst_negative_scale_base_resultlookup dst_positive_base_resultlookup dst_negative_base_resultlookup. (((M) = (((((dst_positive_code_base_resultlookup) + (dst_positive_scale_base_resultlookup)) * S ((dst_positive_code_base_resultlookup) + (dst_positive_scale_base_resultlookup)) + ((dst_positive_scale_base_resultlookup) + (dst_positive_scale_base_resultlookup))) + (((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) * S ((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) + ((dst_negative_scale_base_resultlookup) + (dst_negative_scale_base_resultlookup)))) * S ((((dst_positive_code_base_resultlookup) + (dst_positive_scale_base_resultlookup)) * S ((dst_positive_code_base_resultlookup) + (dst_positive_scale_base_resultlookup)) + ((dst_positive_scale_base_resultlookup) + (dst_positive_scale_base_resultlookup))) + (((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) * S ((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) + ((dst_negative_scale_base_resultlookup) + (dst_negative_scale_base_resultlookup)))) + ((((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) * S ((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) + ((dst_negative_scale_base_resultlookup) + (dst_negative_scale_base_resultlookup))) + (((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) * S ((dst_negative_code_base_resultlookup) + (dst_negative_scale_base_resultlookup)) + ((dst_negative_scale_base_resultlookup) + (dst_negative_scale_base_resultlookup)))))) /\ (((((exists ff_h_pvs_base_resultlookuppositive. ff_h_pvs_base_resultlookuppositive + S (dst_positive_base_resultlookup) = S ((S (dc_index_base_result)) * dst_positive_scale_base_resultlookup)) /\ exists ff_q_pvs_base_resultlookuppositive. dst_positive_code_base_resultlookup = ff_q_pvs_base_resultlookuppositive * S ((S (dc_index_base_result)) * dst_positive_scale_base_resultlookup) + (dst_positive_base_resultlookup))) /\ (((((exists ff_h_pvs_base_resultlookupnegative. ff_h_pvs_base_resultlookupnegative + S (dst_negative_base_resultlookup) = S ((S (dc_index_base_result)) * dst_negative_scale_base_resultlookup)) /\ exists ff_q_pvs_base_resultlookupnegative. dst_negative_code_base_resultlookup = ff_q_pvs_base_resultlookupnegative * S ((S (dc_index_base_result)) * dst_negative_scale_base_resultlookup) + (dst_negative_base_resultlookup))) /\ (exists ge_balance_positive_base_resultlookupvalue ge_balance_negative_base_resultlookupvalue. (((((dc_value_base_result) = 2 * (ge_balance_positive_base_resultlookupvalue) /\ (ge_balance_negative_base_resultlookupvalue) = 0) \/ exists ge_signed_half_base_resultlookupvaluedecode. (((dc_value_base_result) = 2 * ge_signed_half_base_resultlookupvaluedecode + 1 /\ (ge_balance_positive_base_resultlookupvalue) = 0) /\ (ge_balance_negative_base_resultlookupvalue) = S ge_signed_half_base_resultlookupvaluedecode))) /\ ((dst_positive_base_resultlookup) + ge_balance_negative_base_resultlookupvalue = (dst_negative_base_resultlookup) + ge_balance_positive_base_resultlookupvalue))))))))) -> ((((~((dc_index_base_result)=0)) /\ (exists dc_quotient_base_resultentry dc_left_base_resultentry dc_right_base_resultentry. (((n)=(dc_index_base_result)*dc_quotient_base_resultentry) /\ (((exists dst_positive_code_base_resultentryleft dst_positive_scale_base_resultentryleft dst_negative_code_base_resultentryleft dst_negative_scale_base_resultentryleft dst_positive_base_resultentryleft dst_negative_base_resultentryleft. (((F) = (((((dst_positive_code_base_resultentryleft) + (dst_positive_scale_base_resultentryleft)) * S ((dst_positive_code_base_resultentryleft) + (dst_positive_scale_base_resultentryleft)) + ((dst_positive_scale_base_resultentryleft) + (dst_positive_scale_base_resultentryleft))) + (((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) * S ((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) + ((dst_negative_scale_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)))) * S ((((dst_positive_code_base_resultentryleft) + (dst_positive_scale_base_resultentryleft)) * S ((dst_positive_code_base_resultentryleft) + (dst_positive_scale_base_resultentryleft)) + ((dst_positive_scale_base_resultentryleft) + (dst_positive_scale_base_resultentryleft))) + (((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) * S ((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) + ((dst_negative_scale_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)))) + ((((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) * S ((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) + ((dst_negative_scale_base_resultentryleft) + (dst_negative_scale_base_resultentryleft))) + (((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) * S ((dst_negative_code_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)) + ((dst_negative_scale_base_resultentryleft) + (dst_negative_scale_base_resultentryleft)))))) /\ (((((exists ff_h_pvs_base_resultentryleftpositive. ff_h_pvs_base_resultentryleftpositive + S (dst_positive_base_resultentryleft) = S ((S (dc_index_base_result)) * dst_positive_scale_base_resultentryleft)) /\ exists ff_q_pvs_base_resultentryleftpositive. dst_positive_code_base_resultentryleft = ff_q_pvs_base_resultentryleftpositive * S ((S (dc_index_base_result)) * dst_positive_scale_base_resultentryleft) + (dst_positive_base_resultentryleft))) /\ (((((exists ff_h_pvs_base_resultentryleftnegative. ff_h_pvs_base_resultentryleftnegative + S (dst_negative_base_resultentryleft) = S ((S (dc_index_base_result)) * dst_negative_scale_base_resultentryleft)) /\ exists ff_q_pvs_base_resultentryleftnegative. dst_negative_code_base_resultentryleft = ff_q_pvs_base_resultentryleftnegative * S ((S (dc_index_base_result)) * dst_negative_scale_base_resultentryleft) + (dst_negative_base_resultentryleft))) /\ (exists ge_balance_positive_base_resultentryleftvalue ge_balance_negative_base_resultentryleftvalue. (((((dc_left_base_resultentry) = 2 * (ge_balance_positive_base_resultentryleftvalue) /\ (ge_balance_negative_base_resultentryleftvalue) = 0) \/ exists ge_signed_half_base_resultentryleftvaluedecode. (((dc_left_base_resultentry) = 2 * ge_signed_half_base_resultentryleftvaluedecode + 1 /\ (ge_balance_positive_base_resultentryleftvalue) = 0) /\ (ge_balance_negative_base_resultentryleftvalue) = S ge_signed_half_base_resultentryleftvaluedecode))) /\ ((dst_positive_base_resultentryleft) + ge_balance_negative_base_resultentryleftvalue = (dst_negative_base_resultentryleft) + ge_balance_positive_base_resultentryleftvalue))))))))) /\ (((exists dst_positive_code_base_resultentryright dst_positive_scale_base_resultentryright dst_negative_code_base_resultentryright dst_negative_scale_base_resultentryright dst_positive_base_resultentryright dst_negative_base_resultentryright. (((G) = (((((dst_positive_code_base_resultentryright) + (dst_positive_scale_base_resultentryright)) * S ((dst_positive_code_base_resultentryright) + (dst_positive_scale_base_resultentryright)) + ((dst_positive_scale_base_resultentryright) + (dst_positive_scale_base_resultentryright))) + (((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) * S ((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) + ((dst_negative_scale_base_resultentryright) + (dst_negative_scale_base_resultentryright)))) * S ((((dst_positive_code_base_resultentryright) + (dst_positive_scale_base_resultentryright)) * S ((dst_positive_code_base_resultentryright) + (dst_positive_scale_base_resultentryright)) + ((dst_positive_scale_base_resultentryright) + (dst_positive_scale_base_resultentryright))) + (((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) * S ((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) + ((dst_negative_scale_base_resultentryright) + (dst_negative_scale_base_resultentryright)))) + ((((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) * S ((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) + ((dst_negative_scale_base_resultentryright) + (dst_negative_scale_base_resultentryright))) + (((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) * S ((dst_negative_code_base_resultentryright) + (dst_negative_scale_base_resultentryright)) + ((dst_negative_scale_base_resultentryright) + (dst_negative_scale_base_resultentryright)))))) /\ (((((exists ff_h_pvs_base_resultentryrightpositive. ff_h_pvs_base_resultentryrightpositive + S (dst_positive_base_resultentryright) = S ((S (dc_quotient_base_resultentry)) * dst_positive_scale_base_resultentryright)) /\ exists ff_q_pvs_base_resultentryrightpositive. dst_positive_code_base_resultentryright = ff_q_pvs_base_resultentryrightpositive * S ((S (dc_quotient_base_resultentry)) * dst_positive_scale_base_resultentryright) + (dst_positive_base_resultentryright))) /\ (((((exists ff_h_pvs_base_resultentryrightnegative. ff_h_pvs_base_resultentryrightnegative + S (dst_negative_base_resultentryright) = S ((S (dc_quotient_base_resultentry)) * dst_negative_scale_base_resultentryright)) /\ exists ff_q_pvs_base_resultentryrightnegative. dst_negative_code_base_resultentryright = ff_q_pvs_base_resultentryrightnegative * S ((S (dc_quotient_base_resultentry)) * dst_negative_scale_base_resultentryright) + (dst_negative_base_resultentryright))) /\ (exists ge_balance_positive_base_resultentryrightvalue ge_balance_negative_base_resultentryrightvalue. (((((dc_right_base_resultentry) = 2 * (ge_balance_positive_base_resultentryrightvalue) /\ (ge_balance_negative_base_resultentryrightvalue) = 0) \/ exists ge_signed_half_base_resultentryrightvaluedecode. (((dc_right_base_resultentry) = 2 * ge_signed_half_base_resultentryrightvaluedecode + 1 /\ (ge_balance_positive_base_resultentryrightvalue) = 0) /\ (ge_balance_negative_base_resultentryrightvalue) = S ge_signed_half_base_resultentryrightvaluedecode))) /\ ((dst_positive_base_resultentryright) + ge_balance_negative_base_resultentryrightvalue = (dst_negative_base_resultentryright) + ge_balance_positive_base_resultentryrightvalue))))))))) /\ (exists sto_ap_base_resultentryproduct sto_an_base_resultentryproduct sto_bp_base_resultentryproduct sto_bn_base_resultentryproduct sto_cp_base_resultentryproduct sto_cn_base_resultentryproduct. (((((dc_left_base_resultentry) = 2 * (sto_ap_base_resultentryproduct) /\ (sto_an_base_resultentryproduct) = 0) \/ exists ge_signed_half_base_resultentryproductleft. (((dc_left_base_resultentry) = 2 * ge_signed_half_base_resultentryproductleft + 1 /\ (sto_ap_base_resultentryproduct) = 0) /\ (sto_an_base_resultentryproduct) = S ge_signed_half_base_resultentryproductleft))) /\ ((((((dc_right_base_resultentry) = 2 * (sto_bp_base_resultentryproduct) /\ (sto_bn_base_resultentryproduct) = 0) \/ exists ge_signed_half_base_resultentryproductright. (((dc_right_base_resultentry) = 2 * ge_signed_half_base_resultentryproductright + 1 /\ (sto_bp_base_resultentryproduct) = 0) /\ (sto_bn_base_resultentryproduct) = S ge_signed_half_base_resultentryproductright))) /\ ((((((dc_value_base_result) = 2 * (sto_cp_base_resultentryproduct) /\ (sto_cn_base_resultentryproduct) = 0) \/ exists ge_signed_half_base_resultentryproductoutput. (((dc_value_base_result) = 2 * ge_signed_half_base_resultentryproductoutput + 1 /\ (sto_cp_base_resultentryproduct) = 0) /\ (sto_cn_base_resultentryproduct) = S ge_signed_half_base_resultentryproductoutput))) /\ ((sto_ap_base_resultentryproduct * sto_bp_base_resultentryproduct + sto_an_base_resultentryproduct * sto_bn_base_resultentryproduct) + sto_cn_base_resultentryproduct = (sto_ap_base_resultentryproduct * sto_bn_base_resultentryproduct + sto_an_base_resultentryproduct * sto_bp_base_resultentryproduct) + sto_cp_base_resultentryproduct))))))))))))))) \/ ((((dc_index_base_result)=0 \/ ~(exists pvs_factor_base_resultentrynondivisor. (n) = (dc_index_base_result) * pvs_factor_base_resultentrynondivisor)) /\ ((dc_value_base_result)=0)))))))

Complete tactic proof in conservative notation

All 31 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

31 script commands · 7 reading checkpoints · 1 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

01Fix variables and assumptionsL1–6

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 M
  5. L5
    intro ht
  6. L6
    intro hz
02Separate the logical casesL7–7

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

  1. L7
    split
03Use earlier factsL8–8

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

  1. L8
    exact ht
04Fix variables and assumptionsL9–12

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

  1. L9
    intro d
  2. L10
    intro z
  3. L11
    intro hd
  4. L12
    intro he
05Establish hd0L13–20

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

  1. L13
    have hd0 : d=0
  2. L14
    specialize le_zero (d)
  3. L15
    apply le_zero
  4. L16
    exact hd
  5. L17
    rewrite hd0 at he
  6. L18
    rewrite hd0 at he
  7. L19
    rewrite hd0 at he
  8. L20
    rewrite hd0 at he
06Separate the logical casesL21–23

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

  1. L21
    right
  2. L22
    split
  3. L23
    left
07Use earlier factsL24–31

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

  1. L24
    exact hd0
  2. L25
    specialize divisor_signed_table_at_functional (M)
  3. L26
    specialize divisor_signed_table_at_functional (0)
  4. L27
    specialize divisor_signed_table_at_functional (z)
  5. L28
    specialize divisor_signed_table_at_functional (0)
  6. L29
    apply divisor_signed_table_at_functional
  7. L30
    exact he
  8. L31
    exact hz

Library-wide reading audit

Original defined command ledger · 31 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro n
  4. 0004intro M
  5. 0005intro ht
  6. 0006intro hz
  7. 0007split
  8. 0008exact ht
  9. 0009intro d
  10. 0010intro z
  11. 0011intro hd
  12. 0012intro he
  13. 0013have hd0 : d=0
  14. 0014specialize le_zero (d)
  15. 0015apply le_zero
  16. 0016exact hd
  17. 0017rewrite hd0 at he
  18. 0018rewrite hd0 at he
  19. 0019rewrite hd0 at he
  20. 0020rewrite hd0 at he
  21. 0021right
  22. 0022split
  23. 0023left
  24. 0024exact hd0
  25. 0025specialize divisor_signed_table_at_functional (M)
  26. 0026specialize divisor_signed_table_at_functional (0)
  27. 0027specialize divisor_signed_table_at_functional (z)
  28. 0028specialize divisor_signed_table_at_functional (0)
  29. 0029apply divisor_signed_table_at_functional
  30. 0030exact he
  31. 0031exact hz