variable T : Type
variable R : Type
variable t2r : T -> R
coercion t2r
variable g : R -> R -> R
variable a : T
print g a a
variable b : R
print g a b
print g b a
set::option lean::pp::coercion true
print g a a
print g a b
print g b a
set::option lean::pp::coercion false
variable S : Type
variable s : S
variable r : S
variable h : S -> S -> S
infixl 10 ++ : g
infixl 10 ++ : h
set::option lean::pp::notation false
print a ++ b ++ a
print r ++ s ++ r
check a ++ b ++ a
check r ++ s ++ r
set::option lean::pp::coercion true
print a ++ b ++ a
print r ++ s ++ r
set::option lean::pp::notation true
print a ++ b ++ a
print r ++ s ++ r
