module Features: sig .. end
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 : t
For writing specifications
val full : t
Every feature is on
val update : key ->
value -> t -> t
update k v t sets the key k to v in t. This is useful to
specify how a specification changed
val update_l : (key * value) list ->
t -> t
val of_list : (key * value) list ->
t
type check_res =
val check : t ->
spec:t -> check_res
check t ~spec returns Check_ok if all features required by spec are
valid in t, and Check_fail (key, expected, actual) otherwise
val print : t Transform.printer