       Re: Simplifying {0,0,0}.X.{0,0,0}

• To: mathgroup at smc.vnet.net
• Subject: [mg74062] Re: Simplifying {0,0,0}.X.{0,0,0}
• From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
• Date: Thu, 8 Mar 2007 04:36:07 -0500 (EST)
• References: <esjg5a\$26q\$1@smc.vnet.net> <45ED6EFF.9050603@gmail.com>

```Will Robertson wrote:
> Hello,
>
> In brief: Is there a way that I can specify that "X" is a matrix and
> will resolve to zero when dot multiplied with a vector of zeros?
>
> I'm constructing a swathe of expressions that contain things like
> (when expanded): {0,0,0}.X.{0,0,0}, where X is an arbitrary (well,
> positive definite) square matrix of obvious size, and I'd like to be
> able to have mathematica simplify that for me without much
> intervention.
>
> My only option at the moment is to manually perform the replacements
> {{0, 0, 0}.X._ -> 0, _.X.{0, 0, 0} -> 0} (the left and right vectors
> won't always both be zeros), but this is tedious to perform for a
> large number of expressions. I could also define the matrix X in terms
> of its indices and end up with expressions in terms of x11, x12, ... ,
> x33, but I'd rather not do that.

Hi Will,

If I have correctly understood your query, the following combination of
up-values to the symbol X and down-values to the Dot operator should do
what you are looking for.

In:=
X /: {(0)...} . X = 0;
X /: X . {(0)...} = 0;
Unprotect[Dot];
{___} . 0 = 0;
0 . {___} = 0;
Protect[Dot];
UpValues[X]
DownValues[Dot]
{0, 0} . X
X . {0, 0, 0}
{1, 2, 3, 4} . X . {0, 0, 0, 0}
{0, 0, 0, 0, 0} . X . {5, 6, 7, 8, 9}

Out=
{HoldPattern[{(0)...} . X] :> 0,

HoldPattern[X . {(0)...}] :> 0}

Out=
{HoldPattern[{___} . 0] :> 0,

HoldPattern[0 . {___}] :> 0}

Out=
0

Out=
0

Out=
0

Out=
0

Regards,
Jean-Marc

```

• Prev by Date: Re: Integrate
• Next by Date: Re: "Transparency" with respect to differentiation
• Previous by thread: Re: Simplifying {0,0,0}.X.{0,0,0}
• Next by thread: logical/set theoretic programming