Proc. of a conference on Functional programming languages and computer architecture
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Telescopic mappings in typed lambda calculus
Information and Computation
TAPSOFT '89 2nd international joint conference on Theory and practice of software development
Handbook of logic in computer science (vol. 2)
Computation and reasoning: a type theory for computer science
Computation and reasoning: a type theory for computer science
Checking algorithms for pure type systems
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The Definition of Standard ML
Some Lambda Calculus and Type Theory Formalized
Journal of Automated Reasoning
Pure Type Systems with Definitions
LFCS '94 Proceedings of the Third International Symposium on Logical Foundations of Computer Science
Structural Recursive Definitions in Type Theory
ICALP '98 Proceedings of the 25th International Colloquium on Automata, Languages and Programming
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Inverting Inductively Defined Relations in LEGO
TYPES '96 Selected papers from the International Workshop on Types for Proofs and Programs
Generic Programming within Dependently Typed Programming
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
MPC '98 Proceedings of the Mathematics of Program Construction
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Dependent types in practical programming
Dependent types in practical programming
First-order unification by structural recursion
Journal of Functional Programming
A predicative analysis of structural recursion
Journal of Functional Programming
de Bruijn notation as a nested datatype
Journal of Functional Programming
Domain specific embedded compilers
DSL'99 Proceedings of the 2nd conference on Conference on Domain-Specific Languages - Volume 2
Functional pearl: i am not a number--i am a free variable
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Combining programming with theorem proving
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A language-based approach to functionally correct imperative programming
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Modelling general recursion in type theory
Mathematical Structures in Computer Science
A computational view of implicit coercions in type theory
Mathematical Structures in Computer Science
Open data types and open functions
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Modular development of certified program verifiers with a proof assistant
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Eliminating distinctions of class: using prototypes to model virtual classes
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A verified staged interpreter is a verified compiler
Proceedings of the 5th international conference on Generative programming and component engineering
Roadmap for enhanced languages and methods to aid verification
Proceedings of the 5th international conference on Generative programming and component engineering
What's the deal with dependent types?
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
System F with type equality coercions
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Containers: constructing strictly positive types
Theoretical Computer Science - Applied semantics: Selected topics
∂ for Data: Differentiating Data Structures
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
A certified type-preserving compiler from lambda calculus to assembly language
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Constructive Membership Predicates as Index Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Position Paper: Thoughts on Programming with Proof Assistants
Electronic Notes in Theoretical Computer Science (ENTCS)
Constructing strictly positive families
CATS '07 Proceedings of the thirteenth Australasian symposium on Theory of computing - Volume 65
Program-ing finger trees in Coq
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Refined typechecking with Stardust
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Pattern matching coverage checking with dependent types using set approximations
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Coercive Subtyping via Mappings of Reduction Behaviour
Electronic Notes in Theoretical Computer Science (ENTCS)
Programming with proofs and explicit contexts
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Not all patterns, but enough: an automatic verifier for partial but sufficient pattern matching
Proceedings of the first ACM SIGPLAN symposium on Haskell
Programming with Proofs: Language-Based Approaches to Totally Correct Software
Verified Software: Theories, Tools, Experiments
From Contracts Towards Dependent Types: Proofs by Partial Evaluation
Implementation and Application of Functional Languages
Algebra of Programming Using Dependent Types
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Constrained types for object-oriented languages
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the 3rd workshop on Programming languages meets program verification
Compositional reasoning and decidable checking for dependent contract types
Proceedings of the 3rd workshop on Programming languages meets program verification
Proceedings of the 3rd workshop on Programming languages meets program verification
Dependently typed programming in Agda
Proceedings of the 4th international workshop on Types in language design and implementation
Towards type-theoretic semantics for transactional concurrency
Proceedings of the 4th international workshop on Types in language design and implementation
Modular development of certified program verifiers with a proof assistant1,2
Journal of Functional Programming
Hoare type theory, polymorphism and separation1
Journal of Functional Programming
Journal of Functional Programming
A New Elimination Rule for the Calculus of Inductive Constructions
Types for Proofs and Programs
Effective interactive proofs for higher-order imperative programs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Algebra of programming in agda: Dependent types for relational program derivation
Journal of Functional Programming
Recursive Coalgebras from Comonads
Electronic Notes in Theoretical Computer Science (ENTCS)
Toward a verified relational database management system
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types and program equivalence
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Arity-generic datatype-generic programming
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
On optimising shape-generic array programs using symbolic structural information
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
General recursion in type theory
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Initial algebra semantics is enough!
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Generic programming with dependent types
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Proving properties about lists using containers
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
A formalisation of a dependently typed language as an inductive-recursive family
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
Erasure and polymorphism in pure type systems
FOSSACS'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Foundations of software science and computational structures
The implicit calculus of constructions as a programming language with dependent types
FOSSACS'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Foundations of software science and computational structures
Let's see how things unfold: reconciling the infinite with the intensional
CALCO'09 Proceedings of the 3rd international conference on Algebra and coalgebra in computer science
Dependently typed programming in Agda
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
A computer-verified monadic functional implementation of the integral
Theoretical Computer Science
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Logical types for untyped languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Program verification through characteristic formulae
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Parametricity and dependent types
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Epigram prime: a demonstration
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
CiE'10 Proceedings of the Programs, proofs, process and 6th international conference on Computability in Europe
Fundamenta Informaticae - Dependently Typed Programming
A Tutorial Implementation of a Dependently Typed Lambda Calculus
Fundamenta Informaticae - Dependently Typed Programming
Automation for Dependently Typed Functional Programming
Fundamenta Informaticae - Dependently Typed Programming
From the web of data to a world of action
Web Semantics: Science, Services and Agents on the World Wide Web
Trace-based verification of imperative programs with I/O
Journal of Symbolic Computation
IDRIS ---: systems programming meets full dependent types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Integrating an automated theorem prover into agda
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Irrelevance in type theory with a heterogeneous equality judgement
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Realizability and parametricity in pure type systems
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Defining and reasoning about recursive functions: a practical tool for the coq proof assistant
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Sorted: Verifying the problem of the dutch national flag in agda
Journal of Functional Programming
A few constructions on constructors
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Exploring the regular tree types
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Privacy in data mining using formal methods
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
A dependently typed framework for static analysis of program execution costs
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Beluga: programming with dependent types, contextual data, and contexts
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Enforcing stateful authorization and information flow policies in fine
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Equations: a dependent pattern-matching compiler
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Resource-Safe systems programming with embedded domain specific languages
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
GMETA: a generic formal metatheory framework for first-order representations
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Strongly Typed Term Representations in Coq
Journal of Automated Reasoning
Inductive Types in Homotopy Type Theory
LICS '12 Proceedings of the 2012 27th Annual IEEE/ACM Symposium on Logic in Computer Science
Transporting functions across ornaments
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Generic programming with dependent types
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
∂ for Data: Differentiating Data Structures
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Copatterns: programming infinite structures by observations
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interactive programming with dependent types
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
New equations for neutral terms: a sound and complete decision procedure, formalized
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Relational algebraic ornaments
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Leveling up dependent types: generic programming over a predicative hierarchy of universes
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Names for free: polymorphic views of names and binders
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Hasochism: the pleasure and pain of dependently typed haskell programming
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Science of Computer Programming
Combining proofs and programs in a dependently typed language
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Understanding ownership types with dependent types
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Pattern matching has proved an extremely powerful and durable notion in functional programming. This paper contributes a new programming notation for type theory which elaborates the notion in various ways. First, as is by now quite well-known in the type theory community, definition by pattern matching becomes a more discriminating tool in the presence of dependent types, since it refines the explanation of types as well as values. This becomes all the more true in the presence of the rich class of datatypes known as inductive families (Dybjer, 1991). Secondly, as proposed by Peyton Jones (1997) for Haskell, and independently rediscovered by us, subsidiary case analyses on the results of intermediate computations, which commonly take place on the right-hand side of definitions by pattern matching, should rather be handled on the left. In simply-typed languages, this subsumes the trivial case of Boolean guards; in our setting it becomes yet more powerful. Thirdly, elementary pattern matching decompositions have a well-defined interface given by a dependent type; they correspond to the statement of an induction principle for the datatype. More general, user-definable decompositions may be defined which also have types of the same general form. Elementary pattern matching may therefore be recast in abstract form, with a semantics given by translation. Such abstract decompositions of data generalize Wadler's (1987) notion of ‘view’. The programmer wishing to introduce a new view of a type $\mathit{T}$, and exploit it directly in pattern matching, may do so via a standard programming idiom. The type theorist, looking through the Curry–Howard lens, may see this as proving a theorem, one which establishes the validity of a new induction principle for $\mathit{T}$. We develop enough syntax and semantics to account for this high-level style of programming in dependent type theory. We close with the development of a typechecker for the simply-typed lambda calculus, which furnishes a view of raw terms as either being well-typed, or containing an error. The implementation of this view is ipso facto a proof that typechecking is decidable.