(* We use evalDist as the probability measure.  Instead of supplying an event on the return type, we expect the computation to test for the occurrence of the event.  *)
Notation "'Pr' [ c  ] " := (evalDist c true) (at level 20).

(* Specifications: *)
Lemma sumList_filter_evalDist_le_1 : forall (A : Set)(c : Comp A)(P : A -> bool) a, well_formed_comp c -> In a (filter P (getSupport c)) -> 1 <= sumList (filter (fun a' => negb (P a')) (getSupport c)) (evalDist c) -> False.
Lemma evalDist_sum_le_1 : forall (A : Set)(c : Comp A), sumList (getSupport c) (evalDist c) <= 1.
Lemma evalDist_le_1 : forall (A : Set)(c : Comp A) a, evalDist c a <= 1.
Theorem evalDist_le_1_gen : forall (A : Set)(eqd : EqDec A)(c : Comp A)(ls : list A), NoDup ls -> sumList ls (evalDist c) <= 1.
Theorem EqDec_pair_l : forall (A B : Set)(eqd : EqDec (A * B))(b : B), EqDec A.