package lambdapi
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=d01e5f13db2eaba6e4fe330667149e0059d4886c651ff9d6b672db2dfc9765ed
sha512=33b68c972aca37985ed73c527076198e7d4961c7e27c89cdabfe4d1cff97cd41ccfb85ae9499eb98ad9a0aefd920bc55555df6393fc441ac2429e4d99cddafa8
doc/lambdapi.export/Export/Hrs/index.html
Module Export.Hrs
Source
This module provides a function to translate a signature to the HRS format used in the confluence competition.
- Lambdapi terms are translated to the following HRS term algebra with a unique type t:
A : t -> t -> t // for application
L : t -> (t -> t) -> t // for λ
B : t -> t -> (t -> t) -> t // for let
P : t -> (t -> t) -> t // for Π
Function symbols and variables are translated as symbols of type t.
Pattern variables of arity n are translated as variables of type t -> ... -> t with n times ->.
- In the hrs format, variable names must be distinct from function symbol names. So bound variables are translated into positive integers and pattern variables are prefixed by
"$"
.
- There is no clash between function symbol names and A, B, L, P because function symbol names are fully qualified.
- Function symbol names are fully qualified but
"."
is replaced by"_"
because"."
cannot be used in identifiers ("."
is used in lambda abstractions).
- Two occurrences of the same pattern variable name may have two different arities (in two different rules). So pattern variable names are prefixed by the rule number.
TO DO:
- HRS does not accept unicode characters.
- Optim: output only the symbols used in the rules.
syms
maps every symbol to a name.
bvars
is the set of abstracted variables.
sym_name s
translates the symbol name of s
.
add_sym
declares a Lambdapi symbol.
sym ppf s
translates the Lambdapi symbol s
.
add_bvar v
declares an abstracted Lambdapi variable.
bvar v
translates the Lambdapi variable v
.
pvar i
translates the pattern variable index i
.
add_pvar i k
declares a pvar of index i
and arity k
.
term ppf t
translates the term t
.
rule ppf r
translates the pair of terms r
as a rule.
sym_rule ppf s r
increases the number of rules and translates the sym_rule r
.
Translate the rules of symbol s
.
Translate the rules of a dependency except if it is a ghost signature.
sign ppf s
translates the Lambdapi signature s
.