text: As I understand it,
  given a:T …
  is just a way to define a value of type T which will be used as default value when a T is expected.
  def f(x:Int)(using y:T)
  is very similar in intent to
  def f(x:Int)(y:T=a)
  which is to provide a default value if none is provided at call site.
  And
  summon[T] designates this default value (
  a).
  I propose to use the word
  default instead.
  default T ... or
  default a:T ... replaces
  given a:T … to define a default value.
  def f(x:Int)(default y:T) replaces
  def f(x:Int)(using y:T) telling that a default T should be used if no value is given for y at call site.
  This could allow the following construct:
  def f(x:Int)(default y:T=b)
  meaning that if the compiler can’t find a
  default T at call site, it uses
  b.
  And
  default[T] replaces
  summon[T] to reference this default value.
  Less keywords, and a clarification of the intent, which is to provide a default value.