Library zoo_std.random
Require Import zoo.prelude.
Require Import zoo.base.
Require Export zoo_std.random__code.
Require Import zoo_std.random__types.
Require Import zoo.options.
Axiom random٠initーspec : ∀ `{zoo۰G : !ZooG Σ} Φ,
Φ ()%V ⊢
WP random٠init () {{ Φ }}.
Axiom random٠bitsーspec : ∀ `{zoo۰G : !ZooG Σ} Φ,
( ∀ n : Z,
Φ #n
) ⊢
WP random٠bits () {{ Φ }}.
Axiom random٠intーspec : ∀ `{zoo۰G : !ZooG Σ} ub Φ,
(0 < ub)%Z →
( ∀ n,
⌜0 ≤ n < ub⌝%Z -∗
Φ #n
) ⊢
WP random٠int #ub {{ Φ }}.
Section zoo۰G.
Context `{zoo۰G : !ZooG Σ}.
Lemma random٠intーspecーnat (ub : nat) Φ :
0 < ub →
( ∀ n,
⌜n < ub⌝ -∗
Φ #n
) ⊢
WP random٠int #ub {{ Φ }}.
Lemma random٠int_in_rangeーspec lb ub Φ :
(lb < ub)%Z →
( ∀ n,
⌜lb ≤ n < ub⌝%Z -∗
Φ #n
) ⊢
WP random٠int_in_range #lb #ub {{ Φ }}.
Lemma random٠int_in_rangeーspecーnat lb ub Φ :
lb < ub →
( ∀ n,
⌜lb ≤ n < ub⌝ -∗
Φ #n
) ⊢
WP random٠int_in_range #lb #ub {{ Φ }}.
End zoo۰G.
Require zoo_std.random__opaque.
Require Import zoo.base.
Require Export zoo_std.random__code.
Require Import zoo_std.random__types.
Require Import zoo.options.
Axiom random٠initーspec : ∀ `{zoo۰G : !ZooG Σ} Φ,
Φ ()%V ⊢
WP random٠init () {{ Φ }}.
Axiom random٠bitsーspec : ∀ `{zoo۰G : !ZooG Σ} Φ,
( ∀ n : Z,
Φ #n
) ⊢
WP random٠bits () {{ Φ }}.
Axiom random٠intーspec : ∀ `{zoo۰G : !ZooG Σ} ub Φ,
(0 < ub)%Z →
( ∀ n,
⌜0 ≤ n < ub⌝%Z -∗
Φ #n
) ⊢
WP random٠int #ub {{ Φ }}.
Section zoo۰G.
Context `{zoo۰G : !ZooG Σ}.
Lemma random٠intーspecーnat (ub : nat) Φ :
0 < ub →
( ∀ n,
⌜n < ub⌝ -∗
Φ #n
) ⊢
WP random٠int #ub {{ Φ }}.
Lemma random٠int_in_rangeーspec lb ub Φ :
(lb < ub)%Z →
( ∀ n,
⌜lb ≤ n < ub⌝%Z -∗
Φ #n
) ⊢
WP random٠int_in_range #lb #ub {{ Φ }}.
Lemma random٠int_in_rangeーspecーnat lb ub Φ :
lb < ub →
( ∀ n,
⌜lb ≤ n < ub⌝ -∗
Φ #n
) ⊢
WP random٠int_in_range #lb #ub {{ Φ }}.
End zoo۰G.
Require zoo_std.random__opaque.