Internal API Reference

This is an exhaustive list of all non-exported modules, constants, types, functions and macros in DomainSets.jl.


Unexported functions and types are subject to change across different releases of the package, even if the release is said to be non-breaking. This overview is useful to better understand or to help develop the internals of DomainSets.




Combine the outputs of in of member domains into a single output of the lazy domain.


Return a suitable tolerance to use for verifying whether a point is close to a domain. Typically, the tolerance is close to the precision limit of the numeric type associated with the domain.

promote_map_domain_pair(map, domain)

Promote the map and the domain such that the output satisfies codomaintype(map) == domaineltype(domain).


Return the bounding box of the union of two or more bounding boxes.



Supertype of domains that are defined by an indicator function.

An indicator function is a function f : S -> [0,1] that indicates membership of x to a domain D with D ⊂ S. The indicator function corresponds exactly to the in function of a domain: f(x) = x ∈ D.

Concrete subtypes of AbstractIndicatorFunction store a representation of this indicator function and implement in using that representation, rather than implementing in directly.


A MappedDomain represents the mapping of a domain.

The map of a domain d under the mapping y=f(x) consists of all points f(x) with x ∈ d. The characteristic function of a mapped domain is defined in terms of the inverse map g = inverse(f):

x ∈ m ⟺ g(x) ∈ d

A Cube is a hyperrectangle with equal side lengths in each dimension.


A DomainPoint is a point which is an element of a domain by construction.

A domain point is just a point, not a domain. This is different from a Point type.

The type is a wrapper: retrieve the underlying point using point(p).


The abstract type FixedInterval is the supertype of intervals with endpoints determined by the type, rather than field values. Examples include UnitInterval and ChebyshevInterval.

Isomorphic <: CanonicalType

An isomorphic canonical domain is a domain that is the same up to an isomorphism.


Supertype of all compositions of a lazy domain. The composition determines how the point x is distributed to the member domains of a lazy domain.

Three compositions implemented in the package are:

  • NoComposedMap: the lazy domain encapsulates a single domain and x is passed
through unaltered
  • Combination: the lazy domain has several members and x is passed to the in
method of all members
  • Product: the lazy domain has several members and the components of x are
passed to the components of the lazy domain

A lazy domain evaluates its membership function on the fly in terms of that of other domains.

The in(x, domain::LazyDomain) applies three types of transformations:

  1. Point mapping: y = tointernalpoint(domain, x)
  2. Distribution of y over member domains given by components(domain)
  3. Combination of the outputs into a single boolean result.

The distribution step is determined by the result of composition(domain), see composition. The combination is performed by combine. Mapping between points of the lazy domain and points of its member domains is described by y = tointernalpoint(domain, x) and x = toexternalpoint(domain, y).

Parameterization <: CanonicalType

A parametric canonical domain can be parameterized from a simpler domain.


A simple lazy domain is defined in terms of a single domain.

It has no composition and no combination of its in function.


A WrappedDomain is a wrapper around an object that implements the domain interface, and that is itself a domain.