sig   type transform = Uppercase | Lowercase | Capitalize | Uncapitalize   val transform_of_string : string -> Carcass.Pat.transform option   val transform_to_string : Carcass.Pat.transform -> string   val pp_transform : Carcass.Pat.transform Fmt.t   type lexeme = Lit of string | Var of string * Carcass.Pat.transform option   type t = (Carcass.Pat.lexeme * Carcass.Loc.t) list * Carcass.Loc.t   val empty : Carcass.Pat.t   val dom : Carcass.Pat.t -> Astring.String.set   val equal : Carcass.Pat.t -> Carcass.Pat.t -> bool   val compare : Carcass.Pat.t -> Carcass.Pat.t -> int   val to_string : ?flesh:bool -> Carcass.Pat.t -> string   val of_input :     ?flesh:bool ->     src:Carcass.Loc.src ->     [ `Channel of Pervasives.in_channel | `String of string ] ->     (Carcass.Pat.t, [> Carcass.Error.parse ]) Result.result   val pp : ?flesh:bool -> Carcass.Pat.t Fmt.t   val subst : (string -> string option) -> Carcass.Pat.t -> Carcass.Pat.t   type env   val env :     ?undef:(string ->             (Carcass.Pat.t, Carcass.Error.parse) Rresult.result option) ->     Carcass.Pat.t Astring.String.map -> Carcass.Pat.env   val env_var_value :     Carcass.Pat.env ->     string ->     (string * Carcass.Loc.t, [> Carcass.Error.eval ]) Rresult.result option   val eval :     Carcass.Pat.env ->     Carcass.Pat.t ->     (string * Carcass.Loc.t, [> Carcass.Error.eval ]) Rresult.result   val query :     ?init:string Astring.String.map ->     Carcass.Pat.t -> string -> string Astring.String.map option end