Ocaml_typing.Allowancetype left_only = allowed * disallowedtype right_only = disallowed * allowedArrange the permissions appropriately for a positive lattice, by doing nothing.
Arrange the permissions appropriately for a negative lattice, by swapping left and right.
module type Allow_disallow = sig ... endmodule Magic_allow_disallow
(X : Allow_disallow) :
Allow_disallow with type ('a, 'b, 'd) sided = ('a, 'b, 'd) X.sidedTakes a slow but type-correct Allow_disallow module and returns the magic version, which is faster. NOTE: for this to be sound, the functions in the original module must be identity functions (up to runtime representation).