The signature S abstracts on a type 'a t, where the t can be the type of transient or restartable generators. Some functions specify explicitely that they use 'a gen (transient generators).
'a t
t
'a gen
type 'a gen
= unit ‑> 'a option
module type S : sig ... end