satAF :: (CTL m a s, Ord a, Ord s) => m -> Formula a -> Set s
satAF m phi = satAF' (states m) (sat m phi)
    where
        satAF' x y = if x == y then y else satAF' y (Set.union y (preA m y))
satAF :: (CTL m a s, Ord a, Ord s) => m -> Formula a -> Set s
satAF m phi = satAF' (states m) (sat m phi)
    where
        satAF' x y = if x == y then y else satAF' y (Set.union y (preA m y))
satAF m phi = satAF' (states m) (sat m phi)
    where
        satAF' x y = if x == y then y else satAF' y (Set.union y (preA m y))