LLMpediaThe first transparent, open encyclopedia generated by LLMs

Epigram (programming language)

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Agda Hop 5
Expansion Funnel Raw 48 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted48
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
Epigram (programming language)
NameEpigram
ParadigmFunctional, dependently typed, interactive
DesignerConor McBride, James McKinna
DeveloperUniversity of Edinburgh, University of Nottingham
First appeared1999
Typing disciplineDependent, strong, static
Influenced byML, Haskell, Agda, Coq
InfluencedIdris, Agda, Coq, F*
LicenseBSD

Epigram (programming language) is a functional programming language and proof assistant that integrates dependently typed programming with interactive theorem proving. Developed in academic settings, the language emphasizes expressive type systems, program derivation, and human-guided proof construction. Epigram influenced subsequent systems in dependently typed programming and formal verification and was situated within research communities around type theory, theorem proving, and programming language design.

History

Epigram emerged from research at the University of Edinburgh and the University of Nottingham under authors including Conor McBride and James McKinna, building on traditions from Robin Milner's work on ML, John C. Reynolds's type theory, and the Curry–Howard correspondence. Early prototypes appeared in the late 1990s and early 2000s alongside contemporaneous systems such as Coq, Agda, and Twelf. The project evolved through conference presentations at venues like POPL, ICFP, and LSFA, and contributed to workshops hosted by ACM and IEEE research programs. Over time Epigram's design choices informed language-engineering efforts at institutions such as University of Cambridge and University of Oxford and influenced graduate work that intersected with projects at Microsoft Research and INRIA.

Design and features

Epigram combines features from Haskell-style functional programming and constructive type theory developed in the tradition of Per Martin-Löf and Girard Jean-Yves's work. Key features include interactive type-directed development, refinement types inspired by Robin Milner's ML family, and a bidirectional typechecking discipline similar to ideas later seen in Idris and Agda. The language supports program extraction in the spirit of Curry–Howard correspondence applications used by Coq users and encourages equational reasoning akin to tactics discussed at Interactive Theorem Proving (ITP) workshops. Epigram also integrates a user interface for proof refinement influenced by editor projects associated with Proof General and editor research at University of Cambridge.

Type system

Epigram's type system is dependently typed, drawing from Per Martin-Löf's intuitionistic type theory and metatheory from Girard's System F and Jean-Yves Girard's work on polymorphism. It supports inductive families and indexed datatypes comparable to constructs in Agda and Coq's Calculus of Inductive Constructions. The system implements totality checking and termination analysis echoing methods developed in research by Thierry Coquand and integrates techniques for universe hierarchies influenced by discussions at Types conferences. Epigram's approach to propositions-as-types manifests proof objects that are programs, aligning with the philosophies pursued at Carnegie Mellon University and Stanford University groups studying proof-carrying code.

Syntax and semantics

Epigram's surface syntax is reminiscent of Haskell and ML with pattern matching, algebraic datatypes, and explicit dependent function types inspired by Per Martin-Löf's notation. Semantically, Epigram employs constructive semantics influenced by Constructive Type Theory and operational semantics work that traces back to Dana Scott and Gordon Plotkin. Reduction strategies, normalization arguments, and equational reasoning in Epigram draw on semantic frameworks discussed in papers presented at POPL and LICS, and its semantics connect to normalization-by-evaluation research promoted by scholars affiliated with University of Cambridge and University of Gothenburg.

Implementation and tooling

Epigram was implemented as an interactive system with a typechecker, elaborator, and a proof-refinement engine, influenced by tooling paradigms from Coq's environment and Proof General, and editor integrations similar to experiments at Microsoft Research and University of Edinburgh. Implementations were written using functional languages and runtime systems informed by projects at University of Nottingham; the tooling emphasized incremental typechecking, bidirectional elaboration, and interactive proof construction akin to GUIs and editors discussed at ICFP and TOOLS forums. Documentation and tutorials were circulated in workshops and summer schools organized by EPiC and research networks that included contributors from INRIA and ETH Zurich.

Examples and applications

Examples developed in Epigram included verified algorithms, dependently typed data structures, and program derivations that mirror case studies pursued in Coq and Agda communities. Notable demonstration artifacts featured proofs of properties for lists, vectors, sorting algorithms, and simple certified compilers, echoing verification efforts documented by researchers at Princeton University and MIT. Epigram's idioms were used in teaching settings at universities such as University of Edinburgh and University of Nottingham for courses on type theory, and its example corpus informed subsequent libraries in Idris and Agda ecosystems.

Reception and influence

Epigram was received as an influential research-language prototype within communities around type theory, program verification, and functional programming. It informed the design of later dependently typed languages such as Idris and shaped features in Agda and proof assistants like Coq. Discussions and citations appear in conference proceedings at POPL, ICFP, and LICS, and the system influenced doctoral work at institutions such as University of Cambridge, University of Oxford, and ETH Zurich. Though not adopted widely as a production language, Epigram's exploration of interactive program derivation and dependent types left a durable legacy in academic and tooling developments across multiple research groups and companies including Microsoft Research and collaborations with INRIA.

Category:Functional programming languages Category:Dependently typed programming languages