packages feed

fregel-1.2.0: sample-programs/re.fgl

{- reachability problems -}

data RVal = RVal { rch :: Bool } deriving (Eq, Show)

reAll g =
  let init v = RVal (vid v == 1) ;
      step v prev curr =
        let newrch = prev v .^ rch || or [ prev u .^ rch | (e,u) <- is v ]
        in RVal newrch
  in fregel init step Fix g

re3 g =
  let init v = RVal (vid v == 1) ;
      step v prev curr =
        let newrch = prev v .^ rch || or [ prev u .^ rch | (e,u) <- is v ]
        in RVal newrch
  in fregel init
            step
            (Until (\g -> sum [ 1 | u <- g, val u .^ rch ] > 3))
            g