sig
  type 'a t = 'Syntax.term
  val equal : 'Syntax.term -> 'Syntax.term -> bool
  val compare : 'Syntax.term -> 'Syntax.term -> int
  val hash : 'Syntax.term -> int
  val pp :
    ?env:string Syntax.Env.t ->
    'Syntax.context -> Format.formatter -> 'Syntax.term -> unit
  val show :
    ?env:string Syntax.Env.t -> 'Syntax.context -> 'Syntax.term -> string
  val destruct :
    'Syntax.context ->
    'Syntax.term -> ('Syntax.term, 'a) Syntax.open_term
  val eval :
    'Syntax.context ->
    (('b, 'a) Syntax.open_term -> 'b) -> 'Syntax.term -> 'b
  val eval_partial :
    'Syntax.context ->
    (('b, 'a) Syntax.open_term -> 'b option) -> 'Syntax.term -> 'b option
end