Solution (source code)

= Solution

Nondegeneracy of $b$ means both radicals are zero: if $b(x,y)=0$ for every $y$, then $x=0$, and the analogous implication holds in the other variable. Define <linear maps> $B_U:U\to V^*$ and $B_V:V\to U^*$ by $B_U(x)(y)=b(x,y)$ and $B_V(y)(x)=b(x,y)$. Both are injective. Finite dimensionality gives $\dim U\leq\dim V$ and $\dim V\leq\dim U$, so they are <isomorphisms>.

Similarly define $C_U(x)(y)=c(x,y)$ and $C_V(y)(x)=c(x,y)$, which are linear by bilinearity. Set
$$
\boxed{S=B_U^{-1}C_U,\qquad T=B_V^{-1}C_V.}
$$
Then $S$ and $T$ are <linear endomorphisms> of $U$ and $V$, respectively, and their definitions give $b(Sx,y)=c(x,y)=b(x,Ty)$ for every pair. These <dual isomorphisms induced by a nondegenerate pairing> also prove uniqueness. No symmetry of $b$, and no identification of the two vector spaces, is required.