Computational Duality and the Sequent Calculus
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
GHC Reading Guide
GHC Reading Guide - Exploring entrances and mental models to the source code - Takenobu T. Rev. 0.01.1 WIP NOTE: - This is not an official document by the ghc development team. - Please refer to the official documents in detail. - Don't forget “semantics”. It's very important. - This is written for ghc 9.0. Contents Introduction 1. Compiler - Compilation pipeline - Each pipeline stages - Intermediate language syntax - Call graph 2. Runtime system 3. Core libraries Appendix References Introduction Introduction Official resources are here GHC source repository : The GHC Commentary (for developers) : https://gitlab.haskell.org/ghc/ghc https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary GHC Documentation (for users) : * master HEAD https://ghc.gitlab.haskell.org/ghc/doc/ * latest major release https://downloads.haskell.org/~ghc/latest/docs/html/ * version specified https://downloads.haskell.org/~ghc/9.0.1/docs/html/ The User's Guide Core Libraries GHC API Introduction The GHC = Compiler + Runtime System (RTS) + Core Libraries Haskell source (.hs) GHC compiler RuntimeSystem Core Libraries object (.o) (libHsRts.o) (GHC.Base, ...) Linker Executable binary including the RTS (* static link case) Introduction Each division is located in the GHC source tree GHC source repository : https://gitlab.haskell.org/ghc/ghc compiler/ ... compiler sources rts/ ... runtime system sources libraries/ ... core library sources ghc/ ... compiler main includes/ ... include files testsuite/ ... test suites nofib/ ... performance tests mk/ ... build system hadrian/ ... hadrian build system docs/ ... documents : : 1. Compiler 1. Compiler Compilation pipeline 1. compiler The GHC compiler Haskell language GHC compiler Assembly language (native or llvm) 1. compiler GHC compiler comprises pipeline stages GHC compiler Haskell language Parser Renamer Type checker Desugarer Core to Core Core to STG STG to Cmm Assembly language Cmm to Asm (native or llvm) 1. -
Sequent Calculus and the Specification of Computation
Sequent Calculus and the Specification of Computation Lecture Notes Draft: 5 September 2001 These notes are being used with lectures for CSE 597 at Penn State in Fall 2001. These notes had been prepared to accompany lectures given at the Marktoberdorf Summer School, 29 July – 10 August 1997 for a course titled “Proof Theoretic Specification of Computation”. An earlier draft was used in courses given between 27 January and 11 February 1997 at the University of Siena and between 6 and 21 March 1997 at the University of Genoa. A version of these notes was also used at Penn State for CSE 522 in Fall 2000. For the most recent version of these notes, contact the author. °c Dale Miller 321 Pond Lab Computer Science and Engineering Department The Pennsylvania State University University Park, PA 16802-6106 USA Office: +(814)865-9505 [email protected] http://www.cse.psu.edu/»dale Contents 1 Overview and Motivation 5 1.1 Roles for logic in the specification of computations . 5 1.2 Desiderata for declarative programming . 6 1.3 Relating algorithm and logic . 6 2 First-Order Logic 8 2.1 Types and signatures . 8 2.2 First-order terms and formulas . 8 2.3 Sequent calculus . 10 2.4 Classical, intuitionistic, and minimal logics . 10 2.5 Permutations of inference rules . 12 2.6 Cut-elimination . 12 2.7 Consequences of cut-elimination . 13 2.8 Additional readings . 13 2.9 Exercises . 13 3 Logic Programming Considered Abstractly 15 3.1 Problems with proof search . 15 3.2 Interpretation as goal-directed search . -
Chapter 1 Preliminaries
Chapter 1 Preliminaries 1.1 First-order theories In this section we recall some basic definitions and facts about first-order theories. Most proofs are postponed to the end of the chapter, as exercises for the reader. 1.1.1 Definitions Definition 1.1 (First-order theory) —A first-order theory T is defined by: A first-order language L , whose terms (notation: t, u, etc.) and formulas (notation: φ, • ψ, etc.) are constructed from a fixed set of function symbols (notation: f , g, h, etc.) and of predicate symbols (notation: P, Q, R, etc.) using the following grammar: Terms t ::= x f (t1,..., tk) | Formulas φ, ψ ::= t1 = t2 P(t1,..., tk) φ | | > | ⊥ | ¬ φ ψ φ ψ φ ψ x φ x φ | ⇒ | ∧ | ∨ | ∀ | ∃ (assuming that each use of a function symbol f or of a predicate symbol P matches its arity). As usual, we call a constant symbol any function symbol of arity 0. A set of closed formulas of the language L , written Ax(T ), whose elements are called • the axioms of the theory T . Given a closed formula φ of the language of T , we say that φ is derivable in T —or that φ is a theorem of T —and write T φ when there are finitely many axioms φ , . , φ Ax(T ) such ` 1 n ∈ that the sequent φ , . , φ φ (or the formula φ φ φ) is derivable in a deduction 1 n ` 1 ∧ · · · ∧ n ⇒ system for classical logic. The set of all theorems of T is written Th(T ). Conventions 1.2 (1) In this course, we only work with first-order theories with equality. -
Theorem Proving in Classical Logic
MEng Individual Project Imperial College London Department of Computing Theorem Proving in Classical Logic Supervisor: Dr. Steffen van Bakel Author: David Davies Second Marker: Dr. Nicolas Wu June 16, 2021 Abstract It is well known that functional programming and logic are deeply intertwined. This has led to many systems capable of expressing both propositional and first order logic, that also operate as well-typed programs. What currently ties popular theorem provers together is their basis in intuitionistic logic, where one cannot prove the law of the excluded middle, ‘A A’ – that any proposition is either true or false. In classical logic this notion is provable, and the_: corresponding programs turn out to be those with control operators. In this report, we explore and expand upon the research about calculi that correspond with classical logic; and the problems that occur for those relating to first order logic. To see how these calculi behave in practice, we develop and implement functional languages for propositional and first order logic, expressing classical calculi in the setting of a theorem prover, much like Agda and Coq. In the first order language, users are able to define inductive data and record types; importantly, they are able to write computable programs that have a correspondence with classical propositions. Acknowledgements I would like to thank Steffen van Bakel, my supervisor, for his support throughout this project and helping find a topic of study based on my interests, for which I am incredibly grateful. His insight and advice have been invaluable. I would also like to thank my second marker, Nicolas Wu, for introducing me to the world of dependent types, and suggesting useful resources that have aided me greatly during this report. -
Propositional Calculus
CSC 438F/2404F Notes Winter, 2014 S. Cook REFERENCES The first two references have especially influenced these notes and are cited from time to time: [Buss] Samuel Buss: Chapter I: An introduction to proof theory, in Handbook of Proof Theory, Samuel Buss Ed., Elsevier, 1998, pp1-78. [B&M] John Bell and Moshe Machover: A Course in Mathematical Logic. North- Holland, 1977. Other logic texts: The first is more elementary and readable. [Enderton] Herbert Enderton: A Mathematical Introduction to Logic. Academic Press, 1972. [Mendelson] E. Mendelson: Introduction to Mathematical Logic. Wadsworth & Brooks/Cole, 1987. Computability text: [Sipser] Michael Sipser: Introduction to the Theory of Computation. PWS, 1997. [DSW] M. Davis, R. Sigal, and E. Weyuker: Computability, Complexity and Lan- guages: Fundamentals of Theoretical Computer Science. Academic Press, 1994. Propositional Calculus Throughout our treatment of formal logic it is important to distinguish between syntax and semantics. Syntax is concerned with the structure of strings of symbols (e.g. formulas and formal proofs), and rules for manipulating them, without regard to their meaning. Semantics is concerned with their meaning. 1 Syntax Formulas are certain strings of symbols as specified below. In this chapter we use formula to mean propositional formula. Later the meaning of formula will be extended to first-order formula. (Propositional) formulas are built from atoms P1;P2;P3;:::, the unary connective :, the binary connectives ^; _; and parentheses (,). (The symbols :; ^ and _ are read \not", \and" and \or", respectively.) We use P; Q; R; ::: to stand for atoms. Formulas are defined recursively as follows: Definition of Propositional Formula 1) Any atom P is a formula. -
Focusing in Linear Meta-Logic: Extended Report Vivek Nigam, Dale Miller
Focusing in linear meta-logic: extended report Vivek Nigam, Dale Miller To cite this version: Vivek Nigam, Dale Miller. Focusing in linear meta-logic: extended report. [Research Report] Maybe this file need a better style. Specially the proofs., 2008. inria-00281631 HAL Id: inria-00281631 https://hal.inria.fr/inria-00281631 Submitted on 24 May 2008 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Focusing in linear meta-logic: extended report Vivek Nigam and Dale Miller INRIA & LIX/Ecole´ Polytechnique, Palaiseau, France nigam at lix.polytechnique.fr dale.miller at inria.fr May 24, 2008 Abstract. It is well known how to use an intuitionistic meta-logic to specify natural deduction systems. It is also possible to use linear logic as a meta-logic for the specification of a variety of sequent calculus proof systems. Here, we show that if we adopt different focusing annotations for such linear logic specifications, a range of other proof systems can also be specified. In particular, we show that natural deduction (normal and non-normal), sequent proofs (with and without cut), tableaux, and proof systems using general elimination and general introduction rules can all be derived from essentially the same linear logic specification by altering focusing annotations. -
On Synthetic Undecidability in Coq, with an Application to the Entscheidungsproblem
On Synthetic Undecidability in Coq, with an Application to the Entscheidungsproblem Yannick Forster Dominik Kirst Gert Smolka Saarland University Saarland University Saarland University Saarbrücken, Germany Saarbrücken, Germany Saarbrücken, Germany [email protected] [email protected] [email protected] Abstract like decidability, enumerability, and reductions are avail- We formalise the computational undecidability of validity, able without reference to a concrete model of computation satisfiability, and provability of first-order formulas follow- such as Turing machines, general recursive functions, or ing a synthetic approach based on the computation native the λ-calculus. For instance, representing a given decision to Coq’s constructive type theory. Concretely, we consider problem by a predicate p on a type X, a function f : X ! B Tarski and Kripke semantics as well as classical and intu- with 8x: p x $ f x = tt is a decision procedure, a function itionistic natural deduction systems and provide compact д : N ! X with 8x: p x $ ¹9n: д n = xº is an enumer- many-one reductions from the Post correspondence prob- ation, and a function h : X ! Y with 8x: p x $ q ¹h xº lem (PCP). Moreover, developing a basic framework for syn- for a predicate q on a type Y is a many-one reduction from thetic computability theory in Coq, we formalise standard p to q. Working formally with concrete models instead is results concerning decidability, enumerability, and reducibil- cumbersome, given that every defined procedure needs to ity without reference to a concrete model of computation. be shown representable by a concrete entity of the model. -
Haskell-Like S-Expression-Based Language Designed for an IDE
Department of Computing Imperial College London MEng Individual Project Haskell-Like S-Expression-Based Language Designed for an IDE Author: Supervisor: Michal Srb Prof. Susan Eisenbach June 2015 Abstract The state of the programmers’ toolbox is abysmal. Although substantial effort is put into the development of powerful integrated development environments (IDEs), their features often lack capabilities desired by programmers and target primarily classical object oriented languages. This report documents the results of designing a modern programming language with its IDE in mind. We introduce a new statically typed functional language with strong metaprogramming capabilities, targeting JavaScript, the most popular runtime of today; and its accompanying browser-based IDE. We demonstrate the advantages resulting from designing both the language and its IDE at the same time and evaluate the resulting environment by employing it to solve a variety of nontrivial programming tasks. Our results demonstrate that programmers can greatly benefit from the combined application of modern approaches to programming tools. I would like to express my sincere gratitude to Susan, Sophia and Tristan for their invaluable feedback on this project, my family, my parents Michal and Jana and my grandmothers Hana and Jaroslava for supporting me throughout my studies, and to all my friends, especially to Harry whom I met at the interview day and seem to not be able to get rid of ever since. ii Contents Abstract i Contents iii 1 Introduction 1 1.1 Objectives ........................................ 2 1.2 Challenges ........................................ 3 1.3 Contributions ...................................... 4 2 State of the Art 6 2.1 Languages ........................................ 6 2.1.1 Haskell .................................... -
The Sequent Calculus
Chapter udf The Sequent Calculus This chapter presents Gentzen's standard sequent calculus LK for clas- sical first-order logic. It could use more examples and exercises. To include or exclude material relevant to the sequent calculus as a proof system, use the \prfLK" tag. seq.1 Rules and Derivations fol:seq:rul: For the following, let Γ; ∆, Π; Λ represent finite sequences of sentences. sec Definition seq.1 (Sequent). A sequent is an expression of the form Γ ) ∆ where Γ and ∆ are finite (possibly empty) sequences of sentences of the lan- guage L. Γ is called the antecedent, while ∆ is the succedent. The intuitive idea behind a sequent is: if all of the sentences in the an- explanation tecedent hold, then at least one of the sentences in the succedent holds. That is, if Γ = h'1;:::;'mi and ∆ = h 1; : : : ; ni, then Γ ) ∆ holds iff ('1 ^ · · · ^ 'm) ! ( 1 _···_ n) holds. There are two special cases: where Γ is empty and when ∆ is empty. When Γ is empty, i.e., m = 0, ) ∆ holds iff 1 _···_ n holds. When ∆ is empty, i.e., n = 0, Γ ) holds iff :('1 ^ · · · ^ 'm) does. We say a sequent is valid iff the corresponding sentence is valid. If Γ is a sequence of sentences, we write Γ; ' for the result of appending ' to the right end of Γ (and '; Γ for the result of appending ' to the left end of Γ ). If ∆ is a sequence of sentences also, then Γ; ∆ is the concatenation of the two sequences. 1 Definition seq.2 (Initial Sequent). -
Sequent Calculus for Predicate Logic
CHAPTER 13 Sequent calculus for predicate logic 1. Classical sequent calculus The axioms and rules of the classical sequent calculus are: Γ;' ) ∆;' for atomic ' Axioms Γ; ?) ∆ Left Right ^ Γ,α1,α2)∆ Γ)β1;∆ Γ)β2;∆ Γ,α1^α2)∆ Γ)β1^β2;∆ Γ,β1)∆ Γ,β2)∆ Γ)α1,α2;∆ _ Γ,β1_β2)∆ Γ)α1_α2;∆ ! Γ)∆,β1 Γ,β2)∆ Γ,α1)α2;∆ Γ,β1!β2)∆ Γ)α1!α2;∆ Γ;'[t=x])∆ Γ)∆;'[y=x] 8 Γ;8x ')∆ Γ)∆;8x ' Γ;'[y=x])∆ Γ)∆;'[t=x] 9 Γ;9x ')∆ Γ)∆;9x ' The side condition in 9L and 8R is that the variable y may not occur in Γ; ∆ or ' (this variable is sometimes called an eigenvariable). In addition, we have the following cut rule: Γ ) '; ∆ Γ;' ) ∆ Γ ) ∆ We outline a proof of cut elimination. First a definition: Definition 1.1. The logical depth dp(') of a formula is defined inductively as follows: the logical depth of an atomic formula is 0, while the logical depth of ' is max(dp('); dp( ))+1. Finally, the logical depth of 8x ' or 9x ' is dp(') + 1. The rank rk(') of a formula ' will be defined as dp(') + 1. If there is an application of the cut rule Γ ) '; ∆ Γ;' ) ∆ ; Γ ) ∆ then we call ' a cut formula. If π is a derivation, then we define its cut rank to be 0, if it contains no cut formulas (i.e., is cut free). If, on the other hand, it contains applications of the 1 2 13. SEQUENT CALCULUS FOR PREDICATE LOGIC cut rule, then we define the cut rank of π to be the rank of any cut formula in π which has greatest possible rank. -
A Formal Methodology for Deriving Purely Functional Programs from Z Specifications Via the Intermediate Specification Language Funz
Louisiana State University LSU Digital Commons LSU Historical Dissertations and Theses Graduate School 1995 A Formal Methodology for Deriving Purely Functional Programs From Z Specifications via the Intermediate Specification Language FunZ. Linda Bostwick Sherrell Louisiana State University and Agricultural & Mechanical College Follow this and additional works at: https://digitalcommons.lsu.edu/gradschool_disstheses Recommended Citation Sherrell, Linda Bostwick, "A Formal Methodology for Deriving Purely Functional Programs From Z Specifications via the Intermediate Specification Language FunZ." (1995). LSU Historical Dissertations and Theses. 5981. https://digitalcommons.lsu.edu/gradschool_disstheses/5981 This Dissertation is brought to you for free and open access by the Graduate School at LSU Digital Commons. It has been accepted for inclusion in LSU Historical Dissertations and Theses by an authorized administrator of LSU Digital Commons. For more information, please contact [email protected]. INFORMATION TO USERS This manuscript has been reproduced from the microfilm master. UMI films the text directly from the original or copy submitted. Thus, some thesis and dissertation copies are in typewriter face, while others may be from any type of computer printer. H ie quality of this reproduction is dependent upon the quality of the copy submitted. Broken or indistinct print, colored or poor quality illustrations and photographs, print bleedthrough, substandardm argins, and improper alignment can adversely affect reproduction. In the unlikely, event that the author did not send UMI a complete manuscript and there are missing pages, these will be noted. Also, if unauthorized copyright material had to be removed, a note will indicate the deletion. Oversize materials (e.g., maps, drawings, charts) are reproduced by sectioning the original, beginning at the upper left-hand comer and continuing from left to right in equal sections with small overlaps. -
The Logic of Demand in Haskell
Under consideration for publication in J. Functional Programming 1 The Logic of Demand in Haskell WILLIAM L. HARRISON Department of Computer Science University of Missouri Columbia, Missouri RICHARD B. KIEBURTZ Pacific Software Research Center OGI School of Science & Engineering Oregon Health & Science University Abstract Haskell is a functional programming language whose evaluation is lazy by default. However, Haskell also provides pattern matching facilities which add a modicum of eagerness to its otherwise lazy default evaluation. This mixed or “non-strict” semantics can be quite difficult to reason with. This paper introduces a programming logic, P-logic, which neatly formalizes the mixed evaluation in Haskell pattern-matching as a logic, thereby simplifying the task of specifying and verifying Haskell programs. In P-logic, aspects of demand are reflected or represented within both the predicate language and its model theory, allowing for expressive and comprehensible program verification. 1 Introduction Although Haskell is known as a lazy functional language because of its default eval- uation strategy, it contains a number of language constructs that force exceptions to that strategy. Among these features are pattern-matching, data type strictness annotations and the seq primitive. The semantics of pattern-matching are further enriched by irrefutable pattern annotations, which may be embedded within pat- terns. The interaction between Haskell’s default lazy evaluation and its pattern- matching is surprisingly complicated. Although it offers the programmer a facility for fine control of demand (Harrison et al., 2002), it is perhaps the aspect of the Haskell language least well understood by its community of users. In this paper, we characterize the control of demand first in a denotational semantics and then in a verification logic called “P-logic”.