Can I specify the edge lengths of a simplicial polyhedron? Let $X$ be a convex polyhedron in $\mathbb{R}^3$ whose faces are all triangles, and let $\ell$ be a function which assigns a positive real number to each edge of $X$.
We say that $\ell$ is realizable if there exists a convex polyhedron isomorphic to $X$ whose corresponding edge lengths are given by $\ell$.
My question is:

Under what conditions will $\ell$ be realizable?

There are two obvious conditions that $\ell$ must satisfy:


*

*For each triangle $a,b,c$ of edges, the numbers $\ell(a),\ell(b),\ell(c)$ must satisfy the triangle inequality.

*If we compute the "angles" of each triangle using the law of cosines, then the sum of the angles at any vertex must be less than $2\pi$.
Are these conditions sufficient?  Or are there hidden obstructions to specifying the edge lengths of a simplicial polyhedron?
Note: I'm pretty sure the given conditions are sufficient in the case where $X$ is a tetrahedron (see the argument in my comment below), so the first case that I'm not sure about is the octahedron.
 A: Yes. According to Fedorchuk and Pak (see section 2.6), this is a theorem of Aleksandrov. Fedorchuk and Pak say

Until recently, [Aleksandrov's] work was somewhat overlooked in the West. Even now [2005] there is no published exposition of the proof in English. The interested reader should consult [Aleksandrov's book] or its German translation.

(Things in square brackets are my own insertions.) 
Aleksandrov's book was published in Russian in 1950 and translated into English in 2005 (confusingly, Fedorchuk and Pak cite the English translation, although they state that no English exposition is available). Skimming Chapter 4 suggests it has a proof. Aleksandrov gives several references to earlier papers but, unfortunately, Google Books has not included his bibliography!

There is an easier fact which proved in 1916 by Dehn, which is that your result is infinitesimally true. (Dehn, "Über die Strakheit knovexer Polyeder." Math. Ann. 77, 466-473, (1916). Does not appear to be available digitally.) Namely, fix $\Delta$ a combinatorial type of triangulated sphere, with $n$ vertices, so $3n-6$ edges. The set of all convex embeddings of $\Delta$ into $\mathbb{R}^3$ is an open subset of $\mathbb{R}^{3n}$; call it $\tilde{U}(\Delta)$. Taking the lengths of edges gives a smooth map $\ell: \tilde{U}(\Delta) \to \mathbb{R}^{3n-6}$. Dehn's theorem is that the Jacobian matrix of this map has rank $3n-6$, and thus, by the multivariate implicit function theorem, it is locally left-invertible.
A different aspect of this result is usually emphasized. Pick a vertex $v$, edge $e$ containing $v$ and face $f$ containing $e$ in $\Delta$. We can normalize our polytopes by assuming that $v$ is at $(0,0,0)$, the edge $e$ is parallel to the $x$-axis and the face $f$ is in the $(x,y,z)$ plane. Let $U(\Delta)$ be the subset of $\tilde{U}(\Delta)$ with this normalization. Then $\dim U(\Delta) = 3n-6$ (three dimensions of translation and three of rotation were normalized from $\tilde{U}(\Delta)$). So $\ell: U(\Delta) \to \mathbb{R}^{3n-6}$ is a map between spaces of the same dimension, and Dehn's theorem states that the Jacobian matrix of the map is invertible. People usually focus on the fact that this means that you can't "flex" $\Delta$: There is no infinitesimal motion of $\Delta$ which keeps all the edge lengths constant, other than translations and rotations.
For a short proof of Dehn's theorem, see Pak, A short proof of rigidity of convex polytopes.
