Select u1 u2 denotes to be either behavior of type u1 or type u2 after emitting a corresponding label 1 or 2.
Use of sel1 or sel2 on a channel changes its session type from Select u1 u2 into u1 or u2, respectively.

Bot is the type for a channel whose both endpoints are already engaged by two processes, so that no further processes can own that channel.
For example, in forkIO (send k e) >>> recv k, k has type Bot.

Rec m r denotes recursive session, where m represents the binder of recursion variable.
a type-level natural numer (like SZ). nesting level of Rec, and
r is the body of the recursion which may contain Var m.

Communication and concurrency primitives

Channel types

The channel type. The type-level number n points to the session-type in type environments. For example, in the type
Session t (Nil:>Send Int End) (Nil:>End) (),
the usage of the channel c :: Channel t Z is Send Int End in pretype and End in posttype.