Extending Agda with User-Defined Rewrite Rules

Total Page:16

File Type:pdf, Size:1020Kb

Extending Agda with User-Defined Rewrite Rules Type Theory Unchained: Extending Agda with User-Defined Rewrite Rules Jesper Cockx Department of Software Technology, TU Delft, The Netherlands https://jesper.sikanda.be [email protected] Abstract Dependently typed languages such as Coq and Agda can statically guarantee the correctness of our proofs and programs. To provide this guarantee, they restrict users to certain schemes – such as strictly positive datatypes, complete case analysis, and well-founded induction – that are known to be safe. However, these restrictions can be too strict, making programs and proofs harder to write than necessary. On a higher level, they also prevent us from imagining the different ways the language could be extended. In this paper I show how to extend a dependently typed language with user-defined higher-order non-linear rewrite rules. Rewrite rules are a form of equality reflection that is applied automatically by the typechecker. I have implemented rewrite rules as an extension to Agda, and I give six examples how to use them both to make proofs easier and to experiment with extensions of type theory. I also show how to make rewrite rules interact well with other features of Agda such as η-equality, implicit arguments, data and record types, irrelevance, and universe level polymorphism. Thus rewrite rules break the chains on computation and put its power back into the hands of its rightful owner: yours. 2012 ACM Subject Classification Theory of computation → Rewrite systems; Theory of computa- tion → Equational logic and rewriting; Theory of computation → Type theory Keywords and phrases Dependent types, Proof assistants, Rewrite rules, Higher-order rewriting, Agda Digital Object Identifier 10.4230/LIPIcs.TYPES.2019.2 Supplementary Material The official documentation of rewrite rules in Agda is available in the user manual at https://agda.readthedocs.io/en/v2.6.1/language/rewriting.html. The full source code of Agda (including rewrite rules) is available on Github at https://github.com/agda/agda/. 1 Introduction In the tradition of Martin-Löf Type Theory [19], each type former is declared by four sets of rules: The formation rule, e.g. Bool : Set The introduction rules, e.g. true : Bool and false : Bool The elimination rules, e.g. if P : Bool → Set, b : Bool, pt : P true, and pf : P false, then if b then pt else pf : P b The computation rules, e.g. if true then pt else pf = pt and if false then pt else pf = pf When working in a proof assistant or dependently typed programming language, we usually do not introduce new types directly by giving these rules. That would be very unsafe, as there is no easy way to check that the given rules make sense. Instead, we introduce new rules through schemes that are well-known to be safe, such as strictly positive datatypes, complete case analysis, and well-founded induction. © Jesper Cockx; licensed under Creative Commons License CC-BY 25th International Conference on Types for Proofs and Programs (TYPES 2019). Editors: Marc Bezem and Assia Mahboubi; Article No. 2; pp. 2:1–2:27 Leibniz International Proceedings in Informatics Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, Germany 2:2 Type Theory Unchained: Extending Agda with User-Defined Rewrite Rules However, users of dependently typed languages or researchers who are experimenting with adding new features to them might find working within these schemes too restrictive. They might be tempted to use postulate to simulate the formation, introduction, and elimination rules of new type formers. Yet in intensional type theories there is one thing that cannot be added by using postulate: the computation rules. This paper shows how to extend a dependently typed language with user-defined re- write rules, allowing the user to extend the definitional equality of the language with new computation rules. Concretely, I extend the Agda language [22] with a new op- tion --rewriting. When this option is enabled, you can register a proof (or a postulate) p : ∀x1 . xn → f u1 . un ≡ v (where the ∀ quantifies over the free variables x1 . xn of u1 . un and v, and ≡ is Agda’s built-in identity type) as a rewrite rule with a pragma {-# REWRITE p #-}. From this point on, Agda will automatically reduce instances of the left-hand side f u1 . un (i.e. for specific values of x1 . xn) to the corresponding instance of v. As a silly example, if f : A → A and p : ∀x → f x ≡ x, then the rewrite rule will replace any application f u with u, effectively turning f into the identity function λx → x (which is the Agda syntax for the lambda term λx. x). Since rewrite rules enable you as the user of Agda to turn propositional (i.e. proven) equalities into definitional (i.e. computational) ones, rewrite rules can be seen as a restricted version of the equality reflection rule from extensional type theory, thus they do not impact logical soundness of Agda directly. However, they can break other important properties of Agda such as confluence of reduction and strong normalization. Checking these properties automatically is outside of the scope of this paper, but some potential approaches are discussed in Sect. 6. Instead, the main goal of this paper is to specify in detail one possible way to add a general notion of rewrite rules to a real-world dependently typed language. This is meant to serve at the same time as a specification of how rewrite rules are implemented in Agda and also as a guideline how they could be added to other languages. Contributions I define a core type theory based on Martin-Löf’s intensional type theory extended with user-defined higher-order non-linear rewrite rules. I describe how rewrite rules interact with several common features of dependently typed languages, such as η-equality, data and record types, parametrized modules, proof irrelevance, universe level polymorphism, and constraint solving for metavariables. I implement rewrite rules as an extension to Agda and show in six examples how to use them to make writing programs and proofs easier and to experiment with new extensions to Agda. The official documentation of rewrite rules in Agda is available in the user manual1. The source code of Agda is available on Github2, the code dealing with rewrite rules specifically can be found in the files Rewriting.hs3 (418 lines), NonLinPattern.hs4 (329 lines), NonLinMatch.hs5 (422 lines), and various other places in the Agda codebase. 1 https://agda.readthedocs.io/en/v2.6.1/language/rewriting.html 2 https://github.com/agda/agda/ 3 https://github.com/agda/agda/blob/master/src/full/Agda/TypeChecking/Rewriting.hs 4 https://github.com/agda/agda/blob/master/src/full/Agda/TypeChecking/Rewriting/ NonLinPattern.hs 5 https://github.com/agda/agda/blob/master/src/full/Agda/TypeChecking/Rewriting/ NonLinMatch.hs J. Cockx 2:3 Note on the development of rewrite rules in Agda. When the development of rewrite rules in Agda started in 2016, it was expected to be used mainly by type theory researchers to experiment with new computation rules without modifying the implementation of the language itself. For this use case, accepting a large class of rewrite rules is more important than having strong guarantees about (admittedly important) metatheoretical properties such as subject reduction, confluence, or termination, which can be checked by hand if necessary. This is the basis for the rewrite rules as described in the paper. More recently, Agda users also started using this rewriting facility to enhance Agda’s conversion checker with new (proven) equalities, as showcased by the examples in Sect. 2.1 and Sect. 2.2. For this class of users having strong guarantees about subject reduction, confluence and termination is more important. In the future, I would like to extend the support for these users further as outlined in Sect. 6. Outline of the paper. Sect. 2 consists of examples of how to use rewrite rules to go beyond the usual boundaries set by Agda and define your own computation rules. After these examples, Sect. 3 shows more generally how to add rewrite rules to a dependently typed language, and Sect. 4 shows how rewrite rules interact with other features of Agda. Related work and future work are discussed in Sect. 5 and Sect. 6, and Sect. 7 concludes. 2 Using rewrite rules With the introduction out of the way, let us start with some examples of things you can do with rewrite rules. I hope at least one example gives you the itch to try rewrite rules for yourself. There are some restrictions on what kind of equality proofs can be turned into rewrite rules, which will be explained later in general. Until then, the examples should give an idea of the kind of things that are possible. All examples in this section are accepted by Agda 2.6.1 [1]. We start with some basic options and imports. For the purpose of this paper, the two most important ones are the --rewriting flag and the import of Agda.Builtin.Equality.Rewrite, which are both required to make rewrite rules work. Meanwhile, the --prop flag enables Agda’s Prop universe6 [16], which will be used in some of the examples. {−# OPTIONS --rewriting --prop #−} open import Agda.Primitive open import Agda.Builtin.Bool open import Agda.Builtin.Nat open import Agda.Builtin.List open import Agda.Builtin.Equality open import Agda.Builtin.Equality.Rewrite The examples in this paper make use of generalizable variables7 to avoid writing many quantifiers and make the code more readable. 6 https://agda.readthedocs.io/en/v2.6.1/language/prop.html 7 https://agda.readthedocs.io/en/v2.6.1/language/generalization-of-declared-variables.
Recommended publications
  • Indexed Induction-Recursion
    Indexed Induction-Recursion Peter Dybjer a;? aDepartment of Computer Science and Engineering, Chalmers University of Technology, 412 96 G¨oteborg, Sweden Email: [email protected], http://www.cs.chalmers.se/∼peterd/, Tel: +46 31 772 1035, Fax: +46 31 772 3663. Anton Setzer b;1 bDepartment of Computer Science, University of Wales Swansea, Singleton Park, Swansea SA2 8PP, UK, Email: [email protected], http://www.cs.swan.ac.uk/∼csetzer/, Tel: +44 1792 513368, Fax: +44 1792 295651. Abstract An indexed inductive definition (IID) is a simultaneous inductive definition of an indexed family of sets. An inductive-recursive definition (IRD) is a simultaneous inductive definition of a set and a recursive definition of a function from that set into another type. An indexed inductive-recursive definition (IIRD) is a combination of both. We present a closed theory which allows us to introduce all IIRDs in a natural way without much encoding. By specialising it we also get a closed theory of IID. Our theory of IIRDs includes essentially all definitions of sets which occur in Martin-L¨of type theory. We show in particular that Martin-L¨of's computability predicates for dependent types and Palmgren's higher order universes are special kinds of IIRD and thereby clarify why they are constructively acceptable notions. We give two axiomatisations. The first and more restricted one formalises a prin- ciple for introducing meaningful IIRD by using the data-construct in the original version of the proof assistant Agda for Martin-L¨of type theory. The second one admits a more general form of introduction rule, including the introduction rule for the intensional identity relation, which is not covered by the restricted one.
    [Show full text]
  • Formal Systems: Combinatory Logic and -Calculus
    INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION FORMAL SYSTEMS:COMBINATORY LOGIC AND λ-CALCULUS Andrew R. Plummer Department of Linguistics The Ohio State University 30 Sept., 2009 INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION OUTLINE 1 INTRODUCTION 2 APPLICATIVE SYSTEMS 3 USEFUL INFORMATION INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION COMBINATORY LOGIC We present the foundations of Combinatory Logic and the λ-calculus. We mean to precisely demonstrate their similarities and differences. CURRY AND FEYS (KOREAN FACE) The material discussed is drawn from: Combinatory Logic Vol. 1, (1958) Curry and Feys. Lambda-Calculus and Combinators, (2008) Hindley and Seldin. INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION FORMAL SYSTEMS We begin with some definitions. FORMAL SYSTEMS A formal system is composed of: A set of terms; A set of statements about terms; A set of statements, which are true, called theorems. INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION FORMAL SYSTEMS TERMS We are given a set of atomic terms, which are unanalyzed primitives. We are also given a set of operations, each of which is a mode for combining a finite sequence of terms to form a new term. Finally, we are given a set of term formation rules detailing how to use the operations to form terms. INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION FORMAL SYSTEMS STATEMENTS We are given a set of predicates, each of which is a mode for forming a statement from a finite sequence of terms. We are given a set of statement formation rules detailing how to use the predicates to form statements. INTRODUCTION APPLICATIVE SYSTEMS USEFUL INFORMATION FORMAL SYSTEMS THEOREMS We are given a set of axioms, each of which is a statement that is unconditionally true (and thus a theorem).
    [Show full text]
  • Wittgenstein, Turing and Gödel
    Wittgenstein, Turing and Gödel Juliet Floyd Boston University Lichtenberg-Kolleg, Georg August Universität Göttingen Japan Philosophy of Science Association Meeting, Tokyo, Japan 12 June 2010 Wittgenstein on Turing (1946) RPP I 1096. Turing's 'Machines'. These machines are humans who calculate. And one might express what he says also in the form of games. And the interesting games would be such as brought one via certain rules to nonsensical instructions. I am thinking of games like the “racing game”. One has received the order "Go on in the same way" when this makes no sense, say because one has got into a circle. For that order makes sense only in certain positions. (Watson.) Talk Outline: Wittgenstein’s remarks on mathematics and logic Turing and Wittgenstein Gödel on Turing compared Wittgenstein on Mathematics and Logic . The most dismissed part of his writings {although not by Felix Mülhölzer – BGM III} . Accounting for Wittgenstein’s obsession with the intuitive (e.g. pictures, models, aspect perception) . No principled finitism in Wittgenstein . Detail the development of Wittgenstein’s remarks against background of the mathematics of his day Machine metaphors in Wittgenstein Proof in logic is a “mechanical” expedient Logical symbolisms/mathematical theories are “calculi” with “proof machinery” Proofs in mathematics (e.g. by induction) exhibit or show algorithms PR, PG, BB: “Can a machine think?” Language (thought) as a mechanism Pianola Reading Machines, the Machine as Symbolizing its own actions, “Is the human body a thinking machine?” is not an empirical question Turing Machines Turing resolved Hilbert’s Entscheidungsproblem (posed in 1928): Find a definite method by which every statement of mathematics expressed formally in an axiomatic system can be determined to be true or false based on the axioms.
    [Show full text]
  • Warren Goldfarb, Notes on Metamathematics
    Notes on Metamathematics Warren Goldfarb W.B. Pearson Professor of Modern Mathematics and Mathematical Logic Department of Philosophy Harvard University DRAFT: January 1, 2018 In Memory of Burton Dreben (1927{1999), whose spirited teaching on G¨odeliantopics provided the original inspiration for these Notes. Contents 1 Axiomatics 1 1.1 Formal languages . 1 1.2 Axioms and rules of inference . 5 1.3 Natural numbers: the successor function . 9 1.4 General notions . 13 1.5 Peano Arithmetic. 15 1.6 Basic laws of arithmetic . 18 2 G¨odel'sProof 23 2.1 G¨odelnumbering . 23 2.2 Primitive recursive functions and relations . 25 2.3 Arithmetization of syntax . 30 2.4 Numeralwise representability . 35 2.5 Proof of incompleteness . 37 2.6 `I am not derivable' . 40 3 Formalized Metamathematics 43 3.1 The Fixed Point Lemma . 43 3.2 G¨odel'sSecond Incompleteness Theorem . 47 3.3 The First Incompleteness Theorem Sharpened . 52 3.4 L¨ob'sTheorem . 55 4 Formalizing Primitive Recursion 59 4.1 ∆0,Σ1, and Π1 formulas . 59 4.2 Σ1-completeness and Σ1-soundness . 61 4.3 Proof of Representability . 63 3 5 Formalized Semantics 69 5.1 Tarski's Theorem . 69 5.2 Defining truth for LPA .......................... 72 5.3 Uses of the truth-definition . 74 5.4 Second-order Arithmetic . 76 5.5 Partial truth predicates . 79 5.6 Truth for other languages . 81 6 Computability 85 6.1 Computability . 85 6.2 Recursive and partial recursive functions . 87 6.3 The Normal Form Theorem and the Halting Problem . 91 6.4 Turing Machines .
    [Show full text]
  • 15-819 Homotopy Type Theory Lecture Notes
    15-819 Homotopy Type Theory Lecture Notes Nathan Fulton October 9 and 11, 2013 1 Contents These notes summarize and extend two lectures from Bob Harper’s Homotopy Type Theory course. The cumulative hierarchy of type universes, Extensional Type theory, the ∞-groupoid structure of types and iterated identity types are presented. 2 Motivation and Overview Recall from previous lectures the definitions of functionality and transport. Function- ality states that functions preserve identity; that is, domain elements equal in their type map to equal elements in the codomain. Transportation states the same for 0 0 type families. Traditionally, this means that if a =A a , then B[a] true iff B[a ] true. In proof-relevant mathematics, this logical equivalence is generalized to a statement 0 0 about identity in the family: if a =A a , then B[a] =B B[a ]. Transportation can be thought of in terms of functional extensionality. Un- fortunately, extensionality fails in ITT. One way to recover extensionality, which comports with traditional mathematics, is to reduce all identity to reflexivity. This approach, called Extensional Type theory (ETT), provides a natural setting for set-level mathematics. The HoTT perspective on ETT is that the path structure of types need not be limited to that of strict sets. The richer path structure of an ∞-groupoid is induced by the induction principle for identity types. Finding a type-theoretic description of this behavior (that is, introduction, elimination and computation rules which comport with Gentzen’s Inversion Principle) is an open problem. 1 Homotopy Type Theory 3 The Cumulative Hierarchy of Universes In previous formulations of ITT, we used the judgement A type when forming types.
    [Show full text]
  • Formal Systems .1In
    Formal systems | University of Edinburgh | PHIL08004 | 1 / 32 January 16, 2020 Puzzle 3 A man was looking at a portrait. Someone asked him, \Whose picture are you looking at?" He replied: \Brothers and sisters have I none, but this man's father is my father's son." Whose picture was the man looking at? 2 / 32 3 / 32 I Is the man in the picture the man himself? I Self-portrait? 4 / 32 I Is the man in the picture the man himself? I Self-portrait? 4 / 32 I Is the man in the picture the man himself? I Self-portrait? 4 / 32 I No. I If the man in the picture is himself, then this father would be his own son! I \this man is my father's son" vs. I \this man's father is my father's son" 5 / 32 I No. I If the man in the picture is himself, then this father would be his own son! I \this man is my father's son" vs. I \this man's father is my father's son" 5 / 32 I No. I If the man in the picture is himself, then this father would be his own son! I \this man is my father's son" vs. I \this man's father is my father's son" 5 / 32 I No. I If the man in the picture is himself, then this father would be his own son! I \this man is my father's son" vs. I \this man's father is my father's son" 5 / 32 I No.
    [Show full text]
  • (Ie a Natural Model) Closed Under a Particular Connec
    CONNECTIVES IN SEMANTICS OF TYPE THEORY JONATHAN STERLING Abstract. Some expository notes on the semantics of inductive types in Awodey’s nat- ural models [Awo18]. Many of the ideas explained are drawn from the work of Awodey [Awo18], Streicher [Str14], Gratzer, Kavvos, Nuyts, and Birkedal [Gra+20], and Sterling, Angiuli, and Gratzer [SAG20]. When is a model of type theory (i.e. a natural model) closed under a particular connec- tive? And what is a general notion of connective? Leing C be a small category with a terminal object and E = Pr¹Cº be its logos1 of presheaves, a natural model is a representable natural transformation TÛ τ T : E [Awo18]. j Connectives that commute with the Yoneda embedding C E (such as dependent product and sum) may be specied in a particularly simple way. ! F ! (1) First, one denes an endofunctor Ecart Ecart taking a family (viewed as a uni- verse) to the generic family for that connective. e intuition for this family is that the upstairs part carries the data of its introduction rule, and the downstairs part carries the data of its formation rule. For instance, one may take F to be the endofunctor that takes a map f to the functorial action of the polynomial endofunctor Pf on f itself. In this case, one has the notion of a dependent product type. (2) en, one requires a cartesian mapF¹τº τ, i.e. a pullback square of the following kind: Û @0¹F¹τºº T F¹τº τ @1¹F¹τºº T In the case of our example, the downstairs map becomes a code for the depen- dent product type, and the upstairs map becomes a constructor for λ-abstraction.
    [Show full text]
  • 15-819 Homotopy Type Theory Lecture Notes
    15-819 Homotopy Type Theory Lecture Notes Henry DeYoung and Stephanie Balzer September 9 and 11, 2013 1 Contents These notes summarize the lectures on homotopy type theory (HoTT) given by Professor Robert Harper on September 9 and 11, 2013, at CMU. They start by providing a introduction to HoTT, capturing its main ideas and its connection to other related type theories. Then they present intuitionistic propositional logic (IPL), giving both an proof-theoretic formulation as well an order-theoretic formulation. 2 Introduction to homotopy type theory Homotopy type theory(HoTT) is the subject of a very active research community that gathered at the Institute for Advanced Study (IAS) in 2012 to participate in the Univalent Foundations Program. The results of the program have been recently published in the HoTT Book [1]. 2.1 HoTT in a nutshell HoTT is based on Per Martin-L¨of’s intuitionistic type theory, which provides a foun- dation for intuitionistic mathematics and which is an extension of Brouwer’s program. Brouwer viewed mathematical reasoning as a human activity and mathematics as a language for communicating mathematical concepts. As a result, Brouwer per- ceived the ability of executing a step-by-step procedure or algorithm for performing a construction as a fundamental human faculty. Adopting Brouwer’s constructive viewpoint, intuitionistic theories view proofs as the fundamental forms of construction. The notion of proof relevance is thus a 1 Homotopy Type Theory characteristic feature of an intuitionistic (or constructive1) approach. In the context of HoTT, proof relevance means that proofs become mathematical objects [3]. To fully understand this standpoint, it is necessary to draw a distinction between the notion of a proof and the one of a formal proof [3, 2].
    [Show full text]
  • A Dictionary of PHILOSOPHICAL LOGIC
    a dictionary of a dictionary of PHILOSOPHICAL LOGIC This dictionary introduces undergraduate and graduate students PHILOSOPHICAL LOGIC in philosophy, mathematics, and computer science to the main problems and positions in philosophical logic. Coverage includes not only key figures, positions, terminology, and debates within philosophical logic itself, but issues in related, overlapping disciplines such as set theory and the philosophy of mathematics as well. Entries are extensively cross-referenced, so that each entry can be easily located within the context of wider debates, thereby providing a dictionary of a valuable reference both for tracking the connections between concepts within logic and for examining the manner in which these PHILOSOPHICAL LOGIC concepts are applied in other philosophical disciplines. Roy T. Cook is Assistant Professor in the Department of Philosophy at Roy T. Cook the University of Minnesota and an Associate Fellow at Arché, the Philosophical Research Centre for Logic, Language, Metaphysics and Epistemology at the University of St Andrews. He works primarily in the philosophy of logic, language, and mathematics, and has also Cook Roy T. published papers on seventeenth-century philosophy. ISBN 978 0 7486 2559 8 Edinburgh University Press E 22 George Square dinburgh Edinburgh EH8 9LF www.euppublishing.com Cover image: www.istockphoto.com Cover design: www.paulsmithdesign.com 1004 01 pages i-vi:Layout 1 16/2/09 15:18 Page i A DICTIONARY OF PHILOSOPHICAL LOGIC 1004 01 pages i-vi:Layout 1 16/2/09 15:18 Page ii Dedicated to my mother, Carol C. Cook, who made sure that I got to learn all this stuff, and to George Schumm, Stewart Shapiro, and Neil Tennant, who taught me much of it.
    [Show full text]
  • 2 Formal Languages – 2
    Hardegree, Metalogic, Formal Languages – 2 page 1 of 28 2 Formal Languages – 2 1. Introduction ......................................................................................................................................3 2. The Meta-Language ..........................................................................................................................3 3. Prefix, Infix, and Postfix...................................................................................................................3 1. Prefix Format........................................................................................................................3 2. Postfix Format......................................................................................................................4 3. Infix Format..........................................................................................................................4 4. Prefix (Polish) Formatted ZOL’s......................................................................................................4 1. General Vocabulary..............................................................................................................4 2. General Rules Of Formation.................................................................................................4 5. Abstract Example of a Polish Formatted ZOL..................................................................................4 1. Vocabulary (lexicon)............................................................................................................4
    [Show full text]
  • Martin Löf's J-Rule
    Bachelor thesis Martin Löf’s J-Rule by Lennard Götz July 16, 2018 supervised by Dr. Iosif Petrakis Faculty for mathematics, informatics and statistics of Ludwig-Maximilian-Universität München Statement in Lieu of an Oath Ich versichere hiermit, dass ich die vorgelegte Bachelorarbeit eigenständig und ohne fremde Hilfe verfasst, keine anderen als die angegebenen Quellen verwendet und die den benutzten Quellen entnommenen Passagen als solche kenntlich gemacht habe. Diese Bachelorarbeit istt in dieser oder einer ähnlichen Form in keinem anderen Kurs und/oder Studiengang als Studien- oder Prüfungsleistung vorgelegt worden. Hiermit stimme ich zu, dass die vorliegende Arbeit von dem Prüfer in elektronischer Form mit entsprechender Software über prüft wird. 2 Contents 1 Introduction 5 2 Function types 5 2.1 Dependent function types (Π − types)......... 6 2.2 Product type (A × B) ................. 6 2.3 Dependent pair types (P −types)........... 7 2.4 Coproduct type (A + B) . 7 3 Identity types 8 3.1 Martin Löf’s J-Rule . 9 3.2 J-Rule as function . 9 4 The relation between the J-rule and the j-rule 10 4.1 Transport . 10 4.2 The M-judgement . 12 4.3 Based versions . 15 4.4 The j-Rule . 15 4.5 Equivalence between the J-Rule and the j-Rule . 16 4.6 Based Transport (transport) . 17 4.7 Based LeastRefl (leastrefl) . 18 4.8 The m-judgement . 19 5 Applications of the J-rule 21 6 C++ and the J-Rule 29 7 Identity systems 33 8 Appendix 40 3 Abstract After giving an overview of Martin-Löf Type Theory (MLTT), we focus on identity types.
    [Show full text]
  • Formal Language (3A)
    Formal Language (3A) ● Regular Language Young Won Lim 6/9/18 Copyright (c) 2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Please send corrections (or suggestions) to [email protected]. This document was produced by using LibreOffice and Octave. Young Won Lim 6/9/18 Formal Language a formal language is a set of strings of symbols together with a set of rules that are specific to it. https://en.wikipedia.org/wiki/Formal_language Young Won Lim Regular Language (3A) 3 6/9/18 Alphabet and Words The alphabet of a formal language is the set of symbols, letters, or tokens from which the strings of the language may be formed. The strings formed from this alphabet are called words the words that belong to a particular formal language are sometimes called well-formed words or well-formed formulas. https://en.wikipedia.org/wiki/Formal_language Young Won Lim Regular Language (3A) 4 6/9/18 Formal Language A formal language (formation rule) is often defined by means of a formal grammar such as a regular grammar or context-free grammar, https://en.wikipedia.org/wiki/Formal_language Young Won Lim Regular Language (3A) 5 6/9/18 Formal Language and Natural Language The field of formal language theory studies primarily the purely syntactical aspects of such languages— that is, their internal structural patterns.
    [Show full text]