interval-patterns-0.8.0: Intervals, and monoids thereof
Safe HaskellSafe-Inferred
LanguageGHC2021

Data.Interval.Borel

Synopsis

Documentation

newtype Borel x Source #

The Borel sets on a type are the sets generated by its intervals. It forms a Heyting algebra with union as join and intersection as meet, and a Ring with symmetricDifference as addition and intersection as multiplication (and complement as negation). In fact the algebra is Boolean as the operation x ==> y = complement x \/ y.

It is a monoid that is convenient for agglomerating groups of intervals, such as for calculating the overall timespan of a group of events. However, it is agnostic of how many times each given point has been covered. To keep track of this data, use Layers.

Constructors

Borel (Set (Interval x)) 

Instances

Instances details
(Data x, Ord x) => Data (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Borel x -> c (Borel x) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Borel x) #

toConstr :: Borel x -> Constr #

dataTypeOf :: Borel x -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Borel x)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Borel x)) #

gmapT :: (forall b. Data b => b -> b) -> Borel x -> Borel x #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Borel x -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Borel x -> r #

gmapQ :: (forall d. Data d => d -> u) -> Borel x -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Borel x -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Borel x -> m (Borel x) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Borel x -> m (Borel x) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Borel x -> m (Borel x) #

Ord x => Monoid (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

mempty :: Borel x #

mappend :: Borel x -> Borel x -> Borel x #

mconcat :: [Borel x] -> Borel x #

Ord x => Semigroup (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(<>) :: Borel x -> Borel x -> Borel x #

sconcat :: NonEmpty (Borel x) -> Borel x #

stimes :: Integral b => b -> Borel x -> Borel x #

Generic (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Associated Types

type Rep (Borel x) :: Type -> Type #

Methods

from :: Borel x -> Rep (Borel x) x0 #

to :: Rep (Borel x) x0 -> Borel x #

(Ord x, Show x) => Show (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

showsPrec :: Int -> Borel x -> ShowS #

show :: Borel x -> String #

showList :: [Borel x] -> ShowS #

Ord x => Eq (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(==) :: Borel x -> Borel x -> Bool #

(/=) :: Borel x -> Borel x -> Bool #

Ord x => Ord (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

compare :: Borel x -> Borel x -> Ordering #

(<) :: Borel x -> Borel x -> Bool #

(<=) :: Borel x -> Borel x -> Bool #

(>) :: Borel x -> Borel x -> Bool #

(>=) :: Borel x -> Borel x -> Bool #

max :: Borel x -> Borel x -> Borel x #

min :: Borel x -> Borel x -> Borel x #

Ord x => Heyting (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(==>) :: Borel x -> Borel x -> Borel x #

neg :: Borel x -> Borel x #

(<=>) :: Borel x -> Borel x -> Borel x #

Ord x => BoundedJoinSemiLattice (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

bottom :: Borel x #

Ord x => BoundedMeetSemiLattice (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

top :: Borel x #

Ord x => Lattice (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(\/) :: Borel x -> Borel x -> Borel x #

(/\) :: Borel x -> Borel x -> Borel x #

Ord x => Ring (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

negate :: Borel x -> Borel x #

Ord x => Semiring (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

plus :: Borel x -> Borel x -> Borel x #

zero :: Borel x #

times :: Borel x -> Borel x -> Borel x #

one :: Borel x #

fromNatural :: Natural -> Borel x #

type Rep (Borel x) Source # 
Instance details

Defined in Data.Interval.Borel

type Rep (Borel x) = D1 ('MetaData "Borel" "Data.Interval.Borel" "interval-patterns-0.8.0-BzcshY5RLEW8SWgNfdCVP3" 'True) (C1 ('MetaCons "Borel" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (Interval x)))))

borel :: Ord x => [Interval x] -> Borel x Source #

Consider the Borel set identified by a list of Intervals.

intervalSet :: Ord x => Borel x -> Set (Interval x) Source #

Turn a Borel set into a Set of Intervals.

empty :: Ord x => Borel x Source #

The empty Borel set.

singleton :: Ord x => Interval x -> Borel x Source #

The Borel set consisting of a single Interval.

null :: Borel x -> Bool Source #

Is this Borel set empty?

insert :: Ord x => Interval x -> Borel x -> Borel x Source #

Insert an Interval into a Borel set, agglomerating along the way.

whole :: Ord x => Borel x Source #

The maximal Borel set, that covers the entire range.

remove :: Ord x => Interval x -> Borel x -> Borel x Source #

Completely remove an Interval from a Borel set. Essentially the opposite of truncate.

(\-) :: Ord x => Borel x -> Interval x -> Borel x Source #

Flipped infix version of remove.

truncate :: Ord x => Interval x -> Borel x -> Borel x Source #

Given an Interval i, truncate i will trim a Borel set so that its hull is contained in i.

(\=) :: Ord x => Borel x -> Interval x -> Borel x Source #

Flipped infix version of truncate.

member :: Ord x => x -> Borel x -> Bool Source #

Is this point within any connected component of the Borel set?

notMember :: Ord x => x -> Borel x -> Bool Source #

Is this point not within any connected component of the Borel set?

union :: Ord x => Borel x -> Borel x -> Borel x Source #

A synonym for (<>).

unions :: Ord x => [Borel x] -> Borel x Source #

A synonym for fold.

difference :: Ord x => Borel x -> Borel x -> Borel x Source #

Remove all intervals of the second set from the first.

symmetricDifference :: Ord x => Borel x -> Borel x -> Borel x Source #

Take the symmetric difference of two Borel sets.

complement :: Ord x => Borel x -> Borel x Source #

Take the Borel set consisting of each point not in the given one.

intersection :: Ord x => Borel x -> Borel x -> Borel x Source #

Take the intersection of two Borel sets.

intersections :: Ord x => [Borel x] -> Borel x Source #

Take the intersection of a list of Borel sets.

hull :: Ord x => Borel x -> Maybe (Interval x) Source #

Take the smallest spanning Interval of a Borel set, provided that it is not the empty set.

isSubsetOf :: Ord x => Borel x -> Borel x -> Bool Source #

newtype Shrink x Source #

Newtype wrapper for the monoid under intersection.

Constructors

Shrink 

Fields

Instances

Instances details
(Data x, Ord x) => Data (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Shrink x -> c (Shrink x) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Shrink x) #

toConstr :: Shrink x -> Constr #

dataTypeOf :: Shrink x -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Shrink x)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Shrink x)) #

gmapT :: (forall b. Data b => b -> b) -> Shrink x -> Shrink x #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Shrink x -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Shrink x -> r #

gmapQ :: (forall d. Data d => d -> u) -> Shrink x -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Shrink x -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Shrink x -> m (Shrink x) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Shrink x -> m (Shrink x) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Shrink x -> m (Shrink x) #

Ord x => Monoid (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

mempty :: Shrink x #

mappend :: Shrink x -> Shrink x -> Shrink x #

mconcat :: [Shrink x] -> Shrink x #

Ord x => Semigroup (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(<>) :: Shrink x -> Shrink x -> Shrink x #

sconcat :: NonEmpty (Shrink x) -> Shrink x #

stimes :: Integral b => b -> Shrink x -> Shrink x #

Generic (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Associated Types

type Rep (Shrink x) :: Type -> Type #

Methods

from :: Shrink x -> Rep (Shrink x) x0 #

to :: Rep (Shrink x) x0 -> Shrink x #

(Ord x, Show x) => Show (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

showsPrec :: Int -> Shrink x -> ShowS #

show :: Shrink x -> String #

showList :: [Shrink x] -> ShowS #

Ord x => Eq (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

(==) :: Shrink x -> Shrink x -> Bool #

(/=) :: Shrink x -> Shrink x -> Bool #

Ord x => Ord (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

Methods

compare :: Shrink x -> Shrink x -> Ordering #

(<) :: Shrink x -> Shrink x -> Bool #

(<=) :: Shrink x -> Shrink x -> Bool #

(>) :: Shrink x -> Shrink x -> Bool #

(>=) :: Shrink x -> Shrink x -> Bool #

max :: Shrink x -> Shrink x -> Shrink x #

min :: Shrink x -> Shrink x -> Shrink x #

type Rep (Shrink x) Source # 
Instance details

Defined in Data.Interval.Borel

type Rep (Shrink x) = D1 ('MetaData "Shrink" "Data.Interval.Borel" "interval-patterns-0.8.0-BzcshY5RLEW8SWgNfdCVP3" 'True) (C1 ('MetaCons "Shrink" 'PrefixI 'True) (S1 ('MetaSel ('Just "getShrink") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Borel x))))