So, I noticed something weird while using a library math.js: there is a function called usolve, that is supposed to find some solution of the equation $U\cdot x = b$, where $U$ is an upper-triangular matrix. This function requires $U$ to be square matrix.
I did a bit of googling and it looks like other math-tools such as scipy or matlab also require the matrix to be square for solving such an equation.
Question: why is it so?
For me it looks like you can just do some fixing by adding zeros here and there and make a square matrix out of $U$, so this requirement is just there to annoy people serves no purpose.
UPD: I am going to make an update to this question explaining in details how backsub-method would work for an upper-triangular matrix of any size... Any time now.
As far as I know, a triangular matrix is square to begin with under the most common definitions. The condition of triangularity can be relaxed: sometimes a non-square matrix $A=[a_{ij}]$ with $a_{ij}=0$ for $i>j$ is called upper trapezoidal: This is the common form of a matrix after row-reduction.
If $U$ is a (square) triangular matrix, in order that the system $Ux=b$ is solvable for any $b$, $U$ must be invertible, which can be checked by it having non-zero diagonal elements. The condition when $U$ is only upper trapezoidal is that every row has a pivot (that is, it has full row rank).
Inverting an invertible (square) triangular matrix is computationally easy, which is the reason why row-reduction is so important in applications of linear algebra.