Recursive Definition: Chapter 6
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Structured Recursion for Non-Uniform Data-Types
Structured recursion for non-uniform data-types by Paul Alexander Blampied, B.Sc. Thesis submitted to the University of Nottingham for the degree of Doctor of Philosophy, March 2000 Contents Acknowledgements .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 1 Chapter 1. Introduction .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 2 1.1. Non-uniform data-types .. .. .. .. .. .. .. .. .. .. .. .. 3 1.2. Program calculation .. .. .. .. .. .. .. .. .. .. .. .. .. 10 1.3. Maps and folds in Squiggol .. .. .. .. .. .. .. .. .. .. .. 11 1.4. Related work .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 14 1.5. Purpose and contributions of this thesis .. .. .. .. .. .. .. 15 Chapter 2. Categorical data-types .. .. .. .. .. .. .. .. .. .. .. .. 18 2.1. Notation .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 19 2.2. Data-types as initial algebras .. .. .. .. .. .. .. .. .. .. 21 2.3. Parameterized data-types .. .. .. .. .. .. .. .. .. .. .. 29 2.4. Calculation properties of catamorphisms .. .. .. .. .. .. .. 33 2.5. Existence of initial algebras .. .. .. .. .. .. .. .. .. .. .. 37 2.6. Algebraic data-types in functional programming .. .. .. .. 57 2.7. Chapter summary .. .. .. .. .. .. .. .. .. .. .. .. .. 61 Chapter 3. Folding in functor categories .. .. .. .. .. .. .. .. .. .. 62 3.1. Natural transformations and functor categories .. .. .. .. .. 63 3.2. Initial algebras in functor categories .. .. .. .. .. .. .. .. 68 3.3. Examples and non-examples .. .. .. .. .. .. .. .. .. .. 77 3.4. Existence of initial algebras in functor categories .. .. .. .. 82 3.5. -
CS311H: Discrete Mathematics Recursive Definitions Recursive
Recursive Definitions CS311H: Discrete Mathematics I Should be familiar with recursive functions from programming: Recursive Definitions public int fact(int n) { if(n <= 1) return 1; return n * fact(n - 1); Instructor: I¸sıl Dillig } I Recursive definitions are also used in math for defining sets, functions, sequences etc. Instructor: I¸sıl Dillig, CS311H: Discrete Mathematics Recursive Definitions 1/18 Instructor: I¸sıl Dillig, CS311H: Discrete Mathematics Recursive Definitions 2/18 Recursive Definitions in Math Recursively Defined Functions I Consider the following sequence: I Just like sequences, functions can also be defined recursively 1, 3, 9, 27, 81,... I Example: I This sequence can be defined recursively as follows: f (0) = 3 f (n + 1) = 2f (n) + 3 (n 1) a0 = 1 ≥ an = 3 an 1 · − I What is f (1)? I First part called base case; second part called recursive step I What is f (2)? I Very similar to induction; in fact, recursive definitions I What is f (3)? sometimes also called inductive definitions Instructor: I¸sıl Dillig, CS311H: Discrete Mathematics Recursive Definitions 3/18 Instructor: I¸sıl Dillig, CS311H: Discrete Mathematics Recursive Definitions 4/18 Recursive Definition Examples Recursive Definitions of Important Functions I Some important functions/sequences defined recursively I Consider f (n) = 2n + 1 where n is non-negative integer I Factorial function: I What’s a recursive definition for f ? f (1) = 1 f (n) = n f (n 1) (n 2) · − ≥ I Consider the sequence 1, 4, 9, 16,... I Fibonacci numbers: 1, 1, 2, 3, 5, 8, 13, 21,... I What is a recursive -
Chapter 3 Induction and Recursion
Chapter 3 Induction and Recursion 3.1 Induction: An informal introduction This section is intended as a somewhat informal introduction to The Principle of Mathematical Induction (PMI): a theorem that establishes the validity of the proof method which goes by the same name. There is a particular format for writing the proofs which makes it clear that PMI is being used. We will not explicitly use this format when introducing the method, but will do so for the large number of different examples given later. Suppose you are given a large supply of L-shaped tiles as shown on the left of the figure below. The question you are asked to answer is whether these tiles can be used to exactly cover the squares of an 2n × 2n punctured grid { a 2n × 2n grid that has had one square cut out { say the 8 × 8 example shown in the right of the figure. 1 2 CHAPTER 3. INDUCTION AND RECURSION In order for this to be possible at all, the number of squares in the punctured grid has to be a multiple of three. It is. The number of squares is 2n2n − 1 = 22n − 1 = 4n − 1 ≡ 1n − 1 ≡ 0 (mod 3): But that does not mean we can tile the punctured grid. In order to get some traction on what to do, let's try some small examples. The tiling is easy to find if n = 1 because 2 × 2 punctured grid is exactly covered by one tile. Let's try n = 2, so that our punctured grid is 4 × 4. -
Recursive Definitions and Structural Induction 1 Recursive Definitions
Massachusetts Institute of Technology Course Notes 6 6.042J/18.062J, Fall ’02: Mathematics for Computer Science Professor Albert Meyer and Dr. Radhika Nagpal Recursive Definitions and Structural Induction 1 Recursive Definitions Recursive definitions say how to build something from a simpler version of the same thing. They have two parts: • Base case(s) that don’t depend on anything else. • Combination case(s) that depend on simpler cases. Here are some examples of recursive definitions: Example 1.1. Define a set, E, recursively as follows: 1. 0 E, 2 2. if n E, then n + 2 E, 2 2 3. if n E, then n E. 2 − 2 Using this definition, we can see that since 0 E by 1., it follows from 2. that 0 + 2 = 2 E, and 2 2 so 2 + 2 = 4 E, 4 + 2 = 6 E, : : : , and in fact any nonegative even number is in E. Also, by 3., 2 2 2; 4; 6; E. − − − · · · 2 Is anything else in E? The definition doesn’t say so explicitly, but an implicit condition on a recursive definition is that the only way things get into E is as a consequence of 1., 2., and 3. So clearly E is exactly the set of even integers. Example 1.2. Define a set, S, of strings of a’s and b’s recursively as follows: 1. λ S, where λ is the empty string, 2 2. if x S, then axb S, 2 2 3. if x S, then bxa S, 2 2 4. if x; y S, then xy S. -
Binary Search Trees
Introduction Recursive data types Binary Trees Binary Search Trees Organizing information Sum-of-Product data types Theory of Programming Languages Computer Science Department Wellesley College Introduction Recursive data types Binary Trees Binary Search Trees Table of contents Introduction Recursive data types Binary Trees Binary Search Trees Introduction Recursive data types Binary Trees Binary Search Trees Sum-of-product data types Every general-purpose programming language must allow the • processing of values with different structure that are nevertheless considered to have the same “type”. For example, in the processing of simple geometric figures, we • want a notion of a “figure type” that includes circles with a radius, rectangles with a width and height, and triangles with three sides: The name in the oval is a tag that indicates which kind of • figure the value is, and the branches leading down from the oval indicate the components of the value. Such types are known as sum-of-product data types because they consist of a sum of tagged types, each of which holds on to a product of components. Introduction Recursive data types Binary Trees Binary Search Trees Declaring the new figure type in Ocaml In Ocaml we can declare a new figure type that represents these sorts of geometric figures as follows: type figure = Circ of float (* radius *) | Rect of float * float (* width, height *) | Tri of float * float * float (* side1, side2, side3 *) Such a declaration is known as a data type declaration. It consists of a series of |-separated clauses of the form constructor-name of component-types, where constructor-name must be capitalized. -
Recursive Type Generativity
Recursive Type Generativity Derek Dreyer Toyota Technological Institute at Chicago [email protected] Abstract 1. Introduction Existential types provide a simple and elegant foundation for un- Recursive modules are one of the most frequently requested exten- derstanding generative abstract data types, of the kind supported by sions to the ML languages. After all, the ability to have cyclic de- the Standard ML module system. However, in attempting to extend pendencies between different files is a feature that is commonplace ML with support for recursive modules, we have found that the tra- in mainstream languages like C and Java. To the novice program- ditional existential account of type generativity does not work well mer especially, it seems very strange that the ML module system in the presence of mutually recursive module definitions. The key should provide such powerful mechanisms for data abstraction and problem is that, in recursive modules, one may wish to define an code reuse as functors and translucent signatures, and yet not allow abstract type in a context where a name for the type already exists, mutually recursive functions and data types to be broken into sepa- but the existential type mechanism does not allow one to do so. rate modules. Certainly, for simple examples of recursive modules, We propose a novel account of recursive type generativity that it is difficult to convincingly argue why ML could not be extended resolves this problem. The basic idea is to separate the act of gener- in some ad hoc way to allow them. However, when one considers ating a name for an abstract type from the act of defining its under- the semantics of a general recursive module mechanism, one runs lying representation. -
Data Structures Are Ways to Organize Data (Informa- Tion). Examples
CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 1 ] What are Data Structures? Data structures are ways to organize data (informa- tion). Examples: simple variables — primitive types objects — collection of data items of various types arrays — collection of data items of the same type, stored contiguously linked lists — sequence of data items, each one points to the next one Typically, algorithms go with the data structures to manipulate the data (e.g., the methods of a class). This course will cover some more complicated data structures: how to implement them efficiently what they are good for CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 2 ] Abstract Data Types An abstract data type (ADT) defines a state of an object and operations that act on the object, possibly changing the state. Similar to a Java class. This course will cover specifications of several common ADTs pros and cons of different implementations of the ADTs (e.g., array or linked list? sorted or unsorted?) how the ADT can be used to solve other problems CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 3 ] Specific ADTs The ADTs to be studied (and some sample applica- tions) are: stack evaluate arithmetic expressions queue simulate complex systems, such as traffic general list AI systems, including the LISP language tree simple and fast sorting table database applications, with quick look-up CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 4 ] How Does C Fit In? Although data structures are universal (can be imple- mented in any programming language), this course will use Java and C: non-object-oriented parts of Java are based on C C is not object-oriented We will learn how to gain the advantages of data ab- straction and modularity in C, by using self-discipline to achieve what Java forces you to do. -
Arxiv:1410.2193V1 [Math.CO] 8 Oct 2014 There Are No Coincidences
There are no Coincidences Tanya Khovanova October 21, 2018 Abstract This paper is inspired by a seqfan post by Jeremy Gardiner. The post listed nine sequences with similar parities. In this paper I prove that the similarities are not a coincidence but a mathematical fact. 1 Introduction Do you use your Inbox as your implicit to-do list? I do. I delete spam and cute cats. I reply, if I can. I deal with emails related to my job. But sometimes I get a message that requires some thought or some serious time to process. It sits in my Inbox. There are 200 messages there now. This method creates a lot of stress. But this paper is not about stress management. Let me get back on track. I was trying to shrink this list and discovered an email I had completely forgotten about. The email was sent in December 2008 to the seqfan list by Jeremy Gardiner [1]. The email starts: arXiv:1410.2193v1 [math.CO] 8 Oct 2014 It strikes me as an interesting coincidence that the following se- quences appear to have the same underlying parity. Then he lists six sequences with the same parity: • A128975 The number of unordered three-heap P-positions in Nim. • A102393, A wicked evil sequence. • A029886, Convolution of the Thue-Morse sequence with itself. 1 • A092524, Binary representation of n interpreted in base p, where p is the smallest prime factor of n. • A104258, Replace 2i with ni in the binary representation of n. n • A061297, a(n)= Pr=0 lcm(n, n−1, n−2,...,n−r+1)/ lcm(1, 2, 3,...,r). -
Math 280 Incompleteness 1. Definability, Representability and Recursion
Math 280 Incompleteness 1. Definability, Representability and Recursion We will work with the language of arithmetic: 0_; S;_ +_ ; ·_; <_ . We will be sloppy and won't write dots. When we say \formula,"\satisfaction,"\proof,"everything will refer to this language. We will use the standard model of arithmetic N = (!; 0; S; +; ·; <). 1.1 Definition: (i) A bounded existential quantification is a quantification of the form (9z)(z < x ^ φ) which we will abbreviate by (9z < x)φ. (ii) A bounded universal quantification has the form (8z)(z < x ! φ) which we will abbreviate by (8z < x)φ. 1.2 Fact: The formulae (8z < x)φ $ :(9z < x):φ (9z < x)φ $ :(8z < x):φ are provable in predicate calculus. Proof: Exercise. 1.3 Definition: (i) A formula is bounded iff all definitions of this formula are bounded. We also say “Σ0"or “∆0"for bounded. (ii) A formula is Σn iff it has the form (9x1; :::; x1 )(8x2; :::; x2 )(9x3; :::; x3 ) ··· (Q(xn; :::; xn )) 1 l1 1 l2 1 l3 1 ln where is bounded. (iii) Πn formulae are defined dually. Here we start with a block of universal quantifiers. (iv) So Σn and Πn can be defined inductively: φ is Σn+1 iff φ has the form (9x1) ··· (9xl) where is Πn. Dually for Πn+1. 1.4 Definition: n A relation R(x1; :::; xn) ⊆ ( N) is Σl−definable iff R has a Σl−definition over N i.e. iff there is a Σl n formula φ(x1; :::; xl) such that for all a1; :::; an 2 ( N), R(a1; :::; an) iff N φ[a1; :::; an]: Similarly: R is Πl iff it has a Πl definition over N. -
Structural Induction 4.4 Recursive Algorithms
University of Hawaii ICS141: Discrete Mathematics for Computer Science I Dept. Information & Computer Sci., University of Hawaii Jan Stelovsky based on slides by Dr. Baek and Dr. Still Originals by Dr. M. P. Frank and Dr. J.L. Gross Provided by McGraw-Hill ICS 141: Discrete Mathematics I – Fall 2011 13-1 University of Hawaii Lecture 22 Chapter 4. Induction and Recursion 4.3 Recursive Definitions and Structural Induction 4.4 Recursive Algorithms ICS 141: Discrete Mathematics I – Fall 2011 13-2 University of Hawaii Review: Recursive Definitions n Recursion is the general term for the practice of defining an object in terms of itself or of part of itself. n In recursive definitions, we similarly define a function, a predicate, a set, or a more complex structure over an infinite domain (universe of discourse) by: n defining the function, predicate value, set membership, or structure of larger elements in terms of those of smaller ones. ICS 141: Discrete Mathematics I – Fall 2011 13-3 University of Hawaii Full Binary Trees n A special case of extended binary trees. n Recursive definition of full binary trees: n Basis step: A single node r is a full binary tree. n Note this is different from the extended binary tree base case. n Recursive step: If T1, T2 are disjoint full binary trees with roots r1 and r2, then {(r, r1), (r, r2)} ∪ T1 ∪ T2 is an full binary tree. ICS 141: Discrete Mathematics I – Fall 2011 13-4 University of Hawaii Building Up Full Binary Trees ICS 141: Discrete Mathematics I – Fall 2011 13-5 University of Hawaii Structural Induction n Proving something about a recursively defined object using an inductive proof whose structure mirrors the object’s definition. -
Chapt. 3.1 Recursive Definition
Chapt. 3.1 Recursive Definition Reading: 3.1 Next Class: 3.2 1 Motivations Proofs by induction allow to prove properties of infinite, partially ordered sets of objects. In many cases the order is only given implicitly and we have to find it and write it explicitly in terms of the indices. In the inductive step in these proofs we have to relate the property for one object to the ones of previous objects. This often involves defining P(n + 1) in terms of P(n). Recursive Definitions 1 2 Terminologies A sequence is a list of objects that are enumerated in some order. A set of objects is a collection of objects on which no ordering is imposed. Inductive Definition/Recursive Definition: a definition in which the item being defined appears as part of the definition. Two parts: a basis step and an inductive/recursive step. As in the case of mathematical induction, both parts are required to give a complete definition. Recursive Definitions 3 Recursive Sequences Definition: A sequence is defined recursively by explicitly naming the first value (or the first few values) in the sequence and then defining later values in the sequence in terms of earlier values. Many sequences are easier to define recursively: Examples: S(1) = 2 S(n) = 2S(n-1) for n 2 • Sequence S 2, 4, 8, 16, 32,…. Fibonacci Sequence F(1) = 1 F(2) = 1 F(n) = F(n-1) + F(n-2) for n > 2 • Sequence F 1, 1, 2, 3, 5, 8, 13,…. Recursive Definitions 2 4 Recursive Sequences (cont’d) T(1) = 1 T(n) = T(n-1) + 3 for n 2 • Sequence T 1, 4, 7, 10, 13,…. -
Recursive Type Generativity
JFP 17 (4 & 5): 433–471, 2007. c 2007 Cambridge University Press 433 doi:10.1017/S0956796807006429 Printed in the United Kingdom Recursive type generativity DEREK DREYER Toyota Technological Institute, Chicago, IL 60637, USA (e-mail: [email protected]) Abstract Existential types provide a simple and elegant foundation for understanding generative abstract data types of the kind supported by the Standard ML module system. However, in attempting to extend ML with support for recursive modules, we have found that the traditional existential account of type generativity does not work well in the presence of mutually recursive module definitions. The key problem is that, in recursive modules, one may wish to define an abstract type in a context where a name for the type already exists, but the existential type mechanism does not allow one to do so. We propose a novel account of recursive type generativity that resolves this problem. The basic idea is to separate the act of generating a name for an abstract type from the act of defining its underlying representation. To define several abstract types recursively, one may first “forward-declare” them by generating their names, and then supply each one’s identity secretly within its own defining expression. Intuitively, this can be viewed as a kind of backpatching semantics for recursion at the level of types. Care must be taken to ensure that a type name is not defined more than once, and that cycles do not arise among “transparent” type definitions. In contrast to the usual continuation-passing interpretation of existential types in terms of universal types, our account of type generativity suggests a destination-passing interpretation.