List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger
|
|
- Jasmin Fitzgerald
- 5 years ago
- Views:
Transcription
1 List of lectures TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing 4Evaluation 5Object Oriented Programming 6Macros and decorators 7Virtual Machines and Bytecode 8Garbage Collection and Native Code 9Concurrent Computing 10Declarative Programming 11Symbolic and Logic Programming 12Summary 2 / 44 Lecture content Symbolic Programming Static Program Analysis Data-flow analysis Symbolic Execution Logic Programming Symbolic Programming 3 / 44
2 Symbolic Programming A program can manipulate its own formulas and components as if they are data From John McCarthy, Recursive Functions of Symbolic Expressions, 1958: 1People manipulate numbers You do it all the time... 2People write formulas that say how to manipulate numbers 2+3, f(x)=2*x/3 3People manipulate formulas In algebra/calculus courses: (x+2)/2 -> x/2+1, diff(x²) = 2*x 4People write formulas that say how to manipulate formulas Example of algebraic formulas (+2 3) 5 (- (- x y) (- y x) (^ (+ x y) 2) (+ (^ x 2) (* 2 x y) (^ y 2) (diff x) 1 (diff (^ x 2)) (* 2 x) Symbolic vs Imperative Programming In imperative programming, computations are evaluated in order as soon as they are expressed: import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b * a d = c + 1 In symbolic programming, expressions are not evaluated until it is necesserary: A = Variable('A') B = Variable('B') C = B * A D = C + Constant(1) compiles the function and evaluate it: f = compile(d) d = f(a=np.ones(10), B=np.ones(10)*2) Symbolic graph The following symbolic program: A = Variable('A') B = Variable('B') C = B * A D = C + Constant(1) Correspond to this symbolic graph: 7 8
3 Symbolic interpreter Compilers are symbolic interpreters Transformation rules are applied on the formula, until none apply Examples: op folding: Differentiation x = Variable('x') f = x^2 + 1 d = diff(f) r = compile(d) r == 2*x Computation v = subst(d,x=2) r= compile(v) r == 4 In some sense, source code of an imperative programming language is a symbol program Compiler optimizers are often defined as a set of transformation rules applied on the symbols of the program 9 10 Software Verification Static Program Analysis The goal of Software Verification is to verify that a program satisfies the expected requirements Dynamic program analysis and verification: testing and experimentation Static program analysis and verification: analysis, used to prove correctness 12
4 Static program analysis It is an analysis of computer software performed without executing programs The analysis is either performed on source code or on object code The analysis is performed by an automated tool Static program analysis techniques Model checking Check that the program conform to a specified model, for program that have finite states Data-flow analysis Determine which part of a program use a specific variable and possible values Abstract interpretation Model the effect of each statement on the state Hoare logic Symbolic execution Use of static analysis Optimization Debugging Validation Data-flow analysis 15
5 Data-flow analysis Data-flow analysis: Example (1/2 Determine where a variable is used and modified Compute the possible values for variables at different location Example: How many register do we need for this program? a = 0; L1: b = a + 1; c = c + b; a = b * 2 if a < 9 goto L1 return c minimum is the number of variables for(var i = 0; ; + +i) { console.log(i); if(i < 0) break; } Control flow graph Data-flow analysis: Example (2/2 Remember, deadlocks: var a = 0; var b = 2; var ma = new Mutex(); var mb = new Mutex(); thread1 = new Thread( function() { ma.lock(); mb.lock(); b = b - 1; a = a - 1; ma.unlock(); mb.unlock(); }); thread2 = new Thread( function() { mb.lock(); ma.lock(); b = b - 1; a = a + b; mb.unlock(); ma.unlock(); }); thread1.start(); thread2.start(); thread1 waits for mb, thread2 waits for ma Data-flow analysis can be used to detect the multiple locks and use Symbolic Execution 19
6 Symbolic Execution Testing works But each tests, only explore one possible execution: assert(f(3) == 5) We hope that test cases generalize... Symbolic execution generalize testing Allow unknown variable in evaluation y = Variable('y'); assert(f(y) == 2*y - 1) Symbolic Execution Example int a = α, b = β, c = γ; // symbolic int x = 0, y = 0, z = 0; if (a) { x = -2; } if (b < 5) { if (!a && c) { y = 1; } z = 2; } assert(x+y+z!=3) Insight Symbolic Execution Find Bug (1/2) Each symbolic path corresponds to many actual program runs The one that satisfies the path conditions Symbolic execution cover more of the program execution space than testing 23 24
7 Symbolic Execution Find Bug (2/2) Problems with symbolic execution Scalability: there are many program path Problem with loops and library calls Solution More powerful computers and cluster Mixing concrete and symbolic execution KLEE Internal of Symbolic Executors: KLEE KLEE is an open source symbolic executor Runs on top of LLVM Has founds lot of problems in open-source software 27 28
8 Benefits/Drawbacks of symbolic programming Benefits: Use in optimisation, static analysis... Computer Algebra Systems Drawbacks Scalability, performance... Logic Programming 29 Logic Programming Based on Formal logic: expressing facts and rules Examples: Prolog Predicate logic Predicate logic can be used to capture facts and rules: declare facts as ground clauses. E.g., Son(Gustaf, Carl), Daughter (Carl, Victoria),... rules as horn clauses: x,y, z Son(x, y) ^ Daughter (y, z) GrandFather (x, z) One can then submit queries and retrieve further facts: x GrandFather (Gustaf, x) 31 32
9 List in prolog () is the empty list (b,c) is a list of two symbols b and c If H is a symbol and T is a list then (H T) is a list with a head H and tail T (a,b,c) is the same as (a (b,c)) Example: append (1/2) A declarative description of the append relation in Prolog append is a relation from tuples (X,Y,Z) such as Z = (X Y) appending the empty list to any list y gives the same list y (fact append ()?Y?Y). for any lists H, T, Y and Z we have that the result of appending Y to (H T) is a list that start with H, followed by the result of appending Y to T: (fact (append (?H?T)?Y (?H?Z)) (append?t?y?z)) Example: append (2/2) Queries: (query (append (a b c) (1 2 3) (a b c 1 2 3))). (query (append (a b c) (1 2 3) (1 2 3 a b c))). Definitions: (query (append (a b c) (1 2 3)?L3)). (query (append (a b c)?l2 (a b c 1 2 3))). Operational and Declarative Meanings An assertion: (fact (eats?p?f) (hungry?p) (has?p?f) (likes?p?f)) means that for any replacement of?p (e.g., brian ) and?f (e.g., potstickers ) throughout the rule: Declarative Meaning If brian is hungry and has potstickers and likes potstickers, then brian will eat potstickers. Operational Meaning To show that brian will eat potstickers, show that brian is hungry, then that brian has potstickers, and then that brian likes potstickers. The declarative meaning allows us to look at our Scheme-Prolog program as a logical specification of a problem for which the system is to find a solution. The operational meaning allows us to look at our Scheme-Prolog specification as an executable program for searching for a solution. Closed Universe Assumption: We make only positive statements. The closest we come to saying that something is false is to say that we can t prove it
10 Why logic programming? A declarative style, as opposed to a procedural one: allows to easier solve problems by describing how solutions look like instead of describing how to compute them. permit to faster build prototypes and tackle complex problems makes it easier to show that a program satisfies a specification as the program is closer to the specification Queries answering systems are well suited for databases, interfaces with natural language Logic programming with constraint solving (CLP) has proven to be very powerful 37 Query answering system Knowledge is stored in a database and is represented: explicitly as facts or implicitly as rules An inference machine infers new facts from known ones Programs submit queries A query is simple or composed of simple queries and the connectives and, or, not Queries are compared against the knowledge in the database by pattern matching for the facts and by unification for the rules 38 Pattern matching and unification Pattern matching Match a query with variables to facts without variables (query (parent abraham?child)) (fact (parent abraham barack)) In Unification: Unification is a generalization of pattern matching. Unification finds bindings for variables. A variable occurring several times will be bound to the same value In unification, a variable can be bound to another expression or variable 39 Unification algorithm Unification is a generalization of pattern matching that attempts to find a mapping between two expressions that may both contain variables. Example: (?x?x) can match ((a?y c) (a b?z)) ((a b c) (a b c)) Unification identifies this solution via the following steps: To match the first element of each pattern, the variable?x is bound to the expression (a?y c). To match the second element of each pattern, first the variable?x is replaced by its value. Then, (a?y c) is matched to (a b?z) by binding?y to b and?z to c. 40
11 Unification Algorithm unify(e, f, env) 1) Both inputs e and f are replaced by their values if they are variables. 2) If e and f are equal, unification succeeds. 3) If e is a variable, unification succeeds and e is bound to f. 4) If f is a variable, unification succeeds and f is bound to e. 5) If neither is a variable, both are not lists, and they are not equal, then e and f cannot be unified, and so unification fails. 6) If none of these cases holds, then e and f are both pairs, and so unification is performed on both their first and second corresponding elements. Query interpreter The query interpreter performs a search in the space of all possible facts Unification is the primitive operation that pattern matches two expressions It is a recursive algorithm Search Algorithm The process of attempting to demonstrate an assertion (answer a query) is a systematic depth-first search of facts. def search(clauses, env): if clauses is nil: yield env for fact in facts: fact = rename_variables(fact, get_unique_id()) env_head = new environment that extends env if unify(fact.first, clauses.first, env_head): for env_rule in search(fact.second, env_head, depth+1): for result in search(clauses.second, env_rule, depth+1): yield result Summary Symbolic programming and its use for static code analysis Logic programming and how to infer new facts / 44
Simple Facts. Eisenhower. Fillmore. Delano. Grover. Abraham. Clinton. Herbert. Barack
Logic Programming Announcements The Logic Language The Logic Language The Logic language was invented for Structure and Interpretation of Computer Programs Based on Prolog (1972) Expressions are facts
More informationLOGIC PROGRAMMING AND UNIFICATION 12
LOGIC PROGRAMMING AND UNIFICATION 12 COMPUTER SCIENCE 61A April 25, 2013 1 Introduction Over the semester, we have been using imperative programming a programming style where code is written as a set of
More informationSimple Facts. Eisenhower. Fillmore. Delano. Grover. Abraham. Clinton. Herbert. Barack
Logic Programming Announcements The Logic Language The Logic Language The Logic language was invented for Structure and Interpretation of Computer Programs Based on Prolog (1972) Expressions are facts
More informationLecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction
Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction to the different Programming Paradigm The different programming paradigm Why different paradigms? Introduction
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 informationLecture #13: Type Inference and Unification. Typing In the Language ML. Type Inference. Doing Type Inference
Lecture #13: Type Inference and Unification Typing In the Language ML Examples from the language ML: fun map f [] = [] map f (a :: y) = (f a) :: (map f y) fun reduce f init [] = init reduce f init (a ::
More informationList of lectures. Lecture content. Concurrent computing. TDDA69 Data and Program Structure Concurrent Computing Cyrille Berger
List of lectures TDDA69 Data and Program Structure Concurrent Computing Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing 4Evaluation 5Object
More information61A LECTURE 26 UNIFICATION, HALTING PROBLEM
61A LECTURE 26 UNIFICATION, HALTING PROBLEM Announcements Final exam review session this weekend Friday 1-5 pm, room TBA See Piazza Poll to vote on additional times Potential extra credit more information
More informationContinuation Passing Style. Continuation Passing Style
161 162 Agenda functional programming recap problem: regular expression matcher continuation passing style (CPS) movie regular expression matcher based on CPS correctness proof, verification change of
More informationLecture #23: Conversion and Type Inference
Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). Last modified: Fri Oct 20 10:46:40 2006 CS164:
More informationConversion vs. Subtyping. Lecture #23: Conversion and Type Inference. Integer Conversions. Conversions: Implicit vs. Explicit. Object x = "Hello";
Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). In Java, this is legal: Object x = "Hello";
More informationProgramming Languages Third Edition
Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand
More informationA Small Interpreted Language
A Small Interpreted Language What would you need to build a small computing language based on mathematical principles? The language should be simple, Turing equivalent (i.e.: it can compute anything that
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Operational Semantics CMSC 330 Summer 2018 1 Formal Semantics of a Prog. Lang. Mathematical description of the meaning of programs written in that language
More informationChapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy
Topics Chapter 16 Logic Programming Summary (resolution, unification, Prolog search strategy ) Disjoint goals The cut operator Negative goals Predicate fail Debugger / tracer Lists 2 Resolution Resolution
More informationRecap: Functions as first-class values
Recap: Functions as first-class values Arguments, return values, bindings What are the benefits? Parameterized, similar functions (e.g. Testers) Creating, (Returning) Functions Iterator, Accumul, Reuse
More informationLogic Programming. CITS 3242 Programming Paradigms. Topic 16: Part IV: Advanced Topics
CITS 3242 Programming Paradigms Part IV: Advanced Topics Topic 16: Logic Programming Logic Programming is a paradigm for programming by declaring facts and rules. Programs are executed by querying whether
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 informationLogic Programming. Let us have airline flight information of the form: 1. Application Domains: 2. Definitions
Logic Programming 1. Application Domains: Logic programming language application areas include natural language processing, expert systems, specifications checking, theorem proving, and control systems
More informationCMSC 331 Final Exam Section 0201 December 18, 2000
CMSC 331 Final Exam Section 0201 December 18, 2000 Name: nswers 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
More information1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.
1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered
More informationFunctional Logic Programming. Kristjan Vedel
Functional Logic Programming Kristjan Vedel Imperative vs Declarative Algorithm = Logic + Control Imperative How? Explicit Control Sequences of commands for the computer to execute Declarative What? Implicit
More informationApplications of Program analysis in Model-Based Design
Applications of Program analysis in Model-Based Design Prahlad Sampath (Prahlad.Sampath@mathworks.com) 2018 by The MathWorks, Inc., MATLAB, Simulink, Stateflow, are registered trademarks of The MathWorks,
More informationChapter 9: Constraint Logic Programming
9. Constraint Logic Programming 9-1 Deductive Databases and Logic Programming (Winter 2007/2008) Chapter 9: Constraint Logic Programming Introduction, Examples Basic Query Evaluation Finite Domain Constraint
More informationFinite Automata Theory and Formal Languages TMV027/DIT321 LP4 2018
Finite Automata Theory and Formal Languages TMV027/DIT321 LP4 2018 Lecture 11 Ana Bove April 26th 2018 Recap: Regular Languages Decision properties of RL: Is it empty? Does it contain this word? Contains
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 informationChapter 3 (part 3) Describing Syntax and Semantics
Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings
More informationFirst-Order Logic (FOL)
First-Order Logic (FOL) FOL consists of the following parts: Objects/terms Quantified variables Predicates Logical connectives Implication Objects/Terms FOL is a formal system that allows us to reason
More informationLecture 5: Declarative Programming. The Declarative Kernel Language Machine. September 12th, 2011
Lecture 5: Declarative Programming. The Declarative Kernel Language Machine September 12th, 2011 1 Lecture Outline Declarative Programming contd Dataflow Variables contd Expressions and Statements Functions
More informationLectures 20, 21: Axiomatic Semantics
Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics
More informationR13 SET Discuss how producer-consumer problem and Dining philosopher s problem are solved using concurrency in ADA.
R13 SET - 1 III B. Tech I Semester Regular Examinations, November - 2015 1 a) What constitutes a programming environment? [3M] b) What mixed-mode assignments are allowed in C and Java? [4M] c) What is
More informationLecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Cyrille Berger
Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction Concepts and models of programming languages The different programming paradigms Why different paradigms?
More informationList of lectures. Lecture content. Imperative Programming. TDDA69 Data and Program Structure Imperative Programming and Data Structures
List of lectures TDDA69 Data and Program Structure Imperative Programming and Data Structures Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing
More informationProgramming Languages (CS 550) Simple Query Language*
Programming Languages (CS 550) Simple Query Language* Jeremy R. Johnson *Material for this lecture comes from SICP chapter 4 1 Theme In this lecture we provide a simple logic programming language (from
More informationMIDTERM EXAM (Solutions)
MIDTERM EXAM (Solutions) Total Score: 100, Max. Score: 83, Min. Score: 26, Avg. Score: 57.3 1. (10 pts.) List all major categories of programming languages, outline their definitive characteristics and
More information15 Unification and Embedded Languages in Lisp
15 Unification and Embedded Languages in Lisp Chapter Objectives Chapter Contents Pattern matching in Lisp: Database examples Full unification as required for Predicate Calculus problem solving Needed
More informationA Gentle Introduction to Program Analysis
A Gentle Introduction to Program Analysis Işıl Dillig University of Texas, Austin January 21, 2014 Programming Languages Mentoring Workshop 1 / 24 What is Program Analysis? Very broad topic, but generally
More informationProlog is a Declarative Language used mainly for Artificial Intelligence because
Bobby Gagliardi Prolog is a Declarative Language used mainly for Artificial Intelligence because the language makes the task of manipulation of symbols and inference about these symbols easier. Unlike
More informationCOSE212: Programming Languages. Lecture 3 Functional Programming in OCaml
COSE212: Programming Languages Lecture 3 Functional Programming in OCaml Hakjoo Oh 2017 Fall Hakjoo Oh COSE212 2017 Fall, Lecture 3 September 18, 2017 1 / 44 Why learn ML? Learning ML is a good way of
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 informationChapter 16. Logic Programming Languages
Chapter 16 Logic Programming Languages Chapter 16 Topics Introduction A Brief Introduction to Predicate Calculus Predicate Calculus and Proving Theorems An Overview of Logic Programming The Origins of
More informationStatic semantics. Lecture 3-6: Semantics. Attribute grammars (2) Attribute grammars. Attribute grammars example. Dynamic semantics
Lecture 3-6: Semantics Static semantics Attribute grammars Dynamic semantics Denotational semantics: semantic equations Axiomatic semantics: inference rules and correctness proofs Static semantics Semantics
More informationFunctional Programming
Functional Programming Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. Brief
More informationIntroduction to Functional Programming in Haskell 1 / 56
Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order
More informationIf a program is well-typed, then a type can be inferred. For example, consider the program
CS 6110 S18 Lecture 24 Type Inference and Unification 1 Type Inference Type inference refers to the process of determining the appropriate types for expressions based on how they are used. For example,
More informationBinary Decision Diagrams and Symbolic Model Checking
Binary Decision Diagrams and Symbolic Model Checking Randy Bryant Ed Clarke Ken McMillan Allen Emerson CMU CMU Cadence U Texas http://www.cs.cmu.edu/~bryant Binary Decision Diagrams Restricted Form of
More informationChapter 1. Fundamentals of Higher Order Programming
Chapter 1 Fundamentals of Higher Order Programming 1 The Elements of Programming Any powerful language features: so does Scheme primitive data procedures combinations abstraction We will see that Scheme
More informationIntroduction to predicate calculus
Logic Programming Languages Logic programming systems allow the programmer to state a collection of axioms from which theorems can be proven. Express programs in a form of symbolic logic Use a logical
More informationType Checking and Type Inference
Type Checking and Type Inference Principles of Programming Languages CSE 307 1 Types in Programming Languages 2 Static Type Checking 3 Polymorphic Type Inference Version: 1.8 17:20:56 2014/08/25 Compiled
More informationSOFTWARE ARCHITECTURE 6. LISP
1 SOFTWARE ARCHITECTURE 6. LISP Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Compiler vs Interpreter Compiler Translate programs into machine languages Compilers are
More information! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented
Course Goal CMSC 330: Organization of Programming Languages Introduction Learn how programming languages work Broaden your language horizons! Different programming languages! Different language features
More informationSymbolic Execution. Wei Le April
Symbolic Execution Wei Le 2016 April Agenda What is symbolic execution? Applications History Interal Design: The three challenges Path explosion Modeling statements and environments Constraint solving
More informationOCaml. ML Flow. Complex types: Lists. Complex types: Lists. The PL for the discerning hacker. All elements must have same type.
OCaml The PL for the discerning hacker. ML Flow Expressions (Syntax) Compile-time Static 1. Enter expression 2. ML infers a type Exec-time Dynamic Types 3. ML crunches expression down to a value 4. Value
More informationTypes and Type Inference
Types and Type Inference Mooly Sagiv Slides by Kathleen Fisher and John Mitchell Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on the course homepage Outline General discussion
More information3. Functional Programming. Oscar Nierstrasz
3. Functional Programming Oscar Nierstrasz Roadmap > Functional vs. Imperative Programming > Pattern Matching > Referential Transparency > Lazy Evaluation > Recursion > Higher Order and Curried Functions
More informationFunctional Programming. Pure Functional Programming
Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).
More informationCompilers and computer architecture: Semantic analysis
1 / 1 Compilers and computer architecture: Semantic analysis Martin Berger Alex Jeffery October 2018 Recall the function of compilers 2 / 1 3 / 1 Recall the structure of compilers Source program Lexical
More informationQuestions? Static Semantics. Static Semantics. Static Semantics. Next week on Wednesday (5 th of October) no
Questions? First exercise is online: http://www.win.tue.nl/~mvdbrand/courses/glt/1112/ Deadline 17 th of October Next week on Wednesday (5 th of October) no lectures!!! Primitive types Primitive value
More informationLogic Programming Languages
Logic Programming Languages Introduction Logic programming languages, sometimes called declarative programming languages Express programs in a form of symbolic logic Use a logical inferencing process to
More informationCMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics
Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End
More informationProcessor speed. Concurrency Structure and Interpretation of Computer Programs. Multiple processors. Processor speed. Mike Phillips <mpp>
Processor speed 6.037 - Structure and Interpretation of Computer Programs Mike Phillips Massachusetts Institute of Technology http://en.wikipedia.org/wiki/file:transistor_count_and_moore%27s_law_-
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 informationThe Logic Paradigm. Joseph Spring. 7COM1023 Programming Paradigms
The Logic Paradigm Joseph Spring 7COM1023 Programming Paradigms 1 Discussion The Logic Paradigm Propositional and Predicate Logic See also notes and slides on PP website Horn Clauses Definition, Examples
More informationSML A F unctional Functional Language Language Lecture 19
SML A Functional Language Lecture 19 Introduction to SML SML is a functional programming language and acronym for Standard d Meta Language. SML has basic data objects as expressions, functions and list
More informationSemantic Processing (Part 2)
Semantic Processing (Part 2) All Projects Due: Fray 12-2-05, Noon Final: Monday, December 5, 2005, 10:15-12:05 Comprehensive 1 Recursive Type Definitions type MyRec is record f1: integer; f2: array of
More informationRuntime Checking for Program Verification Systems
Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification
More informationCS 415 Midterm Exam Fall 2003
CS 415 Midterm Exam Fall 2003 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Questions will be graded on quality of answer. Please supply the best answer you can to
More informationExtending Pattern Directed Inference Systems. EECS 344 Winter 2008
Extending Pattern Directed Inference Systems EECS 344 Winter 2008 Extending the basic PDIS model How to increase the convenience of the system How to increase the logical power of the system How to increase
More informationFunctional Programming and Haskell
Functional Programming and Haskell Tim Dawborn University of Sydney, Australia School of Information Technologies Tim Dawborn Functional Programming and Haskell 1/22 What are Programming Paradigms? A programming
More informationproof through refutation
Prolog's logic; resolution grammars & parsing 1 proof through refutation we saw that Prolog uses the strategy: test the claim that a query is false by (1) finding it is immediately true (matches a fact
More information02157 Functional Programming. Michael R. Ha. Lecture 2: Functions, Types and Lists. Michael R. Hansen
Lecture 2: Functions, Types and Lists nsen 1 DTU Compute, Technical University of Denmark Lecture 2: Functions, Types and Lists MRH 13/09/2018 Outline Functions as first-class citizens Types, polymorphism
More informationThe Apron Library. Bertrand Jeannet and Antoine Miné. CAV 09 conference 02/07/2009 INRIA, CNRS/ENS
The Apron Library Bertrand Jeannet and Antoine Miné INRIA, CNRS/ENS CAV 09 conference 02/07/2009 Context : Static Analysis What is it about? Discover properties of a program statically and automatically.
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 information6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson
6.184 Lecture 4 Interpretation Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 1 Interpretation Parts of an interpreter Arithmetic calculator
More informationLecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction
Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction Introduction to the different Programming Paradigm The different programming paradigms Why different paradigms?
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 informationBCS THE CHARTERED INSTITUTE FOR IT. BCS Higher Education Qualifications BCS Level 6 Professional Graduate Diploma in IT EXAMINERS' REPORT
BCS THE CHARTERED INSTITUTE FOR IT BCS Higher Education Qualifications BCS Level 6 Professional Graduate Diploma in IT March 2016 EXAMINERS' REPORT Programming Paradigms General comments on candidates'
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 informationCOP4020 Programming Languages. Logical programming with Prolog Prof. Xin Yuan
COP4020 Programming Languages Logical programming with Prolog Prof. Xin Yuan Topics Logic programming with Prolog COP4020 Spring 2013 2 Definitions: Prolog Terms Terms are symbolic expressions that are
More informationProgramming in Scala Second Edition
Programming in Scala Second Edition Martin Odersky, Lex Spoon, Bill Venners artima ARTIMA PRESS WALNUT CREEK, CALIFORNIA Contents Contents List of Figures List of Tables List of Listings Foreword Foreword
More informationCS558 Programming Languages. Winter 2013 Lecture 3
CS558 Programming Languages Winter 2013 Lecture 3 1 NAMES AND BINDING One essential part of being a high-level language is having convenient names for things: variables constants types functions etc. classes
More informationA Pearl on SAT Solving in Prolog (extended abstract)
A Pearl on SAT Solving in Prolog (extended abstract) Jacob M. Howe and Andy King 1 Introduction The Boolean satisfiability problem, SAT, is of continuing interest because a variety of problems are naturally
More informationAbstractions and small languages in synthesis CS294: Program Synthesis for Everyone
Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone Ras Bodik Emina Torlak Division of Computer Science University of California, Berkeley Today Today: we describe why high-level
More informationProgram Analysis: Lecture 02 Page 1 of 32
Program Analysis: Lecture 02 Page 1 of 32 Program Analysis/ Mooly Sagiv Lecture 1, 31/10/2012 Operational Semantics Notes by: Kalev Alpernas As background to the subject of Program Analysis, we will first
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 16: Functional Programming Zheng (Eddy Zhang Rutgers University April 2, 2018 Review: Computation Paradigms Functional: Composition of operations on data.
More informationFormal Specification and Verification
Formal Specification and Verification Introduction to Promela Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing
More informationProgram Calculus Calculational Programming
Program Calculus Calculational Programming National Institute of Informatics June 21 / June 28 / July 5, 2010 Program Calculus Calculational Programming What we will learn? Discussing the mathematical
More informationIntroduction to OCaml
Fall 2018 Introduction to OCaml Yu Zhang Course web site: http://staff.ustc.edu.cn/~yuzhang/tpl References Learn X in Y Minutes Ocaml Real World OCaml Cornell CS 3110 Spring 2018 Data Structures and Functional
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 informationFinding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar
Finding and Fixing Bugs in Liquid Haskell Anish Tondwalkar Overview Motivation Liquid Haskell Fault Localization Fault Localization Evaluation Predicate Discovery Predicate Discovery Evaluation Conclusion
More informationFaculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology
Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False
More informationHard deadline: 3/28/15 1:00pm. Using software development tools like source control. Understanding the environment model and type inference.
CS 3110 Spring 2015 Problem Set 3 Version 0 (last modified March 12, 2015) Soft deadline: 3/26/15 11:59pm Hard deadline: 3/28/15 1:00pm Overview In this assignment you will implement several functions
More informationModule 6. Knowledge Representation and Logic (First Order Logic) Version 2 CSE IIT, Kharagpur
Module 6 Knowledge Representation and Logic (First Order Logic) 6.1 Instructional Objective Students should understand the advantages of first order logic as a knowledge representation language Students
More informationINF4820: Algorithms for Artificial Intelligence and Natural Language Processing. Common Lisp Fundamentals
INF4820: Algorithms for Artificial Intelligence and Natural Language Processing Common Lisp Fundamentals Stephan Oepen & Murhaf Fares Language Technology Group (LTG) August 30, 2017 Last Week: What is
More informationDeclarative programming. Logic programming is a declarative style of programming.
Declarative programming Logic programming is a declarative style of programming. Declarative programming Logic programming is a declarative style of programming. The programmer says what they want to compute,
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationSymbolic Reasoning. Dr. Neil T. Dantam. Spring CSCI-561, Colorado School of Mines. Dantam (Mines CSCI-561) Symbolic Reasoning Spring / 86
Symbolic Reasoning Dr. Neil T. Dantam CSCI-561, Colorado School of Mines Spring 2019 Dantam (Mines CSCI-561) Symbolic Reasoning Spring 2019 1 / 86 Introduction Definition: Symbolic Reasoning Inference
More informationCS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)
CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going
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 information