package scratch
- Alphabetic
- Public
- Protected
This is work towards automated theorem proving based on learning, using homotopy type theory (HoTT) as foundations and natural language processing.
This is work towards automated theorem proving based on learning, using homotopy type theory (HoTT) as foundations and natural language processing.
The implementation of homotopy type theory is split into:
The learning package has the code for learning.
Scala code, including the
library, is integrated with homotopy type theory
in the scalahott packagespire
We have implemented a functor based approach to translation in the translation
package, used for
as well as nlp
and serialization
.parsing
The library package is contains basic structures implemented in HoTT.
Much of the richness of HoTT is in the definitions of
(and their indexed counterparts)
and of (dependent) functions on these by recursion and induction
These are implemented using several layers of recursive definitions and diagonals (i.e., fixed points).Inductive types
Much of the richness of HoTT is in the definitions of
(and their indexed counterparts)
and of (dependent) functions on these by recursion and induction
These are implemented using several layers of recursive definitions and diagonals (i.e., fixed points). In HoTT,
recursion and induction are applications of (dependent) functions Inductive types
rec_W,X
and ind_W, Xs
to the
.definition data
It is useful to capture information regarding inductive types and the recursion and induction functions in scala types. Our implementation is designed to do this.
Inductive types are specified by introduction rules. Each introduction rule is specified in ConstructorShape (without specifying the type) and ConstructorTL including the specific type. The full definition is in ConstructorSeqTL.
These are defined recursively, first for each introduction rule and then for the inductive type as a whole. A subtlety is that the
scala type of the rec_W,X
and induc_W, Xs
functions depends on the scala type of the codomain X
(or family Xs
).
To make these types visible, some type level calculations using implicits are done, giving traits ConstructorPatternMap
and ConstructorSeqMap that have recursive definition of the recursion and induction functions, the former for the case of a
single introduction rule. Traits ConstructorSeqMapper and ConstructorPatternMapper provide the lifts.
There are indexed versions of all these definitions, to work with indexed inductive type families.
Translation primarily using a functorial framework - see Translator$, for natural language processing as well as serialization, formatted output, parsing, interface with formal languages etc.
Translation primarily using a functorial framework - see Translator$, for natural language processing as well as serialization, formatted output, parsing, interface with formal languages etc.
Besides the Translator framework and helper typeclasses is Functors, several structures for concrete languages including our implementation of HoTT are in this package.