Datalog.Schema
module type S = sig ... end
module Cons (C : Column.S) (S : S) : S with type keys = C.t -> S.keys and type t = S.t C.Map.t and type value = S.value
module type Relation = S with type value = unit
module Relation1 (C : Column.S) : Relation with type keys = C.t -> nil and type t = unit C.Map.t
module Relation2 (C1 : Column.S) (C2 : Column.S) : Relation with type keys = C1.t -> Relation1(C2).keys and type t = Relation1(C2).t C1.Map.t
module Relation3 (C1 : Column.S) (C2 : Column.S) (C3 : Column.S) : Relation with type keys = C1.t -> Relation2(C2)(C3).keys and type t = Relation2(C2)(C3).t C1.Map.t
module Relation4 (C1 : Column.S) (C2 : Column.S) (C3 : Column.S) (C4 : Column.S) : Relation with type keys = C1.t -> Relation3(C2)(C3)(C4).keys and type t = Relation3(C2)(C3)(C4).t C1.Map.t