Changeset 12825
- Timestamp:
- 11.11.2009 19:01:55 (4 months ago)
- Location:
- trunk/Common/Lib
- Files:
-
- 2 modified
-
Rel.hs (modified) (1 diff)
-
RelCheck.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Common/Lib/Rel.hs
r12775 r12825 223 223 toPrecMap :: Ord a => Rel a -> (Map.Map a Int, Int) 224 224 toPrecMap = foldl ( \ (m1, c) s -> let n = c + 1 in 225 (Set.fold ( \ i -> Map.insert in) m1 s, n))225 (Set.fold (flip Map.insert n) m1 s, n)) 226 226 (Map.empty, 0) . topSort 227 227 -
trunk/Common/Lib/RelCheck.hs
r10427 r12825 1 {-# OPTIONS -fglasgow-exts #-}1 {-# LANGUAGE FlexibleInstances #-} 2 2 {- | 3 3 Module : $Header$ … … 11 11 12 12 a couple of test cases mainly for intransKernel 13 14 13 -} 15 14 … … 40 39 insert x z $ 41 40 insert z y $ 42 insert y x $r41 insert y x r 43 42 return r' 44 43 45 prop_ intransKernel_transClosure = prp_transClosure intransKernel44 prop_IntransKernelTransClosure = prpTransClosure intransKernel 46 45 47 prp _transClosure intrKern r =46 prpTransClosure intrKern r = 48 47 (Set.size (mostRight rel) <= 3 && 49 48 length (sccOfClosure rel) > 1 && 50 length (Map.keys $ toMap r) > 6 ) ==>51 ( (Set.size $toSet $ irreflex r) < 10) `trivial`49 length (Map.keys $ toMap r) > 6) ==> 50 (Set.size (toSet $ irreflex r) < 10) `trivial` 52 51 collect (length (Map.keys $ toMap r)) 53 52 (rel == transClosure (intrKern rel)) … … 80 79 } 81 80 82 prp _invTest :: (Rel Int -> Rel Int) -> Rel Int -> Property83 prp _invTest relFun rel =84 (length (Map.keys $ toMap rel) > 6 ) ==>85 ( (Set.size $toSet $ irreflex rel) < 10) `trivial`81 prpInvTest :: (Rel Int -> Rel Int) -> Rel Int -> Property 82 prpInvTest relFun rel = 83 (length (Map.keys $ toMap rel) > 6) ==> 84 (Set.size (toSet $ irreflex rel) < 10) `trivial` 86 85 collect (length (Map.keys $ toMap rel)) 87 ( (not . elem Set.empty)$ Map.elems (toMap $ relFun rel))86 (notElem Set.empty $ Map.elems (toMap $ relFun rel)) 88 87 89 prop_ inv_intransKernel = prp_invTest intransKernel -- violated precondition!90 prop_ inv_transReduce = prp_invTest transReduce -- violated precondition!91 prop_ inv_transpose = prp_invTest transpose92 prop_ inv_irreflex = prp_invTest irreflex93 prop_ inv_transClosure = prp_invTest transClosure88 prop_InvIntransKernel = prpInvTest intransKernel -- violated precondition! 89 prop_InvTransReduce = prpInvTest transReduce -- violated precondition! 90 prop_InvTranspose = prpInvTest transpose 91 prop_InvIrreflex = prpInvTest irreflex 92 prop_InvTransClosure = prpInvTest transClosure 94 93 95 prp _eq :: (Rel Int -> Rel Int) -> (Rel Int -> Rel Int) -> Rel Int -> Property96 prp _eq relFun1 relFun2 rel = let clos = transClosure rel in94 prpEq :: (Rel Int -> Rel Int) -> (Rel Int -> Rel Int) -> Rel Int -> Property 95 prpEq relFun1 relFun2 rel = let clos = transClosure rel in 97 96 (Set.size (nodes rel) > 6 && 98 97 clos /= rel && clos /= irreflex clos && transpose rel /= rel) ==> 99 ( (Set.size $toSet rel) < 10) `trivial`98 (Set.size (toSet rel) < 10) `trivial` 100 99 collect (Set.size (nodes rel)) 101 100 (relFun1 rel == relFun2 rel) 102 101 103 prop_ transpose_transpose = prp_eq id (transpose . transpose)104 prop_ irreflex_transpose = prp_eq (irreflex . transpose) (transpose . irreflex)105 prop_ transClosure_transpose =106 prp _eq (transClosure . transpose) (transpose . transClosure)107 prop_ transClosure_intransKernel = prp_eq transClosure102 prop_TransposeTranspose = prpEq id (transpose . transpose) 103 prop_IrreflexTranspose = prpEq (irreflex . transpose) (transpose . irreflex) 104 prop_TransClosureTranspose = 105 prpEq (transClosure . transpose) (transpose . transClosure) 106 prop_TransClosureIntransKernel = prpEq transClosure 108 107 (transClosure . intransKernel . transClosure)