Module Mavryk_benchmark_002_PtBoreas.Rules

type rule_set = {
  1. rule_patt : pattern;
  2. replacements : guarded_replacement list;
}
and guarded_replacement = {
  1. type_constraint : type_constraint;
  2. replacement : replacement list;
}
and type_constraint =
  1. | No_cnstrnt
  2. | Data_cnstrnt of {
    1. cnstrnt : Mavryk_benchmark_type_inference_002_PtBoreas.Type.Base.t;
    2. fresh : int list;
    }
  3. | Instr_cnstrnt of {
    1. cnstrnt : Mavryk_benchmark_type_inference_002_PtBoreas.Inference.transformer;
    2. fresh : var list;
    3. fresh_stack : int list;
    }
and pattern =
  1. | Pattern of Kernel.Patt.t
  2. | Root
and var =
  1. | Plain of int
  2. | Cmp of int
val add_fresh_variables : var list -> Mavryk_benchmark_type_inference_002_PtBoreas__Inference.michelson_type -> Mavryk_benchmark_type_inference_002_PtBoreas__Inference.michelson_type -> unit Mavryk_benchmark_type_inference_002_PtBoreas.Inference.M.t
val evaluate_guard : Mavryk_benchmark_type_inference_002_PtBoreas__Inference.state -> type_constraint -> Mavryk_benchmark_type_inference_002_PtBoreas.Mikhailsky.Path.t -> bool
val filter_matches : Mavryk_benchmark_type_inference_002_PtBoreas__Inference.state -> type_constraint -> Mavryk_benchmark_type_inference_002_PtBoreas.Mikhailsky.Path.t list -> Mavryk_benchmark_type_inference_002_PtBoreas.Mikhailsky.Path.t list
module Instruction : sig ... end