DU000F

dirichlet_delta_right_sum_value

The actual zero-prefix/last-entry fold proves (F*delta)(n)=F(n), with positivity supplied by the convolution itself.

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.

Signed one is code 2. Positive-only table graphs preserve arbitrary zeroth values, including N=0. The unit and divisor-sum identities are proved, never embedded in definitions. The separate inverse family proves the general unit-at-one criterion; multiplicative-function closure remains open.

Exact theorem in conservative defined notation

∀ N. ∀ F. ∀ E. ∀ n. ∀ a. ∀ z. KroneckerDeltaTable(N,E)Le(n,N)ArithAt(F,n,a)DirichletSum(F,E,n,z) → z = a

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall N F E n a z. (((exists dst_positive_code_unit_value_deltatable dst_positive_scale_unit_value_deltatable dst_negative_code_unit_value_deltatable dst_negative_scale_unit_value_deltatable. (((E) = (((((dst_positive_code_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable)) * S ((dst_positive_code_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable)) + ((dst_positive_scale_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable))) + (((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) * S ((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) + ((dst_negative_scale_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)))) * S ((((dst_positive_code_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable)) * S ((dst_positive_code_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable)) + ((dst_positive_scale_unit_value_deltatable) + (dst_positive_scale_unit_value_deltatable))) + (((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) * S ((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) + ((dst_negative_scale_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)))) + ((((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) * S ((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) + ((dst_negative_scale_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable))) + (((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) * S ((dst_negative_code_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)) + ((dst_negative_scale_unit_value_deltatable) + (dst_negative_scale_unit_value_deltatable)))))) /\ (forall dst_index_unit_value_deltatable. (exists pvs_le_gap_unit_value_deltatabledomain. pvs_le_gap_unit_value_deltatabledomain + (dst_index_unit_value_deltatable) = (N)) -> exists dst_positive_unit_value_deltatable dst_negative_unit_value_deltatable dst_value_unit_value_deltatable. ((((exists ff_h_pvs_unit_value_deltatableentrypositive. ff_h_pvs_unit_value_deltatableentrypositive + S (dst_positive_unit_value_deltatable) = S ((S (dst_index_unit_value_deltatable)) * dst_positive_scale_unit_value_deltatable)) /\ exists ff_q_pvs_unit_value_deltatableentrypositive. dst_positive_code_unit_value_deltatable = ff_q_pvs_unit_value_deltatableentrypositive * S ((S (dst_index_unit_value_deltatable)) * dst_positive_scale_unit_value_deltatable) + (dst_positive_unit_value_deltatable))) /\ (((((exists ff_h_pvs_unit_value_deltatableentrynegative. ff_h_pvs_unit_value_deltatableentrynegative + S (dst_negative_unit_value_deltatable) = S ((S (dst_index_unit_value_deltatable)) * dst_negative_scale_unit_value_deltatable)) /\ exists ff_q_pvs_unit_value_deltatableentrynegative. dst_negative_code_unit_value_deltatable = ff_q_pvs_unit_value_deltatableentrynegative * S ((S (dst_index_unit_value_deltatable)) * dst_negative_scale_unit_value_deltatable) + (dst_negative_unit_value_deltatable))) /\ (exists ge_balance_positive_unit_value_deltatableentryvalue ge_balance_negative_unit_value_deltatableentryvalue. (((((dst_value_unit_value_deltatable) = 2 * (ge_balance_positive_unit_value_deltatableentryvalue) /\ (ge_balance_negative_unit_value_deltatableentryvalue) = 0) \/ exists ge_signed_half_unit_value_deltatableentryvaluedecode. (((dst_value_unit_value_deltatable) = 2 * ge_signed_half_unit_value_deltatableentryvaluedecode + 1 /\ (ge_balance_positive_unit_value_deltatableentryvalue) = 0) /\ (ge_balance_negative_unit_value_deltatableentryvalue) = S ge_signed_half_unit_value_deltatableentryvaluedecode))) /\ ((dst_positive_unit_value_deltatable) + ge_balance_negative_unit_value_deltatableentryvalue = (dst_negative_unit_value_deltatable) + ge_balance_positive_unit_value_deltatableentryvalue))))))))) /\ (forall du_index_unit_value_delta du_value_unit_value_delta. ~(du_index_unit_value_delta=0) -> (exists pvs_le_gap_unit_value_deltabound. pvs_le_gap_unit_value_deltabound + (du_index_unit_value_delta) = (N)) -> (exists dst_positive_code_unit_value_deltaentry dst_positive_scale_unit_value_deltaentry dst_negative_code_unit_value_deltaentry dst_negative_scale_unit_value_deltaentry dst_positive_unit_value_deltaentry dst_negative_unit_value_deltaentry. (((E) = (((((dst_positive_code_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry)) * S ((dst_positive_code_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry)) + ((dst_positive_scale_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry))) + (((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) * S ((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) + ((dst_negative_scale_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)))) * S ((((dst_positive_code_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry)) * S ((dst_positive_code_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry)) + ((dst_positive_scale_unit_value_deltaentry) + (dst_positive_scale_unit_value_deltaentry))) + (((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) * S ((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) + ((dst_negative_scale_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)))) + ((((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) * S ((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) + ((dst_negative_scale_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry))) + (((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) * S ((dst_negative_code_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)) + ((dst_negative_scale_unit_value_deltaentry) + (dst_negative_scale_unit_value_deltaentry)))))) /\ (((((exists ff_h_pvs_unit_value_deltaentrypositive. ff_h_pvs_unit_value_deltaentrypositive + S (dst_positive_unit_value_deltaentry) = S ((S (du_index_unit_value_delta)) * dst_positive_scale_unit_value_deltaentry)) /\ exists ff_q_pvs_unit_value_deltaentrypositive. dst_positive_code_unit_value_deltaentry = ff_q_pvs_unit_value_deltaentrypositive * S ((S (du_index_unit_value_delta)) * dst_positive_scale_unit_value_deltaentry) + (dst_positive_unit_value_deltaentry))) /\ (((((exists ff_h_pvs_unit_value_deltaentrynegative. ff_h_pvs_unit_value_deltaentrynegative + S (dst_negative_unit_value_deltaentry) = S ((S (du_index_unit_value_delta)) * dst_negative_scale_unit_value_deltaentry)) /\ exists ff_q_pvs_unit_value_deltaentrynegative. dst_negative_code_unit_value_deltaentry = ff_q_pvs_unit_value_deltaentrynegative * S ((S (du_index_unit_value_delta)) * dst_negative_scale_unit_value_deltaentry) + (dst_negative_unit_value_deltaentry))) /\ (exists ge_balance_positive_unit_value_deltaentryvalue ge_balance_negative_unit_value_deltaentryvalue. (((((du_value_unit_value_delta) = 2 * (ge_balance_positive_unit_value_deltaentryvalue) /\ (ge_balance_negative_unit_value_deltaentryvalue) = 0) \/ exists ge_signed_half_unit_value_deltaentryvaluedecode. (((du_value_unit_value_delta) = 2 * ge_signed_half_unit_value_deltaentryvaluedecode + 1 /\ (ge_balance_positive_unit_value_deltaentryvalue) = 0) /\ (ge_balance_negative_unit_value_deltaentryvalue) = S ge_signed_half_unit_value_deltaentryvaluedecode))) /\ ((dst_positive_unit_value_deltaentry) + ge_balance_negative_unit_value_deltaentryvalue = (dst_negative_unit_value_deltaentry) + ge_balance_positive_unit_value_deltaentryvalue))))))))) -> ((((du_index_unit_value_delta)=1 -> (du_value_unit_value_delta)=2) /\ (~((du_index_unit_value_delta)=1) -> (du_value_unit_value_delta)=0)))))) -> (exists pvs_le_gap_unit_value_bound. pvs_le_gap_unit_value_bound + (n) = (N)) -> (exists dst_positive_code_unit_value_source dst_positive_scale_unit_value_source dst_negative_code_unit_value_source dst_negative_scale_unit_value_source dst_positive_unit_value_source dst_negative_unit_value_source. (((F) = (((((dst_positive_code_unit_value_source) + (dst_positive_scale_unit_value_source)) * S ((dst_positive_code_unit_value_source) + (dst_positive_scale_unit_value_source)) + ((dst_positive_scale_unit_value_source) + (dst_positive_scale_unit_value_source))) + (((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) * S ((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) + ((dst_negative_scale_unit_value_source) + (dst_negative_scale_unit_value_source)))) * S ((((dst_positive_code_unit_value_source) + (dst_positive_scale_unit_value_source)) * S ((dst_positive_code_unit_value_source) + (dst_positive_scale_unit_value_source)) + ((dst_positive_scale_unit_value_source) + (dst_positive_scale_unit_value_source))) + (((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) * S ((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) + ((dst_negative_scale_unit_value_source) + (dst_negative_scale_unit_value_source)))) + ((((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) * S ((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) + ((dst_negative_scale_unit_value_source) + (dst_negative_scale_unit_value_source))) + (((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) * S ((dst_negative_code_unit_value_source) + (dst_negative_scale_unit_value_source)) + ((dst_negative_scale_unit_value_source) + (dst_negative_scale_unit_value_source)))))) /\ (((((exists ff_h_pvs_unit_value_sourcepositive. ff_h_pvs_unit_value_sourcepositive + S (dst_positive_unit_value_source) = S ((S (n)) * dst_positive_scale_unit_value_source)) /\ exists ff_q_pvs_unit_value_sourcepositive. dst_positive_code_unit_value_source = ff_q_pvs_unit_value_sourcepositive * S ((S (n)) * dst_positive_scale_unit_value_source) + (dst_positive_unit_value_source))) /\ (((((exists ff_h_pvs_unit_value_sourcenegative. ff_h_pvs_unit_value_sourcenegative + S (dst_negative_unit_value_source) = S ((S (n)) * dst_negative_scale_unit_value_source)) /\ exists ff_q_pvs_unit_value_sourcenegative. dst_negative_code_unit_value_source = ff_q_pvs_unit_value_sourcenegative * S ((S (n)) * dst_negative_scale_unit_value_source) + (dst_negative_unit_value_source))) /\ (exists ge_balance_positive_unit_value_sourcevalue ge_balance_negative_unit_value_sourcevalue. (((((a) = 2 * (ge_balance_positive_unit_value_sourcevalue) /\ (ge_balance_negative_unit_value_sourcevalue) = 0) \/ exists ge_signed_half_unit_value_sourcevaluedecode. (((a) = 2 * ge_signed_half_unit_value_sourcevaluedecode + 1 /\ (ge_balance_positive_unit_value_sourcevalue) = 0) /\ (ge_balance_negative_unit_value_sourcevalue) = S ge_signed_half_unit_value_sourcevaluedecode))) /\ ((dst_positive_unit_value_source) + ge_balance_negative_unit_value_sourcevalue = (dst_negative_unit_value_source) + ge_balance_positive_unit_value_sourcevalue))))))))) -> (((~((n)=0)) /\ (exists dc_mask_unit_value_convolution. ((((exists dst_positive_code_unit_value_convolutionmasktable dst_positive_scale_unit_value_convolutionmasktable dst_negative_code_unit_value_convolutionmasktable dst_negative_scale_unit_value_convolutionmasktable. (((dc_mask_unit_value_convolution) = (((((dst_positive_code_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable)) * S ((dst_positive_code_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable)) + ((dst_positive_scale_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable))) + (((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) * S ((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) + ((dst_negative_scale_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)))) * S ((((dst_positive_code_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable)) * S ((dst_positive_code_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable)) + ((dst_positive_scale_unit_value_convolutionmasktable) + (dst_positive_scale_unit_value_convolutionmasktable))) + (((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) * S ((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) + ((dst_negative_scale_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)))) + ((((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) * S ((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) + ((dst_negative_scale_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable))) + (((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) * S ((dst_negative_code_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)) + ((dst_negative_scale_unit_value_convolutionmasktable) + (dst_negative_scale_unit_value_convolutionmasktable)))))) /\ (forall dst_index_unit_value_convolutionmasktable. (exists pvs_le_gap_unit_value_convolutionmasktabledomain. pvs_le_gap_unit_value_convolutionmasktabledomain + (dst_index_unit_value_convolutionmasktable) = (n)) -> exists dst_positive_unit_value_convolutionmasktable dst_negative_unit_value_convolutionmasktable dst_value_unit_value_convolutionmasktable. ((((exists ff_h_pvs_unit_value_convolutionmasktableentrypositive. ff_h_pvs_unit_value_convolutionmasktableentrypositive + S (dst_positive_unit_value_convolutionmasktable) = S ((S (dst_index_unit_value_convolutionmasktable)) * dst_positive_scale_unit_value_convolutionmasktable)) /\ exists ff_q_pvs_unit_value_convolutionmasktableentrypositive. dst_positive_code_unit_value_convolutionmasktable = ff_q_pvs_unit_value_convolutionmasktableentrypositive * S ((S (dst_index_unit_value_convolutionmasktable)) * dst_positive_scale_unit_value_convolutionmasktable) + (dst_positive_unit_value_convolutionmasktable))) /\ (((((exists ff_h_pvs_unit_value_convolutionmasktableentrynegative. ff_h_pvs_unit_value_convolutionmasktableentrynegative + S (dst_negative_unit_value_convolutionmasktable) = S ((S (dst_index_unit_value_convolutionmasktable)) * dst_negative_scale_unit_value_convolutionmasktable)) /\ exists ff_q_pvs_unit_value_convolutionmasktableentrynegative. dst_negative_code_unit_value_convolutionmasktable = ff_q_pvs_unit_value_convolutionmasktableentrynegative * S ((S (dst_index_unit_value_convolutionmasktable)) * dst_negative_scale_unit_value_convolutionmasktable) + (dst_negative_unit_value_convolutionmasktable))) /\ (exists ge_balance_positive_unit_value_convolutionmasktableentryvalue ge_balance_negative_unit_value_convolutionmasktableentryvalue. (((((dst_value_unit_value_convolutionmasktable) = 2 * (ge_balance_positive_unit_value_convolutionmasktableentryvalue) /\ (ge_balance_negative_unit_value_convolutionmasktableentryvalue) = 0) \/ exists ge_signed_half_unit_value_convolutionmasktableentryvaluedecode. (((dst_value_unit_value_convolutionmasktable) = 2 * ge_signed_half_unit_value_convolutionmasktableentryvaluedecode + 1 /\ (ge_balance_positive_unit_value_convolutionmasktableentryvalue) = 0) /\ (ge_balance_negative_unit_value_convolutionmasktableentryvalue) = S ge_signed_half_unit_value_convolutionmasktableentryvaluedecode))) /\ ((dst_positive_unit_value_convolutionmasktable) + ge_balance_negative_unit_value_convolutionmasktableentryvalue = (dst_negative_unit_value_convolutionmasktable) + ge_balance_positive_unit_value_convolutionmasktableentryvalue))))))))) /\ (forall dc_index_unit_value_convolutionmask dc_value_unit_value_convolutionmask. (exists pvs_le_gap_unit_value_convolutionmaskdomain. pvs_le_gap_unit_value_convolutionmaskdomain + (dc_index_unit_value_convolutionmask) = (n)) -> (exists dst_positive_code_unit_value_convolutionmasklookup dst_positive_scale_unit_value_convolutionmasklookup dst_negative_code_unit_value_convolutionmasklookup dst_negative_scale_unit_value_convolutionmasklookup dst_positive_unit_value_convolutionmasklookup dst_negative_unit_value_convolutionmasklookup. (((dc_mask_unit_value_convolution) = (((((dst_positive_code_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup)) * S ((dst_positive_code_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup)) + ((dst_positive_scale_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup))) + (((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) * S ((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) + ((dst_negative_scale_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)))) * S ((((dst_positive_code_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup)) * S ((dst_positive_code_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup)) + ((dst_positive_scale_unit_value_convolutionmasklookup) + (dst_positive_scale_unit_value_convolutionmasklookup))) + (((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) * S ((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) + ((dst_negative_scale_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)))) + ((((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) * S ((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) + ((dst_negative_scale_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup))) + (((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) * S ((dst_negative_code_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)) + ((dst_negative_scale_unit_value_convolutionmasklookup) + (dst_negative_scale_unit_value_convolutionmasklookup)))))) /\ (((((exists ff_h_pvs_unit_value_convolutionmasklookuppositive. ff_h_pvs_unit_value_convolutionmasklookuppositive + S (dst_positive_unit_value_convolutionmasklookup) = S ((S (dc_index_unit_value_convolutionmask)) * dst_positive_scale_unit_value_convolutionmasklookup)) /\ exists ff_q_pvs_unit_value_convolutionmasklookuppositive. dst_positive_code_unit_value_convolutionmasklookup = ff_q_pvs_unit_value_convolutionmasklookuppositive * S ((S (dc_index_unit_value_convolutionmask)) * dst_positive_scale_unit_value_convolutionmasklookup) + (dst_positive_unit_value_convolutionmasklookup))) /\ (((((exists ff_h_pvs_unit_value_convolutionmasklookupnegative. ff_h_pvs_unit_value_convolutionmasklookupnegative + S (dst_negative_unit_value_convolutionmasklookup) = S ((S (dc_index_unit_value_convolutionmask)) * dst_negative_scale_unit_value_convolutionmasklookup)) /\ exists ff_q_pvs_unit_value_convolutionmasklookupnegative. dst_negative_code_unit_value_convolutionmasklookup = ff_q_pvs_unit_value_convolutionmasklookupnegative * S ((S (dc_index_unit_value_convolutionmask)) * dst_negative_scale_unit_value_convolutionmasklookup) + (dst_negative_unit_value_convolutionmasklookup))) /\ (exists ge_balance_positive_unit_value_convolutionmasklookupvalue ge_balance_negative_unit_value_convolutionmasklookupvalue. (((((dc_value_unit_value_convolutionmask) = 2 * (ge_balance_positive_unit_value_convolutionmasklookupvalue) /\ (ge_balance_negative_unit_value_convolutionmasklookupvalue) = 0) \/ exists ge_signed_half_unit_value_convolutionmasklookupvaluedecode. (((dc_value_unit_value_convolutionmask) = 2 * ge_signed_half_unit_value_convolutionmasklookupvaluedecode + 1 /\ (ge_balance_positive_unit_value_convolutionmasklookupvalue) = 0) /\ (ge_balance_negative_unit_value_convolutionmasklookupvalue) = S ge_signed_half_unit_value_convolutionmasklookupvaluedecode))) /\ ((dst_positive_unit_value_convolutionmasklookup) + ge_balance_negative_unit_value_convolutionmasklookupvalue = (dst_negative_unit_value_convolutionmasklookup) + ge_balance_positive_unit_value_convolutionmasklookupvalue))))))))) -> ((((~((dc_index_unit_value_convolutionmask)=0)) /\ (exists dc_quotient_unit_value_convolutionmaskentry dc_left_unit_value_convolutionmaskentry dc_right_unit_value_convolutionmaskentry. (((n)=(dc_index_unit_value_convolutionmask)*dc_quotient_unit_value_convolutionmaskentry) /\ (((exists dst_positive_code_unit_value_convolutionmaskentryleft dst_positive_scale_unit_value_convolutionmaskentryleft dst_negative_code_unit_value_convolutionmaskentryleft dst_negative_scale_unit_value_convolutionmaskentryleft dst_positive_unit_value_convolutionmaskentryleft dst_negative_unit_value_convolutionmaskentryleft. (((F) = (((((dst_positive_code_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft)) * S ((dst_positive_code_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft)) + ((dst_positive_scale_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft))) + (((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) * S ((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) + ((dst_negative_scale_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)))) * S ((((dst_positive_code_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft)) * S ((dst_positive_code_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft)) + ((dst_positive_scale_unit_value_convolutionmaskentryleft) + (dst_positive_scale_unit_value_convolutionmaskentryleft))) + (((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) * S ((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) + ((dst_negative_scale_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)))) + ((((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) * S ((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) + ((dst_negative_scale_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft))) + (((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) * S ((dst_negative_code_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)) + ((dst_negative_scale_unit_value_convolutionmaskentryleft) + (dst_negative_scale_unit_value_convolutionmaskentryleft)))))) /\ (((((exists ff_h_pvs_unit_value_convolutionmaskentryleftpositive. ff_h_pvs_unit_value_convolutionmaskentryleftpositive + S (dst_positive_unit_value_convolutionmaskentryleft) = S ((S (dc_index_unit_value_convolutionmask)) * dst_positive_scale_unit_value_convolutionmaskentryleft)) /\ exists ff_q_pvs_unit_value_convolutionmaskentryleftpositive. dst_positive_code_unit_value_convolutionmaskentryleft = ff_q_pvs_unit_value_convolutionmaskentryleftpositive * S ((S (dc_index_unit_value_convolutionmask)) * dst_positive_scale_unit_value_convolutionmaskentryleft) + (dst_positive_unit_value_convolutionmaskentryleft))) /\ (((((exists ff_h_pvs_unit_value_convolutionmaskentryleftnegative. ff_h_pvs_unit_value_convolutionmaskentryleftnegative + S (dst_negative_unit_value_convolutionmaskentryleft) = S ((S (dc_index_unit_value_convolutionmask)) * dst_negative_scale_unit_value_convolutionmaskentryleft)) /\ exists ff_q_pvs_unit_value_convolutionmaskentryleftnegative. dst_negative_code_unit_value_convolutionmaskentryleft = ff_q_pvs_unit_value_convolutionmaskentryleftnegative * S ((S (dc_index_unit_value_convolutionmask)) * dst_negative_scale_unit_value_convolutionmaskentryleft) + (dst_negative_unit_value_convolutionmaskentryleft))) /\ (exists ge_balance_positive_unit_value_convolutionmaskentryleftvalue ge_balance_negative_unit_value_convolutionmaskentryleftvalue. (((((dc_left_unit_value_convolutionmaskentry) = 2 * (ge_balance_positive_unit_value_convolutionmaskentryleftvalue) /\ (ge_balance_negative_unit_value_convolutionmaskentryleftvalue) = 0) \/ exists ge_signed_half_unit_value_convolutionmaskentryleftvaluedecode. (((dc_left_unit_value_convolutionmaskentry) = 2 * ge_signed_half_unit_value_convolutionmaskentryleftvaluedecode + 1 /\ (ge_balance_positive_unit_value_convolutionmaskentryleftvalue) = 0) /\ (ge_balance_negative_unit_value_convolutionmaskentryleftvalue) = S ge_signed_half_unit_value_convolutionmaskentryleftvaluedecode))) /\ ((dst_positive_unit_value_convolutionmaskentryleft) + ge_balance_negative_unit_value_convolutionmaskentryleftvalue = (dst_negative_unit_value_convolutionmaskentryleft) + ge_balance_positive_unit_value_convolutionmaskentryleftvalue))))))))) /\ (((exists dst_positive_code_unit_value_convolutionmaskentryright dst_positive_scale_unit_value_convolutionmaskentryright dst_negative_code_unit_value_convolutionmaskentryright dst_negative_scale_unit_value_convolutionmaskentryright dst_positive_unit_value_convolutionmaskentryright dst_negative_unit_value_convolutionmaskentryright. (((E) = (((((dst_positive_code_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright)) * S ((dst_positive_code_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright)) + ((dst_positive_scale_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright))) + (((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) * S ((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) + ((dst_negative_scale_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)))) * S ((((dst_positive_code_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright)) * S ((dst_positive_code_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright)) + ((dst_positive_scale_unit_value_convolutionmaskentryright) + (dst_positive_scale_unit_value_convolutionmaskentryright))) + (((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) * S ((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) + ((dst_negative_scale_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)))) + ((((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) * S ((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) + ((dst_negative_scale_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright))) + (((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) * S ((dst_negative_code_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)) + ((dst_negative_scale_unit_value_convolutionmaskentryright) + (dst_negative_scale_unit_value_convolutionmaskentryright)))))) /\ (((((exists ff_h_pvs_unit_value_convolutionmaskentryrightpositive. ff_h_pvs_unit_value_convolutionmaskentryrightpositive + S (dst_positive_unit_value_convolutionmaskentryright) = S ((S (dc_quotient_unit_value_convolutionmaskentry)) * dst_positive_scale_unit_value_convolutionmaskentryright)) /\ exists ff_q_pvs_unit_value_convolutionmaskentryrightpositive. dst_positive_code_unit_value_convolutionmaskentryright = ff_q_pvs_unit_value_convolutionmaskentryrightpositive * S ((S (dc_quotient_unit_value_convolutionmaskentry)) * dst_positive_scale_unit_value_convolutionmaskentryright) + (dst_positive_unit_value_convolutionmaskentryright))) /\ (((((exists ff_h_pvs_unit_value_convolutionmaskentryrightnegative. ff_h_pvs_unit_value_convolutionmaskentryrightnegative + S (dst_negative_unit_value_convolutionmaskentryright) = S ((S (dc_quotient_unit_value_convolutionmaskentry)) * dst_negative_scale_unit_value_convolutionmaskentryright)) /\ exists ff_q_pvs_unit_value_convolutionmaskentryrightnegative. dst_negative_code_unit_value_convolutionmaskentryright = ff_q_pvs_unit_value_convolutionmaskentryrightnegative * S ((S (dc_quotient_unit_value_convolutionmaskentry)) * dst_negative_scale_unit_value_convolutionmaskentryright) + (dst_negative_unit_value_convolutionmaskentryright))) /\ (exists ge_balance_positive_unit_value_convolutionmaskentryrightvalue ge_balance_negative_unit_value_convolutionmaskentryrightvalue. (((((dc_right_unit_value_convolutionmaskentry) = 2 * (ge_balance_positive_unit_value_convolutionmaskentryrightvalue) /\ (ge_balance_negative_unit_value_convolutionmaskentryrightvalue) = 0) \/ exists ge_signed_half_unit_value_convolutionmaskentryrightvaluedecode. (((dc_right_unit_value_convolutionmaskentry) = 2 * ge_signed_half_unit_value_convolutionmaskentryrightvaluedecode + 1 /\ (ge_balance_positive_unit_value_convolutionmaskentryrightvalue) = 0) /\ (ge_balance_negative_unit_value_convolutionmaskentryrightvalue) = S ge_signed_half_unit_value_convolutionmaskentryrightvaluedecode))) /\ ((dst_positive_unit_value_convolutionmaskentryright) + ge_balance_negative_unit_value_convolutionmaskentryrightvalue = (dst_negative_unit_value_convolutionmaskentryright) + ge_balance_positive_unit_value_convolutionmaskentryrightvalue))))))))) /\ (exists sto_ap_unit_value_convolutionmaskentryproduct sto_an_unit_value_convolutionmaskentryproduct sto_bp_unit_value_convolutionmaskentryproduct sto_bn_unit_value_convolutionmaskentryproduct sto_cp_unit_value_convolutionmaskentryproduct sto_cn_unit_value_convolutionmaskentryproduct. (((((dc_left_unit_value_convolutionmaskentry) = 2 * (sto_ap_unit_value_convolutionmaskentryproduct) /\ (sto_an_unit_value_convolutionmaskentryproduct) = 0) \/ exists ge_signed_half_unit_value_convolutionmaskentryproductleft. (((dc_left_unit_value_convolutionmaskentry) = 2 * ge_signed_half_unit_value_convolutionmaskentryproductleft + 1 /\ (sto_ap_unit_value_convolutionmaskentryproduct) = 0) /\ (sto_an_unit_value_convolutionmaskentryproduct) = S ge_signed_half_unit_value_convolutionmaskentryproductleft))) /\ ((((((dc_right_unit_value_convolutionmaskentry) = 2 * (sto_bp_unit_value_convolutionmaskentryproduct) /\ (sto_bn_unit_value_convolutionmaskentryproduct) = 0) \/ exists ge_signed_half_unit_value_convolutionmaskentryproductright. (((dc_right_unit_value_convolutionmaskentry) = 2 * ge_signed_half_unit_value_convolutionmaskentryproductright + 1 /\ (sto_bp_unit_value_convolutionmaskentryproduct) = 0) /\ (sto_bn_unit_value_convolutionmaskentryproduct) = S ge_signed_half_unit_value_convolutionmaskentryproductright))) /\ ((((((dc_value_unit_value_convolutionmask) = 2 * (sto_cp_unit_value_convolutionmaskentryproduct) /\ (sto_cn_unit_value_convolutionmaskentryproduct) = 0) \/ exists ge_signed_half_unit_value_convolutionmaskentryproductoutput. (((dc_value_unit_value_convolutionmask) = 2 * ge_signed_half_unit_value_convolutionmaskentryproductoutput + 1 /\ (sto_cp_unit_value_convolutionmaskentryproduct) = 0) /\ (sto_cn_unit_value_convolutionmaskentryproduct) = S ge_signed_half_unit_value_convolutionmaskentryproductoutput))) /\ ((sto_ap_unit_value_convolutionmaskentryproduct * sto_bp_unit_value_convolutionmaskentryproduct + sto_an_unit_value_convolutionmaskentryproduct * sto_bn_unit_value_convolutionmaskentryproduct) + sto_cn_unit_value_convolutionmaskentryproduct = (sto_ap_unit_value_convolutionmaskentryproduct * sto_bn_unit_value_convolutionmaskentryproduct + sto_an_unit_value_convolutionmaskentryproduct * sto_bp_unit_value_convolutionmaskentryproduct) + sto_cp_unit_value_convolutionmaskentryproduct))))))))))))))) \/ ((((dc_index_unit_value_convolutionmask)=0 \/ ~(exists pvs_factor_unit_value_convolutionmaskentrynondivisor. (n) = (dc_index_unit_value_convolutionmask) * pvs_factor_unit_value_convolutionmaskentrynondivisor)) /\ ((dc_value_unit_value_convolutionmask)=0))))))) /\ (exists dst_positive_code_unit_value_convolutionfold dst_positive_scale_unit_value_convolutionfold dst_negative_code_unit_value_convolutionfold dst_negative_scale_unit_value_convolutionfold dst_positive_sum_unit_value_convolutionfold dst_negative_sum_unit_value_convolutionfold. (((dc_mask_unit_value_convolution) = (((((dst_positive_code_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold)) * S ((dst_positive_code_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold)) + ((dst_positive_scale_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold))) + (((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) * S ((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) + ((dst_negative_scale_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)))) * S ((((dst_positive_code_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold)) * S ((dst_positive_code_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold)) + ((dst_positive_scale_unit_value_convolutionfold) + (dst_positive_scale_unit_value_convolutionfold))) + (((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) * S ((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) + ((dst_negative_scale_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)))) + ((((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) * S ((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) + ((dst_negative_scale_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold))) + (((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) * S ((dst_negative_code_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)) + ((dst_negative_scale_unit_value_convolutionfold) + (dst_negative_scale_unit_value_convolutionfold)))))) /\ (((exists fs_u_dst_unit_value_convolutionfoldpositive fs_v_dst_unit_value_convolutionfoldpositive. ((((exists fs_h_dst_unit_value_convolutionfoldpositive_body_start. fs_h_dst_unit_value_convolutionfoldpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_unit_value_convolutionfoldpositive)) /\ exists fs_q_dst_unit_value_convolutionfoldpositive_body_start. fs_u_dst_unit_value_convolutionfoldpositive = fs_q_dst_unit_value_convolutionfoldpositive_body_start * S ((S (0)) * fs_v_dst_unit_value_convolutionfoldpositive) + (0))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldpositive_body_terminal. fs_h_dst_unit_value_convolutionfoldpositive_body_terminal + S (dst_positive_sum_unit_value_convolutionfold) = S ((S (S (n))) * fs_v_dst_unit_value_convolutionfoldpositive)) /\ exists fs_q_dst_unit_value_convolutionfoldpositive_body_terminal. fs_u_dst_unit_value_convolutionfoldpositive = fs_q_dst_unit_value_convolutionfoldpositive_body_terminal * S ((S (S (n))) * fs_v_dst_unit_value_convolutionfoldpositive) + (dst_positive_sum_unit_value_convolutionfold))) /\ forall fs_i_dst_unit_value_convolutionfoldpositive_body_steps. (exists fs_lt_dst_unit_value_convolutionfoldpositive_body_steps_bound. fs_lt_dst_unit_value_convolutionfoldpositive_body_steps_bound + S fs_i_dst_unit_value_convolutionfoldpositive_body_steps = S (n)) -> exists fs_a_dst_unit_value_convolutionfoldpositive_body_steps fs_r_dst_unit_value_convolutionfoldpositive_body_steps fs_s_dst_unit_value_convolutionfoldpositive_body_steps. ((((exists fs_h_dst_unit_value_convolutionfoldpositive_body_steps_summand. fs_h_dst_unit_value_convolutionfoldpositive_body_steps_summand + S (fs_a_dst_unit_value_convolutionfoldpositive_body_steps) = S ((S (fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * dst_positive_scale_unit_value_convolutionfold)) /\ exists fs_q_dst_unit_value_convolutionfoldpositive_body_steps_summand. dst_positive_code_unit_value_convolutionfold = fs_q_dst_unit_value_convolutionfoldpositive_body_steps_summand * S ((S (fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * dst_positive_scale_unit_value_convolutionfold) + (fs_a_dst_unit_value_convolutionfoldpositive_body_steps))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldpositive_body_steps_partial. fs_h_dst_unit_value_convolutionfoldpositive_body_steps_partial + S (fs_r_dst_unit_value_convolutionfoldpositive_body_steps) = S ((S (fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * fs_v_dst_unit_value_convolutionfoldpositive)) /\ exists fs_q_dst_unit_value_convolutionfoldpositive_body_steps_partial. fs_u_dst_unit_value_convolutionfoldpositive = fs_q_dst_unit_value_convolutionfoldpositive_body_steps_partial * S ((S (fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * fs_v_dst_unit_value_convolutionfoldpositive) + (fs_r_dst_unit_value_convolutionfoldpositive_body_steps))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldpositive_body_steps_successor. fs_h_dst_unit_value_convolutionfoldpositive_body_steps_successor + S (fs_s_dst_unit_value_convolutionfoldpositive_body_steps) = S ((S (S fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * fs_v_dst_unit_value_convolutionfoldpositive)) /\ exists fs_q_dst_unit_value_convolutionfoldpositive_body_steps_successor. fs_u_dst_unit_value_convolutionfoldpositive = fs_q_dst_unit_value_convolutionfoldpositive_body_steps_successor * S ((S (S fs_i_dst_unit_value_convolutionfoldpositive_body_steps)) * fs_v_dst_unit_value_convolutionfoldpositive) + (fs_s_dst_unit_value_convolutionfoldpositive_body_steps))) /\ fs_s_dst_unit_value_convolutionfoldpositive_body_steps = fs_r_dst_unit_value_convolutionfoldpositive_body_steps + fs_a_dst_unit_value_convolutionfoldpositive_body_steps)))))) /\ (((exists fs_u_dst_unit_value_convolutionfoldnegative fs_v_dst_unit_value_convolutionfoldnegative. ((((exists fs_h_dst_unit_value_convolutionfoldnegative_body_start. fs_h_dst_unit_value_convolutionfoldnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_unit_value_convolutionfoldnegative)) /\ exists fs_q_dst_unit_value_convolutionfoldnegative_body_start. fs_u_dst_unit_value_convolutionfoldnegative = fs_q_dst_unit_value_convolutionfoldnegative_body_start * S ((S (0)) * fs_v_dst_unit_value_convolutionfoldnegative) + (0))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldnegative_body_terminal. fs_h_dst_unit_value_convolutionfoldnegative_body_terminal + S (dst_negative_sum_unit_value_convolutionfold) = S ((S (S (n))) * fs_v_dst_unit_value_convolutionfoldnegative)) /\ exists fs_q_dst_unit_value_convolutionfoldnegative_body_terminal. fs_u_dst_unit_value_convolutionfoldnegative = fs_q_dst_unit_value_convolutionfoldnegative_body_terminal * S ((S (S (n))) * fs_v_dst_unit_value_convolutionfoldnegative) + (dst_negative_sum_unit_value_convolutionfold))) /\ forall fs_i_dst_unit_value_convolutionfoldnegative_body_steps. (exists fs_lt_dst_unit_value_convolutionfoldnegative_body_steps_bound. fs_lt_dst_unit_value_convolutionfoldnegative_body_steps_bound + S fs_i_dst_unit_value_convolutionfoldnegative_body_steps = S (n)) -> exists fs_a_dst_unit_value_convolutionfoldnegative_body_steps fs_r_dst_unit_value_convolutionfoldnegative_body_steps fs_s_dst_unit_value_convolutionfoldnegative_body_steps. ((((exists fs_h_dst_unit_value_convolutionfoldnegative_body_steps_summand. fs_h_dst_unit_value_convolutionfoldnegative_body_steps_summand + S (fs_a_dst_unit_value_convolutionfoldnegative_body_steps) = S ((S (fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * dst_negative_scale_unit_value_convolutionfold)) /\ exists fs_q_dst_unit_value_convolutionfoldnegative_body_steps_summand. dst_negative_code_unit_value_convolutionfold = fs_q_dst_unit_value_convolutionfoldnegative_body_steps_summand * S ((S (fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * dst_negative_scale_unit_value_convolutionfold) + (fs_a_dst_unit_value_convolutionfoldnegative_body_steps))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldnegative_body_steps_partial. fs_h_dst_unit_value_convolutionfoldnegative_body_steps_partial + S (fs_r_dst_unit_value_convolutionfoldnegative_body_steps) = S ((S (fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * fs_v_dst_unit_value_convolutionfoldnegative)) /\ exists fs_q_dst_unit_value_convolutionfoldnegative_body_steps_partial. fs_u_dst_unit_value_convolutionfoldnegative = fs_q_dst_unit_value_convolutionfoldnegative_body_steps_partial * S ((S (fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * fs_v_dst_unit_value_convolutionfoldnegative) + (fs_r_dst_unit_value_convolutionfoldnegative_body_steps))) /\ ((((exists fs_h_dst_unit_value_convolutionfoldnegative_body_steps_successor. fs_h_dst_unit_value_convolutionfoldnegative_body_steps_successor + S (fs_s_dst_unit_value_convolutionfoldnegative_body_steps) = S ((S (S fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * fs_v_dst_unit_value_convolutionfoldnegative)) /\ exists fs_q_dst_unit_value_convolutionfoldnegative_body_steps_successor. fs_u_dst_unit_value_convolutionfoldnegative = fs_q_dst_unit_value_convolutionfoldnegative_body_steps_successor * S ((S (S fs_i_dst_unit_value_convolutionfoldnegative_body_steps)) * fs_v_dst_unit_value_convolutionfoldnegative) + (fs_s_dst_unit_value_convolutionfoldnegative_body_steps))) /\ fs_s_dst_unit_value_convolutionfoldnegative_body_steps = fs_r_dst_unit_value_convolutionfoldnegative_body_steps + fs_a_dst_unit_value_convolutionfoldnegative_body_steps)))))) /\ (exists ge_balance_positive_unit_value_convolutionfoldresult ge_balance_negative_unit_value_convolutionfoldresult. (((((z) = 2 * (ge_balance_positive_unit_value_convolutionfoldresult) /\ (ge_balance_negative_unit_value_convolutionfoldresult) = 0) \/ exists ge_signed_half_unit_value_convolutionfoldresultdecode. (((z) = 2 * ge_signed_half_unit_value_convolutionfoldresultdecode + 1 /\ (ge_balance_positive_unit_value_convolutionfoldresult) = 0) /\ (ge_balance_negative_unit_value_convolutionfoldresult) = S ge_signed_half_unit_value_convolutionfoldresultdecode))) /\ ((dst_positive_sum_unit_value_convolutionfold) + ge_balance_negative_unit_value_convolutionfoldresult = (dst_negative_sum_unit_value_convolutionfold) + ge_balance_positive_unit_value_convolutionfoldresult))))))))))))) -> z=a

Complete tactic proof in conservative notation

All 77 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

77 script commands · 9 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.

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

Named ingredients (2)
01Fix variables and assumptionsL1–10

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

  1. L1
    intro N
  2. L2
    intro F
  3. L3
    intro E
  4. L4
    intro n
  5. L5
    intro a
  6. L6
    intro z
  7. L7
    intro hd
  8. L8
    intro hb
  9. L9
    intro ha
  10. L10
    intro hc
02Separate the logical casesL11–13

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

  1. L11
    cases hc
  2. L12
    cases hc_right
  3. L13
    cases hc_right_witness
03Establish hzeroL14–23

Establish this local claim before using it. It is not an additional assumption.

  1. L14
    have hzero : SignedZeroWindow(x,0,n)Definitions: SignedZeroWindow(x,0,n)Original native command in the exact edition
  2. L15
    intro i
  3. L16
    intro v
  4. L17
    intro hi
  5. L18
    intro hib
  6. L19
    intro hv
  7. L20
    specialize dirichlet_delta_right_entry_before_input (N)
  8. L21
    specialize dirichlet_delta_right_entry_before_input (F)
  9. L22
    specialize dirichlet_delta_right_entry_before_input (E)
  10. L23
    specialize dirichlet_delta_right_entry_before_input (n)
04Use earlier factsL24–33

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

  1. L24
    specialize dirichlet_delta_right_entry_before_input (i)
  2. L25
    specialize dirichlet_delta_right_entry_before_input (v)
  3. L26
    apply dirichlet_delta_right_entry_before_input
  4. L27
    exact hd
  5. L28
    exact hc_left
  6. L29
    exact hb
  7. L30
    exact hib
  8. L31
    specialize dirichlet_convolution_prefix_lookup (F)
  9. L32
    specialize dirichlet_convolution_prefix_lookup (E)
  10. L33
    specialize dirichlet_convolution_prefix_lookup (n)
05Use earlier factsL34–43

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

  1. L34
    specialize dirichlet_convolution_prefix_lookup (n)
  2. L35
    specialize dirichlet_convolution_prefix_lookup (x)
  3. L36
    specialize dirichlet_convolution_prefix_lookup (i)
  4. L37
    specialize dirichlet_convolution_prefix_lookup (v)
  5. L38
    apply dirichlet_convolution_prefix_lookup
  6. L39
    exact hc_right_witness_left
  7. L40
    specialize le_trans (i)
  8. L41
    specialize le_trans (S i)
  9. L42
    specialize le_trans (n)
  10. L43
    apply le_trans
06Use earlier factsL44–47

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

  1. L44
    specialize le_succ_self (i)
  2. L45
    apply le_succ_self
  3. L46
    exact hib
  4. L47
    exact hv
07Establish hlastL48–57

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

  1. L48
    have hlast : ArithAt(x,n,a)Definitions: ArithAt(x,n,a)Original native command in the exact edition
  2. L49
    specialize dirichlet_convolution_prefix_value_from_entry (F)
  3. L50
    specialize dirichlet_convolution_prefix_value_from_entry (E)
  4. L51
    specialize dirichlet_convolution_prefix_value_from_entry (n)
  5. L52
    specialize dirichlet_convolution_prefix_value_from_entry (n)
  6. L53
    specialize dirichlet_convolution_prefix_value_from_entry (x)
  7. L54
    specialize dirichlet_convolution_prefix_value_from_entry (n)
  8. L55
    specialize dirichlet_convolution_prefix_value_from_entry (a)
  9. L56
    apply dirichlet_convolution_prefix_value_from_entry
  10. L57
    exact hc_right_witness_left
08Use earlier factsL58–67

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

  1. L58
    specialize le_refl (n)
  2. L59
    apply le_refl
  3. L60
    specialize dirichlet_delta_right_last_entry (N)
  4. L61
    specialize dirichlet_delta_right_last_entry (F)
  5. L62
    specialize dirichlet_delta_right_last_entry (E)
  6. L63
    specialize dirichlet_delta_right_last_entry (n)
  7. L64
    specialize dirichlet_delta_right_last_entry (a)
  8. L65
    apply dirichlet_delta_right_last_entry
  9. L66
    exact hd
  10. L67
    exact hc_left
09Use earlier factsL68–77

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

  1. L68
    exact hb
  2. L69
    exact ha
  3. L70
    specialize signed_prefix_sum_last_value (x)
  4. L71
    specialize signed_prefix_sum_last_value (n)
  5. L72
    specialize signed_prefix_sum_last_value (a)
  6. L73
    specialize signed_prefix_sum_last_value (z)
  7. L74
    apply signed_prefix_sum_last_value
  8. L75
    exact hzero
  9. L76
    exact hlast
  10. L77
    exact hc_right_witness_right

Library-wide reading audit

Original defined command ledger · 77 lines
  1. 0001intro N
  2. 0002intro F
  3. 0003intro E
  4. 0004intro n
  5. 0005intro a
  6. 0006intro z
  7. 0007intro hd
  8. 0008intro hb
  9. 0009intro ha
  10. 0010intro hc
  11. 0011cases hc
  12. 0012cases hc_right
  13. 0013cases hc_right_witness
  14. 0014have hzero : SignedZeroWindow(x,0,n)
  15. 0015intro i
  16. 0016intro v
  17. 0017intro hi
  18. 0018intro hib
  19. 0019intro hv
  20. 0020specialize dirichlet_delta_right_entry_before_input (N)
  21. 0021specialize dirichlet_delta_right_entry_before_input (F)
  22. 0022specialize dirichlet_delta_right_entry_before_input (E)
  23. 0023specialize dirichlet_delta_right_entry_before_input (n)
  24. 0024specialize dirichlet_delta_right_entry_before_input (i)
  25. 0025specialize dirichlet_delta_right_entry_before_input (v)
  26. 0026apply dirichlet_delta_right_entry_before_input
  27. 0027exact hd
  28. 0028exact hc_left
  29. 0029exact hb
  30. 0030exact hib
  31. 0031specialize dirichlet_convolution_prefix_lookup (F)
  32. 0032specialize dirichlet_convolution_prefix_lookup (E)
  33. 0033specialize dirichlet_convolution_prefix_lookup (n)
  34. 0034specialize dirichlet_convolution_prefix_lookup (n)
  35. 0035specialize dirichlet_convolution_prefix_lookup (x)
  36. 0036specialize dirichlet_convolution_prefix_lookup (i)
  37. 0037specialize dirichlet_convolution_prefix_lookup (v)
  38. 0038apply dirichlet_convolution_prefix_lookup
  39. 0039exact hc_right_witness_left
  40. 0040specialize le_trans (i)
  41. 0041specialize le_trans (S i)
  42. 0042specialize le_trans (n)
  43. 0043apply le_trans
  44. 0044specialize le_succ_self (i)
  45. 0045apply le_succ_self
  46. 0046exact hib
  47. 0047exact hv
  48. 0048have hlast : ArithAt(x,n,a)
  49. 0049specialize dirichlet_convolution_prefix_value_from_entry (F)
  50. 0050specialize dirichlet_convolution_prefix_value_from_entry (E)
  51. 0051specialize dirichlet_convolution_prefix_value_from_entry (n)
  52. 0052specialize dirichlet_convolution_prefix_value_from_entry (n)
  53. 0053specialize dirichlet_convolution_prefix_value_from_entry (x)
  54. 0054specialize dirichlet_convolution_prefix_value_from_entry (n)
  55. 0055specialize dirichlet_convolution_prefix_value_from_entry (a)
  56. 0056apply dirichlet_convolution_prefix_value_from_entry
  57. 0057exact hc_right_witness_left
  58. 0058specialize le_refl (n)
  59. 0059apply le_refl
  60. 0060specialize dirichlet_delta_right_last_entry (N)
  61. 0061specialize dirichlet_delta_right_last_entry (F)
  62. 0062specialize dirichlet_delta_right_last_entry (E)
  63. 0063specialize dirichlet_delta_right_last_entry (n)
  64. 0064specialize dirichlet_delta_right_last_entry (a)
  65. 0065apply dirichlet_delta_right_last_entry
  66. 0066exact hd
  67. 0067exact hc_left
  68. 0068exact hb
  69. 0069exact ha
  70. 0070specialize signed_prefix_sum_last_value (x)
  71. 0071specialize signed_prefix_sum_last_value (n)
  72. 0072specialize signed_prefix_sum_last_value (a)
  73. 0073specialize signed_prefix_sum_last_value (z)
  74. 0074apply signed_prefix_sum_last_value
  75. 0075exact hzero
  76. 0076exact hlast
  77. 0077exact hc_right_witness_right