I did indeed forget the one statement which makes this rigorous (and nontrivial): technically this definition for [ΔF]ᵢ = Fᵢ − Fᵢ₋₁ is undefined for [ΔF]₀ , because our sequences don't have a -1'th element. For these we take [ΔF]₀ = F₀, which in some sense means that F₋₁ = 0.
I don't know why you want to require that "F₀ = F₁ = 0, etc." -- perhaps you were, in the back of your mind, iterating through the negative numbers, thinking that they were positive. ^_^;;
Δg(i) = g(0) if i = 0, else g(i) − g(i − 1)
Σg(i) = Σ{n: 0 → i} g(n)
Note that Δg(0) = g(0) by these definitions, and note that Σg(0) = g(0) as well. Call these the "zeroth element relations." (Also note that I am saying Σg(0) where perhaps [Σg](0) would be more clear.)
I will observe a very simple lemma which embeds Σg in a recursive form:
Σg(n + 1) = Σg(n) + g(n + 1) for any g, any n in N.
On to the proof. ΣΔF(0) = F(0) by composing those two zeroth element relations. Also, if ΣΔF(n) = F(n) for any n, then I claim that ΣΔF(n + 1) = F(n + 1). Proof:
ΣΔF(n + 1) = ΣΔF(n) + ΔF(n + 1), by the lemma.
ΣΔF(n + 1) = F(n) + ΔF(n + 1), because "if ΣΔF(n) = F(n)".
ΣΔF(n + 1) = F(n) + F(n + 1) − F(n), by definition of Δ.
ΣΔF(n + 1) = F(n + 1)
Since it holds for n=0, and whenever it holds for n, it holds for n + 1, by induction this holds for all n in N and therefore, by induction:
ΣΔF = F
The reverse argument is also pretty simple. It's also obviously true for n = 0 due to the zeroth element relations. For n > 0 we don't even need induction:
ΔΣF(n) = ΣF(n) − ΣF(n − 1), by definition of Δ
ΔΣF(n) = ΣF(n − 1) + F(n) − ΣF(n − 1), by lemma
ΔΣF(n) = F(n)
ΔΣF = F.
If you still don't believe me, here it all is in Python:
>>> sigma = lambda seq: lambda i: sum(seq(u) for u in range(0, i + 1))
>>> delta = lambda seq: lambda i: seq(0) if i == 0 else seq(i) - seq(i - 1)
>>> expand = lambda seq: [seq(i) for i in range(0, 7)]
>>> constant = lambda N: lambda i: N
>>> expand(constant(3))
[3, 3, 3, 3, 3, 3, 3]
>>> expand(sigma(constant(3)))
[3, 6, 9, 12, 15, 18, 21]
>>> expand(delta(constant(3)))
[3, 0, 0, 0, 0, 0, 0]
>>> expand(sigma(delta(constant(3))))
[3, 3, 3, 3, 3, 3, 3]
>>> expand(delta(sigma(constant(3))))
[3, 3, 3, 3, 3, 3, 3]
Enjoy. :-)P.S. I am a mathematician; Python convinces me of nothing but special cases. :-)
Note that your derivation assumes that F₀ = 0; but that, on the other hand, we can't assume this blanket condition, since it's not preserved by Δ (unless we restrict further to sequences with F₀ = F₁ = 0, etc., until eventually you wind up considering only the 0 sequence, which barely interests even mathematicians). One is thus forced into the definition of the indefinite integral (which I suppose we would call the indefinite summation in this discretised view? :-) ), which, in our context, says that Σ(ΔF) = F + F₀.
(None of this is to take away from your very fine main point, or even your equally fine smaller point; but it's a shame to come so close to a rigorous-and-yet-intelligible picture, and then to fall just shy!)
(Perhaps you were implicitly identifying sequences that differ by a constant.)