> 

This is Physics from today:
> 


(1.1) 
• 
Automatic simplification is here. At this point automaticsimplification is OFF by default.

> 


(1.2) 
Hence, for instance, if you input the following expression, the computer just echoes your input:
> 


(1.3) 
There is however some structure behind (1.3) and, in most situations, it is convenient to have these structures apparent, in part because they frequently provide hints on how to proceed ahead, but also because a more compact expression is, roughly speaking, simpler to understand. To see this automaticsimplification in action, turn it ON:
> 


(1.4) 
Recall this same expression (you could input it with the equation label (1.3) as well)
> 


(1.5) 
What happened: this output, as everything else after you set and with no exceptions, is now further processed with simplify/size before being returned. And enjoy computing with frankly shorter expressions all around! And no need anymore for "simplify(%, size)" every three or four input lines.
Another example, typical in computer algebra where expressions become uncomfortably large and difficult to read: convert the following input to 2D math input mode first, in order to compare what is being entered with the automatically simplified output on the screen
> 


(1.6) 
You can turn automaticsimplification OFF the same way
> 


(1.7) 
• 
New facility; welcome to the world of "extended assuming" :)

Consider a generic variable, x. Nothing is known about it
> 

x:
nothing known about this object


Each variable has associated a number that depends on the session, and the computer (internally) uses this number to refer to the variable.
> 


(1.8) 
When using the assume command to place assumptions on a variable, this number, associated to it, changes, for example:
> 

> 


(1.9) 
Indeed, the variable x got redefined and renamed, it is not anymore the variable x referenced in (1.8).
> 

Originally x, renamed x~:
is assumed to be: RealRange(Open(0),Open(1/2*Pi))


The semantics may seem confusing but that is what happened, you enter x and the computer thinks x~, not x anymore.This means two things:
1) all the equations/expressions, entered before placing the assumptions on x using assume, involve a variable x that is different than the one that exists after placing the assumptions, and so these previous expressions cannot be reused. They involve a different variable.
2) Also, because, after placing the assumptions using assume, x refers to a different object, programs that depend on the x that existed before placing the assumptions will not recognize the new x redefined by assume .
For example, if x was part of a coordinate system and the spacetime metric depends on it, the new variable x redefined within assume, being a different symbol, will not be recognized as part of the dependency of This posed constant obstacles to working with curved spacetimes that depend on parameters or on coordinates that have a restricted range. These problems are resolved entirely with this new Library:Assume, because it does not redefine the variables. It only places assumptions on them, and in this sense it works like assuming , not assume . As another example, all the Physics:Vectors commands look for the cartesian, cylindrical or spherical coordinates sets in order to determine how to proceed, but these variables disappear if you use assume to place assumptions on them. For that reason, only assuming was fully compatible with Physics, not assume.
To undo assumptions placed using the assume command one reassigns the variable x to itself:
> 


(1.10) 
Check the numerical address: it is again equal to (1.8)
> 


(1.11) 
·All these issues get resolved with the new Library:Assume, that uses all the implementation of the existing assume command but with a different approach: the variables being assumed do not get redefined, and hence: a) you can reuse expressions/equations entered before placing the assumptions, you can also undo the assumptions and reuse results obtained with assumptions. This is the concept of an extended assuming. Also, commands that depend on these assumed variables will all continue to work normally, before, during or after placing the assumption, because the variables do not get redefined.
Example:
> 

x:
nothing known about this object


So this simplification attempt accomplishes nothing
> 


(1.12) 
Let's assume now that
> 


(1.13) 
The new command echoes the internal format representing the assumption placed.
a) The address is still the same as (1.8)
> 


(1.14) 
So the variable did not get redefined. The system however knows about the assumption  all the machinery of the assume command is being used
> 

Originally x, renamed x:
is assumed to be: RealRange(Open(0),Open(1/2*Pi))


Note that the renaming is to the variable itself  i.e. no renaming.
Hence, expressions entered before placing assumptions can be reused. For example, for (1.12), we now have
> 


(1.15) 
To clear the assumptions on x, you can use either of Library:Assume(x=x) or Library:Assume(clear = {x, ...}) in the case of many variables being cleared in one go, or in the case of a single variable being cleared:
> 

> 

x:
nothing known about this object


The implementation includes the additionally functionality, for that purpose add the keyword additionally anywhere in the calling sequence. For example:
> 


(1.16) 
> 

Originally x, renamed x:
is assumed to be: RealRange(Open(0),infinity)


> 


(1.17) 
> 

In summary, the new Library:Assume command implements the concept of an extended assuming, that can be turned ON and OFF at will at any moment without changing the variables involved.
