       RE: Matching Or expressions

• To: mathgroup at smc.vnet.net
• Subject: [mg72275] RE: [mg72250] Matching Or expressions
• From: "David Park" <djmp at earthlink.net>
• Date: Sun, 17 Dec 2006 06:20:37 -0500 (EST)

```Johan,

The short answer is that you want to use HoldPattern[Or[_]].

MatchQ[And[p, q], HoldPattern[Or[_]]]
False

The reason is that MatchQ evaluates its arguments.

Or[x]
x              and

Or[_]
_		   which is a pattern that will match anything!

David Park

From: Johan Grönqvist [mailto:johan.gronqvist at gmail.com]

The context of my problem is explained below.

I wish to distinguish expressions of the form And[p,q] from those of the
form Or[p,q], but the only thing I find is
MatchQ[myExpr, Or[_]]
and to my surprise I see that MatchQ[And[p,q],Or[_]] is True. Thus I can
not use this to match only the Or-expressions.

Thanks

Johan

The context is as follows:

I wish to find the number of solutions to a  diophantine equation with a
finite number of solutions.

I do the following
sols = Reduce[eqns, vars, Integers]
and this gives me an expression that normally looks like Or[_,_,_] if
there are several solutions, or something else if there are not.

Now I wish to find the number of solutions using
Which[MatchQ[sols, Or[_]], Length[sols], DoOtherStuff]

The problem is that the MatchQ[ expr, Or[_] ] also matches e.g. (x==2 &&
y==4), which is only one solution.

```

• Prev by Date: Re: Complex Numbers to list of points
• Next by Date: Re: Matching Or expressions
• Previous by thread: Re: Matching Or expressions
• Next by thread: Re: Matching Or expressions