freshCopy
Returns a fresh copy of this object, that is, an instance of T which is equal to the current one in any aspect, except for variables directly or indirectly contained into this object, which are refreshed. This means the method could return this object itself, if no variable is present, or a new object with freshly generated variables.
Variables are refreshed consistently, meaning that, if more variables exists within this object having the same name, all fresh copies of such variables will have the same complete name.
Example: "f(X, g(X))".freshCopy() returns something like "f(X_1, g(X_1))" instead of "f(X_1, g(X_2))"
Notice that, if the current object is ground, the same object may be returned as a result by this method.
Return
a fresh copy of the current object which is different because variables are consistently renamed
Returns a fresh copy of this object, similarly to freshCopy(), possibly reusing variables from the provided scope, if any
Return
a fresh copy of the current object which is different because variables are consistently renamed
Parameters
the Scope containing variables to be used in copying