sig
  type t
  type value =
      Present
    | Absent
    | Mono
    | Poly
    | Eqn_single
    | Eqn_nested
    | Eqn_app
  type key =
      Ty
    | Eqn
    | If_then_else
    | Ind_preds
    | Match
    | Data
    | Codata
    | Fun
    | HOF
    | Prop_args
    | Copy
  val empty : Transform.Features.t
  val full : Transform.Features.t
  val update :
    Transform.Features.key ->
    Transform.Features.value -> Transform.Features.t -> Transform.Features.t
  val update_l :
    (Transform.Features.key * Transform.Features.value) list ->
    Transform.Features.t -> Transform.Features.t
  val of_list :
    (Transform.Features.key * Transform.Features.value) list ->
    Transform.Features.t
  type check_res =
      Check_ok
    | Check_fail of Transform.Features.key * Transform.Features.value *
        Transform.Features.value
  val check :
    Transform.Features.t ->
    spec:Transform.Features.t -> Transform.Features.check_res
  val print : Transform.Features.t Transform.printer
end