| Copyright | (c) Masahiro Sakai 2011-2014 |
|---|---|
| License | BSD-style |
| Maintainer | masahiro.sakai@gmail.com |
| Stability | provisional |
| Portability | non-portable (ScopedTypeVariables, DeriveDataTypeable) |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.IntegerInterval
Contents
Description
Interval datatype and interval arithmetic over integers.
Since 1.2.0
For the purpose of abstract interpretation, it might be convenient to use
Lattice instance. See also lattices package
(http://hackage.haskell.org/package/lattices).
- data IntegerInterval
- module Data.ExtendedReal
- interval :: (Extended Integer, Bool) -> (Extended Integer, Bool) -> IntegerInterval
- (<=..<=) :: Extended Integer -> Extended Integer -> IntegerInterval
- (<..<=) :: Extended Integer -> Extended Integer -> IntegerInterval
- (<=..<) :: Extended Integer -> Extended Integer -> IntegerInterval
- (<..<) :: Extended Integer -> Extended Integer -> IntegerInterval
- whole :: IntegerInterval
- empty :: IntegerInterval
- singleton :: Integer -> IntegerInterval
- null :: IntegerInterval -> Bool
- member :: Integer -> IntegerInterval -> Bool
- notMember :: Integer -> IntegerInterval -> Bool
- isSubsetOf :: IntegerInterval -> IntegerInterval -> Bool
- isProperSubsetOf :: IntegerInterval -> IntegerInterval -> Bool
- lowerBound :: IntegerInterval -> Extended Integer
- upperBound :: IntegerInterval -> Extended Integer
- lowerBound' :: IntegerInterval -> (Extended Integer, Bool)
- upperBound' :: IntegerInterval -> (Extended Integer, Bool)
- width :: IntegerInterval -> Integer
- (<!) :: IntegerInterval -> IntegerInterval -> Bool
- (<=!) :: IntegerInterval -> IntegerInterval -> Bool
- (==!) :: IntegerInterval -> IntegerInterval -> Bool
- (>=!) :: IntegerInterval -> IntegerInterval -> Bool
- (>!) :: IntegerInterval -> IntegerInterval -> Bool
- (/=!) :: IntegerInterval -> IntegerInterval -> Bool
- (<?) :: IntegerInterval -> IntegerInterval -> Bool
- (<=?) :: IntegerInterval -> IntegerInterval -> Bool
- (==?) :: IntegerInterval -> IntegerInterval -> Bool
- (>=?) :: IntegerInterval -> IntegerInterval -> Bool
- (>?) :: IntegerInterval -> IntegerInterval -> Bool
- (/=?) :: IntegerInterval -> IntegerInterval -> Bool
- (<??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- (<=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- (==??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- (>=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- (>??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- (/=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer)
- intersection :: IntegerInterval -> IntegerInterval -> IntegerInterval
- intersections :: [IntegerInterval] -> IntegerInterval
- hull :: IntegerInterval -> IntegerInterval -> IntegerInterval
- hulls :: [IntegerInterval] -> IntegerInterval
- pickup :: IntegerInterval -> Maybe Integer
- simplestIntegerWithin :: IntegerInterval -> Maybe Integer
- toInterval :: Real r => IntegerInterval -> Interval r
- fromInterval :: Interval Integer -> IntegerInterval
- fromIntervalOver :: RealFrac r => Interval r -> IntegerInterval
- fromIntervalUnder :: RealFrac r => Interval r -> IntegerInterval
Interval type
data IntegerInterval Source
The intervals (i.e. connected and convex subsets) over integers (Z).
Instances
module Data.ExtendedReal
Construction
Arguments
| :: (Extended Integer, Bool) | lower bound and whether it is included |
| -> (Extended Integer, Bool) | upper bound and whether it is included |
| -> IntegerInterval |
smart constructor for Interval
Arguments
| :: Extended Integer | lower bound |
| -> Extended Integer | upper bound |
| -> IntegerInterval |
closed interval [l,u]
Arguments
| :: Extended Integer | lower bound |
| -> Extended Integer | upper bound |
| -> IntegerInterval |
left-open right-closed interval (l,u]
Arguments
| :: Extended Integer | lower bound |
| -> Extended Integer | upper bound |
| -> IntegerInterval |
left-closed right-open interval [l, u)
Arguments
| :: Extended Integer | lower bound |
| -> Extended Integer | upper bound |
| -> IntegerInterval |
open interval (l, u)
whole :: IntegerInterval Source
whole real number line (-∞, ∞)
empty :: IntegerInterval Source
empty (contradicting) interval
singleton :: Integer -> IntegerInterval Source
singleton set [x,x]
Query
null :: IntegerInterval -> Bool Source
Is the interval empty?
member :: Integer -> IntegerInterval -> Bool Source
Is the element in the interval?
notMember :: Integer -> IntegerInterval -> Bool Source
Is the element not in the interval?
isSubsetOf :: IntegerInterval -> IntegerInterval -> Bool Source
Is this a subset?
(i1 ` tells whether isSubsetOf` i2)i1 is a subset of i2.
isProperSubsetOf :: IntegerInterval -> IntegerInterval -> Bool Source
Is this a proper subset? (i.e. a subset but not equal).
lowerBound :: IntegerInterval -> Extended Integer Source
Lower endpoint (i.e. greatest lower bound) of the interval.
lowerBoundof the empty interval isPosInf.lowerBoundof a left unbounded interval isNegInf.lowerBoundof an interval may or may not be a member of the interval.
upperBound :: IntegerInterval -> Extended Integer Source
Upper endpoint (i.e. least upper bound) of the interval.
upperBoundof the empty interval isNegInf.upperBoundof a right unbounded interval isPosInf.upperBoundof an interval is a member of the interval.
lowerBound' :: IntegerInterval -> (Extended Integer, Bool) Source
lowerBound of the interval and whether it is included in the interval.
The result is convenient to use as an argument for interval.
upperBound' :: IntegerInterval -> (Extended Integer, Bool) Source
upperBound of the interval and whether it is included in the interval.
The result is convenient to use as an argument for interval.
width :: IntegerInterval -> Integer Source
Width of a interval. Width of an unbounded interval is undefined.
Universal comparison operators
(<!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?< y
(<=!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?<= y
(==!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?== y
(>=!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?>= y
(>!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?> y
(/=!) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
For all x in X, y in Y. x ?/= y
Existential comparison operators
(<?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?< y
(<=?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?<= y
(==?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?== y
(>=?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?>= y
(>?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?> y
(/=?) :: IntegerInterval -> IntegerInterval -> Bool infix 4 Source
Does there exist an x in X, y in Y such that x ?/= y
Existential comparison operators that produce witnesses (experimental)
(<??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?< y
(<=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?<= y
(==??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?== y
(>=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?>= y
(>??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?> y
(/=??) :: IntegerInterval -> IntegerInterval -> Maybe (Integer, Integer) infix 4 Source
Does there exist an x in X, y in Y such that x ?/= y
Combine
intersection :: IntegerInterval -> IntegerInterval -> IntegerInterval Source
intersection of two intervals
intersections :: [IntegerInterval] -> IntegerInterval Source
intersection of a list of intervals.
hull :: IntegerInterval -> IntegerInterval -> IntegerInterval Source
convex hull of two intervals
hulls :: [IntegerInterval] -> IntegerInterval Source
convex hull of a list of intervals.
Operations
pickup :: IntegerInterval -> Maybe Integer Source
pick up an element from the interval if the interval is not empty.
simplestIntegerWithin :: IntegerInterval -> Maybe Integer Source
simplestIntegerWithin returns the simplest rational number within the interval.
An integer y is said to be simpler than another y' if
(see also approxRational)
Conversion
toInterval :: Real r => IntegerInterval -> Interval r Source
Convert the interval to Interval data type.
fromInterval :: Interval Integer -> IntegerInterval Source
Conversion from Interval data type.
fromIntervalOver :: RealFrac r => Interval r -> IntegerInterval Source
Given a Interval I over R, compute the smallest IntegerInterval J such that I ⊆ J.
fromIntervalUnder :: RealFrac r => Interval r -> IntegerInterval Source
Given a Interval I over R, compute the largest IntegerInterval J such that J ⊆ I.