section
  parameter {A : Type*}

  parameter A

  -- definition id (a : A) := a

  parameter {A}

  definition id₂ (a : A) := a
end

#check @id
#check @id₂

section
  parameters {A : Type*} {B : Type*}

  definition foo1 (a : A) (b : B) := a

  parameters {A} (B)

  definition foo2 (a : A) (b : B) := a

  parameters (A) {B}

  definition foo3 (a : A) (b : B) := a

  parameters (A) (B)

  definition foo4 (a : A) (b : B) := a

  #check @foo1
  #check @foo2
  #check @foo3
  #check @foo4
end

#check @foo1
#check @foo2
#check @foo3
#check @foo4

section
  variables {A : Type*} {B : Type*}

  definition boo1 (a : A) (b : B) := a

  variables {A} (B)

  definition boo2 (a : A) (b : B) := a

  variables (A) {B}

  definition boo3 (a : A) (b : B) := a

  variables (A) (B)

  definition boo4 (a : A) (b : B) := a

  #check @boo1
  #check @boo2
  #check @boo3
  #check @boo4
end

section
  variables {A : Type*} {B : Type*}

  parameter (A) -- ERROR
  variable (C)  -- ERROR
  variables (C) (D) -- ERROR
  variables C -- ERROR

  definition id3 (a : A) := a

  parameter id3 -- ERROR

  parameter (C : Type)

  variables {C}  -- ERROR

end
