Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
The strict remainder is an actual inclusive prefix through k with an S k-entry fold; the future input at S k is excluded. A genuine table extension supplies the endpoint. The at-one identity inspects or constructs the real two-entry masked sum. No recurrence, inverse, or omitted summand value is assumed as a conclusion-bearing premise.
Exact theorem in conservative defined notation
∀ F. ∀ G. ∀ a. ∀ b. ∀ z. ArithAt(F,1,a) → ArithAt(G,1,b) → (DirichletSum(F,G,1,z) → SignedMul(a,b,z)) ∧ (SignedMul(a,b,z) → DirichletSum(F,G,1,z))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 125 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
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (3)
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–8
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
split
03Fix variables and assumptionsL9–9
Work with arbitrary variables or the premises of the current implication.
- L9
intro hc
04Separate the logical casesL10–12
05Establish hzeroL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet convolution zero prefix sum.
- L13
have hzero : SignedPrefixSum(x,1,0)Definitions: SignedPrefixSum(x,1,0)Original native command in the exact edition - L14
specialize dirichlet_convolution_zero_prefix_sum (F) - L15
specialize dirichlet_convolution_zero_prefix_sum (G) - L16
specialize dirichlet_convolution_zero_prefix_sum (1) - L17
specialize dirichlet_convolution_zero_prefix_sum (x) - L18
apply dirichlet_convolution_zero_prefix_sum - L19
specialize dirichlet_convolution_prefix_restrict (F) - L20
specialize dirichlet_convolution_prefix_restrict (G) - L21
specialize dirichlet_convolution_prefix_restrict (1) - L22
specialize dirichlet_convolution_prefix_restrict (1)
06Use earlier factsL23–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
07Establish hdL29–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum successor decompose.
- L29
have hd : ∃ r. ∃ v. SignedPrefixSum(x,1,r) ∧ (ArithAt(x,1,v) ∧ SignedAdd(r,v,z))Definitions: SignedPrefixSum(x,1,r)ArithAt(x,1,v)SignedAdd(r,v,z)Original native command in the exact edition - L30
specialize divisor_signed_sum_successor_decompose (x) - L31
specialize divisor_signed_sum_successor_decompose (1) - L32
specialize divisor_signed_sum_successor_decompose (z) - L33
apply divisor_signed_sum_successor_decompose - L34
exact hc_right_witness_right
08Separate the logical casesL35–38
09Establish hr0L39–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed sum functional.
- L39
have hr0 : x1=0 - L40
specialize divisor_signed_sum_functional (x) - L41
specialize divisor_signed_sum_functional (1) - L42
specialize divisor_signed_sum_functional (x1) - L43
specialize divisor_signed_sum_functional (0) - L44
apply divisor_signed_sum_functional - L45
exact hd_witness_witness_left - L46
exact hzero - L47
rewrite hr0 at hd_witness_witness_right_right - L48
rewrite hr0 at hd_witness_witness_right_right
10Establish hvL49–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed add functional.
- L49
have hv : x2=z - L50
symm - L51
specialize signed_add_functional (0) - L52
specialize signed_add_functional (x2) - L53
specialize signed_add_functional (z) - L54
specialize signed_add_functional (x2) - L55
apply signed_add_functional - L56
exact hd_witness_witness_right_right - L57
specialize signed_add_zero_left (x2) - L58
apply signed_add_zero_left
11Establish heL59–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet convolution last entry iff.
- L59
have he : (DirichletEntry(F,G,1,1,x2) → SignedMul(a,b,x2)) ∧ (SignedMul(a,b,x2) → DirichletEntry(F,G,1,1,x2))Definitions: DirichletEntry(F,G,1,1,x2)SignedMul(a,b,x2)Original native command in the exact edition - L60
specialize dirichlet_convolution_last_entry_iff (F) - L61
specialize dirichlet_convolution_last_entry_iff (G) - L62
specialize dirichlet_convolution_last_entry_iff (1) - L63
specialize dirichlet_convolution_last_entry_iff (a) - L64
specialize dirichlet_convolution_last_entry_iff (b) - L65
specialize dirichlet_convolution_last_entry_iff (x2) - L66
apply dirichlet_convolution_last_entry_iff - L67
intro hn - L68
apply PA1
12Use earlier factsL69–71
13Separate the logical casesL72–72
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L72
cases he
14Establish hpL73–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply he left.
- L73
have hp : SignedMul(a,b,x2)Definitions: SignedMul(a,b,x2)Original native command in the exact edition - L74
apply he_left - L75
specialize dirichlet_convolution_prefix_lookup (F) - L76
specialize dirichlet_convolution_prefix_lookup (G) - L77
specialize dirichlet_convolution_prefix_lookup (1) - L78
specialize dirichlet_convolution_prefix_lookup (1) - L79
specialize dirichlet_convolution_prefix_lookup (x) - L80
specialize dirichlet_convolution_prefix_lookup (1) - L81
specialize dirichlet_convolution_prefix_lookup (x2) - L82
apply dirichlet_convolution_prefix_lookup
15Use earlier factsL83–86
16Calculate and transport equalitiesL87–88
17Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact hp
18Fix variables and assumptionsL90–90
Work with arbitrary variables or the premises of the current implication.
- L90
intro hp
19Establish hmL91–93
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply arithmetic signed table singleton.
- L91
have hm : ∃ M. ArithTable(0,M) ∧ ArithAt(M,0,0)Definitions: ArithTable(0,M)ArithAt(M,0,0)Original native command in the exact edition - L92
specialize arithmetic_signed_table_singleton (0) - L93
apply arithmetic_signed_table_singleton
20Separate the logical casesL94–95
21Establish hprefixL96–105
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet convolution prefix zero constructor.
- L96
have hprefix : DirichletPrefix(F,G,1,0,x)Definitions: DirichletPrefix(F,G,1,0,x)Original native command in the exact edition - L97
specialize dirichlet_convolution_prefix_zero_constructor (F) - L98
specialize dirichlet_convolution_prefix_zero_constructor (G) - L99
specialize dirichlet_convolution_prefix_zero_constructor (1) - L100
specialize dirichlet_convolution_prefix_zero_constructor (x) - L101
apply dirichlet_convolution_prefix_zero_constructor - L102
exact hm_witness_left - L103
exact hm_witness_right - L104
specialize dirichlet_convolution_prefix_last_step (F) - L105
specialize dirichlet_convolution_prefix_last_step (G)
22Use earlier factsL106–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L106
specialize dirichlet_convolution_prefix_last_step (0) - L107
specialize dirichlet_convolution_prefix_last_step (x) - L108
specialize dirichlet_convolution_prefix_last_step (0) - L109
specialize dirichlet_convolution_prefix_last_step (a) - L110
specialize dirichlet_convolution_prefix_last_step (b) - L111
specialize dirichlet_convolution_prefix_last_step (z) - L112
specialize dirichlet_convolution_prefix_last_step (z) - L113
apply dirichlet_convolution_prefix_last_step - L114
exact hprefix - L115
specialize dirichlet_convolution_zero_prefix_sum (F)
23Use earlier factsL116–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
specialize dirichlet_convolution_zero_prefix_sum (G) - L117
specialize dirichlet_convolution_zero_prefix_sum (1) - L118
specialize dirichlet_convolution_zero_prefix_sum (x) - L119
apply dirichlet_convolution_zero_prefix_sum - L120
exact hprefix - L121
exact ha - L122
exact hb - L123
exact hp - L124
specialize signed_add_zero_left (z) - L125
apply signed_add_zero_left
Original defined command ledger · 125 lines
- 0001
intro F - 0002
intro G - 0003
intro a - 0004
intro b - 0005
intro z - 0006
intro ha - 0007
intro hb - 0008
split - 0009
intro hc - 0010
cases hc - 0011
cases hc_right - 0012
cases hc_right_witness - 0013
have hzero : SignedPrefixSum(x,1,0) - 0014
specialize dirichlet_convolution_zero_prefix_sum (F) - 0015
specialize dirichlet_convolution_zero_prefix_sum (G) - 0016
specialize dirichlet_convolution_zero_prefix_sum (1) - 0017
specialize dirichlet_convolution_zero_prefix_sum (x) - 0018
apply dirichlet_convolution_zero_prefix_sum - 0019
specialize dirichlet_convolution_prefix_restrict (F) - 0020
specialize dirichlet_convolution_prefix_restrict (G) - 0021
specialize dirichlet_convolution_prefix_restrict (1) - 0022
specialize dirichlet_convolution_prefix_restrict (1) - 0023
specialize dirichlet_convolution_prefix_restrict (0) - 0024
specialize dirichlet_convolution_prefix_restrict (x) - 0025
apply dirichlet_convolution_prefix_restrict - 0026
exact hc_right_witness_left - 0027
specialize zero_le (1) - 0028
apply zero_le - 0029
have hd : ∃ r. ∃ v. SignedPrefixSum(x,1,r) ∧ (ArithAt(x,1,v) ∧ SignedAdd(r,v,z)) - 0030
specialize divisor_signed_sum_successor_decompose (x) - 0031
specialize divisor_signed_sum_successor_decompose (1) - 0032
specialize divisor_signed_sum_successor_decompose (z) - 0033
apply divisor_signed_sum_successor_decompose - 0034
exact hc_right_witness_right - 0035
cases hd - 0036
cases hd_witness - 0037
cases hd_witness_witness - 0038
cases hd_witness_witness_right - 0039
have hr0 : x1=0 - 0040
specialize divisor_signed_sum_functional (x) - 0041
specialize divisor_signed_sum_functional (1) - 0042
specialize divisor_signed_sum_functional (x1) - 0043
specialize divisor_signed_sum_functional (0) - 0044
apply divisor_signed_sum_functional - 0045
exact hd_witness_witness_left - 0046
exact hzero - 0047
rewrite hr0 at hd_witness_witness_right_right - 0048
rewrite hr0 at hd_witness_witness_right_right - 0049
have hv : x2=z - 0050
symm - 0051
specialize signed_add_functional (0) - 0052
specialize signed_add_functional (x2) - 0053
specialize signed_add_functional (z) - 0054
specialize signed_add_functional (x2) - 0055
apply signed_add_functional - 0056
exact hd_witness_witness_right_right - 0057
specialize signed_add_zero_left (x2) - 0058
apply signed_add_zero_left - 0059
have he : (DirichletEntry(F,G,1,1,x2) → SignedMul(a,b,x2)) ∧ (SignedMul(a,b,x2) → DirichletEntry(F,G,1,1,x2)) - 0060
specialize dirichlet_convolution_last_entry_iff (F) - 0061
specialize dirichlet_convolution_last_entry_iff (G) - 0062
specialize dirichlet_convolution_last_entry_iff (1) - 0063
specialize dirichlet_convolution_last_entry_iff (a) - 0064
specialize dirichlet_convolution_last_entry_iff (b) - 0065
specialize dirichlet_convolution_last_entry_iff (x2) - 0066
apply dirichlet_convolution_last_entry_iff - 0067
intro hn - 0068
apply PA1 - 0069
exact hn - 0070
exact ha - 0071
exact hb - 0072
cases he - 0073
have hp : SignedMul(a,b,x2) - 0074
apply he_left - 0075
specialize dirichlet_convolution_prefix_lookup (F) - 0076
specialize dirichlet_convolution_prefix_lookup (G) - 0077
specialize dirichlet_convolution_prefix_lookup (1) - 0078
specialize dirichlet_convolution_prefix_lookup (1) - 0079
specialize dirichlet_convolution_prefix_lookup (x) - 0080
specialize dirichlet_convolution_prefix_lookup (1) - 0081
specialize dirichlet_convolution_prefix_lookup (x2) - 0082
apply dirichlet_convolution_prefix_lookup - 0083
exact hc_right_witness_left - 0084
specialize le_refl (1) - 0085
apply le_refl - 0086
exact hd_witness_witness_right_left - 0087
rewrite hv at hp - 0088
rewrite hv at hp - 0089
exact hp - 0090
intro hp - 0091
have hm : ∃ M. ArithTable(0,M) ∧ ArithAt(M,0,0) - 0092
specialize arithmetic_signed_table_singleton (0) - 0093
apply arithmetic_signed_table_singleton - 0094
cases hm - 0095
cases hm_witness - 0096
have hprefix : DirichletPrefix(F,G,1,0,x) - 0097
specialize dirichlet_convolution_prefix_zero_constructor (F) - 0098
specialize dirichlet_convolution_prefix_zero_constructor (G) - 0099
specialize dirichlet_convolution_prefix_zero_constructor (1) - 0100
specialize dirichlet_convolution_prefix_zero_constructor (x) - 0101
apply dirichlet_convolution_prefix_zero_constructor - 0102
exact hm_witness_left - 0103
exact hm_witness_right - 0104
specialize dirichlet_convolution_prefix_last_step (F) - 0105
specialize dirichlet_convolution_prefix_last_step (G) - 0106
specialize dirichlet_convolution_prefix_last_step (0) - 0107
specialize dirichlet_convolution_prefix_last_step (x) - 0108
specialize dirichlet_convolution_prefix_last_step (0) - 0109
specialize dirichlet_convolution_prefix_last_step (a) - 0110
specialize dirichlet_convolution_prefix_last_step (b) - 0111
specialize dirichlet_convolution_prefix_last_step (z) - 0112
specialize dirichlet_convolution_prefix_last_step (z) - 0113
apply dirichlet_convolution_prefix_last_step - 0114
exact hprefix - 0115
specialize dirichlet_convolution_zero_prefix_sum (F) - 0116
specialize dirichlet_convolution_zero_prefix_sum (G) - 0117
specialize dirichlet_convolution_zero_prefix_sum (1) - 0118
specialize dirichlet_convolution_zero_prefix_sum (x) - 0119
apply dirichlet_convolution_zero_prefix_sum - 0120
exact hprefix - 0121
exact ha - 0122
exact hb - 0123
exact hp - 0124
specialize signed_add_zero_left (z) - 0125
apply signed_add_zero_left