# Internal API Reference

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

Warning

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.

## Functions

DomainSets.domain_toleranceMethod

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.

DomainSets.promote_map_domain_pairMethod
promote_map_domain_pair(map, domain)

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

## Types

DomainSets.AbstractIndicatorFunctionType

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.

DomainSets.AbstractMappedDomainType

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
DomainSets.DomainPointType

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).

DomainSets.FixedIntervalType

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

DomainSets.IsomorphicType
Isomorphic <: CanonicalType

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

DomainSets.LazyComposedMapType

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
DomainSets.LazyDomainType

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).