Re: Inner Bug ?

• To: mathgroup at yoda.ncsa.uiuc.edu
• Subject: Re: Inner Bug ?
• From: John Pfeifer <pfeifer at alw.nih.gov>
• Date: Wed, 6 Mar 91 15:12:33 EST

```<Pekka Janhunen writes:>
>The expression
>
>     Inner[f,{x,y,z},{1,2,3},List]/.f->List	(1)
>
>evaluates to {{x, 1}, {y, 2}, {z, 3}} as expected.
>But the seemingly equivalent expression
>
>	Inner[List,{x,y,z},{1,2,3},List]	(2)
>
>evaluates to {{x, y, z}, {1, 2, 3}}

First off, they are not equivalent expressions:

In[1]:= FullForm[Literal[Inner[List,{x,y,z},{1,2,3},List]]]

Out[1]//FullForm= Literal[Inner[List, List[x, y, z], List[1, 2, 3], List]]

In[2]:= FullForm[Literal[Inner[f,{x,y,z},{1,2,3},List] /. f->List]]

Out[2]//FullForm=

Literal[ReplaceAll[Inner[f, List[x, y, z], List[1, 2, 3], List],

Rule[f, List]]]

and so, in the second, the replace doesn't occur until _after_ the inner
product is computed.

An expression equivalent to (1) is:
Release[Hold[Inner[List,{x,y,z},{1,2,3},List]] /. f->List]

Upon further exploration it seems part of the difficulty is with your two
original lists having the head List and the first List:
In[3]:=  Inner[List, Multipy[x, y, z], Multiply[1, 2, 3],List]

Out[3]= {{x, 1}, {y, 2}, {z, 3}}

In[4]:=  Inner[List, List[x, y, z], List[1, 2, 3],g]

Out[4]= {g[x, y, z], g[1, 2, 3]}

Why?  I don't know.

#include <stdsig.h>

John Pfeifer                    internet: pfeifer at alw.nih.gov

"The most creaative and holy of men are always quite mad.
It is simply a social thing as to wether one is sane or