# When simplify() in octave's symbolic package seems to not work.

20 Jan 2023Suppose you are setting up some heinous expression and you want Octave to simplify it, and that doesn’t happen. Why?

The reason may be that there is not a number set (programming: type) specified for the symbolic variables. Here, `syms`

is used to declare the symbolic variables `a1`

, `a2`

, `a3`

, but there’s no number set. We can look at the assumptions for the variables in the workspace with `assumptions`

:

```
>> pkg load symbolic
>> syms a1 a2 a3
>> assumptions
ans = {}(0x0)
```

Okay, so `assumptions`

is empty; no number set type is specified for these variables.

We can see the list of all possible assumptions but adding the argument ‘possible’ to `assumptions`

:

```
>> assumptions('possible')
ans =
{
[1,1] = real
[1,2] = even
[1,3] = irrational
[1,4] = antihermitian
[1,5] = nonpositive
[1,6] = composite
[1,7] = negative
[1,8] = algebraic
[1,9] = hermitian
[1,10] = infinite
[1,11] = integer
[1,12] = imaginary
[1,13] = odd
[1,14] = nonzero
[1,15] = polar
[1,16] = commutative
[1,17] = positive
[1,18] = noninteger
[1,19] = zero
[1,20] = nonnegative
[1,21] = prime
[1,22] = complex
[1,23] = rational
[1,24] = finite
[1,25] = transcendental
}
>>
```

Wow, those are all the possible number sets! There’s a lot of them!

Ok, now to specify the number set type, after the variables list in `syms`

, add the type. I’m using `real`

.

```
>> syms b1 b2 b3 real
>> assumptions
ans =
{
[1,1] = b1: real
[1,2] = b2: real
[1,3] = b3: real
}
```

And then `assumptions`

returns that a number set is associated with these variables.