Module Hygiene


module Hygiene: sig .. end

exception Exit_hygiene_violations

type rule =
| Implies_not of pattern * pattern
| Not of pattern
type pattern = suffix 
type suffix = string 

type penalty =
| Warn
| Fail

type law = {
   law_name : string;
   law_rules : rule list;
   law_penalty : penalty;
}
val list_collect : ('a -> 'b option) -> 'a list -> 'b list
val list_none_for_all : ('a -> 'b option) -> 'a list -> 'b option
val sf : ('a, unit, string) Pervasives.format -> 'a
module SS: My_std.Set.Make(My_std.String)
val check : ?sanitize:string ->
law list -> bool Slurp.entry -> (law * string list) list