Processing lists in Prolog - 2
|
|
- Beryl Cameron
- 5 years ago
- Views:
Transcription
1 Processing lists in Prolog - 2 This lecture shows that techniques introduced before (analysing terminating conditions and recursive programming) can be used to develop more complex procedures.
2 This lecture is about: writing procedures with one or more terminating or recursive clauses; deleting one or all instances of an element from a list; The effects of matching v. unification; changing the order in which solutions are presented by changing clause order. 8 - Processing lists in Prolog: 2 1
3 Last time: Terminating at the end of the list For instance counting all elements: Terminates at the % 1 - terminating end of the list. count_elem([], Total, Total). % 2 - recursive count_elem([hd Tail], Sum, Total) :- Sum1 is Sum + 1, count_elem([hd Tail], Sum1, Total). 8 - Processing lists in Prolog: 2 2
4 Last time: Terminating when given element is found For instance finding a given element: % 1 - terminating elem(elem, [Elem _]). % 2 - recursive elem(elem, [_ Tail]) :- elem(elem, Tail). Terminates before the end of the list. Notice, this can be run backwards to enumerate the individual elements of a list. Demo1 8 - Processing lists in Prolog: 2 3
5 Last time: Terminating when given number of elements have been scanned % 1 recursive nth(count, Item, [_ Tail]) :- Count > 1, Count0 is Count - 1, nth(count0, Item, Tail). % 2 terminating nth(1, Head, [Head _]). The code counts down from the given position to 1. Demo2 8 - Processing lists in Prolog: 2 4
6 Consolidation moment Three main ways to halt recursion in list processing: 1. at the end of the list ([]); 2. when a specific element is found; 3. when a specific position in a list is reached. 8 - Processing lists in Prolog: 2 5
7 More than one recursive clause We ve seen an example with two recursive clauses: classify([], [], []). classify([head Tail], [Head Numbers], Atoms) :- number(head), classify(tail, Numbers, Atoms). classify([head Tail], Numbers, [Head Atoms]) :- atom(head), classify(tail, Numbers, Atoms). 8 - Processing lists in Prolog: 2 6
8 More than one terminating clause - 1 It is sometimes necessary to have more than one terminating clause. Consider the task of pairing the elements of two lists with any elements left over added to the end of the list:?- pair([ann,bel], [joe,bob,sam], Res). Res = [<,ann,joe,>,<,bel,bob,>,sam]? ; no 8 - Processing lists in Prolog: 2 7
9 More than one terminating clause - 2 Terminating conditions? when both lists are empty: pair([], [], []). when first list is empty; second isn t: pair([], List, List). when first list isn t empty; second is empty: pair(list, [], List). 8 - Processing lists in Prolog: 2 8
10 More than one terminating clause - 3 The recursive clause is: pair([head1 Tail1], [Head2 Tail2], ['<', Head1, Head2, '>' Tail3]) :- pair(tail1, Tail2, Tail3). 8 - Processing lists in Prolog: 2 9
11 More than one terminating clause - 4 Unfortunately, this procedure doesn t work properly: Demo3 When 1st & 2nd arguments are reduced to [], the last goal is: pair([], [], Res). This unifies with the terminating clauses: pair([], [], []). pair([], List, List). pair(list, [], List). Demo4 8 - Processing lists in Prolog: 2 10
12 More than one terminating clause - 5 The solution is to write mutually exclusive terminating clauses: When the first list is empty and the second isn t: pair([], [Head Tail], [Head Tail]). When the first list isn t or isn t empty and the second is empty: pair(list, [], List). 8 - Processing lists in Prolog: 2 11
13 Deleting elements from a list - 1 Consider delete_1/3: % 1 - terminating delete_1(head, [Head Tail], Tail). % 2 - recursive delete_1(item, [Head Tail], [Head New_Tail]) :- delete_1(item, Tail, New_Tail). and the query: delete_1(var, [a,b,a,b], Pruned_List). 8 - Processing lists in Prolog: 2 12
14 Deleting elements from a list - 2 It is obvious that Var will be bound to a, b, a & b in turn, but what about the goal? delete_1(b, [a,b,a,b], Pruned_List). There are two ways of satisfying this goal. If there is local failure in a program containing delete_1/3, the next entry is taken off the stack and tried until none is left. Demo5 8 - Processing lists in Prolog: 2 13
15 Variations on deletion There are two obvious variants of delete_1/3: Delete one and only one occurrence of an element; Delete all occurrences of an element. These show two extensions of list processing. 8 - Processing lists in Prolog: 2 14
16 Delete one and only one element A very easy extension of delete_1/3: The clauses of delete_1/3 aren t mutually exclusive. An extra line ensure they are mutually exclusive: delete_2(head, [Head Tail], Tail). delete_2(item, [Head Tail], [Head New_Tail]) :- Item \= Head, delete_2(item, Tail, New_Tail). 8 - Processing lists in Prolog: 2 15
17 Delete all instances of an element - 1 This requires more thought: different from delete_1/3 because all elements of the input list must be scanned; a terminate-at-end of list pattern; the head of the input list either matches the element to be deleted OR it does not match the element to be deleted; OR-choice has to be represented by two recursive rules. 8 - Processing lists in Prolog: 2 16
18 Delete all instances of an element - 2 The terminating clause: When the input list is empty, then the output list is empty. delete_all(_head, [], []). 8 - Processing lists in Prolog: 2 17
19 Delete all instances of an element - 3 The recursive clauses: When the heads of the input and output lists don t match the element being deleted: % 2 - recursive: head doesn't match delete_all(item, [Head Tail], [Head New_Tail]) :- Item \= Head, delete_all(item, Tail, New_Tail). 8 - Processing lists in Prolog: 2 18
20 Delete all instances of an element - 4 The recursive clauses: When the heads of the input list matches the element being deleted: % 3 - recursive: head does match delete_all(item, [Item Tail], New_Tail) :- delete_all(item, Tail, New_Tail). Demo6 8 - Processing lists in Prolog: 2 19
21 Matching v. unification - 1 Look again at the deletion of one element: % 1 - terminating delete_1(head, [Head Tail], Tail). % 2 - recursive delete_1(item, [Head Tail], [Head New_Tail]) :- delete_1(item, Tail, New_Tail). 8 - Processing lists in Prolog: 2 20
22 Matching v. unification - 2 What happens with the query??- delete_1(var, [a,b,a,b], New_List). Var = a, New_List = [b,a,b]? ; Var = b, New_List = [a,a,b]? ; no 8 - Processing lists in Prolog: 2 21
23 Matching v. unification - 3 Suppose we want to have matching instead of unification:?- 'delete=='(var, [a,b,a,b], New_List). no?- 'delete=='(b, [a,b,a,b], New_List). New_List = [a,a,b]? ; no 8 - Processing lists in Prolog: 2 22
24 Matching v. unification - 4 The program needs two additions: % 1 - terminating 'delete=='(item, [Head Tail], Tail) :- Item == Head. % 2 - recursive 'delete=='(item, [Head Tail], Common mistake: use \=/2. [Head New_Tail]) :- Item \== Head, 'delete=='(item, Tail, New_Tail). 8 - Processing lists in Prolog: 2 23
25 The effect of clause order - 1 So far, we ve generally placed the terminating clause first in a procedure. What effect does the order of clauses have? Consider again delete_1/3: % 1 - terminating delete_1(head, [Head Tail], Tail). % 2 - recursive delete_1(item, [Head Tail], [Head New_Tail]) :- delete_1(item, Tail, New_Tail). 8 - Processing lists in Prolog: 2 24
26 The effect of clause order - 2 If we use a non-deterministic query:?- delete_1(a, [a,1,a,2,a,3], Res). Res = [1,a,2,a,3]? ; Res = [a,1,2,a,3]? ; Res = [a,1,a,2,3]? ; no 8 - Processing lists in Prolog: 2 25
27 The effect of clause order - 3 If we swap the clauses around in our procedure: % 2 - recursive delete_1(item, [Head Tail], [Head New_Tail]) :- delete_1(item, Tail, New_Tail). % 1 - terminating delete_1(head, [Head Tail], Tail). 8 - Processing lists in Prolog: 2 26
28 The effect of clause order - 4 and use the same query:?- delete_1(a, [a,1,a,2,a,3], Res). Res = [a,1,a,2,3]? ; Res = [a,1,2,a,3]? ; Res = [1,a,2,a,3]? ; no 8 - Processing lists in Prolog: 2 27
29 The effect of clause order - 5 Compare the bag of solutions: Terminating first: [1,a,2,a,3] [a,1,2,a,3] [a,1,a,2,3] Recursive first: [a,1,a,2,3] [a,1,2,a,3] [1,a,2,a,3] 8 - Processing lists in Prolog: 2 28
30 In summary: The effect of clause order - 6 Clause order shouldn t matter in a declarative language because process is not significant. But that isn t always true: Out-of-lecture activity: Experiment with clause ordering and the query:?- delete_all(var, List, [a,b,a,b]). 8 - Processing lists in Prolog: 2 29
31 This time More advanced use of Prolog lists allows us to: use more than one terminating clause (eg pair/3); apply an operation to all matching list elements (delete_all/3); use matching (==/2) instead of unification; change the order of solutions by changing clause order. 8 - Processing lists in Prolog: 2 30
32 Next time A last look at lists, specifically: lists as stacks and queues; processing lists within lists; making list processing more efficient; stopping Prolog running out of stack space and/using too much memory. 8 - Processing lists in Prolog: 2 31
This lecture covers: Prolog s execution strategy explained more precisely. Revision of the elementary Prolog data types
This lecture covers: Prolog s execution strategy explained more precisely The execution strategy has been presented as simply placing all matching clauses onto the stack. In fact, Prolog is slightly more
More informationExercises on the Fundamentals of Prolog
1 Introduction Exercises on the Fundamentals of Prolog These exercises are intended to help reinforce material taught in the lectures of CIS335 course in Prolog. They do not contribute any marks to the
More informationThis lecture presents ordered lists. An ordered list is one which is maintained in some predefined order, such as alphabetical or numerical order.
6.1 6.2 This lecture presents ordered lists. An ordered list is one which is maintained in some predefined order, such as alphabetical or numerical order. A list is numerically ordered if, for every item
More informationLecture 21: Relational Programming II. November 15th, 2011
Lecture 21: Relational Programming II November 15th, 2011 Lecture Outline Relational Programming contd The Relational Model of Computation Programming with choice and Solve Search Strategies Relational
More informationDerived from PROgramming in LOGic (1972) Prolog and LISP - two most popular AI languages. Prolog programs based on predicate logic using Horn clauses
Prolog Programming Derived from PROgramming in LOGic (1972) Good at expressing logical relationships between concepts Prolog and LISP - two most popular AI languages Execution of a Prolog program is a
More information3 Lists. List Operations (I)
3 Lists. List Operations (I) The list is the simplest yet the most useful Prolog structure. A list is a sequence of any number of objects. Example 3.1: L = [1, 2, 3], R = [a, b, c], T = [john, marry, tim,
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationImplementação de Linguagens 2016/2017
Implementação de Linguagens Ricardo Rocha DCC-FCUP, Universidade do Porto ricroc @ dcc.fc.up.pt Ricardo Rocha DCC-FCUP 1 Logic Programming Logic programming languages, together with functional programming
More informationPhil 320 Chapter 1: Sets, Functions and Enumerability I. Sets Informally: a set is a collection of objects. The objects are called members or
Phil 320 Chapter 1: Sets, Functions and Enumerability I. Sets Informally: a set is a collection of objects. The objects are called members or elements of the set. a) Use capital letters to stand for sets
More informationWeek - 03 Lecture - 18 Recursion. For the last lecture of this week, we will look at recursive functions. (Refer Slide Time: 00:05)
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 03 Lecture - 18 Recursion For the
More informationCS558 Programming Languages
CS558 Programming Languages Fall 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Type Inference Some statically typed languages, like ML (and to a lesser extent Scala), offer alternative
More informationIntroduction to Prolog Paper Refs. Prolog tutor. Julian Verdurmen. Seminar Softw. tech. for teaching and learning. September 30, 2009
Seminar Softw. tech. for teaching and learning September 30, 2009 Outline 1 Introduction to Prolog Basics Simple example 2 Basics Simple example Outline 1 Introduction to Prolog Basics Simple example 2
More informationLING/C SC/PSYC 438/538. Lecture 20 Sandiway Fong
LING/C SC/PSYC 438/538 Lecture 20 Sandiway Fong Today's Topics SWI-Prolog installed? We will start to write grammars today Quick Homework 8 SWI Prolog Cheatsheet At the prompt?- 1. halt. 2. listing. listing(name).
More informationIKI30820 Logic Programming Programming Style and Techniques Slide 09
IKI30820 Logic Programming Programming Style and Techniques Slide 09 Ari Saptawijaya (slides) Adila A. Krisnadhi (L A T E Xadaptation) Fakultas Ilmu Komputer Universitas Indonesia 2009/2010 Semester Gasal
More information/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17
01.433/33 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/2/1.1 Introduction In this lecture we ll talk about a useful abstraction, priority queues, which are
More informationINTRODUCTION TO PROLOG
INTRODUCTION TO PROLOG PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/44 STRUCTURE OF A PROLOG PROGRAM Where, declaratively, Haskell expresses a computation as a system
More informationProlog Cut: Summary. CSC324 Logic & Relational Programming Illustrated in Prolog. Prolog Cut: Summary. Non-deterministic Programming
Prolog Cut: Summary CSC324 Logic & Relational Programming Illustrated in Prolog Afsaneh Fazly Cut (! ) can be used to: remove duplicate (& unnecessary) responses. remove incorrect responses. improve efficiency
More informationCOP4020 Fall 2006 Final Exam
COP4020 Fall 2006 Final Exam Name: (Please print) Put the answers on these sheets. You can collect 100 points in total for this exam. 1. Consider the following Ada program fragment: search: loop i := i+1;
More informationLogic Languages. Hwansoo Han
Logic Languages Hwansoo Han Logic Programming Based on first-order predicate calculus Operators Conjunction, disjunction, negation, implication Universal and existential quantifiers E A x for all x...
More informationCMSC 331 Final Exam Section 0201 December 18, 2000
CMSC 331 Final Exam Section 0201 December 18, 2000 Name: Student ID#: You will have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2018 Lecture 7b Andrew Tolmach Portland State University 1994-2018 Dynamic Type Checking Static type checking offers the great advantage of catching errors early And
More informationDay 28 Arithmetic Sequence. Find the next two terms of each sequence. Then describe the pattern. The equations will be completed later.
Find the next two terms of each sequence. Then describe the pattern. The equations will be completed later. 1, 3, 5, 7, 9,, Description: Equation: 2, 7, 12, 17, 22,, Description: Equation: -416, -323,
More informationRecursion, Structures, and Lists
Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 4 04/10/04 30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists 1 The central ideas of Prolog
More informationTopic B: Backtracking and Lists
Topic B: Backtracking and Lists 1 Recommended Exercises and Readings From Programming in Prolog (5 th Ed.) Readings: Chapter 3 2 Searching for the Answer In order for a Prolog program to report the correct
More informationDAY 28 - ARITHMETIC SEQUENCES
DAY 28 - ARITHMETIC SEQUENCES ARITHMETIC SEQUENCE An ARITHMETIC SEQUENCE is where the rule of the pattern is always ADDED. The rule is called the COMMON DIFFERENCE ARITHMETIC SEQUENCE You can use the following
More information6.001 Notes: Section 4.1
6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,
More informationCOMP2411 Lecture 20: Logic Programming Examples. (This material not in the book)
COMP2411 Lecture 20: Logic Programming Examples (This material not in the book) There are several distinct but often equivalent ways to think about logic programs 1. As computing logical consequences of
More informationProlog Programming. Lecture Module 8
Prolog Programming Lecture Module 8 Prolog Language Prolog is unique in its ability to infer facts from the given facts and rules. In Prolog, an order of clauses in the program and goals in the body of
More informationSearch. (Textbook Chpt ) Computer Science cpsc322, Lecture 2. May, 10, CPSC 322, Lecture 2 Slide 1
Search Computer Science cpsc322, Lecture 2 (Textbook Chpt 3.0-3.4) May, 10, 2012 CPSC 322, Lecture 2 Slide 1 Colored Cards You need to have 4 colored index cards Come and get them from me if you still
More informationPRACTICE MIDTERM EXAM #2
This practice exam is based on the actual midterm exam from Cynthia s Spring 2014 class. It did not include a classes problem (which you should expect this quarter), and the memory/pointers problem covered
More informationResources matter. Orders of Growth of Processes. R(n)= (n 2 ) Orders of growth of processes. Partial trace for (ifact 4) Partial trace for (fact 4)
Orders of Growth of Processes Today s topics Resources used by a program to solve a problem of size n Time Space Define order of growth Visualizing resources utilization using our model of evaluation Relating
More informationCS1102: Macros and Recursion
CS1102: Macros and Recursion Kathi Fisler, WPI October 5, 2009 This lecture looks at several more macro examples. It aims to show you when you can use recursion safely with macros and when you can t. 1
More informationPractice Midterm Exam Solutions
CSE 332: Data Abstractions Autumn 2015 Practice Midterm Exam Solutions Name: Sample Solutions ID #: 1234567 TA: The Best Section: A9 INSTRUCTIONS: You have 50 minutes to complete the exam. The exam is
More informationLecture #24: Programming Languages and Programs
Lecture #24: Programming Languages and Programs A programming language is a notation for describing computations or processes. These range from low-level notations, such as machine language or simple hardware
More informationProlog (cont d) Remark. Using multiple clauses. Intelligent Systems and HCI D7023E
Intelligent Systems and HCI D703E Lecture : More Prolog Paweł Pietrzak Prolog (cont d) 1 Remark The recent version of SWI- Prolog displays true and false rather than and no Using multiple clauses Different
More informationAnalysis of algorithms
Analysis of algorithms Time and space To analyze an algorithm means: developing a formula for predicting how fast an algorithm is, based on the size of the input (time complexity), and/or developing a
More informationFundamentals of Prolog
Fundamentals of Prolog Prof. Geraint A. Wiggins Centre for Cognition, Computation and Culture Goldsmiths College, University of London Contents Summary of Lecture 1 What makes a good Prolog program? What
More informationParallel Computing. Lecture 16: OpenMP - IV
CSCI-UA.0480-003 Parallel Computing Lecture 16: OpenMP - IV Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com PRODUCERS AND CONSUMERS Queues A natural data structure to use in many multithreaded
More informationAlgorithms Dr. Haim Levkowitz
91.503 Algorithms Dr. Haim Levkowitz Fall 2007 Lecture 4 Tuesday, 25 Sep 2007 Design Patterns for Optimization Problems Greedy Algorithms 1 Greedy Algorithms 2 What is Greedy Algorithm? Similar to dynamic
More informationStatistical Methods for NLP
Statistical Methods for NLP Information Extraction, Hidden Markov Models Sameer Maskey * Most of the slides provided by Bhuvana Ramabhadran, Stanley Chen, Michael Picheny Speech Recognition Lecture 4:
More informationGreedy Algorithms. This is such a simple approach that it is what one usually tries first.
Greedy Algorithms A greedy algorithm tries to solve an optimisation problem by making a sequence of choices. At each decision point, the alternative that seems best at that moment is chosen. This is such
More informationCSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs
CSE 451: Operating Systems Winter 2005 Lecture 7 Synchronization Steve Gribble Synchronization Threads cooperate in multithreaded programs to share resources, access shared data structures e.g., threads
More informationCOMP 9416, session 1, 2006 p. 1. Datalog. COMP 9416, session 1, 2006
OMP 9416, session 1, 2006 p. 1 Datalog OMP 9416, session 1, 2006 OMP 9416, session 1, 2006 p. 2 Atoms, integers and variables The fact "person(socrates).", the fact "sum(2,3,y)." and the rule "mortal(x)
More informationLecture 1: a partial introduction to Prolog
Lecture 1: a partial introduction to Prolog First programs in Prolog including: working with objects to display information; change contents of an object; comparing and contrasting Prolog and Java; briefly
More informationProgramming Paradigms
PP 2017/18 Unit 9 Prolog: Accumulators, Order of Goals/Clauses, and the Cut 1/38 Programming Paradigms Unit 9 Prolog: Accumulators, Order of Goals/Clauses, and the Cut J. Gamper Free University of Bozen-Bolzano
More informationLecture Notes on Priority Queues
Lecture Notes on Priority Queues 15-122: Principles of Imperative Computation Frank Pfenning Lecture 16 October 18, 2012 1 Introduction In this lecture we will look at priority queues as an abstract type
More informationCmpSci 187: Programming with Data Structures Spring 2015
CmpSci 187: Programming with Data Structures Spring 2015 Lecture #13, Concurrency, Interference, and Synchronization John Ridgway March 12, 2015 Concurrency and Threads Computers are capable of doing more
More informationAssertions and Exceptions Lecture 11 Fall 2005
Assertions and Exceptions 6.170 Lecture 11 Fall 2005 10.1. Introduction In this lecture, we ll look at Java s exception mechanism. As always, we ll focus more on design issues than the details of the language,
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and
More informationCS402 Theory of Automata Solved Subjective From Midterm Papers. MIDTERM SPRING 2012 CS402 Theory of Automata
Solved Subjective From Midterm Papers Dec 07,2012 MC100401285 Moaaz.pk@gmail.com Mc100401285@gmail.com PSMD01 MIDTERM SPRING 2012 Q. Point of Kleen Theory. Answer:- (Page 25) 1. If a language can be accepted
More informationChemistry Studio. B.Tech Project. Ashish Gupta (Y8140) Akshay Mittal (Y8056)
Chemistry Studio An Intelligent Tutoring System: Problem Solving B.Tech Project Ashish Gupta (Y8140) Akshay Mittal (Y8056) Mentored By: Prof. Amey Karkare, IIT Kanpur Dr. Sumit Gulwani, MSR Redmond Dr.
More informationCS2 Algorithms and Data Structures Note 10. Depth-First Search and Topological Sorting
CS2 Algorithms and Data Structures Note 10 Depth-First Search and Topological Sorting In this lecture, we will analyse the running time of DFS and discuss a few applications. 10.1 A recursive implementation
More informationCOSC 2P91. Bringing it all together... Week 4b. Brock University. Brock University (Week 4b) Bringing it all together... 1 / 22
COSC 2P91 Bringing it all together... Week 4b Brock University Brock University (Week 4b) Bringing it all together... 1 / 22 A note on practicality and program design... Writing a single, monolithic source
More informationComputer Science E-119 Fall Problem Set 1. Due before lecture on Wednesday, September 26
Due before lecture on Wednesday, September 26 Getting Started Before starting this assignment, make sure that you have completed Problem Set 0, which can be found on the assignments page of the course
More informationCSE 120. Computer Science Principles
Adam Blank Lecture 17 Winter 2017 CSE 120 Computer Science Principles CSE 120: Computer Science Principles Proofs & Computation e w h e q 0 q 1 q 2 q 3 h,e w,e w,h w,h q garbage w,h,e CSE = Abstraction
More informationRACKET BASICS, ORDER OF EVALUATION, RECURSION 1
RACKET BASICS, ORDER OF EVALUATION, RECURSION 1 COMPUTER SCIENCE 61AS 1. What is functional programming? Give an example of a function below: Functional Programming In functional programming, you do not
More informationIn This Lecture. Transactions and Recovery. Transactions. Transactions. Isolation and Durability. Atomicity and Consistency. Transactions Recovery
In This Lecture Database Systems Lecture 15 Natasha Alechina Transactions Recovery System and Media s Concurrency Concurrency problems For more information Connolly and Begg chapter 20 Ullmanand Widom8.6
More informationTypes, Expressions, and States
8/27: solved Types, Expressions, and States CS 536: Science of Programming, Fall 2018 A. Why? Expressions represent values in programming languages, relative to a state. Types describe common properties
More informationUnit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION
DESIGN AND ANALYSIS OF ALGORITHMS Unit 6 Chapter 15 EXAMPLES OF COMPLEXITY CALCULATION http://milanvachhani.blogspot.in EXAMPLES FROM THE SORTING WORLD Sorting provides a good set of examples for analyzing
More informationSolutions to Homework 10
CS/Math 240: Intro to Discrete Math 5/3/20 Instructor: Dieter van Melkebeek Solutions to Homework 0 Problem There were five different languages in Problem 4 of Homework 9. The Language D 0 Recall that
More informationRecursively Enumerable Languages, Turing Machines, and Decidability
Recursively Enumerable Languages, Turing Machines, and Decidability 1 Problem Reduction: Basic Concepts and Analogies The concept of problem reduction is simple at a high level. You simply take an algorithm
More informationProlog-2 nd Lecture. Prolog Predicate - Box Model
Prolog-2 nd Lecture Tracing in Prolog Procedural interpretation of execution Box model of Prolog predicate rule How to follow a Prolog trace? Trees in Prolog use nested terms Unification Informally Formal
More informationThe Prolog to Mercury transition guide
The Prolog to Mercury transition guide Version 14.01.1 Thomas Conway Zoltan Somogyi Fergus Henderson Copyright c 1995 2014 The University of Melbourne. Permission is granted to make and distribute verbatim
More informationLecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3.
1 Lecture Overview Prolog 1. Introduction Interaction Terms 2. Clauses and predicates Clauses Predicates Variables 3. Satisfying goals 2 Prolog A standard free Prolog can be downloaded from http://www.swi-prolog.org
More informationVariables. Substitution
Variables Elements of Programming Languages Lecture 4: Variables, binding and substitution James Cheney University of Edinburgh October 6, 2015 A variable is a symbol that can stand for another expression.
More informationCSE 451: Operating Systems Winter Lecture 7 Synchronization. Hank Levy 412 Sieg Hall
CSE 451: Operating Systems Winter 2003 Lecture 7 Synchronization Hank Levy Levy@cs.washington.edu 412 Sieg Hall Synchronization Threads cooperate in multithreaded programs to share resources, access shared
More informationLinked Lists, Stacks, and Queues
Department of Computer Science and Engineering Chinese University of Hong Kong In a nutshell, a data structure describes how data are stored in memory, in order to facilitate certain operations. In all
More informationAutomata Theory TEST 1 Answers Max points: 156 Grade basis: 150 Median grade: 81%
Automata Theory TEST 1 Answers Max points: 156 Grade basis: 150 Median grade: 81% 1. (2 pts) See text. You can t be sloppy defining terms like this. You must show a bijection between the natural numbers
More informationCOS 126 General Computer Science Fall Final - Solutions 1
COS 126 General Computer Science Fall 1997 Final - Solutions 1 Question 1 This is a FIFO queue, so we follow a first in, first out policy: E, EA, A, AS, S, SY, SYQ, SYQU, YQU, QU, QUE,QUES,QUEST,UEST,UESTI,ESTI,ESTIO,STIO,TIO,IO,O,ON,N,empty.
More informationBinary Trees. BSTs. For example: Jargon: Data Structures & Algorithms. root node. level: internal node. edge.
Binary Trees 1 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the root, which are disjoint from
More informationProlog - 3 Prolog search trees + traces
Prolog - 3 Prolog search trees + traces 1 Review member(a, [A B]). member(a, [B C]) :- member (A,C). goal-oriented semantics: can get value assignment for goal member(a,[b C]) by showing truth of subgoal
More informationLecture 3 - States and Searching
Lecture 3 - States and Searching Jesse Hoey School of Computer Science University of Waterloo January 15, 2018 Readings: Poole & Mackworth Chapt. 3 (all) Searching Often we are not given an algorithm to
More informationExceptions & a Taste of Declarative Programming in SQL
Exceptions & a Taste of Declarative Programming in SQL David E. Culler CS8 Computational Structures in Data Science http://inst.eecs.berkeley.edu/~cs88 Lecture 12 April 18, 2016 Computational Concepts
More informationNOTE: Answer ANY FOUR of the following 6 sections:
A-PDF MERGER DEMO Philadelphia University Lecturer: Dr. Nadia Y. Yousif Coordinator: Dr. Nadia Y. Yousif Internal Examiner: Dr. Raad Fadhel Examination Paper... Programming Languages Paradigms (750321)
More informationCSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion. Tyler Robison Summer 2010
CSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion Tyler Robison Summer 2010 1 Toward sharing resources (memory) So far we ve looked at parallel algorithms using fork-join
More informationLecture 16: Logic Programming in Prolog
Lecture 16: Logic Programming in Prolog COMP 524 Programming Language Concepts Stephen Olivier March 26, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts Goal of
More informationLecture 8: September 30
CMPSCI 377 Operating Systems Fall 2013 Lecture 8: September 30 Lecturer: Prashant Shenoy Scribe: Armand Halbert 8.1 Semaphores A semaphore is a more generalized form of a lock that can be used to regulate
More informationRandomized Algorithms, Hash Functions
Randomized Algorithms, Hash Functions Lecture A Tiefenbruck MWF 9-9:50am Center 212 Lecture B Jones MWF 2-2:50pm Center 214 Lecture C Tiefenbruck MWF 11-11:50am Center 212 http://cseweb.ucsd.edu/classes/wi16/cse21-abc/
More informationLecture 11: Feb. 10, 2016
CS323: AI (Hands on with Prolog) Spring 2016 Lecturer: K.R. Chowdhary Lecture 11: Feb. 10, 2016 : Professor of CS (VF) Disclaimer: These notes have not been subjected to the usual scrutiny reserved for
More informationLecture 9: A closer look at terms
Lecture 9: A closer look at terms Theory Introduce the == predicate Take a closer look at term structure Introduce strings in Prolog Introduce operators Exercises Exercises of LPN: 9.1, 9.2, 9.3, 9.4,
More informationCSE 143, Winter 2009 Sample Midterm Exam #2
CSE 143, Winter 2009 Sample Midterm Exam #2 1. Stacks and Queues. Write a method interleave that accepts a queue of integers as a parameter and rearranges the elements by alternating the elements from
More informationCS 360: Programming Languages Lecture 10: Logic Programming with Prolog
CS 360: Programming Languages Lecture 10: Logic Programming with Prolog Geoffrey Mainland Drexel University Section 1 Administrivia Midterm Tuesday Midterm is Tuesday, February 14! Study guide is on the
More informationProlog. Logic Programming vs Prolog
Language constructs Prolog Facts, rules, queries through examples Horn clauses Goal-oriented semantics Procedural semantics How computation is performed? Comparison to logic programming 1 Logic Programming
More informationLecture 10 Notes Linked Lists
Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Summer 1 2015) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to
More informationProlog. Intro to Logic Programming
Prolog Logic programming (declarative) Goals and subgoals Prolog Syntax Database example rule order, subgoal order, argument invertibility, backtracking model of execution, negation by failure, variables
More informationAnalysis of Algorithms. 5-Dec-16
Analysis of Algorithms 5-Dec-16 Time and space To analyze an algorithm means: developing a formula for predicting how fast an algorithm is, based on the size of the input (time complexity), and/or developing
More informationDesign and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Module 02 Lecture - 45 Memoization
Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute Module 02 Lecture - 45 Memoization Let us continue our discussion of inductive definitions. (Refer Slide Time: 00:05)
More informationOverview. Elements of Programming Languages. Records. Named variants. Last time: Simple data structures: pairing (product types), choice (sum types)
Overview Elements of Programming Languages Lecture 7: Records, variants, and subtyping James Cheney University of Edinburgh October 12, 2017 Last time: Simple data structures: pairing (product types),
More informationLecture 4: Elementary Data Structures Steven Skiena
Lecture 4: Elementary Data Structures Steven Skiena Department of Computer Science State University of New York Stony Brook, NY 11794 4400 http://www.cs.stonybrook.edu/ skiena Problem of the Day Find two
More informationLecture 10 Notes Linked Lists
Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to
More informationAXIOMS FOR THE INTEGERS
AXIOMS FOR THE INTEGERS BRIAN OSSERMAN We describe the set of axioms for the integers which we will use in the class. The axioms are almost the same as what is presented in Appendix A of the textbook,
More informationIntroduction to OpenMP
Introduction to OpenMP p. 1/?? Introduction to OpenMP Synchronisation Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 June 2011 Introduction to OpenMP p. 2/?? Summary Facilities here are relevant
More information1 Non greedy algorithms (which we should have covered
1 Non greedy algorithms (which we should have covered earlier) 1.1 Floyd Warshall algorithm This algorithm solves the all-pairs shortest paths problem, which is a problem where we want to find the shortest
More informationENGI 1020 Introduction to Computer Programming J U L Y 5, R E Z A S H A H I D I
ENGI 1020 Introduction to Computer Programming J U L Y 5, 2 0 1 0 R E Z A S H A H I D I Passing by value Recall that it is possible to call functions with variable names different than the parameters in
More informationCpSc 421 Final Solutions
CpSc 421 Final Solutions Do any eight of the ten problems below. If you attempt more than eight problems, please indicate which ones to grade (otherwise we will make a random choice). This allows you to
More informationImplementing Mutual Exclusion. Sarah Diesburg Operating Systems CS 3430
Implementing Mutual Exclusion Sarah Diesburg Operating Systems CS 3430 From the Previous Lecture The too much milk example shows that writing concurrent programs directly with load and store instructions
More informationFoundations of AI. 9. Predicate Logic. Syntax and Semantics, Normal Forms, Herbrand Expansion, Resolution
Foundations of AI 9. Predicate Logic Syntax and Semantics, Normal Forms, Herbrand Expansion, Resolution Wolfram Burgard, Andreas Karwath, Bernhard Nebel, and Martin Riedmiller 09/1 Contents Motivation
More informationParallel Programming using OpenMP
1 Parallel Programming using OpenMP Mike Bailey mjb@cs.oregonstate.edu openmp.pptx OpenMP Multithreaded Programming 2 OpenMP stands for Open Multi-Processing OpenMP is a multi-vendor (see next page) standard
More informationParallel Programming using OpenMP
1 OpenMP Multithreaded Programming 2 Parallel Programming using OpenMP OpenMP stands for Open Multi-Processing OpenMP is a multi-vendor (see next page) standard to perform shared-memory multithreading
More informationLogical Decision Rules: Teaching C4.5 to Speak Prolog
Logical Decision Rules: Teaching C4.5 to Speak Prolog Kamran Karimi and Howard J. Hamilton Department of Computer Science University of Regina Regina, Saskatchewan Canada S4S 0A2 {karimi,hamilton}@cs.uregina.ca
More information