Cubical Agda: A dependently typed programming language with univalence and higher inductive types

被引:16
|
作者
Vezzosi, Andrea [1 ]
Mortberg, Anders [2 ]
Abel, Andreas [3 ]
机构
[1] IT Univ Copenhagen, Dept Comp Sci, Copenhagen, Denmark
[2] Stockholm Univ, Dept Math, Stockholm, Sweden
[3] Chalmers & Gothenburg Univ, Dept Comp Sci & Engn, Gothenburg, Sweden
基金
瑞典研究理事会;
关键词
Computation theory - Computer programming languages - Formal languages;
D O I
10.1017/S0956796821000034
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Proof assistants based on dependent type theory provide expressive languages for both programming and proving within the same system. However, all of the major implementations lack powerful extensionality principles for reasoning about equality, such as function and propositional extensionality. These principles are typically added axiomatically which disrupts the constructive properties of these systems. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types (HITs). This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of HITs. These new primitives allow the direct definition of function and propositional extensionality as well as quotient types, all with computational content. Additionally, thanks also to copatterns, bisimilarity is equivalent to equality for coinductive types. The adoption of cubical type theory extends Agda with support for a wide range of extensionality principles, without sacrificing type checking and constructivity.
引用
收藏
页数:47
相关论文
共 11 条
  • [1] Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types
    Vezzosi, Andrea
    Mortberg, Anders
    Abel, Andreas
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (ICFP):
  • [2] Dependently Typed Programming in Agda
    Norell, Ulf
    ADVANCED FUNCTIONAL PROGRAMMING, 2009, 5832 : 230 - 266
  • [3] Case of (Quite) Painless Dependently Typed Programming: Fully Certified Merge Sort in Agda
    Copello, Ernesto
    Tasistro, Alvaro
    Bianchi, Bruno
    PROGRAMMING LANGUAGES, SBLP 2014, 2014, 8771 : 62 - 76
  • [4] On Higher Inductive Types in Cubical Type Theory
    Coquand, Thierry
    Huber, Simon
    Mortberg, Anders
    LICS'18: PROCEEDINGS OF THE 33RD ANNUAL ACM/IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE, 2018, : 255 - 264
  • [5] Higher Inductive Types in Cubical Computational Type Theory
    Cavallo, Evan
    Harper, Robert
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (POPL):
  • [6] Intuitionistic Ancestral Logic as a Dependently Typed Abstract Programming Language
    Cohen, Liron
    Constable, Robert L.
    LOGIC, LANGUAGE, INFORMATION, AND COMPUTATION, WOLLIC 2015, 2015, 9160 : 14 - 26
  • [7] Higher Inductive Types in Programming
    Basold, Henning
    Geuvers, Herman
    van der Weide, Niels
    JOURNAL OF UNIVERSAL COMPUTER SCIENCE, 2017, 23 (01) : 63 - 88
  • [8] Tic Tac Types A Gentle Introduction to Dependently Typed Programming (Functional Pearl)
    Innes, Sean
    Wu, Nicolas
    TYDE '19: PROCEEDINGS OF THE 4TH ACM SIGPLAN INTERNATIONAL WORKSHOP ON TYPE-DRIVEN DEVELOPMENT, 2019, : 40 - 51
  • [9] Idris, a general-purpose dependently typed programming language: Design and implementation
    Brady, Edwin
    JOURNAL OF FUNCTIONAL PROGRAMMING, 2013, 23 (05) : 552 - 593
  • [10] Resolving Inductive Definitions with Binders in Higher-Order Typed Functional Programming
    Lakin, Matthew R.
    Pitts, Andrew M.
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2009, 5502 : 47 - 61