+-- >>> let m = fromList [[4,0],[0,2]] :: Mat2 Double
+-- >>> let b = vec2d (2, 1.5 :: Double)
+-- >>> forward_substitute m b
+-- ((0.5),(0.75))
+--
+forward_substitute :: forall a m. (Field.C a, Arity m)
+ => Mat m m a
+ -> Mat m N1 a
+ -> Mat m N1 a