  Session Types offer a typing discipline that allows protocol specifications
to be used during type-checking, ensuring that implementations adhere to a
given specification. When looking to realise global session types in a
dependently typed language care must be taken that values introduced in the
description are used by roles that know about the value.
  We present Sessions, a Resource Dependent EDSL for describing global session
descriptions in the dependently typed language Idris. As we construct session
descriptions the values parameterising the EDSLs' type keeps track of roles and
messages they have encountered. We can use this knowledge to ensure that
message values are only used by those who know the value. Sessions supports
protocol descriptions that are computable, composable, higher-order, and
value-dependent. We demonstrate Sessions expressiveness by describing the TCP
Handshake, a multi-modal server providing echo and basic arithmetic operations,
and a Higher-Order protocol that supports an authentication interaction step.
