prelude
constant int : Type.{1}
constant nat : Type.{1}
namespace int
constant plus : int → int → int
end int

namespace nat
constant plus : nat → nat → nat
end nat

open int nat

constants a b : int


check plus a b

constant f : int → int → int
constant g : nat → nat → int
notation A `+`:65 B:65 := f A (g B B)
constant n : nat
check a + n