/*** This module provides symbolic substitution. The substitution* operator subst/3 takes an original reduced expression, a replacement* variable and a replacement expression. It will re-execute the* constructors in the original reduced expression and replace every* occurrence of the replacement variable by the replacement expression.** Example:* ?- X is A^2-B*A+B^2, Y is subst(X,A,2).* X is A^2-A*B+B^2,* Y is 4-2*B+B^2** Since the constructors of the original expression are re-executed* the substitution operator might cause new partial evaluations or* simplifications. At the moment we provide substitution only for* elements, substitution for vectors and matrices has not yet been* implemented. Accordingly we do not yet support some special functions.** Warranty & Liability* To the extent permitted by applicable law and unless explicitly* otherwise agreed upon, XLOG Technologies GmbH makes no warranties* regarding the provided information. XLOG Technologies GmbH assumes* no liability that any problems might be solved with the information* provided by XLOG Technologies GmbH.** Rights & License* All industrial property rights regarding the information - copyright* and patent rights in particular - are the sole property of XLOG* Technologies GmbH. If the company was not the originator of some* excerpts, XLOG Technologies GmbH has at least obtained the right to* reproduce, change and translate the information.** Reproduction is restricted to the whole unaltered document. Reproduction* of the information is only allowed for non-commercial uses. Selling,* giving away or letting of the execution of the library is prohibited.* The library can be distributed as part of your applications and libraries* for execution provided this comment remains unchanged.** Restrictions* Only to be distributed with programs that add significant and primary* functionality to the library. Not to be distributed with additional* software intended to replace any components of the library.** Trademarks* Jekejeke is a registered trademark of XLOG Technologies GmbH.*//*********************************************************************//* Substitution *//*********************************************************************/* subst(P, X, R, Q):* The predicate succeeds in Q with the substitution P[X/R].*/% ordered:subst(+Ordered, +Variable, +Internal, -Ordered)* subst(P, X, R, Q):* The predicate succeeds in Q with the substitution P[X/R].*/% variable:subst(+Variable, +Variable, +Internal, -Internal)S = R.* subst(P, X, R, Q):* The predicate succeeds in Q with the substitution P[X/R].*/% polynom:subst(+Polynom, +Variable, +Internal, -Internal)* subst(P, X, R, Q):* The predicate succeeds in Q with the substitution P[X/R].*/% fraction:subst(+Polynom, +Variable, +Internal, -Internal)