Library IterFlip
Require Export Prog.
Set Implicit Arguments.
Module IterFlip (Univ:Universe).
Module RP := (Rules Univ).
Definition of a random walk
We interpret the probabilistic programlet rec iter x = if flip() then iter (x+1) else x
Require Import ZArith.
Definition Fiter : (Z -o> Distr Z) -m> Z-o> Distr Z.
exists (fun f (x:Z) => Mif Flip (f (Zsucc x)) (Munit x)); red; intros.
intro p; apply Mif_mon; auto.
Defined.
Lemma Fiter_simpl : forall f x, Fiter f x = Mif Flip (f (Zsucc x)) (Munit x).
trivial.
Save.
Definition iterflip : Z -o> (Distr Z) := Mfix Fiter.
Fixpoint p_ (n : nat) : U := match n with O => 0 | (S n) => [1/2] * p_ n + [1/2] end.
Lemma p_incr : forall n, p_ n <= p_ (S n).
simpl; intros.
apply Ole_trans with ([1/2]*p_ n + [1/2]*p_ n); auto.
rewrite <- Udistr_plus_right; auto.
apply Ole_trans with (1 * p_ n); auto.
Save.
Hint Resolve p_incr.
Definition p : natO -m> U := fnatO_intro p_incr.
Lemma pS_simpl : forall n, p (S n) = [1/2] * p n + [1/2].
trivial.
Save.
Lemma p_eq : forall n:nat, p n == [1-]([1/2]^n).
induction n; auto; rewrite pS_simpl.
rewrite IHn.
apply Oeq_trans with ([1/2] * [1-]([1/2]^n) + [1-][1/2]);simpl; auto.
Save.
Hint Resolve p_eq.
Lemma p_le : forall n:nat, [1-]([1/]1+n) <= p n.
intro; rewrite (p_eq n).
apply Uinv_le_compat.
induction n; simpl; intros; auto.
apply Ole_trans with ([1/2] * ([1/]1+n)); auto.
Save.
Hint Resolve p_le.
Lemma lim_p_one : 1 <= lub p.
apply Ule_lt_lim; intros.
assert (exc (fun n : nat => t <= [1-] ([1/]1+n))).
assert (~0==[1-] t).
red; intro; apply H; auto.
apply Ole_trans with ([1-] 0); auto.
apply (archimedian H0); auto; intros m H1.
apply exc_intro with m; auto.
apply H0; auto; intros.
apply Ole_trans with (p x); auto.
apply Ole_trans with ([1-] ([1/]1+x)); auto.
Save.
Hint Resolve lim_p_one.
Definition q1 (z1 z2:Z) := 1.
Lemma iterflip_term : okfun (fun k => 1) iterflip q1.
unfold iterflip; intros.
apply okfun_le_compat with (fun (k:Z) => lub p) q1; auto.
intro x; auto.
apply fixrule with (p:= fun (x:Z) => p); auto; intros.
red; simpl; intros.
unfold Fiter.
red.
rewrite (Mif_eq Flip (f (Zsucc x0)) (Munit x0) (q1 x0)); simpl.
repeat Usimpl.
unfold q1 at 2; repeat Usimpl.
apply Ole_trans with (mu (f (Zsucc x0)) (q1 (Zsucc x0))); auto.
exact (H (Zsucc x0)).
Save.
End IterFlip.
Global Index | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | _ | (15 entries) |
Lemma Index | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | _ | (7 entries) |
Definition Index | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | _ | (6 entries) |
Module Index | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | _ | (1 entry) |
Library Index | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | _ | (1 entry) |
This page has been generated by coqdoc