theory Suma_de_progresion_geometrica
imports Main HOL.Real
begin
fun sumaPG :: "real ⇒ real ⇒ nat ⇒ real" where
"sumaPG a q 0 = a"
| "sumaPG a q (Suc n) = sumaPG a q n + (a * q^(n + 1))"
(* 1ª demostración *)
lemma
"(1 - q) * sumaPG a q n = a * (1 - q^(n + 1))"
proof (induct n)
show "(1 - q) * sumaPG a q 0 = a * (1 - q ^ (0 + 1))"
by simp
next
fix n
assume HI : "(1 - q) * sumaPG a q n = a * (1 - q ^ (n + 1))"
have "(1 - q) * sumaPG a q (Suc n) =
(1 - q) * (sumaPG a q n + (a * q^(n + 1)))"
by simp
also have "… = (1 - q) * sumaPG a q n + (1 - q) * a * q^(n + 1)"
by (simp add: algebra_simps)
also have "… = a * (1 - q ^ (n + 1)) + (1 - q) * a * q^(n + 1)"
using HI by simp
also have "… = a * (1 - q ^ (n + 1) + (1 - q) * q^(n + 1))"
by (simp add: algebra_simps)
also have "… = a * (1 - q ^ (n + 1) + q^(n + 1) - q^(n + 2))"
by (simp add: algebra_simps)
also have "… = a * (1 - q^(n + 2))"
by simp
also have "… = a * (1 - q ^ (Suc n + 1))"
by simp
finally show "(1 - q) * sumaPG a q (Suc n) = a * (1 - q ^ (Suc n + 1))"
by this
qed
(* 2ª demostración *)
lemma
"(1 - q) * sumaPG a q n = a * (1 - q^(n + 1))"
proof (induct n)
show "(1 - q) * sumaPG a q 0 = a * (1 - q ^ (0 + 1))"
by simp
next
fix n
assume HI : "(1 - q) * sumaPG a q n = a * (1 - q ^ (n + 1))"
have "(1 - q) * sumaPG a q (Suc n) =
(1 - q) * sumaPG a q n + (1 - q) * a * q^(n + 1)"
by (simp add: algebra_simps)
also have "… = a * (1 - q ^ (n + 1)) + (1 - q) * a * q^(n + 1)"
using HI by simp
also have "… = a * (1 - q ^ (n + 1) + q^(n + 1) - q^(n + 2))"
by (simp add: algebra_simps)
finally show "(1 - q) * sumaPG a q (Suc n) = a * (1 - q ^ (Suc n + 1))"
by simp
qed
(* 3ª demostración *)
lemma
"(1 - q) * sumaPG a q n = a * (1 - q^(n + 1))"
using power_add
by (induct n) (auto simp: algebra_simps)
end