(index ("subst?" 0) ("subst-empty" 151) ("subst-empty?" 269) ("subst-includes?" 438) ("subst-lookup" 642) ("subst-extend" 834) ("subst-remove" 1047) ("subst-map" 1266) ("subst-driver" 1587))
(def (sig (procedure "subst?:: OBJECT -> BOOL" (id subst?))) (p "A predicate that returns true if the given argument is a substitution environment."))
(def (sig (procedure "subst-empty:: () -> SUBST" (id subst-empty))) (p "Returns an empty substitution environment."))
(def (sig (procedure "subst-empty?:: SUBST -> BOOL" (id subst-empty?))) (p "Returns true if the given argument is an empty substitution environment, false otherwise."))
(def (sig (procedure "subst-includes?:: K * SUBST -> BOOL" (id subst-includes?))) (p "Returns true if the given symbol " (tt "K") " is contained in the given substitution environment, false otherwise."))
(def (sig (procedure "subst-lookup:: K * SUBST -> TERM" (id subst-lookup))) (p "Looks up symbol " (tt "K") " in the given substitution environment, and returns the term associated with it."))
(def (sig (procedure "subst-extend:: K * V * SUBST -> SUBST" (id subst-extend))) (p "Adds the binding " (tt "K * V") " to the given substitution environment, and returns the resulting substitution environment."))
(def (sig (procedure "subst-remove:: K * SUBST -> SUBST" (id subst-remove))) (p "Removes all bindings with key " (tt "K") " from the given substitution environment and returns the resulting substitution environment."))
(def (sig (procedure "subst-map:: PROC * SUBST -> SUBST" (id subst-map))) (p "For each binding " (tt "K * V") " in the given substitution environment, applies procedure " (tt "PROC") " to " (tt "V") " and adds the new binding " (tt "K * (PROC V)") " to the environment. Returns the resulting substitution environment."))
(def (sig (procedure "subst-driver:: VAR? * BIND? * VAR-PROC * BIND-PROC * SUBST-PROC [* PREFIX] -> (LAMBDA T SUBST)" (id subst-driver))) (p "Generalized substitution procedure. Predicates " (tt "VAR?") " and " (tt "BIND?") " are used to determine if a given term is a variable or a binding, respectively. Procedure " (tt "VAR-PROC") " takes a symbol and creates a variable term. Procedure " (tt "SUBST-PROC") " substitues variables in the terms of the user-defined language. Optional variable " (tt "PREFIX") " specifies the prefix for fresh variable names."))
