Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: extracting variables from an expression

  • To: mathgroup at
  • Subject: [mg44147] Re: [mg44111] extracting variables from an expression
  • From: Andrzej Kozlowski <akoz at>
  • Date: Fri, 24 Oct 2003 04:24:16 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

On Thursday, October 23, 2003, at 08:15 PM, Peter Schinko wrote:

> Hi,
> I'm looking for a function that extracts all variables from a boolean
> expression.
> For example:
> x || y || z
> should return something similar to {x, y, z}.
> Is there a similar function in Mathematica? If so, how does it work?
> Thanks very much
> Peter

There is no such built-in function (the function Variables returns the 
variables of a polynomial). However, it is not too hard to define such 
a function. There are a number of ways to do this. My preferred way 
makes use of two facts:

1. Every "variable" should be a "symbol"
2. Almost all built in symbols (which you do not want to use as 
variables) have the attribute "Protected". The exceptions, such as 
Derivative are unlikely to cause problems.

So the following definition should work in all reasonable situations:

Vars[expr_] := Cases[expr,
    _Symbol?( !MemberQ[Attributes[#1], Protected] & ),

expr =  !((x || y) && z);

{x, y, z}

Andrzej Kozlowski
Yokohama, Japan

  • Prev by Date: Re: NSolve and SplineFit
  • Next by Date: Re: Confused by levels in Outer
  • Previous by thread: Re: extracting variables from an expression
  • Next by thread: Re: extracting variables from an expression