Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- newtype Borel x = Borel (Set (Interval x))
- borel :: Ord x => [Interval x] -> Borel x
- intervalSet :: Ord x => Borel x -> Set (Interval x)
- empty :: Ord x => Borel x
- singleton :: Ord x => Interval x -> Borel x
- null :: Borel x -> Bool
- insert :: Ord x => Interval x -> Borel x -> Borel x
- whole :: Ord x => Borel x
- remove :: Ord x => Interval x -> Borel x -> Borel x
- (\-) :: Ord x => Borel x -> Interval x -> Borel x
- truncate :: Ord x => Interval x -> Borel x -> Borel x
- (\=) :: Ord x => Borel x -> Interval x -> Borel x
- member :: Ord x => x -> Borel x -> Bool
- notMember :: Ord x => x -> Borel x -> Bool
- union :: Ord x => Borel x -> Borel x -> Borel x
- unions :: Ord x => [Borel x] -> Borel x
- difference :: Ord x => Borel x -> Borel x -> Borel x
- symmetricDifference :: Ord x => Borel x -> Borel x -> Borel x
- complement :: Ord x => Borel x -> Borel x
- intersection :: Ord x => Borel x -> Borel x -> Borel x
- intersections :: Ord x => [Borel x] -> Borel x
- hull :: Ord x => Borel x -> Maybe (Interval x)
- isSubsetOf :: Ord x => Borel x -> Borel x -> Bool
- newtype Shrink x = Shrink {}
Documentation
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
.
Instances
(Data x, Ord x) => Data (Borel x) Source # | |
Defined in Data.Interval.Borel 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 # | |
Ord x => Semigroup (Borel x) Source # | |
Generic (Borel x) Source # | |
(Ord x, Show x) => Show (Borel x) Source # | |
Ord x => Eq (Borel x) Source # | |
Ord x => Ord (Borel x) Source # | |
Ord x => Heyting (Borel x) Source # | |
Ord x => BoundedJoinSemiLattice (Borel x) Source # | |
Defined in Data.Interval.Borel | |
Ord x => BoundedMeetSemiLattice (Borel x) Source # | |
Defined in Data.Interval.Borel | |
Ord x => Lattice (Borel x) Source # | |
Ord x => Ring (Borel x) Source # | |
Defined in Data.Interval.Borel | |
Ord x => Semiring (Borel x) Source # | |
type Rep (Borel x) Source # | |
Defined in Data.Interval.Borel |
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.
Newtype wrapper for the monoid under intersection
.
Instances
(Data x, Ord x) => Data (Shrink x) Source # | |
Defined in Data.Interval.Borel 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 # | |
Ord x => Semigroup (Shrink x) Source # | |
Generic (Shrink x) Source # | |
(Ord x, Show x) => Show (Shrink x) Source # | |
Ord x => Eq (Shrink x) Source # | |
Ord x => Ord (Shrink x) Source # | |
Defined in Data.Interval.Borel | |
type Rep (Shrink x) Source # | |
Defined in Data.Interval.Borel |