Moved Graph and Relation stuff to separate modules. Added some QuickCheck properties for Relation. Improved relation datastructure and algorithms, making FA generation much faster.

This commit is contained in:
bringert
2005-10-26 16:13:13 +00:00
parent 5a9ec27143
commit 3d4200d3fe
6 changed files with 263 additions and 105 deletions

View File

@@ -0,0 +1,39 @@
----------------------------------------------------------------------
-- |
-- Module : RelationQC
-- Maintainer : BB
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/10/26 17:13:13 $
-- > CVS $Author: bringert $
-- > CVS $Revision: 1.1 $
--
-- QuickCheck properties for GF.Speech.Relation
-----------------------------------------------------------------------------
module GF.Speech.RelationQC where
import GF.Speech.Relation
import Test.QuickCheck
prop_transitiveClosure_trans :: [(Int,Int)] -> Bool
prop_transitiveClosure_trans ps = isTransitive (transitiveClosure (mkRel ps))
prop_symmetricSubrelation_symm :: [(Int,Int)] -> Bool
prop_symmetricSubrelation_symm ps = isSymmetric (symmetricSubrelation (mkRel ps))
prop_symmetricSubrelation_sub :: [(Int,Int)] -> Bool
prop_symmetricSubrelation_sub ps = symmetricSubrelation r `isSubRelationOf` r
where r = mkRel ps
prop_symmetricClosure_symm :: [(Int,Int)] -> Bool
prop_symmetricClosure_symm ps = isSymmetric (symmetricClosure (mkRel ps))
prop_reflexiveClosure_refl :: [(Int,Int)] -> Bool
prop_reflexiveClosure_refl ps = isReflexive (reflexiveClosure (mkRel ps))
prop_mkEquiv_equiv :: [(Int,Int)] -> Bool
prop_mkEquiv_equiv ps = isEquivalence (mkEquiv ps)
where mkEquiv = transitiveClosure . symmetricClosure . reflexiveClosure . mkRel