TypeScope res = new TypeScope();
res.define("-/1", Type.Function(Type.INT, Type.INT));
res.define("not", Type.Function(Type.BOOL, Type.BOOL));
res.define("+", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.INT));
res.define("-", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.INT));
res.define("*", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.INT));
res.define("/", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.INT));
res.define("%", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.INT));
res.define(">", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.BOOL));
res.define("<", Type.Function(Arrays.asList(Type.INT, Type.INT), Type.BOOL));