specifies that all occurrences of the symbols x, y, in expr should be replaced by x0, y0, .


  • With allows you to define local constants.
  • With replaces symbols in expr only when they do not occur as local variables inside scoping constructs.
  • You can use With[{vars},body/;cond] as the righthand side of a transformation rule with a condition attached.
  • With has attribute HoldAll.
  • With constructs can be nested in any way, with inner variables being renamed if necessary.
  • With is a scoping construct that implements readonly lexical variables.
Introduced in 1991