Re: Experimental`ImpliesQ, Help me understand it.
- To: mathgroup at smc.vnet.net
 - Subject: [mg59247] Re: Experimental`ImpliesQ, Help me understand it.
 - From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
 - Date: Wed, 3 Aug 2005 01:19:51 -0400 (EDT)
 - Organization: The Open University, Milton Keynes, U.K.
 - References: <dcmu3r$gik$1@smc.vnet.net>
 - Sender: owner-wri-mathgroup at wolfram.com
 
Nasser Abbasi wrote:
>  
> Hello;
> 
> This 5.2 on windows.
> 
> Starting from the logic that If sin^2+cos^2==q, then this implies q 
> must be 1, so I typed:
> 
> ------------
> Remove["Global`*"]
> Experimental`ImpliesQ[Sin[x]^2 + Cos[x]^2 == q, q == 1]
> Experimental`ImpliesQ[FullSimplify[Sin[x]^2 + Cos[x]^2 == q], q == 1]
> 
> False
> 
> True
> 
> -------------
> From the help it says:
> 
> "ImpliesQ returns False if it cannot determine whether a implies a, 
> using any of its built-in transformation rules. "
> 
> So, my question is, why did I have to fully simplify sin^2+cos^2==q to 
> get True? I would think I should get True without it. As the help 
> seems to say it will try all the build-in transformation rules?
Hi Nasser,
The documentation does not say ?all the built-in replacement rules? but 
?any of *its* [the function *ImpliesQ*] built-in replacement rules?, 
which, I believe, make a huge difference :-) Especially keeping in mind 
that the function is located in a context called _Experimental_. So, if 
I were you, I would not expect too much of such a function, at least not 
without the help of a human brain and some Mathematica tweaking!
Now, since *FullSimplify* returns q == 1, *ImpliesQ* is able to say that 
the first expression implies the second one, which is the same indeed?
In[1]:=
FullSimplify[Sin[x]^2 + Cos[x]^2 == q]
Out[1]=
q == 1
In[2]:=
Experimental`ImpliesQ[FullSimplify[
    Sin[x]^2 + Cos[x]^2 == q], q == 1]
Out[2]=
True
Best regards,
/J.M.