> {-# OPTIONS_HADDOCK show-extensions #-}
> {-|
> Module    : LTK.Decide.Trivial
> Copyright : (c) 2022 Dakotah Lambert
> License   : MIT

> This module implements a test for whether a given FSA has only
> a single state.
>
> @since 1.0
> -}
> module LTK.Decide.Trivial (isTrivial) where

> import LTK.FSA
> import qualified Data.Set as Set

> -- |True iff the automaton has a single state.
> isTrivial :: (Ord n, Ord e) => FSA n e -> Bool
> isTrivial :: FSA n e -> Bool
isTrivial = (Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
2) (Int -> Bool) -> (FSA n e -> Int) -> FSA n e -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Set (State n) -> Int
forall a. Set a -> Int
Set.size (Set (State n) -> Int)
-> (FSA n e -> Set (State n)) -> FSA n e -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FSA n e -> Set (State n)
forall e n. (Ord e, Ord n) => FSA n e -> Set (State n)
states