# Restricting diffusion's state space

Many standard diffusions are defined only on a subset of $\RR^d$, and thus, it is often needed to restrict the state space on which trajectories can be sampled. We provide a set of structs that may be passed at the time of defining a diffusion law (calling the macro `@diffusion_process`

) to restrict the state space of the diffusion

`DiffusionDefinition.UnboundedStateSpace`

— Type`UnboundedStateSpace <: DiffusionStateSpace`

No restrictions imposed on the state-space of the process (i.e. ℝᵈ)

`DiffusionDefinition.LowerBoundedStateSpace`

— Type`LowerBoundedStateSpace{T,S,N} <: DiffusionStateSpace`

Lower bounds imposed on the state-space of a diffusion process. `T`

is used to list the indices that have lower-bound restrictions, `S`

indicates the values of the lower-bounds, `N`

is the total number of coordinates with lower-bound restrictions

`DiffusionDefinition.UpperBoundedStateSpace`

— Type`UpperBoundedStateSpace{T,S,N} <: DiffusionStateSpace`

Upper bounds imposed on the state-space of a diffusion process. `T`

is used to list the indices that have upper-bound restrictions, `S`

indicates the values of the upper-bounds, `N`

is the total number of coordinates with upper-bound restrictions

`DiffusionDefinition.BoundedStateSpace`

— Type`BoundedStateSpace{L,U} <: DiffusionStateSpace`

Upper and lower bounds imposed on the state-space of a diffusion process. `L`

corresponds to lower bounds, `U`

corresponds to upper bounds.