variable f {A : Type} (a : A) {B : Type} : A -> B -> A
variable g {A B : Type} (a : A) {C : Type} : B -> C -> C
notation 100 _ ; _ ; _ : f
notation 100 _ ; _ ; _ : g
check 10 ; true ; false
check 10 ; 10 ; true
set_option pp::notation false
check 10 ; true ; false
check 10 ; 10 ; true
set_option pp::implicit true
check 10 ; true ; false
check 10 ; 10 ; true