On the Semantics of Intensionality and Intensional Recursion
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Functional Programming Is Style of Programming in Which the Basic Method of Computation Is the Application of Functions to Arguments;
PROGRAMMING IN HASKELL Chapter 1 - Introduction 0 What is a Functional Language? Opinions differ, and it is difficult to give a precise definition, but generally speaking: • Functional programming is style of programming in which the basic method of computation is the application of functions to arguments; • A functional language is one that supports and encourages the functional style. 1 Example Summing the integers 1 to 10 in Java: int total = 0; for (int i = 1; i 10; i++) total = total + i; The computation method is variable assignment. 2 Example Summing the integers 1 to 10 in Haskell: sum [1..10] The computation method is function application. 3 Historical Background 1930s: Alonzo Church develops the lambda calculus, a simple but powerful theory of functions. 4 Historical Background 1950s: John McCarthy develops Lisp, the first functional language, with some influences from the lambda calculus, but retaining variable assignments. 5 Historical Background 1960s: Peter Landin develops ISWIM, the first pure functional language, based strongly on the lambda calculus, with no assignments. 6 Historical Background 1970s: John Backus develops FP, a functional language that emphasizes higher-order functions and reasoning about programs. 7 Historical Background 1970s: Robin Milner and others develop ML, the first modern functional language, which introduced type inference and polymorphic types. 8 Historical Background 1970s - 1980s: David Turner develops a number of lazy functional languages, culminating in the Miranda system. 9 Historical Background 1987: An international committee starts the development of Haskell, a standard lazy functional language. 10 Historical Background 1990s: Phil Wadler and others develop type classes and monads, two of the main innovations of Haskell. -
The Machine That Builds Itself: How the Strengths of Lisp Family
Khomtchouk et al. OPINION NOTE The Machine that Builds Itself: How the Strengths of Lisp Family Languages Facilitate Building Complex and Flexible Bioinformatic Models Bohdan B. Khomtchouk1*, Edmund Weitz2 and Claes Wahlestedt1 *Correspondence: [email protected] Abstract 1Center for Therapeutic Innovation and Department of We address the need for expanding the presence of the Lisp family of Psychiatry and Behavioral programming languages in bioinformatics and computational biology research. Sciences, University of Miami Languages of this family, like Common Lisp, Scheme, or Clojure, facilitate the Miller School of Medicine, 1120 NW 14th ST, Miami, FL, USA creation of powerful and flexible software models that are required for complex 33136 and rapidly evolving domains like biology. We will point out several important key Full list of author information is features that distinguish languages of the Lisp family from other programming available at the end of the article languages and we will explain how these features can aid researchers in becoming more productive and creating better code. We will also show how these features make these languages ideal tools for artificial intelligence and machine learning applications. We will specifically stress the advantages of domain-specific languages (DSL): languages which are specialized to a particular area and thus not only facilitate easier research problem formulation, but also aid in the establishment of standards and best programming practices as applied to the specific research field at hand. DSLs are particularly easy to build in Common Lisp, the most comprehensive Lisp dialect, which is commonly referred to as the “programmable programming language.” We are convinced that Lisp grants programmers unprecedented power to build increasingly sophisticated artificial intelligence systems that may ultimately transform machine learning and AI research in bioinformatics and computational biology. -
Comparative Studies of Programming Languages; Course Lecture Notes
Comparative Studies of Programming Languages, COMP6411 Lecture Notes, Revision 1.9 Joey Paquet Serguei A. Mokhov (Eds.) August 5, 2010 arXiv:1007.2123v6 [cs.PL] 4 Aug 2010 2 Preface Lecture notes for the Comparative Studies of Programming Languages course, COMP6411, taught at the Department of Computer Science and Software Engineering, Faculty of Engineering and Computer Science, Concordia University, Montreal, QC, Canada. These notes include a compiled book of primarily related articles from the Wikipedia, the Free Encyclopedia [24], as well as Comparative Programming Languages book [7] and other resources, including our own. The original notes were compiled by Dr. Paquet [14] 3 4 Contents 1 Brief History and Genealogy of Programming Languages 7 1.1 Introduction . 7 1.1.1 Subreferences . 7 1.2 History . 7 1.2.1 Pre-computer era . 7 1.2.2 Subreferences . 8 1.2.3 Early computer era . 8 1.2.4 Subreferences . 8 1.2.5 Modern/Structured programming languages . 9 1.3 References . 19 2 Programming Paradigms 21 2.1 Introduction . 21 2.2 History . 21 2.2.1 Low-level: binary, assembly . 21 2.2.2 Procedural programming . 22 2.2.3 Object-oriented programming . 23 2.2.4 Declarative programming . 27 3 Program Evaluation 33 3.1 Program analysis and translation phases . 33 3.1.1 Front end . 33 3.1.2 Back end . 34 3.2 Compilation vs. interpretation . 34 3.2.1 Compilation . 34 3.2.2 Interpretation . 36 3.2.3 Subreferences . 37 3.3 Type System . 38 3.3.1 Type checking . 38 3.4 Memory management . -
From JSON to JSEN Through Virtual Languages of the Creative Commons Attribution License (
© 2021 by the authors; licensee RonPub, Lübeck, Germany. This article is an open access article distributed under the terms and conditions A.of Ceravola, the Creative F. Joublin:Commons From Attribution JSON to license JSEN through(http://c reativecommons.org/licenses/by/4Virtual Languages .0/). Open Access Open Journal of Web Technology (OJWT) Volume 8, Issue 1, 2021 www.ronpub.com/ojwt ISSN 2199-188X From JSON to JSEN through Virtual Languages Antonello Ceravola, Frank Joublin Honda Research Institute Europe GmbH, Carl Legien Str. 30, Offenbach/Main, Germany, {Antonello.Ceravola, Frank.Joublin}@honda-ri.de ABSTRACT In this paper we describe a data format suitable for storing and manipulating executable language statements that can be used for exchanging/storing programs, executing them concurrently and extending homoiconicity of the hosting language. We call it JSEN, JavaScript Executable Notation, which represents the counterpart of JSON, JavaScript Object Notation. JSON and JSEN complement each other. The former is a data format for storing and representing objects and data, while the latter has been created for exchanging/storing/executing and manipulating statements of programs. The two formats, JSON and JSEN, share some common properties, reviewed in this paper with a more extensive analysis on what the JSEN data format can provide. JSEN extends homoiconicity of the hosting language (in our case JavaScript), giving the possibility to manipulate programs in a finer grain manner than what is currently possible. This property makes definition of virtual languages (or DSL) simple and straightforward. Moreover, JSEN provides a base for implementing a type of concurrent multitasking for a single-threaded language like JavaScript. -
The Semantics of Syntax Applying Denotational Semantics to Hygienic Macro Systems
The Semantics of Syntax Applying Denotational Semantics to Hygienic Macro Systems Neelakantan R. Krishnaswami University of Birmingham <[email protected]> 1. Introduction body of a macro definition do not interfere with names oc- Typically, when semanticists hear the words “Scheme” or curring in the macro’s arguments. Consider this definition of and “Lisp”, what comes to mind is “untyped lambda calculus a short-circuiting operator: plus higher-order state and first-class control”. Given our (define-syntax and typical concerns, this seems to be the essence of Scheme: it (syntax-rules () is a dynamically typed applied lambda calculus that sup- ((and e1 e2) (let ((tmp e1)) ports mutable data and exposes first-class continuations to (if tmp the programmer. These features expose a complete com- e2 putational substrate to programmers so elegant that it can tmp))))) even be characterized mathematically; every monadically- representable effect can be implemented with state and first- In this definition, even if the variable tmp occurs freely class control [4]. in e2, it will not be in the scope of the variable definition However, these days even mundane languages like Java in the body of the and macro. As a result, it is important to support higher-order functions and state. So from the point interpret the body of the macro not merely as a piece of raw of view of a working programmer, the most distinctive fea- syntax, but as an alpha-equivalence class. ture of Scheme is something quite different – its support for 2.2 Open Recursion macros. The intuitive explanation is that a macro is a way of defining rewrites on abstract syntax trees. -
Sprinkles of Extensionality for Your Vanilla Type Theory
Sprinkles of extensionality for your vanilla type theory Jesper Cockx1 and Andreas Abel2 1 DistriNet { KU Leuven 2 Department of Computer Science and Engineering { Gothenburg University Dependent types can make your developments (be they programs or proofs) dramatically safer by allowing you to prove that you implemented what you intended. Unfortunately, they can also make your developments dramatically more boring by requiring you to elaborate those proofs in often painstaking detail. For this reason, dependently typed languages typically allow you to cheat by postulating some facts as axioms. However, type theory is not just about which types are inhabited; it's about how things compute. Computationally, an axiom is a stuck term, so it prevents you from evaluating your programs. What if you could postulate not just axioms, but also arbitrary evaluation rules? 1. A typical frustration for people new to proof assistants like Agda or Coq is that 0 + x evaluates to x for arbitrary x, but x + 0 doesn't. Of course, a lemma for x + 0 = x is easy to prove, but having to appeal to this lemma explicitly in all subsequent uses is bothersome. By adding an evaluation rule x + 0 −! x, you can get the automatic application of this lemma. Similarly, you can add a rule x + suc y −! suc (x + y), or (x + y) + z −! x + (y + z). 2. Allais, McBride, and Boutillier[2013] present a series of evaluation rules of this type (which they call ν-rules) for functions on pairs and lists. For example, they have a rule for concatenating with an empty list (l ++ [] −! l), but also rules for simplifying expressions involving map and fold (e.g. -
Equivalents to the Axiom of Choice and Their Uses A
EQUIVALENTS TO THE AXIOM OF CHOICE AND THEIR USES A Thesis Presented to The Faculty of the Department of Mathematics California State University, Los Angeles In Partial Fulfillment of the Requirements for the Degree Master of Science in Mathematics By James Szufu Yang c 2015 James Szufu Yang ALL RIGHTS RESERVED ii The thesis of James Szufu Yang is approved. Mike Krebs, Ph.D. Kristin Webster, Ph.D. Michael Hoffman, Ph.D., Committee Chair Grant Fraser, Ph.D., Department Chair California State University, Los Angeles June 2015 iii ABSTRACT Equivalents to the Axiom of Choice and Their Uses By James Szufu Yang In set theory, the Axiom of Choice (AC) was formulated in 1904 by Ernst Zermelo. It is an addition to the older Zermelo-Fraenkel (ZF) set theory. We call it Zermelo-Fraenkel set theory with the Axiom of Choice and abbreviate it as ZFC. This paper starts with an introduction to the foundations of ZFC set the- ory, which includes the Zermelo-Fraenkel axioms, partially ordered sets (posets), the Cartesian product, the Axiom of Choice, and their related proofs. It then intro- duces several equivalent forms of the Axiom of Choice and proves that they are all equivalent. In the end, equivalents to the Axiom of Choice are used to prove a few fundamental theorems in set theory, linear analysis, and abstract algebra. This paper is concluded by a brief review of the work in it, followed by a few points of interest for further study in mathematics and/or set theory. iv ACKNOWLEDGMENTS Between the two department requirements to complete a master's degree in mathematics − the comprehensive exams and a thesis, I really wanted to experience doing a research and writing a serious academic paper. -
A Rewrite System for Elimination of the Functional Extensionality and Univalence Axioms
A Rewrite System for Elimination of the Functional Extensionality and Univalence Axioms Raphaël Cauderlier Abstract We explore the adaptation of the ideas that we developed for automatic elimination of classical axioms [5] to extensionality axioms in Type Theory. Extensionality axioms are added to Type Theory when we lack a way to prove equality between two indistinguishable objects. These indistinguishable objects might be logically-equivalent propo- sitions, pointwise equal functions, pointwise equivalent predicates, or equivalent (isomorphic) types leading to the various following extensionality axioms: Propositional extensionality: PE :ΠP; Q : Prop: (P , Q) ! P =Prop Q Non-dependent functional extensionality: NFE :ΠA; B : U: Πf; g :(A ! B): (Πa : A: f a =B g a) ! f =A!B g Dependent functional extensionality: DF E :ΠA : U: ΠB :(A ! U): Πf; g : (Πa : A ! B(a)): (Πa : A: f a =B(a) g a) ! f =Πa:A: B(a) g Predicate extensionality: P redE :ΠA : U: ΠP; Q :(A ! Prop): (Πa : A: P a , Q a) ! P =A!Prop Q Set extensionality: SetE :ΠA : U: ΠX; Y : set(A): (Πa : A: a 2 X , a 2 Y ) ! X =set(A) Y Univalence: let idtoeqv be the canonical function of type ΠA; B : U: (A =U B) ! (A ≈ B), for all types A; B : U, idtoeqv AB is an equivalence between the types A =U B and A ≈ B. In these axiom statements, the symbol =A denotes equality between two terms of type A, set(A) is type of the sets of elements of A, 2 is the set membership relation, U is a universe and ' is the equivalence relation over types in U. -
The Axiom of Choice and the Law of Excluded Middle in Weak Set Theories
The Axiom of Choice and the Law of Excluded Middle in Weak Set Theories John L. Bell Department of Philosophy, University of Western Ontario In constructive mathematics the axiom of choice (AC) has a somewhat ambiguous status. On the one hand, in intuitionistic set theory, or the local set theory associated with a topos ([2]) it can be shown to entail the law of excluded middle (LEM) ([ 3 ], [ 5 ]). On the other hand, under the “propositions-as types” interpretation which lies at the heart of constructive predicative type theories such as that of Martin-Löf [9], the axiom of choice is actually derivable (see, e.g. [11] ), and so certainly cannot entail the law of excluded middle. This incongruity has been the subject of a number of recent investigations, for example [6], [7], [9], [12]. What has emerged is that for the derivation of LEM from AC to go through it is sufficient that sets (in particular power sets), or functions, have a degree of extensionality which is, so to speak, built into the usual set theories but is incompatible with constructive type theories Another condition, independent of extensionality, ensuring that the derivation goes through is that any equivalence relation determines a quotient set. LEM can also be shown to follow from a suitably extensionalized version of AC. The arguments establishing these intriguing results have mostly been formulated within a type-theoretic framework. It is my purpose here to formulate and derive analogous results within a comparatively straightforward set-theoretic framework. The core principles of this framework form a theory – weak set theory WST – which lacks the axiom of extensionality1 and supports only minimal set-theoretic constructions. -
Star TEX: the Next Generation Several Ideas on How to Modernize TEX Already Exist
TUGboat, Volume 33 (2012), No. 2 199 Star TEX: The Next Generation Several ideas on how to modernize TEX already exist. Some of them have actually been implemented. Didier Verna In this paper, we present ours. The possible future Abstract that we would like to see happening for TEX is some- what different from the current direction(s) TEX's While T X is unanimously praised for its typesetting E evolution has been following. In our view, modern- capabilities, it is also regularly blamed for its poor izing TEX can start with grounding it in an old yet programmatic offerings. A macro-expansion system very modern programming language: Common Lisp. is indeed far from the best choice in terms of general- Section 2 clarifies what our notion of a \better", or purpose programming. Several solutions have been \more modern" TEX is. Section 3 on the next page proposed to modernize T X on the programming E presents several approaches sharing a similar goal. side. All of them currently involve a heterogeneous Section 4 on the following page justifies the choice approach in which T X is mixed with a full-blown pro- E of Common Lisp. Finally, section 5 on page 205 gramming language. This paper advocates another, outlines the projected final shape of the project. homogeneous approach in which TEX is first rewrit- ten in a modern language, Common Lisp, which 2 A better TEX serves both at the core of the program and at the The T X community has this particularity of being scripting level. All programmatic macros of T X are E E a mix of two populations: people coming from the hence rendered obsolete, as the underlying language world of typography, who love it for its beautiful itself can be used for user-level programming. -
Does Universalism Entail Extensionalism?
NOUSˆ 00:00 (2014) 1–12 doi: 10.1111/nous.12063 Does Universalism Entail Extensionalism? A. J. COTNOIR University of St Andrews Abstract Does a commitment to mereological universalism automatically bring along a commitment to the controversial doctrine of mereological extensionalism—the view that objects with the same proper parts are identical? A recent argument suggests the answer is ‘yes’. This paper attempts a systematic response to the argument, considering nearly every available line of reply. It argues that only one approach— the mutual parts view—can yield a viable mereology where universalism does not entail extensionalism. Here is an axiomatization of classical extensional mereology, where ‘<’ stands for the proper parthood relation, ‘≤’ stands for the parthood relation (i.e. ‘x ≤ y’ abbreviates ‘x < y ∨ x = y’), and ◦ for mereological overlap (i.e. ‘x ◦ y’abbreviates ‘∃z(z ≤ x ∧ z ≤ y)’). Transitivity (x < y ∧ y < z) → x < z Weak Supplementation x < y →∃z(z ≤ y ∧¬z ◦ x)) Unrestricted Fusion ∀xx∃y F(y, xx). Where fusions are defined via: Fusion F(t, xx):= xx ≤ t ∧∀y(y ≤ t → y ◦ xx)) To simplify notation, I use ‘xx ≤ y’ to mean that each x among xx is part of y; likewise ‘y ◦ xx’meansthaty overlaps some x among xx. It is worth noting that weak supplementation entails the remaining (strict) partial order axioms:1 Irreflexivity x < x Asymmetry x < y → y < x The definition of ≤ provides the corresponding weak partial order principles of reflexivity and antisymmetry. Listing these as separate axioms is unnecessary here; however, this will not be so in what follows. -
Extensionality Versus Constructivity∗
Extensionality versus Constructivity∗ Silvio Valentini Dipartimento di Matematica Pura ed Applicata Universit`adi Padova via G. Belzoni n.7, I–35131 Padova, Italy [email protected] May 13, 2000 Abstract We will analyze some extensions of Martin-L¨of’s constructive type theory by means of extensional set constructors and we will show that often the most natural requirements over them lead to classical logic or even to inconsistency. 1 Introduction The main purpose of the paper is to show that by adding extensional set- constructors to a constructive set theory like Martin-L¨of’s constructive type theory (see [ML84]) can lead to classical logic, or even to inconsistency, if a great attention is not used. The need for the addition of extensional set constructors to Martin-L¨of’s type theory appears immediately as soon as one tries to develop within such a framework a piece of actual mathematics, as we did with constructive topol- ogy (see the introductory sections in [CSSV]). For instance, one would like to be able to work with power-sets, in order to quantify on the elements of the collection of the subsets of a set, or with quotient-sets, in order to be able to construct in a straightforward way some well known sets, or, at least, with the collection of the finite subsets of a set, in order, for instance, to be able to express easily statements like Tychonoff’s theorem on the compactness of the product of compact spaces. Of course, the main point is to be able to deal with such constructions and still work in a set-theory with such a clear computational semantics as Martin- L¨of’s type theory has.