Re: Parametrized assumptions
- To: mathgroup at smc.vnet.net
- Subject: [mg107843] Re: Parametrized assumptions
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Sun, 28 Feb 2010 04:54:06 -0500 (EST)
- Reply-to: hanlonr at cox.net
Using TagSet
Clear[q]
q /: q[L_, 1]^2 = q[L, 0]^2 - 1;
q /: q[L_, 1] r[L_, 1] = q[L, 0] r[L, 0] - t[L];
q[w, 0]^2 - q[w, 1]^2
1
However, you will never have q[w, 1]^2
q[w, 1]^2
q[w, 0]^2 - 1
q[w, 0] r[w, 0] - q[w, 1] r[w, 1]
t[w]
Similarly, you will never have q[w, 1] r[w, 1]
q[w, 1] r[w, 1]
q[w, 0]*r[w, 0] - t[w]
Or using rules (with the same limitations)
Clear[q]
sub = {q[L_, 1]^2 :> q[L, 0]^2 - 1,
q[L_, 1] r[L_, 1] :> q[L, 0] r[L, 0] - t[L]};
q[w, 0]^2 - q[w, 1]^2 /. sub
1
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] /. sub
t[w]
Bob Hanlon
---- Torsten Schoenfeld <kaffeetisch at gmx.de> wrote:
=============
I'm having trouble using parametrized assumptions consistently. I have
two objects, q and r, both having a label and an index. Now, I want
that the following holds for any label L:
q[L, 0]^2 - q[L, 1]^2 == 1
q[L, 0] r[L, 0] - q[L, 1] r[L, 1] == t[L]
For the first condition, I find that the following works
Assuming[1 == HoldPattern[q[l_, 0]^2 - q[l_, 1]^2],
q[w, 0]^2 - q[w, 1]^2 // Simplify]
-> 1
The HoldPattern[] is, apparently, necessary, and it also needs to be
only on the right hand side. However, I can't find a way to realize the
second condition. My attempts include
Assuming[t[l_] == HoldPattern[q[l_, 0] r[l_, 0] - q[l_, 1] r[l_, 1]],
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] // Simplify]
Assuming[HoldPattern[t[l_] == q[l_, 0] r[l_, 0] - q[l_, 1] r[l_, 1]],
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] // Simplify]
Assuming[0 == HoldPattern[q[l_, 0] r[l_, 0] - q[l_, 1] r[l_, 1] - t[l_]],
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] // Simplify]
None of these work. I assume part of the problem is that I don't
understand why this doesn't work:
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] /.
HoldPattern[q[l_, 0] r[l_, 0] - q[l_, 1] r[l_, 1]] -> a
Whereas this works:
q[w, 0] r[w, 0] - q[w, 1] r[w, 1] /.
q[l_, 0] r[l_, 0] - q[l_, 1] r[l_, 1] -> a
So, how do I go about implementing these kinds of parametrized assumptions?