# Programming Up to Congruence (Extended version)

@inproceedings{Sjberg2014ProgrammingUT, title={Programming Up to Congruence (Extended version)}, author={Vilhelm Sj{\"o}berg and Stephanie Weirich}, year={2014} }

This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference. This algorithm allows the type checker to automatically use equality assumptions from the context when reasoning about equality. Most dependently typed languages automatically use equalities that follow from -reduction during type checking; however, such reasoning is incompatible with congruence closure. In contrast, ZOMBIE… Expand

#### Figures from this paper

#### 2 Citations

Programming up to Congruence

- Computer Science
- POPL 2015
- 2015

The design of Zombie is presented, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference that allows the type checker to automatically use equality assumptions from the context when reasoning about equality. Expand

Programming up to Congruence Vilhelm Sjöberg

- 2014

This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference. This algorithm allows the… Expand

#### References

SHOWING 1-10 OF 32 REFERENCES

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

Semantic subtyping with an SMT solver

- Computer Science
- ICFP '10
- 2010

A novel type-checking algorithm able to eliminate many dynamic tests and to detect many errors statically is presented, to rely on an SMT solver to compute subtyping efficiently. Expand

Algebra of programming in Agda: Dependent types for relational program derivation

- Computer Science
- Journal of Functional Programming
- 2009

A library, AoPA (Algebra of Programming in Agda), is developed, to encode relational derivations in the dependently typed programming language Agda, to express various correctness properties to be verified by the type checker. Expand

Observational equality, now!

- Computer Science
- PLPV '07
- 2007

The new proposal simplifies Altenkirch's construction of a setoid-model for a system with canonicity and extensionality on top of an intensional type theory with proof-irrelevant propositions by adopting McBride's heterogeneous approach to equality. Expand

Fast congruence closure and extensions

- Computer Science, Mathematics
- Inf. Comput.
- 2007

A very simple and clean incremental congruence closure algorithm that runs in the best known time O(n logn) and can be smoothly extended, while still obtaining the same asymptotic time bounds, in order to support the interpreted functions symbols successor and predecessor. Expand

Ott: effective tool support for the working semanticist

- Computer Science
- ICFP '07
- 2007

The aim with this work is to enable a phase change: making it feasible to work routinely, without heroic effort, with rigorous semantic definitions of realistic languages. Expand

Secure distributed programming with value-dependent types

- Computer Science
- ICFP '11
- 2011

F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming that provides arbitrary recursion while maintaining a logically consistent core, and enables modular reasoning about state and other effects using affine types is presented. Expand

Type-theoretic methodology for practical programming languages

- Mathematics
- 1998

The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory.… Expand

Deciding Joinability Modulo Ground Equations In Operational Type Theory

- Mathematics
- 2008

Operational Type The ory (OpTT ) can be used to construct and check proofs related to programs, but the development of these proofs can be somewhat tedious. An algorithm is presented that can be used… Expand

Static and user-extensible proof checking

- Computer Science
- POPL '12
- 2012

This paper builds on existing work, and demonstrates two novel ideas: an extensible conversion rule and support for static proof scripts, which enable both user-extensible proof checking, and sophisticated static checking of tactics, leading to a new point in the design space of future proof assistants. Expand