Corpus ID: 49315786

Reasoning about Polymorphic Manifest Contracts

  title={Reasoning about Polymorphic Manifest Contracts},
  author={Taro Sekiyama and Atsushi Igarashi},
Manifest contract calculi, which integrate cast-based dynamic contract checking and refinement type systems, have been studied as foundations for hybrid contract checking. In this article, we study techniques to reasoning about a polymorphic manifest contract calculus, including a few program transformations related to static contract verification. We first define a polymorphic manifest contract calculus $\mathrm{F}_{H}$, which is much simpler than a previously studied one with delayed… Expand


Stateful manifest contracts
It is shown that dynamic contract checking in the calculus is consistent with static typing in the sense that the final result obtained without dynamic contract violations satisfies contracts in its static type, which means that the state after stateful computations satisfies their postconditions. Expand
Polymorphic Manifest Contracts, Revised and Resolved
This calculus is the first polymorphic manifest calculus with parametricity, depending on no conjectures—it resolves the issues in prior calculi with delayed substitution on casts, and establishes fundamental properties including type soundness and relationalParametricity. Expand
Polymorphic Contracts
This work defines FH, a polymorphic calculus with manifest contracts, and establishes fundamental properties including type soundness and relational parametricity, and develops the metatheory of contracts in a completely syntactic fashion. Expand
Manifest Contracts for Datatypes
A syntactic translation from refinement on type constructors to equivalent refinements on data constructors and dynamically checked casts between different but compatible datatypes such as int list and pos_list are proposed. Expand
Soft contract verification
This work presents soft contract verification, which aims to statically prove either complete or partial contract correctness of components, written in an untyped, higher-order language with first-class contracts. Expand
Manifest contracts
This dissertation develops so-called manifest contract systems which integrate more coherently in the type system, and relates them to Findler-and-Felleisen-style latent contracts, and extends a manifest system with type abstraction and relational parametricity. Expand
Contracts for higher-order functions
This paper introduces λcon, a typed lambda calculus with assertions for higher-order functions, which models the assertion monitoring system that is employed in DrScheme and establishes basic properties of the model (type soundness, etc.). Expand
Relational Reasoning about Functions and Nondeterminism
A uniform, relational proof style for operational arguments about program equivalences is explored, improves and facilitates many previously given proofs, and it is used to establish new proof rules for reasoning about term contexts, recursion, and nondeterminism in higher-order programming languages. Expand
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 impredicativeExpand
Lazy Contract Checking for Immutable Data Structures
This paper explores the idea of adding a small, controlled amount of laziness to contract checkers so that the contracts on a data structure are only checked as the program inspects the data structure, and proposes an extension to the implementation that admits more expressive contracts by loosening the strict asymptotic guarantees and only preserving the amortized asymPTotic complexity. Expand