Notation power := (mscal mult 1).Fact sum_fold_map n f : ∑ n f = fold_right plus 0 (map f (list_an 0 n)).Fact power_0 x : power 0 x = 1.Fact power_S n x : power (S n) x = x * power n x.Fact power_1 x : power 1 x = x.Fact power_of_0 n : 0 < n -> power n 0 = 0.Fact power_of_1 n : power n 1 = 1.Fact power_plus p a b : power (a+b) p = power a p * power b p.Fact power_mult p a b : power (a*b) p = power a (power b p).Fact power_ge_1 k p : p <> 0 -> 1 <= power k p.Fact power2_gt_0 n : 0 < power n 2.Fact power_sinc k p : 2 <= p -> power k p < power (S k) p.Fact power_ge_n k p : 2 <= p -> k <= power k p.Fact power_mono_l p q x : 1 <= x -> p <= q -> power p x <= power q x.Definition power_mono := power_mono_l.Fact power_smono_l p q x : 2 <= x -> p < q -> power p x < power q x.Fact power_mono_r n p q : p <= q -> power n p <= power n q.Fact power_0_inv p n : power p n = 0 <-> n = 0 /\ 0 < p.Fact plus_cancel_l : forall a b c, a + b = a + c -> b = c.Fact sum_0n_scal_l n k f : ∑ n (fun i => k*f i) = k*∑ n f.Fact sum_0n_scal_r n k f : ∑ n (fun i => (f i)*k) = (∑ n f)*k.Fact sum_0n_mono n f g : (forall i, i < n -> f i <= g i) -> ∑ n f <= ∑ n g.Fact sum_0n_le_one n f i : i < n -> f i <= ∑ n f.Fact sum_power_lt k n f : k <> 0 -> (forall i, i < n -> f i < k) -> ∑ n (fun i => f i * power i k) < power n k.

(* Specifications: *)
Theorem Newton_nat a b n : power n (a + b) = ∑ (S n) (fun i => binomial n i * power (n - i) a * power i b).
Theorem Newton_nat_S a n : power n (1 + a) = ∑ (S n) (fun i => binomial n i * power i a).
Lemma binomial_le_power n i : binomial n i <= power n 2.