definition foo.f {A : Type*} {B : Type*} (a : A) (b : B) : A := a

definition boo.f (a : nat) (b : nat) (c : nat) := a + b + c

definition bla.f (a b c d : bool) := a

open boo foo bla

set_option pp.full_names true

check f 0 1 2

check f 0 1 2 3

check f 0 1

check f tt 2

check f tt ff tt

check f tt ff

check @foo.f _ _ 0 1
