This module defines a class TermDomain
which collects operations
on an abstract domain approximating sets of data terms
to be used in program analyses.
Furthermore, it defines instances for a domain of top-level constructors
and domains of depth-bounded constructor terms.
data AType
An abstract term domain where terms are abstracted into their
top-level constructors.
AAny
represents any expression, and
ACons cs
a value rooted by some of the constructor cs
.
An invariant (ensured by the interface operations):
the constructors in the ACons
argument are always ordered.
Known instances:
data DType2
The DType
instance of TermDomain
for depth 2.
Known instances:
data DType5
The DType
instance of TermDomain
for depth 5.
Known instances:
litAsCons
:: Literal -> (String, String)
A literal l
is represented as a constructor ("",l)
.
class (Read a, Show a, Eq a, ReadWrite a) => TermDomain
a
The class TermDomain
contains operations necessary to implement
program analyses related to abstract domains approximating sets of
data terms.
The additional class contexts are required since abstract domains
have to be stored, read and compared for equality in fixpoint operations.
Methods:
Abstract representation of no possible value. |
Does an abstract type represent no value? |
Abstract representation of the type of all values. |
Does an abstract type represent any value? |
The representation of a constructor application to a list of abstract argument types. |
|
|
|
|