Kernel.SignatureSourceGlobal Environment
type signature_error = | UnmarshalBadVersionNumber of Basic.loc * file| UnmarshalSysError of Basic.loc * file * string| UnmarshalUnknown of Basic.loc * file| SymbolNotFound of Basic.loc * Basic.name| AlreadyDefinedSymbol of Basic.loc * Basic.name| CannotMakeRuleInfos of Rule.rule_error| CannotBuildDtree of Dtree.dtree_error| CannotAddRewriteRules of Basic.loc * Basic.name| ConfluenceErrorImport of Basic.loc * Basic.mident * Confluence.confluence_error| ConfluenceErrorRules of Basic.loc
* Rule.rule_infos list
* Confluence.confluence_error| GuardNotSatisfied of Basic.loc * Term.term * Term.term| CannotExportModule of Basic.mident * exn| PrivateSymbol of Basic.loc * Basic.name| ExpectedACUSymbol of Basic.loc * Basic.nameWrapper exception for errors occuring while handling a signature.
type staticity = | Static| Definable of Term.algebra| InjectiveIs the symbol allowed to have rewrite rules or not ? And if it has, can it be considered injective by the type-checker ?
*)A collection of well-typed symbols and rewrite rules.
make file creates a new signature corresponding to the file file.
get_name sg returns the name of the signature sg.
export sg oc saves the current environment in oc file.
import sg sg_ext imports the signature sg_ext into the signature sg.
is_static sg l cst is true when cst is a static symbol.
is_injective sg l cst is true when cst is either static or declared as injective.
get_type sg l md id returns the type of the constant md.id inside the environement sg.
get_staticity sg l md id returns the staticity of the symbol md.id
get_algebra sg l md id returns the algebra of the symbol md.id.
get_neutral sg l md id returns the neutral element of the ACU symbol md.id.
is_AC sg l na returns true when na is declared as AC symbol
import sg md the module md in the signature sg.
get_dtree sg filter l cst returns the decision/matching tree associated with cst inside the environment sg.
get_rules sg lc cst returns a list of rules that defines the symbol.
val add_external_declaration :
t ->
Basic.loc ->
Basic.name ->
scope ->
staticity ->
Term.term ->
unitadd_external_declaration sg l cst sc st ty declares the symbol id of type ty, scope sc and staticity st in the environment sg.
val add_declaration :
t ->
Basic.loc ->
Basic.ident ->
scope ->
staticity ->
Term.term ->
unitadd_declaration sg l id sc st ty declares the symbol id of type ty and staticity st in the environment sg. If sc is Private then the symbol cannot be used in other modules
add_rules sg rule_lst adds a list of rule to a symbol in the environement sg. All rules must be on the same symbol.
type rw_infos = {stat : staticity;Whether a symbol is definable
*)ty : Term.term;The type of a symbol
*)scope : scope;The scope of the symbol (Public/Private)
rules : Rule.rule_infos list;The stack pile of rules associated to a symbol. They are imported in the signature in the order by they are declared within the file
*)decision_tree : Dtree.t option;The decision tree computed for the set of rules declared above
*)}fold_symbols f sg t folds the function f on all symbol_infos in the signature starting from t.
iter_symbols f sg iters the function f on all symbol_infos in the signature.