sig
  type 'a id
  type 'a term
  val i : unit -> 'SECD.id
  val u : unit SECD.id
  val v : 'SECD.id -> 'SECD.term
  val p : '-> 'SECD.term
  val ( $ ) : ('-> 'b) SECD.term -> 'SECD.term -> 'SECD.term
  val fn : 'SECD.id -> 'SECD.term -> ('-> 'b) SECD.term
  val cond : bool SECD.term -> 'SECD.term -> 'SECD.term -> 'SECD.term
  val yc : (('-> 'b) -> '-> 'b) SECD.term -> ('-> 'b) SECD.term
  val cbv : 'SECD.term -> 'a
  val cbn : 'SECD.term -> 'a
end