## Constraints

This page lists the built-in methods for applying constraints. In these methods, you can often pass in random variables as arguments e.g. `Variable<double>` instead of double. For compactness, this is not shown in the syntax below.

These methods provide a convenient short alternative to using `Variable.Constrain` and passing in the constraint method, as described on this page.

Constraint Syntax Description
True `Variable.ConstrainTrue(bool v)` Constrains the bool random variable `v` to be true.
False `Variable.ConstrainFalse(bool v)` Constrains the bool random variable `v` to be false.
Positivity `Variable.ConstrainPositive(double v)` Constrains the double random variable `v` to be strictly positive (i.e. such that `v>0`).
Between limits `Variable.ConstrainBetween(double x, double lowerBound, double upperBound)` Constrains the double random variable `x` to be between the specified limits, such that `lowerBound` <= `x` < `upperBound`.
Equality `Variable.ConstrainEqual<T>(T a, T b)` Constrains the random variables `a` and `b` to have equal values. The variables must have the same type T.
Stochastic equality `Variable.ConstrainEqualRandom<T,TDist>(T a, TDist b)` Constrains the random variable `a` to be equal to a sample from a distribution `b`. If a has type T, then `b` must be a distribution with domain type T.