diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-15 20:17:54 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-15 20:17:54 +0000 |
commit | 86bc5c8596085d308df5d2c6ae5522bfb0ba50e0 (patch) | |
tree | 6da9414225048a9ec4f2812d7f514b4f093a3ac7 /src/Test/VeriFuzz/Circuit.hs | |
parent | 46170b588d4f926693b372428ba0b66ba2db39f2 (diff) | |
download | verismith-86bc5c8596085d308df5d2c6ae5522bfb0ba50e0.tar.gz verismith-86bc5c8596085d308df5d2c6ae5522bfb0ba50e0.zip |
Rename types to circuit
Diffstat (limited to 'src/Test/VeriFuzz/Circuit.hs')
-rw-r--r-- | src/Test/VeriFuzz/Circuit.hs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/Test/VeriFuzz/Circuit.hs b/src/Test/VeriFuzz/Circuit.hs new file mode 100644 index 0000000..d934a3d --- /dev/null +++ b/src/Test/VeriFuzz/Circuit.hs @@ -0,0 +1,36 @@ +{-| +Module : Test.VeriFuzz.Circuit +Description : Definition of the circuit graph. +Copyright : (c) Yann Herklotz Grave 2018 +License : GPL-3 +Maintainer : ymherklotz@gmail.com +Stability : experimental +Portability : POSIX + +Definition of the circuit graph. +-} + +module Test.VeriFuzz.Circuit where + +import Data.Graph.Inductive +import System.Random +import Test.QuickCheck + +-- | The types for all the gates. +data Gate = And + | Or + | Xor + deriving (Show, Eq, Enum, Bounded, Ord) + +-- | Newtype for the Circuit which implements a Graph from fgl. +newtype Circuit = Circuit { getCircuit :: Gr Gate () } + +instance Random Gate where + randomR (a, b) g = + case randomR (fromEnum a, fromEnum b) g of + (x, g') -> (toEnum x, g') + + random = randomR (minBound, maxBound) + +instance Arbitrary Gate where + arbitrary = elements [And, Or, Xor] |