Documentation

# `assuming`, `_assuming`

Set temporary assumption

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

## Syntax

````calculation` assuming `condition`
`calculation` assuming (`expr`, `set`)
_assuming(`calculation`, `condition`)
_assuming(`calculation`, (`expr`, `set`))
```

## Description

`calculation assuming condition` evaluates `calculation` under the assumption that `condition` is true for that calculation.

`calculation assuming(expr, set)` temporarily attaches the property `set` to the identifier or expression `expr` and evaluates `calculation`. This call ignores all previous assumptions containing identifiers used in `expr`.

`calculation assuming condition` is equivalent to `_assuming(calculation, condition)`.

`calculation assuming (expr, set)` is equivalent to `_assuming(calculation, (expr, set))`.

`assuming` sets temporary assumptions. Temporary assumptions hold true only while the argument `calculation` is evaluated. After this evaluation, MuPAD® removes these assumptions. Therefore, they do not affect further computations. MuPAD also removes temporary assumptions if the evaluation stops with an error.

`assuming` temporarily overwrites existing assumptions. If you have permanent assumptions, MuPAD ignores them while evaluating `calculation`. Instead, it uses temporary assumptions set by `assuming`.

If assumptions contain linear equations with one variable, `assuming` solves these equations. Then the command inserts the solutions into `calculation` and evaluates the result. See Example 6.

If `expr` is a list, vector, or matrix, use the syntaxes `calculation assuming(expr, set)` and ```_assuming(calculation, (expr, set))```. Here, `set` is specified as one of `C_`, `R_`, `Q_`, `Z_`, `N_`, or an expression constructed with the set operations, such as `union`, `intersect`, or `minus`. `set` also can be a function of the `Type` library, for example, `Type::Real`, `Type::Integer`, `Type::PosInt`, and so on.

Do not use the syntaxes ```calculation assuming (expr in set)``` (or its equivalent ```_assuming(calculation, expr in set)```) and `calculation assuming condition` (or its equivalent `_assuming(calculation, condition)`) for nonscalar `expr`.

## Examples

### Example 1

Find the sign of the expression `x^2 + 1` assuming that the identifier `x` represents a real number:

`sign(x^2+1) assuming (x, Type::Real)`
` `

### Example 2

Simplify this sine function assuming that `n` is an integer:

`simplify(sin(n*PI)) assuming n in Z_`
` `

### Example 3

Additional assumptions let you simplify some expressions. For example, compute the right limit of xp:

`limit(x^p, x = 0, Right)`
` `

Compute the right limit of the same expression for negative, positive, and zero values of `p`:

`limit(x^p, x = 0, Right) assuming p < 0`
` `
`limit(x^p, x = 0, Right) assuming p > 0`
` `
`limit(x^p, x = 0, Right) assuming p = 0`
` `

### Example 4

Assumptions set by `assuming` are temporary. They do not affect any previous or future computations:

```getprop(a); getprop(a) assuming a > 0; getprop(a)```
` `
` `
` `

### Example 5

If you already use a permanent assumption and want to add a temporary assumption on the same object, do not use `assuming`. It temporarily overwrites the permanent assumption:

```assume(x in Z_): solve(x^3 - (44*x^2)/3 + (148*x)/3 - 80/3 = 0, x) assuming x < 5```
` `

Instead, use `assumingAlso`:

`solve(x^3 - (44*x^2)/3 + (148*x)/3 - 80/3 = 0, x) assumingAlso x < 5`
` `

### Example 6

If assumptions contain linear equations with one variable, `assuming` solves the equations, inserts the solutions into the expression, and then evaluates the expression:

`a^2 + 1 assuming a - 2 = 1;`
` `

`assume` and `assumeAlso` do not solve equations:

```assume(a - 2 = 1) ; a^2 + 1```
` `

## Parameters

 `calculation` Any MuPAD command or expression that you want to evaluate under the temporary assumption. `condition` Equality, inequality, element of relation, or Boolean combination (with the operators `and` or `or`). `expr` Identifier, mathematical expression, list, vector, or matrix containing identifiers. If `expr` is a list, vector, or matrix, then only the syntaxes `calculation assuming(expr, set)` and ```_assuming(calculation, (expr, set))``` are valid. `set` Property representing a set of numbers or a set returned by `solve`. For example, this set can be an element of `Dom::Interval`, `Dom::ImageSet`, `piecewise`, or one of `C_`, `R_`, `Q_`, `Z_`, `N_`. It also can be an expression constructed with the set operations, such as `union`, `intersect` or `minus`. For more examples, see Properties.

## Return Values

`assuming` returns the result of evaluating `calculation`.

#### Mathematical Modeling with Symbolic Math Toolbox

Get examples and videos