package dedukti

  1. Overview
  2. Docs

Term reduction and conversion test.

val d_reduce : Basic.Debug.flag
type red_target =
  1. | Snf
  2. | Whnf
type red_strategy =
  1. | ByName
  2. | ByValue
  3. | ByStrongValue
type dtree_finder = Signature.t -> Basic.loc -> Basic.name -> Dtree.t
type red_cfg = {
  1. select : (Rule.rule_name -> bool) option;
  2. nb_steps : int option;
  3. target : red_target;
  4. strat : red_strategy;
  5. beta : bool;
  6. logger : Term.position -> Rule.rule_name -> Term.term Stdlib.Lazy.t -> Term.term Stdlib.Lazy.t -> unit;
  7. finder : dtree_finder;
}

Configuration for reduction. select = Some f restreins rules according to the given filter on names. select = None is the default behaviour (all rules allowed). nb_steps = Some n Allows only n reduction steps. nb_steps = None is the default behaviour. target is the normal form to compute. strat is the reduction strategy. beta flag enables/disables beta reductions. logger is the function to call upon applying a reduction rule. finder specifies where to find the decision tree.

val pp_red_cfg : red_cfg Basic.printer
val default_cfg : red_cfg

default configuration where:

  • select = None
  • nb_steps = None
  • strategy = ByName
  • target = Snf
  • beta = true
  • logger = fun _ _ _ -> ()
  • finder = Signature.get_dtree
val eta : bool Stdlib.ref

Set to true to allow eta expansion at conversion check

exception Not_convertible
type convertibility_test = Signature.t -> Term.term -> Term.term -> bool
val selection : (Rule.rule_name -> bool) option Stdlib.ref

This predicate restrict the rules which can be used by the rewrite engine. Default is None meaning that every rules in Signature are used

module type ConvChecker = sig ... end
module type S = sig ... end
module Default : S