> {-# OPTIONS_HADDOCK show-extensions #-}
>
> module LTK.Decide.Variety ( isVariety
> , isVarietyM) where
> import qualified Data.Representation.FiniteSemigroup as F
> import LTK.FSA
> import LTK.Algebra (SynMon)
>
>
> isVarietyM :: (Ord n, Ord e) => Bool -> String -> SynMon n e
> -> Maybe Bool
> isVarietyM :: forall n e.
(Ord n, Ord e) =>
Bool -> String -> SynMon n e -> Maybe Bool
isVarietyM Bool
star String
desc = Bool -> String -> FSA ([Maybe n], [Symbol e]) e -> Maybe Bool
forall n e.
(Ord n, Ord e) =>
Bool -> String -> FSA n e -> Maybe Bool
isVariety Bool
star String
desc
>
>
>
>
>
>
>
>
> isVariety :: (Ord n, Ord e) => Bool -> String -> FSA n e -> Maybe Bool
> isVariety :: forall n e.
(Ord n, Ord e) =>
Bool -> String -> FSA n e -> Maybe Bool
isVariety Bool
star String
desc = String -> OrderedSemigroup GeneratedAction -> Maybe Bool
forall s.
FiniteSemigroupRep s =>
String -> OrderedSemigroup s -> Maybe Bool
F.isVariety String
desc (OrderedSemigroup GeneratedAction -> Maybe Bool)
-> (FSA n e -> OrderedSemigroup GeneratedAction)
-> FSA n e
-> Maybe Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FSA n e -> OrderedSemigroup GeneratedAction
mk
> where mk :: FSA n e -> OrderedSemigroup GeneratedAction
mk = if Bool
star then FSA n e -> OrderedSemigroup GeneratedAction
forall n e.
(Ord n, Ord e) =>
FSA n e -> OrderedSemigroup GeneratedAction
syntacticOMonoid else FSA n e -> OrderedSemigroup GeneratedAction
forall n e.
(Ord n, Ord e) =>
FSA n e -> OrderedSemigroup GeneratedAction
syntacticOSemigroup