Knowledge engineering mixed-integer linear programming: constraint typology