type Bool = class { declare unop ! Bool; declare binop &&(b Bool) Bool; declare binop ||(b Bool) Bool; }; type Int = class { declare unop + Int; declare unop - Int; declare binop ==(Int) Bool; declare binop !=(Int) Bool; declare binop >(Int) Bool; declare binop <(Int) Bool; declare binop >=(Int) Bool; declare binop <=(Int) Bool; declare binop +(Int) Int; declare binop -(Int) Int; declare binop *(Int) Int; declare binop /(Int) Int; declare binop %(Int) Int; declare factory (f Float); declare factory (); declare fn str() String; };