Re: Not[OddQ] is not the same as EvenQ (sometimes)

*To*: mathgroup at smc.vnet.net*Subject*: [mg3954] Re: [mg3885] Not[OddQ] is not the same as EvenQ (sometimes)*From*: Allan Hayes <hay at haystack.demon.co.uk>*Date*: Sat, 11 May 1996 23:52:46 -0400*Sender*: owner-wri-mathgroup at wolfram.com

"Arnold Seiken" <SEIKENA at gar.union.edu> in [mg3885] Not[OddQ] is not the same as EvenQ (sometimes) writes >Position[{2,3,4,5,6,7}, x_?(EvenQ[#]&)] > {{1}, {3}, {5}} >Position[{2,3,4,5,6,7}, x_?(!OddQ[#]&)] > {{0}, {1}, {3}, {5}} >Therefore, for this example, the pattern x_?(EvenQ[#]&) is not >equivalent to the pattern x_?(!OddQ[#]&). The latter matches with >the head List of {2,3,4,5,6,7}, the former does not. >But >Position[{-2,3,4,-5,6,7}, x_?(NonNegative[#]&)] > {{2}, {3}, {5}, {6}} >Position[{-2,3,4,-5,6,7}, x_?(!Negative[#]&)] > {{2}, {3}, {5}, {6}} >shows that the Head List is sometimes ignored by Position. Finally >Position[{1,3,5}, x_?(!OddQ[#]&)] > {{0}} >Position[{2,3,4,5,6,7}, x_?(!NumberQ[#]&)] > {{0}, {}} >Position[{2,3,4,5,6,7}, x_?(!Positive[#]&)] > {} >seems to show that there are really three possible outcomes when >using Not in a pattern involving the Position command. This does not >occur for either the Count or Cases command where you get what you >expect to get. > >Count[{1,3,5,7}, x_?(EvenQ[#]&)] >0 >Count[{1,3,5,7}, x_?(!OddQ[#]&)] >0 >Any explanations? ******** Arnold: The differences that you notice are due, not to any arbitrary behaviour, but are because: (1)functions ending in Q, like EvenQ, OddQ, NumberQ... always return True or False, but NonNegative, Negative, Positive can return NoneNegative[x]... if Mma can't decide. (2) in default behaviour, Position looks at and inside heads and at all levels; but Cases and Count do not look at or inside heads and look only at level 1 : Examples re (2): Position[{7,{9}}[3,{5}], x_?OddQ] {{0, 1}, {0, 2, 1}, {1}, {2, 1}} Cases[{7,{9}}[3,{5}], x_?OddQ] {3} Count[{7,{9}}[3,{5}], x_?OddQ] 1 You can control the behaviour. For example Position[{7,{9}}[3,{5}], x_?OddQ,{2}] {{0, 1}, {2, 1}} Position[{7,{9}}[3,{5}], x_?OddQ,{2}, Heads -> False] {{2, 1}} Cases[{7,{9}}[3,{5}], x_?OddQ, {2}] {5} Cases[{7,{9}}[3,{5}], x_?OddQ, Heads ->True] {3} Allan Hayes hay at haystack.demon.co.uk ==== [MESSAGE SEPARATOR] ====