The cfg
type parameterise how the meta rewrite rules will act on dedukti
terms.
If meta_rules
is None
then there is no meta rewrite rule but the strong normal form of every term will be computed.
If meta-rules
is Some rules
then all the terms will be normalised according to this set of rewrite rules.
Beta-reduction can be deactivated by setting beta
to false
.
If encoding
is Some (module E)
then the term will be reified according the function E.encode_term
before being normalised.
If decoding
is false
then after normalising terms, the term won't be unreified.
If register_before
is set to false
, terms will be registered in the signatured only after being normalised and reified if applicable. This aims to be used for terms which are not well-typed before normalisation but are after normalisation. This can be used to implement macros for example.
The environment contains the internal representation of all the meta rewrite rules. This module maintains an invariant that the environment is consistent with the set of rewrite rules.