bookshelf/common/Common/Sequence/Arithmetic.lean

76 lines
2.1 KiB
Plaintext

import Mathlib.Data.Real.Basic
import Mathlib.Tactic.NormNum
import Mathlib.Tactic.Ring
/--
A `0`th-indexed arithmetic sequence.
-/
structure Arithmetic where
a₀ : Real
Δ : Real
namespace Arithmetic
/--
Returns the value of the `n`th term of an arithmetic sequence.
This function calculates the value of this term directly. Keep in mind the
sequence is `0`th-indexed.
-/
def termClosed (seq : Arithmetic) (n : Nat) : Real :=
seq.a₀ + seq.Δ * n
/--
Returns the value of the `n`th term of an arithmetic sequence.
This function calculates the value of this term recursively. Keep in mind the
sequence is `0`th-indexed.
-/
def termRecursive : Arithmetic → Nat → Real
| seq, 0 => seq.a₀
| seq, (n + 1) => seq.Δ + seq.termRecursive n
/--
The recursive and closed term definitions of an arithmetic sequence agree with
one another.
-/
theorem term_recursive_closed (seq : Arithmetic) (n : Nat)
: seq.termRecursive n = seq.termClosed n := by
induction n with
| zero => unfold termRecursive termClosed; norm_num
| succ n ih => calc
termRecursive seq (Nat.succ n)
= seq.Δ + seq.termRecursive n := rfl
_ = seq.Δ + seq.termClosed n := by rw [ih]
_ = seq.Δ + (seq.a₀ + seq.Δ * n) := rfl
_ = seq.a₀ + seq.Δ * (↑n + 1) := by ring
_ = seq.a₀ + seq.Δ * ↑(n + 1) := by simp
_ = termClosed seq (n + 1) := rfl
/--
The summation of the first `n + 1` terms of an arithmetic sequence.
This function calculates the sum directly.
-/
noncomputable def sum_closed (seq : Arithmetic) (n : Nat) : Real :=
((n + 1) * (seq.a₀ + seq.termClosed n)) / 2
/--
The summation of the first `n + 1` terms of an arithmetic sequence.
This function calculates the sum recursively.
-/
def sum_recursive : Arithmetic → Nat → Real
| _, 0 => 0
| seq, (n + 1) => seq.termClosed (n + 1) + seq.sum_recursive n
/--
The recursive and closed definitions of the sum of an arithmetic sequence agree
with one another.
-/
theorem sum_recursive_closed (seq : Arithmetic) (n : Nat)
: sum_recursive seq n = sum_closed seq n :=
sorry
end Arithmetic