Up to index of Isabelle/HOL/HOL-Complex/CSP
theory Infra_prog (*-------------------------------------------*
| CSP-Prover on Isabelle2004 |
| November 2004 |
| June 2005 (modified) |
| July 2005 (modified) |
| |
| CSP-Prover on Isabelle2005 |
| October 2005 (modified) |
| |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory Infra_prog = Infra_real:
(*****************************************************
Progression
*****************************************************)
consts
prog_sum0 :: "nat => (nat => real) => real"
prog_sum :: "nat => nat => (nat => real) => real"
geo_prop :: "real => real => nat => real"
primrec
"prog_sum0 (Suc n) f = (prog_sum0 n f) + f (Suc n)"
"prog_sum0 0 f = 0"
defs
prog_sum_def :
"prog_sum m n f == (prog_sum0 n f) - (prog_sum0 m f)"
geo_prop_def :
"geo_prop K alpha == (%n. (alpha^(n - (Suc 0))) * K)"
lemma geo_prog_sum0:
"prog_sum0 n (geo_prop K alpha) * ((1::real) - alpha)
= K*((1::real)-(alpha^n))"
apply (induct_tac n)
apply (simp)
apply (simp add: geo_prop_def)
apply (simp add: real_add_mult_distrib)
apply (simp add: right_diff_distrib)
done
lemma geo_prog_sum:
"prog_sum m n (geo_prop K alpha) * ((1::real) - alpha)
= K*((alpha^m)-(alpha^n))"
apply (unfold prog_sum_def)
apply (simp add: left_diff_distrib)
apply (simp add: geo_prog_sum0)
apply (simp add: right_diff_distrib)
done
lemmas geo_prog_sum_sym = geo_prog_sum[THEN sym]
lemma geo_prog_sum_div:
"alpha < (1::real)
==> prog_sum m n (geo_prop K alpha)
= K*((alpha^m)-(alpha^n)) / ((1::real)-alpha)"
by (simp add: geo_prog_sum_sym)
lemma geo_prog_sum_infinite:
"[| (0::real) <= K ; (0::real) <= alpha |]
==> prog_sum m n (geo_prop K alpha) * ((1::real)-alpha)
<= K*(alpha^m)"
apply (simp add: geo_prog_sum)
apply (simp add: right_diff_distrib)
apply (simp add: zero_le_power real_mult_order_eq)
done
lemma geo_prog_sum_infinite_div:
"[| (0::real) <= K ; (0::real) <= alpha ; alpha < (1::real) |]
==> prog_sum m n (geo_prop K alpha) <= K*(alpha^m)/((1::real)-alpha)"
apply (simp add: real_div_le_eq)
apply (simp_all add: geo_prog_sum_infinite)
done
end
lemma geo_prog_sum0:
prog_sum0 n (geo_prop K alpha) * (1 - alpha) = K * (1 - alpha ^ n)
lemma geo_prog_sum:
prog_sum m n (geo_prop K alpha) * (1 - alpha) = K * (alpha ^ m - alpha ^ n)
lemmas geo_prog_sum_sym:
K1 * (alpha1 ^ m1 - alpha1 ^ n1) = prog_sum m1 n1 (geo_prop K1 alpha1) * (1 - alpha1)
lemmas geo_prog_sum_sym:
K1 * (alpha1 ^ m1 - alpha1 ^ n1) = prog_sum m1 n1 (geo_prop K1 alpha1) * (1 - alpha1)
lemma geo_prog_sum_div:
alpha < 1 ==> prog_sum m n (geo_prop K alpha) = K * (alpha ^ m - alpha ^ n) / (1 - alpha)
lemma geo_prog_sum_infinite:
[| 0 ≤ K; 0 ≤ alpha |] ==> prog_sum m n (geo_prop K alpha) * (1 - alpha) ≤ K * alpha ^ m
lemma geo_prog_sum_infinite_div:
[| 0 ≤ K; 0 ≤ alpha; alpha < 1 |] ==> prog_sum m n (geo_prop K alpha) ≤ K * alpha ^ m / (1 - alpha)