# Subset Coercions in Coq

@inproceedings{Sozeau2006SubsetCI, title={Subset Coercions in Coq}, author={Matthieu Sozeau}, booktitle={TYPES}, year={2006} }

We propose a new language for writing programs with dependent types on top of the COQ proof assistant. This language permits to establish a phase distinction between writing and proving algorithms in the COQ environment. Concretely, this means allowing to write algorithms as easily as in a practical functional programming language whilst giving them as rich a specification as desired and proving that the code meets the specification using the whole COQ proof apparatus. This is achieved by… Expand

#### Figures and Topics from this paper

#### 106 Citations

The Implicit Calculus of Constructions as a Programming Language with Dependent Types

- Computer Science
- FoSSaCS
- 2008

This paper shows how Miquel's Implicit Calculus of Constructions can be used as a programming language featuring dependent types and introduces a more verbose variant, called ICC* which fixes the issue of an undecidable type-checking. Expand

Interactive typed tactic programming in the Coq proof assistant

- Computer Science
- 2015

This dissertation develops two different approaches to typed tactic programming in the context of Coq: Lemma Overloading and Mtac, a lightweight yet powerful extension to Coq that supports dependently typed functional tactic programming, with additional imperative features. Expand

VeriML: typed computation of logical terms inside a language with effects

- Computer Science
- ICFP '10
- 2010

VeriML is presented - a novel language design that couples a type-safe effectful computational language with first-class support for manipulating logical terms such as propositions and proofs inside a computational language inspired by ML. Expand

Towards a Proof-Irrelevant Calculus of Inductive Constructions

- Mathematics
- 2014

Through the Curry-Howard correspondence, dependent type theories are appealing to both the mathematical and the programming community. To the first, they provide an expressive logical framework, in… Expand

Formally Proving the Correctness of Functional Programs

- Computer Science
- 2010

Methods for proving functional programs correct in the proof assistant Coq, a small core dependently typed functional programming language with a proof assistant for specifying properties of these programs and proving them, are investigated and compared. Expand

Mtac: A monad for typed tactic programming in Coq

- Computer Science
- Journal of Functional Programming
- 2015

Mtac is presented, a lightweight but powerful extension to Coq that supports dependently typed tactic programming, and avoids the need to touch the trusted kernel typechecker of Coq by encapsulating uses of these new tactical primitives in a monad, and instrumenting Coq so that it executes monadic tactics during type inference. Expand

On type-based termination and dependent pattern matching in the calculus of inductive constructions. (Terminaison basée sur les types et filtrage dépendant pour le calcul des constructions inductives)

- Mathematics, Computer Science
- 2011

This thesis proposes an extension of CIC using a type-based mechanism for ensuring termination of recursive functions, and studies pattern-matching definitions in CIC, a functional programming language with an expressive type system. Expand

Mtac: a monad for typed tactic programming in Coq

- Computer Science
- ICFP 2013
- 2013

Mtac is presented, a lightweight but powerful extension to Coq that supports dependently-typed tactic programming, and avoids the need to touch the trusted kernel typechecker of Coq by encapsulating uses of these new tactical primitives in a *monad*, and instrumenting Coq so that it executes monadic tactics during type inference. Expand

Deferring the details and deriving programs

- Computer Science
- TyDe@ICFP
- 2019

Trip, the new language for Hoare-logic verification of imperative programs embedded in Agda, is applied, where the applicative functor is used as the basis for a verification condition generator, turning the typed holes of Agda into a method for stepwise derivation of a program from its specification in the form of a Hoare triple. Expand

Towards Certified Program Logics for the Verification of Imperative Programs

- Mathematics
- 2013

Modern proof assistants are mature tools with which several important mathematical problems were proved correct, and which are also being used as a support for the development of program logics… Expand

#### References

SHOWING 1-10 OF 29 REFERENCES

Extraction of Structured Programs from Specification Proofs

- Computer Science
- WADT
- 1999

This paper presents a method using an extended logical system for obtaining programs from specifications written in a sublanguage of CASL, and provides a method for producing a program module that maximally respects the original structure of the specification. Expand

Pure type systems with judgemental equality

- Computer Science
- Journal of Functional Programming
- 2005

It is proved that the equivalence holds for all functional Pure Type Systems (PTSs) and the Church-Rosser Theorem for a typed version of parallel one-step reduction is proved. Expand

Dependent types in practical programming

- Computer Science
- POPL '99
- 1999

We present an approach to enriching the type system of ML with a restricted form of dependent types, where type index objects are drawn from a constraint domain C, leading to the DML(C) language… Expand

Synthesizing Proofs from Programs in the Calculus of Inductive Constructions

- Mathematics, Computer Science
- MPC
- 1995

This work focuses on the inverse problem: is it possible to reconstruct proof obligations from a program and its specification, and introduces a notion of coherence between a specification and a program containing annotations as in the Hoare sense. Expand

Coercive Subtyping in Type Theory

- Computer Science
- CSL
- 1996

In this approach, subtyping with specified implicit coercions is treated as a feature at the level of the logical framework; in particular, subsumption and coercion are combined in such a way that the meaning of an object being in a supertype is given by coercive definition rules for the definitional equality. Expand

A logic of subtyping

- Mathematics, Computer Science
- Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science
- 1995

A simple (and linear) calculus of sequents for subtyping as logical entailment is proposed, which allows to derive a complete and coherent approach to subtyped from a few, logically meaningful, sequents. Expand

A Logic of Subtyping (Extended Abstract)

- Computer Science
- LICS 1995
- 1995

A simple (and linear) calculus of sequents for subtyping as logical entailment is proposed, which allows to derive a complete and coherent approach to subtyped from a few, logically meaningful, sequents. Expand

The Formal Semantics of PVS

- Computer Science
- 1999

The formal semantics of the specification language of SRI''s Prototype Verification System (PVS) is presented, based on the simply typed lambda calculus, which illuminates several of the design considerations underlying PVS, the interaction between theorem proving and typechecking. Expand

Logic of subtyping

- Computer Science, Mathematics
- Theor. Comput. Sci.
- 2006

New modal logical calculi are introduced that describe subtyping properties of Cartesian product and disjoint union type constructors as well as mutually recursive types defined using those type Constructors with respect to appropriate type universes. Expand

Interactive Theorem Proving and Program Development

- Mathematics, Computer Science
- Texts in Theoretical Computer Science An EATCS Series
- 2004

The similarity between Fixpoint and fix makes it easier to understand the need for the various parts of this construct, and the construction of higher-order types and simple inductive types defined inside a section is helpful to understanding the form of the induction principle. Expand