Applying Data Refinement for Monadic Programs to Hopcroft s Algorithm
|
|
- Berenice Conley
- 6 years ago
- Views:
Transcription
1 Applying Data Refinement for Monadic Programs to Hopcroft s Algorithm Peter Lammich, Thomas Tuerk ITP 2012, 13th August 2012
2 Background Peter Lammich Isabelle Collection Framework (ICF) verified collection datastructures in Isabelle/HOL generation of efficient functional code Refinement for Monadic Programs Thomas Tuerk Computer Aided Verification of Automata ( Hopcroft s minimisation algorithm largest case study of Refinement Framework so far
3 Structure 1 Monadic Refinement Framework Background 2 Explanation using Hopcroft s Minimisation Algorithm 3 Conclusion
4 Stepwise Program Refinement trade-off: abstract vs. concrete formalisations of programs abstract programs: easy to verify concrete programs: efficiently executable standard solution: stepwise program refinement Spec P 1... P n Impl each step provably preserves correctness steps concentrate on single issues more modular and manageable proofs refinement framework supports relational specifications framework based on shallow embedding using monads
5 Refinement Framework Foundations Set/Exception monad datatype r nres ::= res (r set) fail return x := res {x} { bind m f := fail x X f x if m = fail if m = res X refinement: f x f x intuition: possible results of f x are also results of f x programs are HOL-functions f : a r nres least, greatest fixed point for recursion usual programming constructs available
6 Hopcroft s Algorithm Hopcroft s algorithm minimises initially connected DFAs efficient and widely-used computes the Myhill-Nerode equivalence relation {{q q accepts same language as q} q Q} details unimportant, let s focus on refinement Abstract Algorithm Hopcroft step abstract(a, a, C s, P, L) = spec (P, L ). P = Split A (P, (a, C s)) splitter P A (P, (a, C s), L, L ); Hopcroft abstract(a) = if (Q = ) then return else if (F = ) then return {Q} else while T Hopcroft abstract invar (λ(p, L). L ) (λ(p, L). do { (a, C s) spec x. x L; (P, L ) Hopcroft step abstract(a, a, C s, P, L); return (P, L ) }) (part F, {(a, F) a Σ})
7 Hopcroft s Algorithm Hopcroft s algorithm minimises initially connected DFAs efficient and widely-used computes the Myhill-Nerode equivalence relation {{q q accepts same language as q} q Q} do-notation of monads allows readable programs Abstract Algorithm Hopcroft step abstract(a, a, C s, P, L) = spec (P, L ). P = Split A (P, (a, C s)) splitter P A (P, (a, C s), L, L ); Hopcroft abstract(a) = if (Q = ) then return else if (F = ) then return {Q} else while T Hopcroft abstract invar (λ(p, L). L ) (λ(p, L). do { (a, C s) spec x. x L; (P, L ) Hopcroft step abstract(a, a, C s, P, L); return (P, L ) }) (part F, {(a, F) a Σ})
8 Hopcroft s Algorithm Hopcroft s algorithm minimises initially connected DFAs efficient and widely-used computes the Myhill-Nerode equivalence relation {{q q accepts same language as q} q Q} nondeterminism easy to use Abstract Algorithm Hopcroft step abstract(a, a, C s, P, L) = spec (P, L ). P = Split A (P, (a, C s)) splitter P A (P, (a, C s), L, L ); Hopcroft abstract(a) = if (Q = ) then return else if (F = ) then return {Q} else while T Hopcroft abstract invar (λ(p, L). L ) (λ(p, L). do { (a, C s) spec x. x L; (P, L ) Hopcroft step abstract(a, a, C s, P, L); return (P, L ) }) (part F, {(a, F) a Σ})
9 Hopcroft s Algorithm Hopcroft s algorithm minimises initially connected DFAs efficient and widely-used computes the Myhill-Nerode equivalence relation {{q q accepts same language as q} q Q} constructs like if-then-else or while available Abstract Algorithm Hopcroft step abstract(a, a, C s, P, L) = spec (P, L ). P = Split A (P, (a, C s)) splitter P A (P, (a, C s), L, L ); Hopcroft abstract(a) = if (Q = ) then return else if (F = ) then return {Q} else while T Hopcroft abstract invar (λ(p, L). L ) (λ(p, L). do { (a, C s) spec x. x L; (P, L ) Hopcroft step abstract(a, a, C s, P, L); return (P, L ) }) (part F, {(a, F) a Σ})
10 Hopcroft s Algorithm Hopcroft s algorithm minimises initially connected DFAs efficient and widely-used computes the Myhill-Nerode equivalence relation {{q q accepts same language as q} q Q} shallow embedding handy Abstract Algorithm Hopcroft step abstract(a, a, C s, P, L) = spec (P, L ). P = Split A (P, (a, C s)) splitter P A (P, (a, C s), L, L ); Hopcroft abstract(a) = if (Q = ) then return else if (F = ) then return {Q} else while T Hopcroft abstract invar (λ(p, L). L ) (λ(p, L). do { (a, C s) spec x. x L; (P, L ) Hopcroft step abstract(a, a, C s, P, L); return (P, L ) }) (part F, {(a, F) a Σ})
11 Correctness correctness expressed by refinement A. DFA A = Hopcroft abstract(a) spec P. P = Myhill Nerode partition A refinement framework provides syntax driven verification condition generator proof can focus on algorithm, not refinement or representation however, correctness proof non-trivial
12 Refinement Steps step 1: implement Hopcroft step abstract with foreach loop simple preconditions = Hopcroft step set(a, a, C s, P, L) Hopcroft step abstract(a, a, C s, P, L) Hopcroft step set very similar to presentation in literature step 2: optimise loop by precomputing predecessors simple preconditions = Hopcroft step pre(a, a, C s, P, L) Hopcroft step set(a, a, C s, P, L) again, good tool support by the refinement framework assert very useful
13 Data Refinement implementing partitions as sets of sets is inefficient lets use datastructure based on finite maps instead data refinement needed more general: replace abstract data type by concrete one e. g. implement sets by red-black trees abstraction relation R = {(c, a) a = α R c I R c} concretisation function R : a nres c nres transitive: m R m m S m = m RS m
14 Refinement Steps II step 3: implement partitions by finite maps A. DFA A = Hopcroft map(a) R 1 Hopcroft abstract(a) step 4: implement classes with intervals of natural numbers A. DFA A = Hopcroft map2(a) R 2 Hopcroft map(a) these refinement steps are non-trivial verification condition generator for data refinements proofs focus on essence of problem
15 Code Generation step 5: use Isabelle Collection Framework (ICF) implement finite maps by red-black trees or arrays implement sets by red-black trees or sorted lists... A. DFA A = Hopcroft impl(a) R 3 Hopcroft map2(a) step 6: bring into special form for code generation A. DFA A = return Hopcroft code(a) Hopcroft impl(a) there is good tool support step 6 is nearly fully automatic
16 Code Generation II transitivity leads to A. DFA A = return Hopcroft code(a) R 1 R 2 R 3 spec P. P = Myhill Nerode partition A Isabelle/HOL allows code generation in functional languages Standard ML OCaml Haskell Scala...
17 Experimental Results No. No. No. Baclet/Pagetti Lammich/Tuerk Leiß DFAs states labels OCaml OCaml PolyML PolyML s 6.59 s 1.88 s 5.38 s s s 3.51 s s s s 3.97 s s s s 7.56 s s s s s s s s 5.37 s s s s s s Experimental Results (measured on an Intel Core I7 2720QM)
18 Conclusion refinement framework for monadic programs based on refinement calculus implemented in Isabelle/HOL available in Archive of Formal Proofs ( case study of Hopcroft s algorithm first formalisation efficient version not feasible without refinement available at
19 Other Applications BFS, DFS graph traversals [Lammich] Dijkstra s shortest paths algorithm [Nordhoff, Lammich] nested DFS (Büchi automata acceptance) [Neumann] Henzinger s Algorithm (simulation preorders for NFAs) [Eberl] Gerth s algorithm (LTL to Büchi automata), work in progress [Schimpf] saturation algorithm for pre of PDS/DPN, work in progress [Lammich]
20 Current / Future Work additional automation support for complexity proofs heap monads with separation logic
A Refinement Framework for Monadic Programs in Isabelle/HOL
A Refinement Framework for Monadic Programs in Isabelle/HOL Peter Lammich TU Munich, Institut für Informatik, Theorem Proving Group Easter 2013 Peter Lammich (TUM) Refinement Framework Easter 2013 1 /
More informationApplying Data Refinement for Monadic Programs to Hopcroft s Algorithm
Applying Data Refinement for Monadic Programs to Hopcroft s Algorithm Peter Lammich and Thomas Tuerk TU München, {peter.lammich,thomas.tuerk}@in.tum.de Abstract. We provide a framework for program and
More informationFAKULTÄT FÜR INFORMATIK DER TECHNI S CHEN UNIVER SITÄT MÜNCHEN. Efficient and Verified Computation of Simulation Relations on NFAs
FAKULTÄT FÜR INFORMATIK DER TECHNI S CHEN UNIVER SITÄT MÜNCHEN Bachelor s thesis in Computer Science Efficient and Verified Computation of Simulation Relations on NFAs Manuel Eberl FAKULTÄT FÜR INFORMATIK
More informationRefinement to Imperative HOL
Journal of Automated Reasoning manuscript No. (will be inserted by the editor) Refinement to Imperative HOL Peter Lammich Received: date / Accepted: date Abstract Many algorithms can be implemented most
More informationFormalization of Incremental Simplex Algorithm by Stepwise Refinement
Formalization of Incremental Simplex Algorithm by Stepwise Refinement Mirko Spasić, Filip Marić Faculty of Mathematics, University of Belgrade FM2012, 30. August 2012. Overview 1 Introduction 2 Approach
More informationA Framework for Verified Depth-First Algorithms
René Neumann Technische Universität München Garching, Germany rene.neumann@in.tum.de Abstract We present a framework in Isabelle/HOL for formalizing variants of depth-first search. This framework allows
More informationThis is an author-deposited version published in : Eprints ID : 12671
Open Archive TOULOUSE Archive Ouverte (OATAO) OATAO is an open access repository that collects the work of Toulouse researchers and makes it freely available over the web where possible. This is an author-deposited
More informationHow Efficient Can Fully Verified Functional Programs Be - A Case Study of Graph Traversal Algorithms
How Efficient Can Fully Verified Functional Programs Be - A Case Study of Graph Traversal Algorithms Mirko Stojadinović Faculty of Mathematics, University of Belgrade Abstract. One approach in achieving
More informationRefinement Based Verification of Imperative Data Structures
Refinement Based Verification of Imperative Data Structures Peter Lammich Technische Universität München, Germany lammich@in.tum.de Abstract In this paper we present a stepwise refinement based top-down
More informationCSE450. Translation of Programming Languages. Lecture 20: Automata and Regular Expressions
CSE45 Translation of Programming Languages Lecture 2: Automata and Regular Expressions Finite Automata Regular Expression = Specification Finite Automata = Implementation A finite automaton consists of:
More informationPrinciples of Programming Languages [PLP-2015] Detailed Syllabus
Principles of Programming Languages [PLP-2015] Detailed Syllabus This document lists the topics presented along the course. The PDF slides published on the course web page (http://www.di.unipi.it/~andrea/didattica/plp-15/)
More informationUnit- and Sequence Test Generation with HOL-TestGen
Unit- and Sequence Test Generation with HOL-TestGen Tests et Methodes Formelles Prof. Burkhart Wolff Univ - Paris-Sud / LRI 16.6.2015 B.Wolff - HOL-TestGen 1 Overview HOL-TestGen and its Business-Case
More informationImplementation of Lexical Analysis
Implementation of Lexical Analysis Outline Specifying lexical structure using regular expressions Finite automata Deterministic Finite Automata (DFAs) Non-deterministic Finite Automata (NFAs) Implementation
More informationImplementation of Lexical Analysis
Implementation of Lexical Analysis Outline Specifying lexical structure using regular expressions Finite automata Deterministic Finite Automata (DFAs) Non-deterministic Finite Automata (NFAs) Implementation
More informationUsing Promela in a Fully Verified Executable LTL Model Checker
Using Promela in a Fully Verified Executable LTL Model Checker René Neumann Technische Universität München, rene.neumann@in.tum.de Abstract. In [4] we presented an LTL model checker whose code has been
More informationFAKULTÄT FÜR INFORMATIK
FAKULTÄT FÜR INFORMATIK DER TECHNISCHEN UNIVERSITÄT MÜNCHEN Lehrstuhl für Informatik VII CAVA A Verified Model Checker René Neumann FAKULTÄT FÜR INFORMATIK DER TECHNISCHEN UNIVERSITÄT MÜNCHEN Lehrstuhl
More informationNONDETERMINISTIC MOORE
NONDETERMINISTIC MOORE AUTOMATA AND BRZOZOWSKI'S ALGORITHM G. Castiglione, A. Restivo, M. Sciortino University of Palermo Workshop PRIN Varese, 5-7 Settembre 2011 SUMMARY A class of nondeterministic Moore
More informationImplementation of Lexical Analysis
Implementation of Lexical Analysis Lecture 4 (Modified by Professor Vijay Ganesh) Tips on Building Large Systems KISS (Keep It Simple, Stupid!) Don t optimize prematurely Design systems that can be tested
More informationTurning proof assistants into programming assistants
Turning proof assistants into programming assistants ST Winter Meeting, 3 Feb 2015 Magnus Myréen Why? Why combine proof- and programming assistants? Why proofs? Testing cannot show absence of bugs. Some
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Conceptual Structure of a Compiler Source code x1 := y2
More informationLight-weight containers for Isabelle: efficient, extensible, nestable
Light-weight containers for Isabelle: efficient, extensible, nestable Andreas Lochbihler Institute of Information Security, ETH Zurich andreas.lochbihler@inf.ethz.ch Abstract. In Isabelle/HOL, we develop
More informationPrograms and Proofs in Isabelle/HOL
Programs and Proofs in Isabelle/HOL Makarius Wenzel http://sketis.net March 2016 = Isabelle λ β α Introduction What is Isabelle? Hanabusa Itcho : Blind monks examining an elephant Introduction 2 History:
More informationLambda calculus. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 6
Lambda calculus Advanced functional programming - Lecture 6 Wouter Swierstra and Alejandro Serrano 1 Today Lambda calculus the foundation of functional programming What makes lambda calculus such a universal
More informationType Theory meets Effects. Greg Morrisett
Type Theory meets Effects Greg Morrisett A Famous Phrase: Well typed programs won t go wrong. 1. Describe abstract machine: M ::= 2. Give transition relation: M 1 M 2
More informationLexical Analysis. Implementation: Finite Automata
Lexical Analysis Implementation: Finite Automata Outline Specifying lexical structure using regular expressions Finite automata Deterministic Finite Automata (DFAs) Non-deterministic Finite Automata (NFAs)
More informationNFAs and Myhill-Nerode. CS154 Chris Pollett Feb. 22, 2006.
NFAs and Myhill-Nerode CS154 Chris Pollett Feb. 22, 2006. Outline Bonus Questions Equivalence with Finite Automata Myhill-Nerode Theorem. Bonus Questions These questions are open to anybody. I will only
More informationAdam Chlipala University of California, Berkeley ICFP 2006
Modular Development of Certified Program Verifiers with a Proof Assistant Adam Chlipala University of California, Berkeley ICFP 2006 1 Who Watches the Watcher? Program Verifier Might want to ensure: Memory
More informationCSE450. Translation of Programming Languages. Automata, Simple Language Design Principles
CSE45 Translation of Programming Languages Automata, Simple Language Design Principles Finite Automata State Graphs A state: The start state: An accepting state: A transition: a A Simple Example A finite
More informationChapter 13: Reference. Why reference Typing Evaluation Store Typings Safety Notes
Chapter 13: Reference Why reference Typing Evaluation Store Typings Safety Notes References Computational Effects Also known as side effects. A function or expression is said to have a side effect if,
More informationVerification of Selection and Heap Sort Using Locales
Verification of Selection and Heap Sort Using Locales Danijela Petrović September 19, 2015 Abstract Stepwise program refinement techniques can be used to simplify program verification. Programs are better
More informationSimplifying Loop Invariant Generation Using Splitter Predicates. Rahul Sharma Işil Dillig, Thomas Dillig, and Alex Aiken Stanford University
Simplifying Loop Invariant Generation Using Splitter Predicates Rahul Sharma Işil Dillig, Thomas Dillig, and Alex Aiken Stanford University Loops and Loop Invariants Loop Head x = 0; while( x
More informationCITS5501 Software Testing and Quality Assurance Formal methods
CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005
More informationProgram generation for schema-based, typed data access
Program generation for schema-based, typed data access Ralf Lämmel Software Engineer Facebook, London Program generation A use case at Facebook Purpose of generation: typed data access ("O/R mapping" et
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Massachusetts Institute of Technology Language Definition Problem How to precisely define language Layered structure
More informationRegular Languages. MACM 300 Formal Languages and Automata. Formal Languages: Recap. Regular Languages
Regular Languages MACM 3 Formal Languages and Automata Anoop Sarkar http://www.cs.sfu.ca/~anoop The set of regular languages: each element is a regular language Each regular language is an example of a
More informationEfficient Verification of Imperative Programs Using Auto2
Efficient Verification of Imperative Programs Using Auto2 Bohua Zhan (B) Technical University of Munich, Munich, Germany zhan@in.tum.de Abstract. Auto2 is a recently introduced prover for the proof assistant
More informationFAdo: Interactive Tools for Learning Formal Computational Models
FAdo: Interactive Tools for Learning Formal Computational Models Rogério Reis Nelma Moreira DCC-FC& LIACC, Universidade do Porto R. do Campo Alegre 823, 4150 Porto, Portugal {rvr,nam}@ncc.up.pt Abstract
More informationProgramming Language Pragmatics
Chapter 10 :: Functional Languages Programming Language Pragmatics Michael L. Scott Historical Origins The imperative and functional models grew out of work undertaken Alan Turing, Alonzo Church, Stephen
More informationQualitätssicherung von Software (SWQS)
Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 15.7.2014: Modellbasierter Test (Jaroslav Svacina) Specification-based Testing Constructing
More informationTowards a Practical, Verified Kernel
Towards a Practical, Verified Kernel Kevin Elphinstone and Gerwin Klein, National ICT Australia and the University of New South Wales Philip Derrin, National ICT Australia Timothy Roscoe, ETH Zürich Gernot
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Language Definition Problem How to precisely
More informationAlgorithms and Theory of Computation. Lecture 3: Graph Algorithms
Algorithms and Theory of Computation Lecture 3: Graph Algorithms Xiaohui Bei MAS 714 August 20, 2018 Nanyang Technological University MAS 714 August 20, 2018 1 / 18 Connectivity In a undirected graph G
More informationTesting. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]
Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a
More informationCMSC 330: Organization of Programming Languages. Operational Semantics
CMSC 330: Organization of Programming Languages Operational Semantics Notes about Project 4, Parts 1 & 2 Still due today (7/2) Will not be graded until 7/11 (along with Part 3) You are strongly encouraged
More informationCS 432 Fall Mike Lam, Professor. Finite Automata Conversions and Lexing
CS 432 Fall 2017 Mike Lam, Professor Finite Automata Conversions and Lexing Finite Automata Key result: all of the following have the same expressive power (i.e., they all describe regular languages):
More informationStatic Program Analysis
Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-18/spa/ Preliminaries Outline of Lecture 1 Preliminaries Introduction
More informationAlgorithms for Data Science
Algorithms for Data Science CSOR W4246 Eleni Drinea Computer Science Department Columbia University Thursday, October 1, 2015 Outline 1 Recap 2 Shortest paths in graphs with non-negative edge weights (Dijkstra
More informationTheorem proving. PVS theorem prover. Hoare style verification PVS. More on embeddings. What if. Abhik Roychoudhury CS 6214
Theorem proving PVS theorem prover Abhik Roychoudhury National University of Singapore Both specification and implementation can be formalized in a suitable logic. Proof rules for proving statements in
More informationA CRASH COURSE IN SEMANTICS
LAST TIME Recdef More induction NICTA Advanced Course Well founded orders Slide 1 Theorem Proving Principles, Techniques, Applications Slide 3 Well founded recursion Calculations: also/finally {P}... {Q}
More informationPart II. Hoare Logic and Program Verification. Why specify programs? Specification and Verification. Code Verification. Why verify programs?
Part II. Hoare Logic and Program Verification Part II. Hoare Logic and Program Verification Dilian Gurov Props: Models: Specs: Method: Tool: safety of data manipulation source code logic assertions Hoare
More informationSoftware Design. Levels in Design Process. Design Methodologies. Levels..
Design Software Design Design activity begins with a set of requirements Design done before the system is implemented Design is the intermediate language between requirements and code Moving from problem
More informationVerified Firewall Policy Transformations for Test Case Generation
Verified Firewall Policy Transformations for Test Case Generation Achim D. Brucker 1 Lukas Brügger 2 Paul Kearney 3 Burkhart Wolff 4 1 SAP Research, Germany 2 Information Security, ETH Zürich, Switzerland
More informationChapter 11 :: Functional Languages
Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative
More informationCS/ECE 374 Fall Homework 1. Due Tuesday, September 6, 2016 at 8pm
CSECE 374 Fall 2016 Homework 1 Due Tuesday, September 6, 2016 at 8pm Starting with this homework, groups of up to three people can submit joint solutions. Each problem should be submitted by exactly one
More information1) What is the primary purpose of template functions? 2) Suppose bag is a template class, what is the syntax for declaring a bag b of integers?
Review for Final (Chapter 6 13, 15) 6. Template functions & classes 1) What is the primary purpose of template functions? A. To allow a single function to be used with varying types of arguments B. To
More informationSliced Path Prefixes: An Effective Method to Enable Refinement Selection
FORTE '15 Sliced Path Prefixes: An Effective Method to Enable Refinement Selection Dirk Beyer, Stefan Löwe, Philipp Wendler SoSy-Lab Software Systems We want Refinement Selection!!! Because straight-forward
More informationTo be or not programmable Dimitri Papadimitriou, Bernard Sales Alcatel-Lucent April 2013 COPYRIGHT 2011 ALCATEL-LUCENT. ALL RIGHTS RESERVED.
To be or not programmable Dimitri Papadimitriou, Bernard Sales Alcatel-Lucent April 2013 Introduction SDN research directions as outlined in IRTF RG outlines i) need for more flexibility and programmability
More informationFormally-Proven Kosaraju s algorithm
Formally-Proven Kosaraju s algorithm Laurent Théry Laurent.Thery@sophia.inria.fr Abstract This notes explains how the Kosaraju s algorithm that computes the strong-connected components of a directed graph
More informationSymbolic Automata Library for Fast Prototyping
http://excel.fit.vutbr.cz Symbolic Automata Library for Fast Prototyping Michaela Bieliková not_in{@} in{e,x,c} in{e,l} F I T Abstract Finite state automata are widely used in the fields of computer science
More informationEXAMINATIONS 2009 END-OF-YEAR. COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal Foundations of Software Engineering
T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON EXAMINATIONS 2009 END-OF-YEAR COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal
More informationDenotational Semantics. Domain Theory
Denotational Semantics and Domain Theory 1 / 51 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning
More informationIntroduction to Algorithms Third Edition
Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Introduction to Algorithms Third Edition The MIT Press Cambridge, Massachusetts London, England Preface xiü I Foundations Introduction
More informationF453 Module 7: Programming Techniques. 7.2: Methods for defining syntax
7.2: Methods for defining syntax 2 What this module is about In this module we discuss: explain how functions, procedures and their related variables may be used to develop a program in a structured way,
More informationLecture 2 Finite Automata
Lecture 2 Finite Automata August 31, 2007 This lecture is intended as a kind of road map to Chapter 1 of the text just the informal examples that I ll present to motivate the ideas. 1 Expressions without
More informationFormal Languages and Grammars. Chapter 2: Sections 2.1 and 2.2
Formal Languages and Grammars Chapter 2: Sections 2.1 and 2.2 Formal Languages Basis for the design and implementation of programming languages Alphabet: finite set Σ of symbols String: finite sequence
More informationProvably Correct Software
Provably Correct Software Max Schäfer Institute of Information Science/Academia Sinica September 17, 2007 1 / 48 The Need for Provably Correct Software BUT bugs are annoying, embarrassing, and cost gazillions
More informationType Systems Winter Semester 2006
Type Systems Winter Semester 2006 Week 4 November 8 November 15, 2006 - version 1.1 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial
More informationRewriting Models of Boolean Programs
Rewriting Models of Boolean Programs Javier Esparza University of Stuttgart Joint work with Ahmed Bouajjani Automatic verification using model-checking Initiated in the early 80s in USA and France. 25
More informationCMSC330 Fall 2014 Midterm 1 Solution
CMSC330 Fall 2014 Midterm 1 Solution 1. (8 pts) Programming languages (PL) et al. For the following multiple choice questions, circle the letter(s) on the right corresponding to the best answer(s) to each
More informationCS154. Streaming Algorithms and Communication Complexity
CS154 Streaming Algorithms and Communication Complexity 1 Streaming Algorithms 2 Streaming Algorithms 01 42 3 L = {x x has more 1 s than 0 s} Initialize: C := 0 and B := 0 When the next symbol x is read,
More informationTotal No. of Questions : 18] [Total No. of Pages : 02. M.Sc. DEGREE EXAMINATION, DEC First Year COMPUTER SCIENCE.
(DMCS01) Total No. of Questions : 18] [Total No. of Pages : 02 M.Sc. DEGREE EXAMINATION, DEC. 2016 First Year COMPUTER SCIENCE Data Structures Time : 3 Hours Maximum Marks : 70 Section - A (3 x 15 = 45)
More informationMonads. Mark Hills 6 August Department of Computer Science University of Illinois at Urbana-Champaign
Monads Mark Hills mhills@cs.uiuc.edu Department of Computer Science University of Illinois at Urbana-Champaign 6 August 2009 Hills Monads 1 / 19 Overview Overview Hills Monads 2 / 19 Why Monads? Overview
More informationProgramming with Dependent Types Interactive programs and Coalgebras
Programming with Dependent Types Interactive programs and Coalgebras Anton Setzer Swansea University, Swansea, UK 14 August 2012 1/ 50 A Brief Introduction into ML Type Theory Interactive Programs in Dependent
More informationRegular Languages (14 points) Solution: Problem 1 (6 points) Minimize the following automaton M. Show that the resulting DFA is minimal.
Regular Languages (14 points) Problem 1 (6 points) inimize the following automaton Show that the resulting DFA is minimal. Solution: We apply the State Reduction by Set Partitioning algorithm (särskiljandealgoritmen)
More informationLecture 9 CIS 341: COMPILERS
Lecture 9 CIS 341: COMPILERS Announcements HW3: LLVM lite Available on the course web pages. Due: Monday, Feb. 26th at 11:59:59pm Only one group member needs to submit Three submissions per group START
More informationCOMP 4161 Data61 Advanced Course. Advanced Topics in Software Verification. Gerwin Klein, June Andronick, Christine Rizkallah, Miki Tanaka
COMP 4161 Data61 Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Christine Rizkallah, Miki Tanaka 1 COMP4161 c Data61, CSIRO: provided under Creative Commons Attribution
More informationInformal Semantics of Data. semantic specification names (identifiers) attributes binding declarations scope rules visibility
Informal Semantics of Data semantic specification names (identifiers) attributes binding declarations scope rules visibility 1 Ways to Specify Semantics Standards Documents (Language Definition) Language
More informationTranslation Validation for a Verified OS Kernel
To appear in PLDI 13 Translation Validation for a Verified OS Kernel Thomas Sewell 1, Magnus Myreen 2, Gerwin Klein 1 1 NICTA, Australia 2 University of Cambridge, UK L4.verified sel4 = a formally verified
More informationIntroduction to Lexical Analysis
Introduction to Lexical Analysis Outline Informal sketch of lexical analysis Identifies tokens in input string Issues in lexical analysis Lookahead Ambiguities Specifying lexical analyzers (lexers) Regular
More informationHoare logic. A proof system for separation logic. Introduction. Separation logic
Introduction Hoare logic Lecture 6: Examples in separation logic In the previous lecture, we saw how reasoning about pointers in Hoare logic was problematic, which motivated introducing separation logic.
More informationKey Features. Defect Rates. Traditional Unit testing: 25 faults / KLOC System testing: 25 / KLOC Inspections: / KLOC
Cleanroom attempt to mathematically-based, scientific engineering process of software development Cleanroom software engineering yields software that is correct by mathematically sound design, and software
More informationThe design of a programming language for provably correct programs: success and failure
The design of a programming language for provably correct programs: success and failure Don Sannella Laboratory for Foundations of Computer Science School of Informatics, University of Edinburgh http://homepages.inf.ed.ac.uk/dts
More informationCompiler Construction
Compiler Construction Lecture 2: Lexical Analysis I (Introduction) Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de http://moves.rwth-aachen.de/teaching/ss-14/cc14/
More informationLOGIC SYNTHESIS AND VERIFICATION ALGORITHMS. Gary D. Hachtel University of Colorado. Fabio Somenzi University of Colorado.
LOGIC SYNTHESIS AND VERIFICATION ALGORITHMS by Gary D. Hachtel University of Colorado Fabio Somenzi University of Colorado Springer Contents I Introduction 1 1 Introduction 5 1.1 VLSI: Opportunity and
More informationRule Formats for Nominal Modal Transition Systems
Rule Formats for Nominal Modal Transition Systems Anke Stüber Universitet Uppsala, Uppsala, Sweden anke.stuber@it.uu.se Abstract. Modal transition systems are specification languages that allow the expression
More informationFinite Automata Theory and Formal Languages TMV027/DIT321 LP4 2016
Finite Automata Theory and Formal Languages TMV027/DIT321 LP4 2016 Lecture 15 Ana Bove May 23rd 2016 More on Turing machines; Summary of the course. Overview of today s lecture: Recap: PDA, TM Push-down
More informationM.Sc. (Previous) DEGREE EXAMINATION, MAY (Examination at the end of First Year) Computer Science. Paper - I : DATA STRUCTURES
(DMCS 01) M.Sc. (Previous) DEGREE EXAMINATION, MAY - 2014 (Examination at the end of First Year) Computer Science Paper - I : DATA STRUCTURES Time : 03 Hours Maximum Marks : 75 Section A (3 15 = 45) Answer
More informationA Typed Lambda Calculus for Input Sanitation
A Typed Lambda Calculus for Input Sanitation Nathan Fulton Carthage College nfulton@carthage.edu April 11, 2013 Abstract Programmers often wish to validate or sanitize user input. One common approach to
More informationMaterial covered. Areas/Topics covered. Logistics. What to focus on. Areas/Topics covered 5/14/2015. COS 226 Final Exam Review Spring 2015
COS 226 Final Exam Review Spring 2015 Ananda Gunawardena (guna) guna@cs.princeton.edu guna@princeton.edu Material covered The exam willstressmaterial covered since the midterm, including the following
More informationVerified Characteristic Formulae for CakeML. Armaël Guéneau, Magnus O. Myreen, Ramana Kumar, Michael Norrish April 27, 2017
Verified Characteristic Formulae for CakeML Armaël Guéneau, Magnus O. Myreen, Ramana Kumar, Michael Norrish April 27, 2017 Goal: write programs in a high-level (ML-style) language, prove them correct interactively,
More informationCS402 - Theory of Automata Glossary By
CS402 - Theory of Automata Glossary By Acyclic Graph : A directed graph is said to be acyclic if it contains no cycles. Algorithm : A detailed and unambiguous sequence of instructions that describes how
More informationStop coding Pascal. Saturday, April 6, 13
Stop coding Pascal...emotional sketch about past, present and future of programming languages, Python, compilers, developers, Life, Universe and Everything Alexey Kachayev CTO at KitApps Inc. Open source
More informationLess naive type theory
Institute of Informatics Warsaw University 26 May 2007 Plan 1 Syntax of lambda calculus Why typed lambda calculi? 2 3 Syntax of lambda calculus Why typed lambda calculi? origins in 1930s (Church, Curry)
More informationA Verified Compiler from Isabelle/HOL to CakeML
A Verified Compiler from Isabelle/HOL to CakeML Lars Hupel and Tobias Nipkow Technische Universität München lars.hupel@tum.de, nipkow@in.tum.de Abstract. Many theorem provers can generate functional programs
More informationCIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)
By the end of this course, students should CIS 1.5 Course Objectives a. Understand the concept of a program (i.e., a computer following a series of instructions) b. Understand the concept of a variable
More informationProof-Producing Synthesis of ML from Higher-Order Logic
Proof-Producing Synthesis of ML from Higher-Order Logic Magnus O. Myreen Scott Owens Computer Laboratory, University of Cambridge, UK {magnus.myreen,scott.owens}@cl.cam.ac.uk Abstract The higher-order
More informationBasic Foundations of Isabelle/HOL
Basic Foundations of Isabelle/HOL Peter Wullinger May 16th 2007 1 / 29 1 Introduction into Isabelle s HOL Why Type Theory Basic Type Syntax 2 More HOL Typed λ Calculus HOL Rules 3 Example proof 2 / 29
More informationFormal methods for software security
Formal methods for software security Thomas Jensen, INRIA Forum "Méthodes formelles" Toulouse, 31 January 2017 Formal methods for software security Formal methods for software security Confidentiality
More informationFunctional Programming with Isabelle/HOL
Functional Programming with Isabelle/HOL = Isabelle λ β HOL α Florian Haftmann Technische Universität München January 2009 Overview Viewing Isabelle/HOL as a functional programming language: 1. Isabelle/HOL
More informationVerification and Parallelism in Intro CS. Dan Licata Wesleyan University
Verification and Parallelism in Intro CS Dan Licata Wesleyan University Starting in 2011, Carnegie Mellon revised its intro CS curriculum Computational thinking [Wing] Specification and verification Parallelism
More information