blob: 57b079f6ec340f3076926184bd85c5ac23d3d112 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
type attribute = string
type attributes = BatSet.String.t
(** what asking a relation under a given set of bound attributes
affords. The answer is to whether anything satisfies the binding,
or the bindings of the attributes left free together with the
class of what is produced. *)
type affordance = Decides | Generates of Cardinality.t
type mode = {bound: attributes; affords: affordance}
type t
val attributes_of_list : attribute list -> attributes
val decides_when : attribute list -> mode
val generates_when : attribute list -> Cardinality.t -> mode
val enumerable : Cardinality.t -> mode
val empty : t
val declare : mode -> t -> t
val of_list : mode list -> t
val to_list : t -> mode list
(** the tightest class declared for generating under [bound]. A mode
declared for fewer bound attributes applies to more, since the
attributes left free are then fewer and no more numerous. *)
val generation : t -> attributes -> Cardinality.t option
val decision : t -> attributes -> bool
|