aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/RandomAlt.hs
blob: 8548a1a1f9033398df4463e7825eef3aad0d4428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{-|p
Module      : VeriFuzz.RandomAlt
Description : RandomAlt generation for DAG
Copyright   : (c) 2018-2019, Yann Herklotz
License     : BSD-3
Maintainer  : ymherklotz [at] gmail [dot] com
Stability   : experimental
Portability : POSIX

Define the random generation for the directed acyclic graph.
-}

module VeriFuzz.RandomAlt where

import qualified Data.Graph.Inductive.Arbitrary    as G
import           Data.Graph.Inductive.PatriciaTree (Gr)
import           Test.QuickCheck                   (Arbitrary, Gen)
import qualified Test.QuickCheck                   as QC

randomDAG :: (Arbitrary l, Arbitrary e) => Gen (Gr l e)
randomDAG = G.looplessGraph <$> QC.arbitrary

-- | Generate a random acyclic DAG with an IO instance.
genRandomDAG :: (Arbitrary l, Arbitrary e) => IO (Gr l e)
genRandomDAG = QC.generate randomDAG