Copyright | (c) Ewaryst Schulz DFKI Bremen 2010 |
---|---|
License | GPLv2 or higher, see LICENSE.txt |
Maintainer | ewaryst.schulz@dfki.de |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
This module defines a basic datatype for tree-like partial orderings such as encountered, e.g., in the set lattice.
Synopsis
- data Incomparable
- data SetOrdering
- = Comparable Ordering
- | Incomparable Incomparable
- data InfDev
- newtype CIType a = CIType (a, InfDev)
- data SetOrInterval a
- data ClosedInterval a = ClosedInterval a a
- data InfInt
- class Continuous a
- class Discrete a where
- cmpClosedInts :: Ord a => ClosedInterval a -> ClosedInterval a -> SetOrdering
- membSoID :: (Discrete a, Ord a) => a -> SetOrInterval a -> Bool
- nullSoID :: (Discrete a, Ord a) => SetOrInterval a -> Bool
- toSingularD :: (Discrete a, Ord a) => SetOrInterval a -> Maybe a
- setToClosedIntD :: (Discrete a, Ord a) => SetOrInterval a -> ClosedInterval a
- cmpSoIsD :: (Discrete a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering
- cmpSoIsExD :: (Discrete a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering
- membSoI :: Ord a => a -> SetOrInterval a -> Bool
- nullSoI :: (Continuous a, Ord a) => SetOrInterval a -> Bool
- toSingular :: (Continuous a, Ord a) => SetOrInterval a -> Maybe a
- setToClosedInt :: Ord a => SetOrInterval a -> ClosedInterval (CIType a)
- cmpSoIs :: (Continuous a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering
- cmpSoIsEx :: Ord a => SetOrInterval a -> SetOrInterval a -> SetOrdering
- swapCompare :: Ordering -> Ordering
- swapCmp :: SetOrdering -> SetOrdering
- combineCmp :: SetOrdering -> SetOrdering -> SetOrdering
Documentation
data Incomparable Source #
Instances
Eq Incomparable Source # | |
Defined in CSL.TreePO (==) :: Incomparable -> Incomparable -> Bool (/=) :: Incomparable -> Incomparable -> Bool | |
Data Incomparable Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Incomparable -> c Incomparable gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Incomparable toConstr :: Incomparable -> Constr dataTypeOf :: Incomparable -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Incomparable) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Incomparable) gmapT :: (forall b. Data b => b -> b) -> Incomparable -> Incomparable gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Incomparable -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Incomparable -> r gmapQ :: (forall d. Data d => d -> u) -> Incomparable -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Incomparable -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Incomparable -> m Incomparable gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Incomparable -> m Incomparable gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Incomparable -> m Incomparable | |
Show Incomparable Source # | |
Defined in CSL.TreePO showsPrec :: Int -> Incomparable -> ShowS show :: Incomparable -> String showList :: [Incomparable] -> ShowS | |
Generic Incomparable | |
Defined in CSL.ATC_CSL type Rep Incomparable :: Type -> Type from :: Incomparable -> Rep Incomparable x to :: Rep Incomparable x -> Incomparable | |
FromJSON Incomparable | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser Incomparable parseJSONList :: Value -> Parser [Incomparable] | |
ToJSON Incomparable | |
Defined in CSL.ATC_CSL toJSON :: Incomparable -> Value toEncoding :: Incomparable -> Encoding toJSONList :: [Incomparable] -> Value toEncodingList :: [Incomparable] -> Encoding | |
ShATermConvertible Incomparable | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> Incomparable -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [Incomparable] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, Incomparable) fromShATermList' :: Int -> ATermTable -> (ATermTable, [Incomparable]) | |
type Rep Incomparable | |
Defined in CSL.ATC_CSL type Rep Incomparable = D1 ('MetaData "Incomparable" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "Disjoint" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Overlap" 'PrefixI 'False) (U1 :: Type -> Type)) |
data SetOrdering Source #
Comparable Ordering | |
Incomparable Incomparable |
Instances
Eq SetOrdering Source # | |
Defined in CSL.TreePO (==) :: SetOrdering -> SetOrdering -> Bool (/=) :: SetOrdering -> SetOrdering -> Bool | |
Data SetOrdering Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SetOrdering -> c SetOrdering gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SetOrdering toConstr :: SetOrdering -> Constr dataTypeOf :: SetOrdering -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SetOrdering) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SetOrdering) gmapT :: (forall b. Data b => b -> b) -> SetOrdering -> SetOrdering gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SetOrdering -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SetOrdering -> r gmapQ :: (forall d. Data d => d -> u) -> SetOrdering -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> SetOrdering -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> SetOrdering -> m SetOrdering gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SetOrdering -> m SetOrdering gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SetOrdering -> m SetOrdering | |
Show SetOrdering Source # | |
Defined in CSL.TreePO showsPrec :: Int -> SetOrdering -> ShowS show :: SetOrdering -> String showList :: [SetOrdering] -> ShowS | |
Generic SetOrdering | |
Defined in CSL.ATC_CSL type Rep SetOrdering :: Type -> Type from :: SetOrdering -> Rep SetOrdering x to :: Rep SetOrdering x -> SetOrdering | |
FromJSON SetOrdering | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser SetOrdering parseJSONList :: Value -> Parser [SetOrdering] | |
ToJSON SetOrdering | |
Defined in CSL.ATC_CSL toJSON :: SetOrdering -> Value toEncoding :: SetOrdering -> Encoding toJSONList :: [SetOrdering] -> Value toEncodingList :: [SetOrdering] -> Encoding | |
ShATermConvertible SetOrdering | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> SetOrdering -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [SetOrdering] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, SetOrdering) fromShATermList' :: Int -> ATermTable -> (ATermTable, [SetOrdering]) | |
type Rep SetOrdering | |
Defined in CSL.ATC_CSL type Rep SetOrdering = D1 ('MetaData "SetOrdering" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "Comparable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ordering)) :+: C1 ('MetaCons "Incomparable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Incomparable))) |
We represent Intervals with opened or closed end points over a linearly
ordered type a
as closed intervals over the type '(a, InfDev)', for
infinitesimal deviation.
- '(x, EpsLeft)' means an epsilon to the left of x
- '(x, Zero)' means x
- '(x, EpsRight)' means an epsilon to the right of x
We have EpsLeft < Zero < EpsRight and the ordering of a
lifts to the
lexicographical ordering of '(a, InfDev)' which captures well our intended
meaning.
We inject the type a
into the type '(a, InfDev)'
by mapping x
to '(x, Zero)'.
The mapping of intrvals is as follows:
A left opened interval starting at x becomes a left closed interval starting
at '(x, EpsRight)'.
We have:
'forall y > x. (y, _) > (x, EpsRight)', hence in particular
'(y, Zero) > (x, EpsRight)'
but also
'(x, Zero) < (x, EpsRight)'
Analogously we represent a right opened one ending at y as a closed one ending at '(x, EpsLeft)'.
Instances
Eq InfDev Source # | |
Data InfDev Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InfDev -> c InfDev gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InfDev dataTypeOf :: InfDev -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InfDev) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InfDev) gmapT :: (forall b. Data b => b -> b) -> InfDev -> InfDev gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InfDev -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InfDev -> r gmapQ :: (forall d. Data d => d -> u) -> InfDev -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> InfDev -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> InfDev -> m InfDev gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InfDev -> m InfDev gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InfDev -> m InfDev | |
Ord InfDev Source # | |
Show InfDev Source # | |
Generic InfDev | |
FromJSON InfDev | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser InfDev parseJSONList :: Value -> Parser [InfDev] | |
ToJSON InfDev | |
Defined in CSL.ATC_CSL toEncoding :: InfDev -> Encoding toJSONList :: [InfDev] -> Value toEncodingList :: [InfDev] -> Encoding | |
ShATermConvertible InfDev | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> InfDev -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [InfDev] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, InfDev) fromShATermList' :: Int -> ATermTable -> (ATermTable, [InfDev]) | |
type Rep InfDev | |
Defined in CSL.ATC_CSL type Rep InfDev = D1 ('MetaData "InfDev" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "EpsLeft" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Zero" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EpsRight" 'PrefixI 'False) (U1 :: Type -> Type))) |
Instances
Eq a => Eq (CIType a) Source # | |
Data a => Data (CIType a) Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CIType a -> c (CIType a) gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CIType a) toConstr :: CIType a -> Constr dataTypeOf :: CIType a -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (CIType a)) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CIType a)) gmapT :: (forall b. Data b => b -> b) -> CIType a -> CIType a gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CIType a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CIType a -> r gmapQ :: (forall d. Data d => d -> u) -> CIType a -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> CIType a -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> CIType a -> m (CIType a) gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CIType a -> m (CIType a) gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CIType a -> m (CIType a) | |
Ord a => Ord (CIType a) Source # | This type with the given ordering is to represent opened/closed intervals
over |
Show a => Show (CIType a) Source # | |
Generic (CIType a) | |
FromJSON a => FromJSON (CIType a) | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser (CIType a) parseJSONList :: Value -> Parser [CIType a] | |
ToJSON a => ToJSON (CIType a) | |
Defined in CSL.ATC_CSL toEncoding :: CIType a -> Encoding toJSONList :: [CIType a] -> Value toEncodingList :: [CIType a] -> Encoding | |
ShATermConvertible a => ShATermConvertible (CIType a) | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> CIType a -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [CIType a] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, CIType a) fromShATermList' :: Int -> ATermTable -> (ATermTable, [CIType a]) | |
type Rep (CIType a) | |
Defined in CSL.ATC_CSL |
data SetOrInterval a Source #
A finite set or an interval. True = closed, False = opened interval border.
Instances
Eq a => Eq (SetOrInterval a) Source # | |
Defined in CSL.TreePO (==) :: SetOrInterval a -> SetOrInterval a -> Bool (/=) :: SetOrInterval a -> SetOrInterval a -> Bool | |
(Data a, Ord a) => Data (SetOrInterval a) Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SetOrInterval a -> c (SetOrInterval a) gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (SetOrInterval a) toConstr :: SetOrInterval a -> Constr dataTypeOf :: SetOrInterval a -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (SetOrInterval a)) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (SetOrInterval a)) gmapT :: (forall b. Data b => b -> b) -> SetOrInterval a -> SetOrInterval a gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SetOrInterval a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SetOrInterval a -> r gmapQ :: (forall d. Data d => d -> u) -> SetOrInterval a -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> SetOrInterval a -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> SetOrInterval a -> m (SetOrInterval a) gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SetOrInterval a -> m (SetOrInterval a) gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SetOrInterval a -> m (SetOrInterval a) | |
Ord a => Ord (SetOrInterval a) Source # | |
Defined in CSL.TreePO compare :: SetOrInterval a -> SetOrInterval a -> Ordering (<) :: SetOrInterval a -> SetOrInterval a -> Bool (<=) :: SetOrInterval a -> SetOrInterval a -> Bool (>) :: SetOrInterval a -> SetOrInterval a -> Bool (>=) :: SetOrInterval a -> SetOrInterval a -> Bool max :: SetOrInterval a -> SetOrInterval a -> SetOrInterval a min :: SetOrInterval a -> SetOrInterval a -> SetOrInterval a | |
Show a => Show (SetOrInterval a) Source # | |
Defined in CSL.TreePO showsPrec :: Int -> SetOrInterval a -> ShowS show :: SetOrInterval a -> String showList :: [SetOrInterval a] -> ShowS | |
Generic (SetOrInterval a) | |
Defined in CSL.ATC_CSL type Rep (SetOrInterval a) :: Type -> Type from :: SetOrInterval a -> Rep (SetOrInterval a) x to :: Rep (SetOrInterval a) x -> SetOrInterval a | |
(Ord a, FromJSON a) => FromJSON (SetOrInterval a) | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser (SetOrInterval a) parseJSONList :: Value -> Parser [SetOrInterval a] | |
(Ord a, ToJSON a) => ToJSON (SetOrInterval a) | |
Defined in CSL.ATC_CSL toJSON :: SetOrInterval a -> Value toEncoding :: SetOrInterval a -> Encoding toJSONList :: [SetOrInterval a] -> Value toEncodingList :: [SetOrInterval a] -> Encoding | |
(Ord a, ShATermConvertible a) => ShATermConvertible (SetOrInterval a) | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> SetOrInterval a -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [SetOrInterval a] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, SetOrInterval a) fromShATermList' :: Int -> ATermTable -> (ATermTable, [SetOrInterval a]) | |
(Ord a, Pretty a) => Pretty (SetOrInterval a) Source # | |
Defined in CSL.Print_AS pretty :: SetOrInterval a -> Doc Source # pretties :: [SetOrInterval a] -> Doc Source # | |
type Rep (SetOrInterval a) | |
Defined in CSL.ATC_CSL type Rep (SetOrInterval a) = D1 ('MetaData "SetOrInterval" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "Set" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set a))) :+: C1 ('MetaCons "IntVal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a, Bool)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a, Bool)))) |
data ClosedInterval a Source #
A closed interval
ClosedInterval a a |
Instances
Eq a => Eq (ClosedInterval a) Source # | |
Defined in CSL.TreePO (==) :: ClosedInterval a -> ClosedInterval a -> Bool (/=) :: ClosedInterval a -> ClosedInterval a -> Bool | |
Data a => Data (ClosedInterval a) Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClosedInterval a -> c (ClosedInterval a) gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ClosedInterval a) toConstr :: ClosedInterval a -> Constr dataTypeOf :: ClosedInterval a -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ClosedInterval a)) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ClosedInterval a)) gmapT :: (forall b. Data b => b -> b) -> ClosedInterval a -> ClosedInterval a gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClosedInterval a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClosedInterval a -> r gmapQ :: (forall d. Data d => d -> u) -> ClosedInterval a -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> ClosedInterval a -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> ClosedInterval a -> m (ClosedInterval a) gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ClosedInterval a -> m (ClosedInterval a) gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ClosedInterval a -> m (ClosedInterval a) | |
Ord a => Ord (ClosedInterval a) Source # | |
Defined in CSL.TreePO compare :: ClosedInterval a -> ClosedInterval a -> Ordering (<) :: ClosedInterval a -> ClosedInterval a -> Bool (<=) :: ClosedInterval a -> ClosedInterval a -> Bool (>) :: ClosedInterval a -> ClosedInterval a -> Bool (>=) :: ClosedInterval a -> ClosedInterval a -> Bool max :: ClosedInterval a -> ClosedInterval a -> ClosedInterval a min :: ClosedInterval a -> ClosedInterval a -> ClosedInterval a | |
Show a => Show (ClosedInterval a) Source # | |
Defined in CSL.TreePO showsPrec :: Int -> ClosedInterval a -> ShowS show :: ClosedInterval a -> String showList :: [ClosedInterval a] -> ShowS | |
Generic (ClosedInterval a) | |
Defined in CSL.ATC_CSL type Rep (ClosedInterval a) :: Type -> Type from :: ClosedInterval a -> Rep (ClosedInterval a) x to :: Rep (ClosedInterval a) x -> ClosedInterval a | |
FromJSON a => FromJSON (ClosedInterval a) | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser (ClosedInterval a) parseJSONList :: Value -> Parser [ClosedInterval a] | |
ToJSON a => ToJSON (ClosedInterval a) | |
Defined in CSL.ATC_CSL toJSON :: ClosedInterval a -> Value toEncoding :: ClosedInterval a -> Encoding toJSONList :: [ClosedInterval a] -> Value toEncodingList :: [ClosedInterval a] -> Encoding | |
ShATermConvertible a => ShATermConvertible (ClosedInterval a) | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> ClosedInterval a -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [ClosedInterval a] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, ClosedInterval a) fromShATermList' :: Int -> ATermTable -> (ATermTable, [ClosedInterval a]) | |
Pretty a => Pretty (ClosedInterval a) Source # | |
Defined in CSL.Print_AS pretty :: ClosedInterval a -> Doc Source # pretties :: [ClosedInterval a] -> Doc Source # | |
type Rep (ClosedInterval a) | |
Defined in CSL.ATC_CSL type Rep (ClosedInterval a) = D1 ('MetaData "ClosedInterval" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "ClosedInterval" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |
Infinite integers = integers augmented by -Infty and +Infty
Instances
Eq InfInt Source # | |
Data InfInt Source # | |
Defined in CSL.TreePO gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InfInt -> c InfInt gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InfInt dataTypeOf :: InfInt -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InfInt) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InfInt) gmapT :: (forall b. Data b => b -> b) -> InfInt -> InfInt gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InfInt -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InfInt -> r gmapQ :: (forall d. Data d => d -> u) -> InfInt -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> InfInt -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> InfInt -> m InfInt gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InfInt -> m InfInt gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InfInt -> m InfInt | |
Ord InfInt Source # | |
Show InfInt Source # | |
Generic InfInt | |
Discrete InfInt Source # | |
FromJSON InfInt | |
Defined in CSL.ATC_CSL parseJSON :: Value -> Parser InfInt parseJSONList :: Value -> Parser [InfInt] | |
ToJSON InfInt | |
Defined in CSL.ATC_CSL toEncoding :: InfInt -> Encoding toJSONList :: [InfInt] -> Value toEncodingList :: [InfInt] -> Encoding | |
ShATermConvertible InfInt | |
Defined in CSL.ATC_CSL toShATermAux :: ATermTable -> InfInt -> IO (ATermTable, Int) toShATermList' :: ATermTable -> [InfInt] -> IO (ATermTable, Int) fromShATermAux :: Int -> ATermTable -> (ATermTable, InfInt) fromShATermList' :: Int -> ATermTable -> (ATermTable, [InfInt]) | |
Pretty InfInt Source # | |
type Rep InfInt | |
Defined in CSL.ATC_CSL type Rep InfInt = D1 ('MetaData "InfInt" "CSL.TreePO" "main" 'False) (C1 ('MetaCons "PosInf" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NegInf" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FinInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))) |
class Continuous a Source #
Instances
Continuous GroundConstant Source # | |
Defined in CSL.AS_BASIC_CSL |
:: Ord a | |
=> ClosedInterval a |
|
-> ClosedInterval a |
|
-> SetOrdering |
Compares closed intervals [l1, r1] and [l2, r2]. Assumes non-singular intervals, i.e., l1 < r1 and l2 < r2. Works only for linearly ordered types.
membSoID :: (Discrete a, Ord a) => a -> SetOrInterval a -> Bool Source #
Membership in SetOrInterval
nullSoID :: (Discrete a, Ord a) => SetOrInterval a -> Bool Source #
Checks if the set is empty.
toSingularD :: (Discrete a, Ord a) => SetOrInterval a -> Maybe a Source #
If the set is singular, i.e., consists only from one point, then we return this point. Reports error on empty SoI's.
setToClosedIntD :: (Discrete a, Ord a) => SetOrInterval a -> ClosedInterval a Source #
Transforms a SetOrInterval
to a closed representation
cmpSoIsD :: (Discrete a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering Source #
Compare sets over discrete types
cmpSoIsExD :: (Discrete a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering Source #
Compare sets helper function which only works on regular (non-singular) sets
membSoI :: Ord a => a -> SetOrInterval a -> Bool Source #
Membership in SetOrInterval
nullSoI :: (Continuous a, Ord a) => SetOrInterval a -> Bool Source #
Checks if the set is empty. Only for continuous types.
toSingular :: (Continuous a, Ord a) => SetOrInterval a -> Maybe a Source #
If the set is singular, i.e., consists only from one point, then we return this point. Reports error on empty SoI's. Only for continuous types.
setToClosedInt :: Ord a => SetOrInterval a -> ClosedInterval (CIType a) Source #
Transforms a SetOrInterval
to a closed representation
Only for continuous types.
cmpSoIs :: (Continuous a, Ord a) => SetOrInterval a -> SetOrInterval a -> SetOrdering Source #
Compare sets over continuous types
cmpSoIsEx :: Ord a => SetOrInterval a -> SetOrInterval a -> SetOrdering Source #
Compare sets helper function which only works on regular (non-singular) sets
swapCompare :: Ordering -> Ordering Source #
swapCmp :: SetOrdering -> SetOrdering Source #
combineCmp :: SetOrdering -> SetOrdering -> SetOrdering Source #
We combine the comparison outcome of the individual parameters with the following (symmetrical => commutative) table:
\ | > < = O D ------------- > | > O > O D < | < < O D = | = O D O | O D D | D , where > | < | = | O | D --------------------------------------------- RightOf | LeftOf | Equal | Overlap | Disjoint
The purpose of this table is to use it for cartesian products as follows
Let
A', A'' subset A B', B'' subset B
In order to get the comparison result for A' x B' and A'' x B'' we compare
A' and A'' as well as B' and B'' and combine the results with the above table.
Note that for empty sets the comparable results ,,= are preferred over the disjoint result.