Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Structural Recursive Definitions in Type Theory
ICALP '98 Proceedings of the 25th International Colloquium on Automata, Languages and Programming
Analysis of a Guard Condition in Type Theory (Extended Abstract)
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Monadic Presentations of Lambda Terms Using Generalized Inductive Types
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
de Bruijn notation as a nested datatype
Journal of Functional Programming
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
Termination and productivity checking with continuous types
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Polarized subtyping for sized types
CSR'06 Proceedings of the First international computer science conference on Theory and Applications
Formalized metatheory with terms represented by an indexed family of types
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Extracting a normalization algorithm in Isabelle/HOL
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Practical inference for type-based termination in a polymorphic setting
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Decidability of type-checking in the calculus of algebraic constructions with size annotations
CSL'05 Proceedings of the 19th international conference on Computer Science Logic
Syntactic Metatheory of Higher-Order Subtyping
CSL '08 Proceedings of the 22nd international workshop on Computer Science Logic
Implementing a normalizer using sized heterogeneous types
Journal of Functional Programming
Hereditary substitutions for simple types, formalized
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Hi-index | 0.00 |
In the simply-typed lambda-calculus, a hereditary substitution replaces a free variable in a normal form r by another normal form s of type a, removing freshly created redexes on the fly. It can be defined by lexicographic induction on a and r, thus, giving rise to a structurally recursive normalizer for the simply-typed lambda-calculus. We generalize this scheme to simultaneous substitutions, preserving its simple termination argument. We further implement hereditary simultaneous substitutions in a functional programming language with sized heterogeneous inductive types, Fω∧, arriving at an interpreter whose termination can be tracked by the type system of its host programming language.