# Bilinear Map vs Inner Product

What is the difference between a Bilinear Map and a Inner Product?

An inner product is a map from a vector space crossed with itself to $\mathbb{R}$ or $\mathbb{C}$. Also an inner product must be positive definite: $\langle x, x\rangle\geq 0$. A bilinear map, to contrast, is simply a map $A\times B\to C$ for linear spaces $A,B,C$ which is bilinear.

I think positive definiteness is the most important thing that inner products have that bilinear maps do not; in crypto, bilinear maps are typically of the form $G\times G\to G_T$ where $G, G_T$ are groups, neither of can even be totally ordered in a sensible way.

• Just to be explicit about something this answer doesn't state directly: A dot product is a special type of bilinear map; it has bilinearity plus the other properties listed here.
– Seth
Nov 21, 2014 at 18:13

bilinear map $$e$$ for two elements $$a,b \in \mathbb{Z}_p$$ encoded as $$g^a \in \mathbb{G}_1$$ and $$g^b \in \mathbb{G}_2$$:

$$e(g^a,g^b)=e(g,g)^{ab}$$

inner product for two $$i$$ dimensional vectors $$a,b$$:

$$\langle a,b\rangle=\sum{a_ib_i}$$

I also like to think about it like this:

If you have column vector, let's just say it's 3D, then the dual space, which is the space of all linear transforms into the scalars, is just the row vectors of the same dimension (3D). And then if you want to get a linear transform into two dimensions instead of just to the scalars, then you'd just add a row below the original row vector of your dual space. Now the space is the 2x3 matrices. And if you want to get all linear transforms into 3D space, then you add another row, and have a 3x3 matrix. Which is why all linear transforms from 3d to 3d are 3x3 matrices.

A similar thing happens with bilinear forms, but with a small twist. In order to be a bilinear map, your starting place for the dual space is not a row vector -- it is a matrix. So if you're working in 3d, and you want a bilinear form into the scalars, your first argument is a row vector, and the second argument is a column vector, and these go on either side of a 3x3 matrix. It's sort of like an inner product (an inner product would be the identity matrix). And now here's where the parallel keeps going: if you want to map into an additional dimension instead of just mapping to the scalars, in the above example, you add a row, but in a bilinear form, you add an additional dimension and put another 3x3 matrix stacked on the other one like two pieces of paper. I imagine it like a 3x3x2 matrix (tensor). And if you wanted to map into 3d, then you'd have a 3x3x3 matrix (tensor).

Cheers!