operations = ({
sin: new Operation({ name: "sin", id: 0, types: [T.float, T.float], body: x => Math.sin(x) }),
cos: new Operation({ name: "cos", id: 1, types: [T.float, T.float], body: x => Math.cos(x) }),
sqrt: new Operation({ name: "sqrt", id: 2, types: [T.float, T.float], body: x => Math.sqrt(x) }),
add: new Operation({ name: "add", id: 3, types: [T.nat, T.nat, T.nat], body: (x, y) => x + y }),
mul: new Operation({ name: "mul", id: 4, types: [T.nat, T.nat, T.nat], body: (x, y) => x * y }),
and: new Operation({ name: "and", id: 5, types: [T.bool, T.bool, T.bool], body: (x, y) => x && y }),
or: new Operation({ name: "or", id: 6, types: [T.bool, T.bool, T.bool], body: (x, y) => x || y }),
pi: new Operation({ name: "pi", id: 7, types: [T.float], body: () => Math.PI}),
})