Beta reduction via term-level substitution.
Beta reduction via term-level substitution.
Evaluate the given expression by rewriting it with the s strategy.
Evaluate the given expression by rewriting it with the s strategy.
Generate a fresh variable name.
Generate a fresh variable name. Prefix the name with an underscore to avoid the potential for clashes with user-level variables (which must start with a letter).
Counter used to generate fresh names.
Counter used to generate fresh names.
Reusable strategy for reduction with explicit term-level substitution.
Reusable strategy for reduction with explicit term-level substitution.
Merging two arbitrary parallel binders.
Merging two arbitrary parallel binders.
Lookup a binding for a name in a list of bindings.
Lookup a binding for a name in a list of bindings.
Whether this mechanism evaluates inside lambdas.
Whether this mechanism evaluates inside lambdas. Used for testing. Default: false.
Eagerly evaluate within the expression then try to reduce the expression itself, repeating until no change.
Eagerly evaluate within the expression then try to reduce the expression itself, repeating until no change.
Substitution in applications.
Substitution in applications.
Substitution in lambda abstractions.
Substitution in lambda abstractions.
Substitution in numeric terms.
Substitution in numeric terms.
Substitution in primitive operations
Substitution in primitive operations
Substitution in variable terms.
Substitution in variable terms.
Capture-free substitution of free occurrences of x in e1 with e2.
Capture-free substitution of free occurrences of x in e1 with e2.