9 research outputs found
Pure subtype systems: a type theory for extensible software
This thesis presents a novel approach to type theory called âpure subtype systemsâ,
and a core calculus called DEEP which is based on that approach. DEEP is capable
of modeling a number of interesting language techniques that have been proposed in
the literature, including mixin modules, virtual classes, feature-oriented programming,
and partial evaluation.
The design of DEEP was motivated by two well-known problems: âthe expression
problemâ, and âthe tag elimination problem.â The expression problem is concerned
with the design of an interpreter that is extensible, and requires an advanced module
system. The tag elimination problem is concerned with the design of an interpreter that
is efficient, and requires an advanced partial evaluator. We present a solution in DEEP
that solves both problems simultaneously, which has never been done before.
These two problems serve as an âacid testâ for advanced type theories, because they
make heavy demands on the static type system. Our solution in DEEP makes use of the
following capabilities. (1) Virtual types are type definitions within a module that can
be extended by clients of the module. (2) Type definitions may be mutually recursive.
(3) Higher-order subtyping and bounded quantification are used to represent partial
information about types. (4) Dependent types and singleton types provide increased
type precision.
The combination of recursive types, virtual types, dependent types, higher-order
subtyping, and bounded quantification is highly non-trivial. We introduce âpure subtype
systemsâ as a way of managing this complexity. Pure subtype systems eliminate
the distinction between types and objects; every term can behave as either a type or
an object depending on context. A subtype relation is defined over all terms, and subtyping,
rather than typing, forms the basis of the theory. We show that higher-order
subtyping is strong enough to completely subsume the traditional type relation, and
we provide practical algorithms for type checking and for finding minimal types.
The cost of using pure subtype systems lies in the complexity of the meta-theory.
Unfortunately, we are unable to establish some basic meta-theoretic properties, such as
type safety and transitivity elimination, although we have made some progress towards
these goals. We formulate the subtype relation as an abstract reduction system, and we
show that the type theory is sound if the reduction system is confluent. We can prove
that reductions are locally confluent, but a proof of global confluence remains elusive.
In summary, pure subtype systems represent a new and interesting approach to
type theory. This thesis describes the basic properties of pure subtype systems, and
provides concrete examples of how they can be applied. The Deep calculus demonstrates
that our approach has a number of real-world practical applications in areas that
have proved to be quite difficult for traditional type theories to handle. However, the
ultimate soundness of the technique remains an open question
Block-Recurrent Transformers
We introduce the Block-Recurrent Transformer, which applies a transformer
layer in a recurrent fashion along a sequence, and has linear complexity with
respect to sequence length. Our recurrent cell operates on blocks of tokens
rather than single tokens during training, and leverages parallel computation
within a block in order to make efficient use of accelerator hardware. The cell
itself is strikingly simple. It is merely a transformer layer: it uses
self-attention and cross-attention to efficiently compute a recurrent function
over a large set of state vectors and tokens. Our design was inspired in part
by LSTM cells, and it uses LSTM-style gates, but it scales the typical LSTM
cell up by several orders of magnitude. Our implementation of recurrence has
the same cost in both computation time and parameter count as a conventional
transformer layer, but offers dramatically improved perplexity in language
modeling tasks over very long sequences. Our model out-performs a long-range
Transformer XL baseline by a wide margin, while running twice as fast. We
demonstrate its effectiveness on PG19 (books), arXiv papers, and GitHub source
code. Our code has been released as open source.Comment: Update to NeurIPS camera-ready versio
A Biologistâs View of Software Evolution
Abstract. The term âsoftware evolution â is generally used as an analogy for biological evolution. This paper explores that analogy in more depth, analyzing software evolution from the biologistâs point of view. I give a basic introduction to genetic algorithms, and describe two major issues that effect evolvability: local optima in the search space, and genotype to phenotype mappings. Aspects and meta-programs address both of these issues. Encapsulation can be seen as a technique for reducing epistasis, while meta-programming can be seen as an analog to morphogenesis.
Pure subtype systems : a type theory for extensible software
This thesis presents a novel approach to type theory called âpure subtype systemsâ, and a core calculus called DEEP which is based on that approach. DEEP is capable of modeling a number of interesting language techniques that have been proposed in the literature, including mixin modules, virtual classes, feature-oriented programming, and partial evaluation. The design of DEEP was motivated by two well-known problems: âthe expression problemâ, and âthe tag elimination problem.â The expression problem is concerned with the design of an interpreter that is extensible, and requires an advanced module system. The tag elimination problem is concerned with the design of an interpreter that is efficient, and requires an advanced partial evaluator. We present a solution in DEEP that solves both problems simultaneously, which has never been done before. These two problems serve as an âacid testâ for advanced type theories, because they make heavy demands on the static type system. Our solution in DEEP makes use of the following capabilities. (1) Virtual types are type definitions within a module that can be extended by clients of the module. (2) Type definitions may be mutually recursive. (3) Higher-order subtyping and bounded quantification are used to represent partial information about types. (4) Dependent types and singleton types provide increased type precision. The combination of recursive types, virtual types, dependent types, higher-order subtyping, and bounded quantification is highly non-trivial. We introduce âpure subtype systemsâ as a way of managing this complexity. Pure subtype systems eliminate the distinction between types and objects; every term can behave as either a type or an object depending on context. A subtype relation is defined over all terms, and subtyping, rather than typing, forms the basis of the theory. We show that higher-order subtyping is strong enough to completely subsume the traditional type relation, and we provide practical algorithms for type checking and for finding minimal types. The cost of using pure subtype systems lies in the complexity of the meta-theory. Unfortunately, we are unable to establish some basic meta-theoretic properties, such as type safety and transitivity elimination, although we have made some progress towards these goals. We formulate the subtype relation as an abstract reduction system, and we show that the type theory is sound if the reduction system is confluent. We can prove that reductions are locally confluent, but a proof of global confluence remains elusive. In summary, pure subtype systems represent a new and interesting approach to type theory. This thesis describes the basic properties of pure subtype systems, and provides concrete examples of how they can be applied. The Deep calculus demonstrates that our approach has a number of real-world practical applications in areas that have proved to be quite difficult for traditional type theories to handle. However, the ultimate soundness of the technique remains an open question.EThOS - Electronic Theses Online ServiceGBUnited Kingdo