feldspar-language-0.4.0.2: A functional embedded language for DSP and parallelism

Feldspar.Set

Description

General operations on sets

Synopsis

Documentation

class Eq a => Set a whereSource

A Set is an *over-approximation* of a set of values. The class does not care about how the set is interpreted, but it only makes sense to use interpretations for which the operations are sound.

Methods

empty :: aSource

universal :: aSource

(\/) :: a -> a -> aSource

Union

(/\) :: a -> a -> aSource

Intersection

Instances

Set ()

Approximates all sets as (), which is the universal set.

BoundedInt a => Set (Range a) 
(Set a, Set b) => Set (a, b)

Set product

(Set a, Set b) => Set (:> a b) 
Type a => Set (EdgeSize role a) 
(Set a, Set b, Set c) => Set (a, b, c)

Three-way product

(Set a, Set b, Set c, Set d) => Set (a, b, c, d)

Four-way product

unions :: Set a => [a] -> aSource

intersections :: Set a => [a] -> aSource

fixedPoint :: Set a => (a -> a) -> a -> aSource

Take the fixed point of a monotonic function. The second argument is an initial element. A sensible default for the initial element is empty.

indexedFixedPoint :: Set a => (Int -> a -> a) -> a -> (a, Int)Source

Much like fixedPoint but keeps track of the number of iterations in the fixed point iteration. Useful for defining widening operators.

type Widening a = (Int -> a -> a) -> Int -> a -> aSource

The type of widening operators. A widening operator modifies a function that is subject to fixed point analysis. A widening operator introduces approximations in order to guarantee (fast) termination of the fixed point analysis.

cutOffAt :: Set a => Int -> Widening aSource

A widening operator which defaults to universal when the number of iterations goes over the specified value.