Add extra rule.
Split off translation between `TypeCheck.AST` and `TypeCheck.Numeric.AST`
Make general substitutions, and move code into AST module.