Step-Indexed Normalization for a Language with General Recursion

  title={Step-Indexed Normalization for a Language with General Recursion},
  author={Chris Casinghino and Vilhelm Sj{\"o}berg and Stephanie Weirich},
The TRELLYS project has produced several designs for practical dependently typed languages. These languages are broken into two fragments—a logical fragment where every term normalizes and which is consistent when interpreted as a logic, and a programmatic fragment with general recursion and other convenient but unsound features. In this paper, we present a small example language in this style. Our design allows the programmer to explicitly mention and pass information between the two fragments… 

Dependently typed programming with singletons

The singletons library is presented, which generates the boilerplate code necessary for dependently typed programming using GHC and suggestions for future extensions to better support this style of programming are suggested.

Trellys: Dependently-typed Language Design

This work investigates type system features in the context of both new languages and existing ones, and evaluates those designs with respect to both theory and practice.

Combining proofs and programs in a dependently typed language

This language is composed of two fragments that share a common syntax and overlapping semantics: a logic that guarantees total correctness, and a call-by-value programming language that guarantees type safety but not termination.

The Dynamic Practice and Static Theory of Gradual Typing

We can tease apart the research on gradual types into two `lineages': a pragmatic, implementation-oriented dynamic-first lineage and a formal, type-theoretic, static-first lineage. The dynamic-first

Towards dependently typed Haskell: System FC with kind equality (Extended Version)

This paper introduces kind equalities to System FC, based on dependent type systems with heterogeneous equality and the “Type-in-Type” axiom, yet it preserves the metatheoretic properties of FC.

Dependent Types in Haskell: Theory and Practice

This dissertation describes Dependent Haskell, which supports full dependent types via a backward-compatible extension to today's Haskell, and describes a novel type-safe dependently typed lambda-calculus suitable for use as an intermediate language for compiling Dependents Haskell.

Down with kinds : adding dependent heterogeneous equality to FC ( Extended Version )

The approach is based on dependent type systems with heterogeneous equality and the “Type-in-Type” axiom, yet it preserves the metatheoretic properties of FC and proves the preservation and progress theorems for the extended language.

Combining Proofs and Programs

A work-in-progress overview of the Trellys project, which is new core language, designed to provide a smooth path from functional programming to dependently-typed programming, and allows programmers to work with total and partial functions uniformly.

The semantic analysis of advanced programming languages

This dissertation introduces three new programming languages: Freedom of Speech, Separation of Proof from Program, and Dualized Type Theory, a terminating functional programming language rich in constructive duality, and shows promise of being a logical foundation of induction.

3rd Summit on Advances in Programming Languages, SNAPL 2019, May 16-17, 2019, Providence, RI, USA

It is argued that the gap between available precision and that that is required for either Software 1.0 or Software 2.0 is a fundamental aspect of software design that illustrates the balance between software designed for general-purposes and domain-adapted solutions.



Equational reasoning about programs with general recursion and call-by-value semantics

This paper outlines one core language design for Trellys, and demonstrates the use of the key language constructs to facilitate sound reasoning about potentially unsound programs.

Total parser combinators

A monadic parser combinator library which guarantees termination of parsing, while still allowing many forms of left recursion, is described. The library's interface is similar to those of many other

First Steps in Synthetic Guarded Domain Theory: Step-Indexing in the Topos of Trees

It is proposed that the internal logic of S provides the right setting for the synthetic construction of abstract versions of step-indexed models of programming languages and program logics.

An Introduction to Programming and Proving with Dependent Types in Coq

This tutorial aims to provide a pragmatic introduction to both domain-specific language for coding correct-by-construction proof automation and type theory support, showing how they can bring significant improvements in productivity.

A Syntactic Approach to Type Soundness

A new approach to proving type soundness for Hindley/Milner-style polymorphic type systems by an adaptation of subject reduction theorems from combinatory logic to programming languages and the use of rewriting techniques for the specification of the language semantics is presented.

Step-Indexed Syntactic Logical Relations for Recursive and Quantified Types

We present a sound and complete proof technique, based on syntactic logical relations, for showing contextual equivalence of expressions in a λ-calculus with recursive types and impredicative

A theory of indirection via approximation

A general method to construct models containing indirect reference by presenting a "theory of indirection", which is easy to apply to new settings and has a simple axiomatization, which is complete in the sense that all models of it are isomorphic.

A Theory of Termination via Indirection

This work disproves the common misconception that step-indexing is not inapplicable to liveness problems and develops the first Hoare logic of total correctness for a language with function pointers and semantic assertions.

Type-Safe Distributed Programming with ML5

The language allows an entire distributed application to be developed and reasoned about as a unified program, and its type system, based on modal logic, statically excludes programs that use mobile resources unsafely.

A modality for recursion

  • Hiroshi Nakano
  • Computer Science, Philosophy
    Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.99CB36332)
  • 2000
Modal logic provides a basis for axiomatic semantics of such a wider range of programs and a new framework for natural construction of recursive programs in the proofs-as-programs paradigm.