aboutsummaryrefslogtreecommitdiffstats
path: root/src/Test/VeriFuzz/Circuit.hs
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-12-15 20:17:54 +0000
committerYann Herklotz <ymherklotz@gmail.com>2018-12-15 20:17:54 +0000
commit86bc5c8596085d308df5d2c6ae5522bfb0ba50e0 (patch)
tree6da9414225048a9ec4f2812d7f514b4f093a3ac7 /src/Test/VeriFuzz/Circuit.hs
parent46170b588d4f926693b372428ba0b66ba2db39f2 (diff)
downloadverismith-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.hs36
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]