sig
type 'a k
val create_key : string -> 'a k
val eq_type : 'a k -> 'b k -> ('a, 'b) eq option
val print : 'a k Pretty_utils.formatter
val compare : 'a k -> 'b k -> int
val equal : 'a k -> 'b k -> bool
val hash : 'a k -> int
val tag : 'a k -> int
type 'a structure =
Void : 'a Structure.Shape.structure
| Leaf : 'a k -> 'a Structure.Shape.structure
| Node : 'a Structure.Shape.structure *
'b Structure.Shape.structure -> ('a * 'b) Structure.Shape.structure
end