How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typing algorithm in type theory with inheritance
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A compiled implementation of strong reduction
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type Classes with Functional Dependencies
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Type Classes and Overloading in Higher-Order Logic
TPHOLs '97 Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics
Locales - A Sectioning Concept for Isabelle
TPHOLs '99 Proceedings of the 12th International Conference on Theorem Proving in Higher Order Logics
Dependently Typed Records for Representing Mathematical Structure
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simula Begin
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
A logical framework with dependently typed records
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Constructive type classes in Isabelle
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Axiomatic constructor classes in Isabelle/HOLCF
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
The Seventeen Provers of the World
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Packaging Mathematical Structures
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Mechanized verification with sharing
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
IDRIS ---: systems programming meets full dependent types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
Formalizing projective plane geometry in Coq
ADG'08 Proceedings of the 7th international conference on Automated deduction in geometry
The Matita interactive theorem prover
CADE'11 Proceedings of the 23rd international conference on Automated deduction
Computer certified efficient exact reals in Coq
MKM'11 Proceedings of the 18th Calculemus and 10th international conference on Intelligent computer mathematics
Point-free, set-free concrete linear algebra
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
On the bright side of type classes: instance arguments in Agda
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
How to make ad hoc proof automation less ad hoc
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Formal network packet processing with minimal fuss: invertible syntax descriptions at work
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
TRX: a formally verified parser interpreter
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
A certified denotational abstract interpreter
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
An efficient coq tactic for deciding kleene algebras
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Equations: a dependent pattern-matching compiler
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Tactics for reasoning modulo AC in coq
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
The implicit calculus: a new foundation for generic programming
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
xmonad in Coq (experience report): programming a window manager in a proof assistant
Proceedings of the 2012 Haskell Symposium
Formal verification of monad transformers
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
High-level separation logic for low-level code
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An interactive extension mechanism for reusing verified programs
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Mtac: a monad for typed tactic programming in Coq
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Canonical structures for the working coq user
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Hi-index | 0.00 |
Type Classes have met a large success in Haskelland Isabelle, as a solution for sharing notations by overloading and for specifying with abstract structures by quantification on contexts. However, both systems are limited by second-class implementations of these constructs, and these limitations are only overcomed by ad-hoc extensions to the respective systems. We propose an embedding of type classes into a dependent type theory that is first-class and supports some of the most popular extensions right away. The implementation is correspondingly cheap, general and integrates well inside the system, as we have experimented in Coq. We show how it can be used to help structured programming and proving by way of examples.