Assumptions on variables

### 3.3.8 Assumptions on variables

The assume (or supposons) command lets you tell Xcas some properties of a variable without giving the variable a specific value.

- assume (or supposons) takes one mandatory argument and one optional argument:
  - assumptions, statements about a variable (such as equalities and inequalities, possibly combined with and and or, and domains).
  - Optionally, additionally, which indicates that the assumptions are to be added to previous assumptions, as opposed to replace them.
- assume(assumptions ⟨,additionally ⟩) places the assumptions on the variable. With no second argument, it will remove any previous assumptions.

The additionally command can be used to place additional assumptions on a variable.

- additionally takes assumptions as above.
- additionally(assumptions) adds the assumptions to a variable without removing assumptions.

The about command will display the current assumptions about a variable. (See Section 28.1.8 and Section 28.2.6 for other uses of about.)

- about takes var, the name of a variable.
- about(var) returns the current assumptions on the variable.

The purge command will remove all values and assumptions about a variable.

- purge takes var, a variable name or a sequence of variable names.
- purge(var) removes any assumptions you have made about the variable var (or about all the variables in the sequence).

#### Examples

If you enter

assume(variable>0)

then Xcas will assume that variable is a positive real number, and so

abs(variable)

will be evaluated to

variable |  |  |  |  |  |  |  |  |  |

You can put one or more conditions in the assume command by combining them with and and or. For example, if you want the variable a to be in [2,4) ∪ (6,∞), you can enter

assume((a>=2 and a<4) or a>6)

If a variable has attached assumptions, then making another assumption with assume will remove the original assumptions. To add extra assumptions, you can either use the additionally command or give assume a second argument of additionally. If you assume that b > 0 with

assume(b>0)

and you want to add the condition that b < 1, you can either enter

assume(b<1,additionally)

or

additionally(b<1)

As well as equalities and inequalities, you can make assumptions about the domain of a variable. If you want n to represent an integer, for example, you can enter

assume(n,integer)

If you want n to be a positive integer, you can add the condition

additionally(n>0)

You can also assume a variable is in one of the domains real, integer, complex or rational (see Section 25.2.5).

You can check the assumptions on a variable with the about command. For the above positive integer n,

about(n)

[integer,[[0,+∞]],[0]] |  |  |  |  |  |  |  |  |  |

The first element tells you that n is an integer, the second element tells you that n is between 0 and +∞, and the third element tells you that the value 0 is excluded.

If you assume that a variable is equal to a specific value, such as

assume(c=2)

then by default the variable c will remain unevaluated in later levels. If you want an expression involving c to be evaluated, you would need to put the expression inside the evalf command (see Section 7.3.1). After the above assumption on c, if you enter

evalf(c^2+3)

then you will get

7.0 |  |  |  |  |  |  |  |  |  |

Right below the assume(c=2) command line there will be a slider; namely arrows pointing left and right with the value 2 between them. These can be used to change the values of c. If you click on the right arrow, the assume(c=2) command will transform to

assume(c=[2.2,-10.0,10.0,0.0])

and the value between the arrows will be 2.2. Also, any later levels where the variable c is evaluated will be re-evaluated with the value of c now 2.2. The output to

evalf(c^2+3)

will become

7.84 |  |  |  |  |  |  |  |  |  |

The -10.0 and 10.0 in the assume line represent the smallest and largest values that c can become using the sliders. You can set them yourself in the assume command, as well as the increment that the value will change; if you want c to start with the value 5 and vary between 2 and 8 in increments of 0.05, then you can enter

assume(c=[5,2,8,0.05])

Recall the purge command removes assumptions about a variable.

purge(a)

then a will no longer have any assumptions made about it.

purge(a,b)

then a and b will no longer have any assumptions made about them.