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.
lowerBound
of the empty interval isPosInf
.lowerBound
of a left unbounded interval isNegInf
.lowerBound
of 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.
upperBound
of the empty interval isNegInf
.upperBound
of a right unbounded interval isPosInf
.upperBound
of 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
.