diff -r f4d179d91af2 -r 2faf1148c062 src/HOL/ex/RPred.thy --- a/src/HOL/ex/RPred.thy Wed Sep 23 16:20:12 2009 +0200 +++ b/src/HOL/ex/RPred.thy Wed Sep 23 16:20:12 2009 +0200 @@ -14,13 +14,15 @@ definition return :: "'a => 'a rpred" where "return x = Pair (Predicate.single x)" -definition bind :: "'a rpred \ ('a \ 'b rpred) \ 'b rpred" (infixl "\=" 60) +definition bind :: "'a rpred \ ('a \ 'b rpred) \ 'b rpred" +(* (infixl "\=" 60) *) where "bind RP f = (\s. let (P, s') = RP s; (s1, s2) = Random.split_seed s' in (Predicate.bind P (%a. fst (f a s1)), s2))" -definition supp :: "'a rpred \ 'a rpred \ 'a rpred" (infixl "\" 80) +definition supp :: "'a rpred \ 'a rpred \ 'a rpred" +(* (infixl "\" 80) *) where "supp RP1 RP2 = (\s. let (P1, s') = RP1 s; (P2, s'') = RP2 s' in (upper_semilattice_class.sup P1 P2, s''))" @@ -43,6 +45,8 @@ where "lift_random g = scomp g (Pair o (Predicate.single o fst))" definition map_rpred :: "('a \ 'b) \ ('a rpred \ 'b rpred)" -where "map_rpred f P = P \= (return o f)" +where "map_rpred f P = bind P (return o f)" + +hide (open) const return bind supp end \ No newline at end of file