Writing and analyzing system policies in SUPPL

Size: px
Start display at page:

Download "Writing and analyzing system policies in SUPPL"

Transcription

1 Writing and analyzing system policies in SUPPL Robert Dockins (Galois, Inc.) Andrew Tolmach (LRI Univ. Paris-Sud) Alix Trieu (ENS Rennes) SOUND project Portland State University 1

2 (SAFE and) SOUND SOUND BAE Systems University of Pennsylvania Portland State University Apogee Research Safety on Untrusted Network Devices TEAM SOUND Wrapper Direct connection bound to specific identities for misbehavior attribution IBR a priori connection SOUND Data Service enables sensors to monitor data channels and attribute misbehavior to its origin SOUND supports two classes of applications: 1. SOUND-aware apps that are written for SOUND 2. Legacy apps that run within the SOUND Wrapper SOUND Identity Service empowers SOUND to trace misbehavior back to all associated identities, including users, applications, and systems Users and applications authenticate using the SOUND Identity Service Po Manlicy ua Policy Program Static Analyzer Compiler l Data Tables Policy Evaluator now extends to applications and users to protect communications from end point-to-endpoint Events Actions Network IBR a priori connection Assertions are used to validate users to the application server Application servers request new direct connections to SOUND-protected data repositories Applications connect to SOUND by way of the SOUND Connector, a system-level component of the SOUND Connection Service Data connections are bound to the identities associated with the data request for misbehavior attribution Policy Properties SUPPL Platform Policies combined with sensor observations form SOUND decisions SOUND Connection Service SOUND MODEL Informal Policy STATE TRANSITION SIMULATION RESULTS

3 Configuring an Active Firewall VPN-style network access on a per-connection level. 3

4 Configuring an Active Firewall VPN-style network access on a per-connection level. Who may access network resources? Who is to be considered malicious and how is their access limited? Who gets what quality of service? 4

5 Configuring an Active Firewall VPN-style network access on a per-connection level. Complex, changing configuration criteria Multiple administrators must cooperate to set policy Set of administration domains is dynamic Different administrators have different goals Multiple, complex platforms for implementing policy decisions 5

6 Existing tools are poor... Primitive user-driven configuration methods Mysterious command-line incantations Inflexible graphical control panels Highly limited configuration languages Usually limited to static configuration Cannot react to past behavior Must often fall back to ad-hoc coding Fragile, hard to validate 6

7 Domain-Specific Languages to the rescue! Design a domain-specific policy language specification generating implementations testing static analysis (But not just for security policies...) cf. Ponder, PDL, ASL, FML, JRules,... 7

8 SUPPL Simple Unified Policy Programming Language Event-Condition-Action (ECA) policies Full-featured programming language Supports combining of policies Supports static conflict detection (Domain-neutral) (Modest performance goals) 8

9 Event-Condition-Action Policies 9

10 SUPPL Language Elements condition evaluation pure logic-programming event/action handling imperative code Like Prolog, but with strong type and mode disciplines Precise interface with surrounding environment Locally stateless style; data tables for handling stateful policies 10

11 Connection service: interface primitive type principal. data ip4address ::= ip(number, number, number, number). event connectrequest { who : principal, src : ip4address, dest : ip4address }. event hostbehavesbadly (ip4address). action allow. action deny(string). % include reason for denial 11

12 Connection service: predicates and handlers predicate connectionauthorized(principal in, ip4address in). connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. 12

13 Firewall connection service: data tables table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min handle hostbehavesbadly(?addr) => queue insert (ADDR,"is badguy") into blacklisted; end. handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => query blacklisted(saddr,?why) => deny(why); _ => allow; end; _ => deny("connection not authorized"); end; end. 13

14 Types, modes, terms, clauses, queries t ::= Type id named type X, Y, Z, type variables list(t) list set(t) finite set map(t 1,t 2 ) finite map t 1 t n tuple type number numeric type string string type o ::= Mode in out ignore c ::= Clause m 1 = m 2 m 1 <> m 2 (dis)equality m 1 <= m 2 m 1 <m 2 comparisons m 1 >= m 2 m 1 >m 2 id (m 1,,m n ) predicate c 1 c 2 disjunction c 1,c 2 conjunction not c logical negation c 1 -> c 2 implication findall(m, g, X) find all m ::= Term "literal", strings 10, 3.14, 2.9e8, numbers X, Y, Z, variables?x,?y,?z, variable bindings _ anonymous variable id (m 1,,m n ) function call m 1 + m 2 m 1 m 2 numeric operations m 1 m 2 m 1 /m 2 ~m numeric negation [ ] empty list [m 1,,m n ] concrete list [m 1 m 2 ] list cons cell (m 1,,m n ) tuple g ::= id (m 1,,m n ) Goal q ::= Query m 1 = m 2 m 1 <> m 2 (dis)equality m 1 <= m 2 m 1 <m 2 comparisions m 1 >= m 2 m 1 >m 2 id (m 1,,m n ) predicate query q 1,q 2 conjunction query not c negation query 14

15 Handler bodies and declarations b ::= Handler Body b 1 b 2 sequence id (m 1,,m n ); procedure or action queue insert(m 1,,m n ) table insert into id ; queue delete(m 1,,m n ) table delete from id ; skip; noop query multibranch query q 1 => b 1 ; q n => b n ; end; foreach q => b end; foreach query d ::= Declaration primitive type id. prim type decl type id := t. type decl data id ::= data type decl id (t 1,,t n ) id (t 1,,t n ). event id (t 1,,t n ). event decl action id (t 1,,t n ). action decl procedure id (t 1,,t n ). procedure decl primitive function prim function decl id (t 1,,t n ) yields t. predicate id predicate decl (t 1 o 1?,,t n o n?). primitive predicate id primtive pred decl (t 1 o 1?,,t n o n?). mode id (o 1,,o n ). mode decl table id (t 1,,t n ) table decl key (o 1,,o n ) (lifetime int )?. index id (o 1,,o n ). index decl g :- c. rule handle id (?X 1,,?X n ) event handler => b end. define procedure procedure defn id (?X 1,,?X n ) := b end. axiom c. axiom decl lemma c. lemma decl 15

16 Type system highlights Built-in types for strings, numbers, lists, finite sets and finite maps User-definable type abbreviations and MLstyle algebraic types Predicates, functions, events, etc. require type declarations Types are inferred in rule and handler bodies Hindley-Milner polymorphism for predicates and functions 16

17 Mode system highlights Modes ensure that arguments are always fully instantiated ground data (no variables). In mode: the argument must be instantiated before the call Out mode: argument will be instantiated after call Predicate mode(s) must be declared 17

18 Comparison to Prolog Very similar syntax for rules Standard operational semantics based on SLDNF resolution Turing-complete via recursive predicates X SUPPL is strongly typed and moded X SUPPL rules are side-effect free X SUPPL has no nonlogical cut operator X SUPPL has call-by-value semantics for evaluable functions and numeric operators (no is needed) 18

19 Prototype Implementation 19

20 Static conflict detection Policies may contain conflicts One event triggers two inconsistent actions e.g. both allowing and denying a request Some systems attempt dynamic conflict resolution Based on priorities, or other meta-policies Inherently fragile and and hard to understand SUPPL approach: detect and fix conflicts statically 20

21 Example conflict % Existing handler handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. % Suppose new administrator adds this: primitive predicate superuser(principal in). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query superuser(p) => allow; end; end. 21

22 Example conflict conflict definition conflict allow, deny(_). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. primitive predicate superuser(principal in). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query superuser(p) => allow; end; end. 22

23 When can conflict occur? conflict allow, deny(_). query must fail handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. primitive predicate superuser(principal in). query must succeed handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query superuser(p) => allow; end; end. control flow + predicate satisfiability 23

24 Conflict detection: verification formulae Render conflict condition as first-order logic formula......in context of axioms characterizing (nonprimitive) predicates and table keys If formula is satisfiable, the conflict might actually occur so report to user If formula is unsatisfiable, the conflict is definitely impossible so keep quiet 24

25 Encoding control flow conflict allow, deny(_). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. primitive predicate superuser(principal in). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query superuser(p) => allow; end; end. 25

26 Encoding control flow conflict allow, deny(_). handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query connectionauthorized(p,daddr) => allow; _ => deny("connection not authorized"); end; end. p,d. connectionauthorized p d primitive predicate superuser(principal in). superuser p handle connectrequest {who:?p, src:?saddr, dest:?daddr} => query superuser(p) => allow; end; end. 25

27 Encoding predicates predicate connectionauthorized(principal in, ip4address in). connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min 26

28 Encoding predicates predicate connectionauthorized(principal in, ip4address in). connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. connectionauthorized p d := d = ip(192,168,0,1) table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min ( x.domain d x administrator p x) 26

29 Encoding predicates predicate connectionauthorized(principal in, ip4address in). domain d c := connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). c1,c2,c3,c4. d = ip(c1,c2,c3,c4) c = c4 primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min 27

30 Encoding predicates predicate connectionauthorized(principal in, ip4address in). administrator p d: uninterpreted connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min 28

31 Encoding predicates predicate connectionauthorized(principal in, ip4address in). blacklisted a s: uninterpreted connectionauthorized(princ, DEST) :- DEST = ip(192,168,0,1). forall k d1 d2, connectionauthorized(princ, DEST) :- domain(dest,dom), administrator(princ,dom). blacklisted k d1 blacklisted k d2 d1 = d2 primitive predicate administrator(principal in, number in). predicate domain(ip4address in, number out). domain(ip(a, B, C, D), N) :- A = N. table blacklisted (ip4address,string) key (in,out) lifetime % ms = 1 min 29

32 Fixing conflicts One way to fix the conflict is to change the SUPPL policy by adding the following clause: connection_authorized(princ,dest) :- superuser(princ) 30

33 Fixing conflicts One way to fix the conflict is to change the SUPPL policy by adding the following clause: connection_authorized(princ,dest) :- superuser(princ) connectionauthorized p d := d = ip(192,168,0,1) ( x.domain d x administrator p x) superuser p Conflict formula is now unsatisfiable 30

34 Generating conflict formulae Find all control flow paths through the program, from event to action For each pair of paths that might be executed in response to a single event, generate a formula representing a potential conflict Being careful about quantifiers Have formalized this process for the core event handling language and proven it sound 31

35 Checking formulae Give the formulae to a standard SMT solver Currently done via Why3 Just a formula, not a Why3 program Allows flexible choice of backends Handles polymorphism, some built-in types CVC4, Alt-Ergo seem to be best provers for us 32

36 Why3 Example theory Background type principal type ip4address = IP real real real real predicate administrator principal real predicate superuser principal predicate domain (a1:ip4address) (a2:real) = exists (x1 x2 x3 x4 : real). a1 = IP x1 x2 x3 x4 /\ x1 = a2 predicate connectionauthorized (a1:principal) (a2:ip4address) = (exists x1. domain a2 x1 /\ administrator a1 x1) \/ a1 = IP end theory Conflict0 use import Background function p : principal function dst : ip4address Axiom conflict: superuser p /\ not (connectionauthorized p dst) Goal impossible: false end 33

37 Feedback to user Currently via highlighted html prettyprinted from SUPPL source [demo] Currently working to improve specificity of feedback Would like to get models back from provers to instantiate variables in conflict 34

38 False positives If analysis reports no conflicts, there are none Converse definitely untrue! False positives due to Uninterpreted predicates, tables Recursive predicates Prover incompleteness or timeout User can eliminate by passing hints to prover 35

39 Vocabulary of prover hints axiom : assertion about predicates or tables lemma : assertion about predicates or tables which we ask prover to confirms presume : assertion about events forbid: assertion about actions All very dangerous! but we do ask prover to find inconsistencies 36

40 SUPPL: Summary A domain-neutral language for programming ECA policies. Unusual combination of pure logic programming + imperative wrapper + data tables Designed to support static error and conflict checking 37

41 SUPPL: Status Prototype implementation compiles and runs simple policies for an active proxying firewall the SOUND research network platform Language details in APLAS14 paper Have initial implementation (and proofs of correctness) of conflict analysis [JFLA submission] Software is released under open-source license 38

42 web.cecs.pdx.edu/~rdockins/suppl Thanks! Questions? 39

Suppl : A Flexible Language for Policies

Suppl : A Flexible Language for Policies Suppl : A Flexible Language for Policies Robert Dockins and Andrew Tolmach Portland State University Abstract. We present the Simple Unified Policy Programming Language (Suppl), a domain-neutral language

More information

Finding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar

Finding 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 information

Implementação de Linguagens 2016/2017

Implementaçã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

Programming Languages Third Edition

Programming 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 information

Foundations 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 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 information

Formally Certified Satisfiability Solving

Formally Certified Satisfiability Solving SAT/SMT Proof Checking Verifying SAT Solver Code Future Work Computer Science, The University of Iowa, USA April 23, 2012 Seoul National University SAT/SMT Proof Checking Verifying SAT Solver Code Future

More information

Generating Small Countermodels. Andrew Reynolds Intel August 30, 2012

Generating Small Countermodels. Andrew Reynolds Intel August 30, 2012 Generating Small Countermodels using SMT Andrew Reynolds Intel August 30, 2012 Acknowledgements Intel Corporation AmitGoel, Sava Krstic University of Iowa Cesare Tinelli, Francois Bobot New York University

More information

Overloading, Type Classes, and Algebraic Datatypes

Overloading, Type Classes, and Algebraic Datatypes Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827

More information

Constraint Solving. Systems and Internet Infrastructure Security

Constraint Solving. Systems and Internet Infrastructure Security Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Constraint Solving Systems

More information

CMSC 331 Final Exam Section 0201 December 18, 2000

CMSC 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 information

Knowledge Representation and Reasoning Logics for Artificial Intelligence

Knowledge Representation and Reasoning Logics for Artificial Intelligence Knowledge Representation and Reasoning Logics for Artificial Intelligence Stuart C. Shapiro Department of Computer Science and Engineering and Center for Cognitive Science University at Buffalo, The State

More information

1. 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. 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 information

Improving Coq Propositional Reasoning Using a Lazy CNF Conversion

Improving Coq Propositional Reasoning Using a Lazy CNF Conversion Using a Lazy CNF Conversion Stéphane Lescuyer Sylvain Conchon Université Paris-Sud / CNRS / INRIA Saclay Île-de-France FroCoS 09 Trento 18/09/2009 Outline 1 Motivation and background Verifying an SMT solver

More information

Integration of SMT Solvers with ITPs There and Back Again

Integration of SMT Solvers with ITPs There and Back Again Integration of SMT Solvers with ITPs There and Back Again Sascha Böhme and University of Sheffield 7 May 2010 1 2 Features: SMT-LIB vs. Yices Translation Techniques Caveats 3 4 Motivation Motivation System

More information

Symbolic and Concolic Execution of Programs

Symbolic and Concolic Execution of Programs Symbolic and Concolic Execution of Programs Information Security, CS 526 Omar Chowdhury 10/7/2015 Information Security, CS 526 1 Reading for this lecture Symbolic execution and program testing - James

More information

VS 3 : SMT Solvers for Program Verification

VS 3 : SMT Solvers for Program Verification VS 3 : SMT Solvers for Program Verification Saurabh Srivastava 1,, Sumit Gulwani 2, and Jeffrey S. Foster 1 1 University of Maryland, College Park, {saurabhs,jfoster}@cs.umd.edu 2 Microsoft Research, Redmond,

More information

Introduction to SML Getting Started

Introduction to SML Getting Started Introduction to SML Getting Started Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark c Michael R. Hansen, Fall 2004 p.1/15 Background Standard Meta

More information

Module 6. Knowledge Representation and Logic (First Order Logic) Version 2 CSE IIT, Kharagpur

Module 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 information

A Pearl on SAT Solving in Prolog (extended abstract)

A 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 information

CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter p. 1/27

CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter p. 1/27 CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter 2.1-2.7 p. 1/27 CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer

More information

Runtime Checking for Program Verification Systems

Runtime 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 information

Complete Instantiation of Quantified Formulas in Satisfiability Modulo Theories. ACSys Seminar

Complete Instantiation of Quantified Formulas in Satisfiability Modulo Theories. ACSys Seminar Complete Instantiation of Quantified Formulas in Satisfiability Modulo Theories Yeting Ge Leonardo de Moura ACSys Seminar 2008.12 Motivation SMT solvers have been successful Quantified smt formulas are

More information

Type Processing by Constraint Reasoning

Type Processing by Constraint Reasoning , Martin Sulzmann, Jeremy Wazny 8th November 2006 Chameleon Chameleon is Haskell-style language treats type problems using constraints gives expressive error messages has a programmable type system Developers:

More information

Polymorphic Algebraic Data Type Reconstruction

Polymorphic Algebraic Data Type Reconstruction Polymorphic Algebraic Data Type Reconstruction K.U.Leuven, Belgium {toms,maurice}@cs.kuleuven.be Namur, Belgium - December 11-15, 2006 Overview 2/39 1 2 3 4 5 6 7 Overview 3/39 1 2 3 4 5 6 7 4/39 Types

More information

Leonardo de Moura and Nikolaj Bjorner Microsoft Research

Leonardo de Moura and Nikolaj Bjorner Microsoft Research Leonardo de Moura and Nikolaj Bjorner Microsoft Research A Satisfiability Checker with built-in support for useful theories Z3 is a solver developed at Microsoft Research. Development/Research driven by

More information

Specification, Verification, and Interactive Proof

Specification, Verification, and Interactive Proof Specification, Verification, and Interactive Proof SRI International May 23, 2016 PVS PVS - Prototype Verification System PVS is a verification system combining language expressiveness with automated tools.

More information

Deductive Methods, Bounded Model Checking

Deductive Methods, Bounded Model Checking Deductive Methods, Bounded Model Checking http://d3s.mff.cuni.cz Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Deductive methods Pavel Parízek Deductive Methods, Bounded

More information

SMT-LIB for HOL. Daniel Kroening Philipp Rümmer Georg Weissenbacher Oxford University Computing Laboratory. ITP Workshop MSR Cambridge 25 August 2009

SMT-LIB for HOL. Daniel Kroening Philipp Rümmer Georg Weissenbacher Oxford University Computing Laboratory. ITP Workshop MSR Cambridge 25 August 2009 1 / 13 SMT-LIB for HOL Daniel Kroening Philipp Rümmer Georg Weissenbacher Oxford University Computing Laboratory ITP Workshop MSR Cambridge 25 August 2009 2 / 13 The SMT-LIB Standard SMT Satisfiability

More information

LOGIC AND DISCRETE MATHEMATICS

LOGIC AND DISCRETE MATHEMATICS LOGIC AND DISCRETE MATHEMATICS A Computer Science Perspective WINFRIED KARL GRASSMANN Department of Computer Science University of Saskatchewan JEAN-PAUL TREMBLAY Department of Computer Science University

More information

Pooya Saadatpanah, Michalis Famelis, Jan Gorzny, Nathan Robinson, Marsha Chechik, Rick Salay. September 30th, University of Toronto.

Pooya Saadatpanah, Michalis Famelis, Jan Gorzny, Nathan Robinson, Marsha Chechik, Rick Salay. September 30th, University of Toronto. Comparing the Pooya Michalis Jan Nathan Marsha Chechik, Rick Salay University of Toronto September 30th, 2012 MoDeVVa 12 1 / 32 in software modeling : pervasive in MDE Models with uncertainty: Represent

More information

Semantic Subtyping with an SMT Solver

Semantic Subtyping with an SMT Solver Semantic Subtyping with an SMT Solver Cătălin Hrițcu, Saarland University, Saarbrücken, Germany Joint work with Andy Gordon, Gavin Bierman, and Dave Langworthy (all from Microsoft) Refinement Types + Type-test

More information

ITT8060: Advanced Programming (in F#)

ITT8060: Advanced Programming (in F#) based on slides by Michael R. Hansen ITT8060: Advanced Programming (in F#) Lecture 2: Identifiers, values, expressions, functions and types Juhan Ernits Department of Software Science, Tallinn University

More information

Knowledge Representation and Reasoning Logics for Artificial Intelligence

Knowledge Representation and Reasoning Logics for Artificial Intelligence Knowledge Representation and Reasoning Logics for Artificial Intelligence Stuart C. Shapiro Department of Computer Science and Engineering and Center for Cognitive Science University at Buffalo, The State

More information

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger 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

More information

COS 320. Compiling Techniques

COS 320. Compiling Techniques Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly

More information

Data types for mcrl2

Data types for mcrl2 Data types for mcrl2 Aad Mathijssen April 5, 2018 We provide a syntax for the standard data types of the mcrl2 language. This syntax is intended to be a practical mix between standard mathematical notation

More information

CSE 20 DISCRETE MATH. Fall

CSE 20 DISCRETE MATH. Fall CSE 20 DISCRETE MATH Fall 2017 http://cseweb.ucsd.edu/classes/fa17/cse20-ab/ Final exam The final exam is Saturday December 16 11:30am-2:30pm. Lecture A will take the exam in Lecture B will take the exam

More information

Why. an intermediate language for deductive program verification

Why. an intermediate language for deductive program verification Why an intermediate language for deductive program verification Jean-Christophe Filliâtre CNRS Orsay, France AFM workshop Grenoble, June 27, 2009 Jean-Christophe Filliâtre Why tutorial AFM 09 1 / 56 Motivations

More information

Data Integration: Logic Query Languages

Data Integration: Logic Query Languages Data Integration: Logic Query Languages Jan Chomicki University at Buffalo Datalog Datalog A logic language Datalog programs consist of logical facts and rules Datalog is a subset of Prolog (no data structures)

More information

Situation Calculus and YAGI

Situation Calculus and YAGI Situation Calculus and YAGI Institute for Software Technology 1 Progression another solution to the projection problem does a sentence hold for a future situation used for automated reasoning and planning

More information

Semantic Subtyping. Alain Frisch (ENS Paris) Giuseppe Castagna (ENS Paris) Véronique Benzaken (LRI U Paris Sud)

Semantic Subtyping.  Alain Frisch (ENS Paris) Giuseppe Castagna (ENS Paris) Véronique Benzaken (LRI U Paris Sud) Semantic Subtyping Alain Frisch (ENS Paris) Giuseppe Castagna (ENS Paris) Véronique Benzaken (LRI U Paris Sud) http://www.cduce.org/ Semantic Subtyping - Groupe de travail BD LRI p.1/28 CDuce A functional

More information

Logic (or Declarative) Programming Foundations: Prolog. Overview [1]

Logic (or Declarative) Programming Foundations: Prolog. Overview [1] Logic (or Declarative) Programming Foundations: Prolog In Text: Chapter 12 Formal logic Logic programming Prolog Overview [1] N. Meng, S. Arthur 2 1 Logic Programming To express programs in a form of symbolic

More information

CSCI-GA Scripting Languages

CSCI-GA Scripting Languages CSCI-GA.3033.003 Scripting Languages 12/02/2013 OCaml 1 Acknowledgement The material on these slides is based on notes provided by Dexter Kozen. 2 About OCaml A functional programming language All computation

More information

Encoding functions in FOL. Where we re at. Ideally, would like an IF stmt. Another example. Solution 1: write your own IF. No built-in IF in Simplify

Encoding functions in FOL. Where we re at. Ideally, would like an IF stmt. Another example. Solution 1: write your own IF. No built-in IF in Simplify Where we re at We explored the three standard logics, and compared them along three dimensions expressiveness automation human-friendliness Next we ll look in more detail at FOL we will explore how to

More information

Why3 where programs meet provers

Why3 where programs meet provers Why3 where programs meet provers Jean-Christophe Filliâtre CNRS KeY Symposium 2017 Rastatt, Germany October 5, 2017 history started in 2001, as an intermediate language in the process of verifying C and

More information

Towards a Logical Reconstruction of Relational Database Theory

Towards a Logical Reconstruction of Relational Database Theory Towards a Logical Reconstruction of Relational Database Theory On Conceptual Modelling, Lecture Notes in Computer Science. 1984 Raymond Reiter Summary by C. Rey November 27, 2008-1 / 63 Foreword DB: 2

More information

Abstract Interpretation

Abstract Interpretation Abstract Interpretation Ranjit Jhala, UC San Diego April 22, 2013 Fundamental Challenge of Program Analysis How to infer (loop) invariants? Fundamental Challenge of Program Analysis Key issue for any analysis

More information

Logic Languages. Hwansoo Han

Logic 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 information

The 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 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 information

SAT solver of Howe & King as a logic program

SAT solver of Howe & King as a logic program SAT solver of Howe & King as a logic program W lodzimierz Drabent June 6, 2011 Howe and King [HK11b, HK11a] presented a SAT solver which is an elegant and concise Prolog program of 22 lines. It is not

More information

Fundamentals of Prolog

Fundamentals 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 information

A proof-producing CSP solver: A proof supplement

A proof-producing CSP solver: A proof supplement A proof-producing CSP solver: A proof supplement Report IE/IS-2010-02 Michael Veksler Ofer Strichman mveksler@tx.technion.ac.il ofers@ie.technion.ac.il Technion Institute of Technology April 12, 2010 Abstract

More information

Part I Logic programming paradigm

Part I Logic programming paradigm Part I Logic programming paradigm 1 Logic programming and pure Prolog 1.1 Introduction 3 1.2 Syntax 4 1.3 The meaning of a program 7 1.4 Computing with equations 9 1.5 Prolog: the first steps 15 1.6 Two

More information

Conjunctive queries. Many computational problems are much easier for conjunctive queries than for general first-order queries.

Conjunctive queries. Many computational problems are much easier for conjunctive queries than for general first-order queries. Conjunctive queries Relational calculus queries without negation and disjunction. Conjunctive queries have a normal form: ( y 1 ) ( y n )(p 1 (x 1,..., x m, y 1,..., y n ) p k (x 1,..., x m, y 1,..., y

More information

STABILITY AND PARADOX IN ALGORITHMIC LOGIC

STABILITY AND PARADOX IN ALGORITHMIC LOGIC STABILITY AND PARADOX IN ALGORITHMIC LOGIC WAYNE AITKEN, JEFFREY A. BARRETT Abstract. Algorithmic logic is the logic of basic statements concerning algorithms and the algorithmic rules of deduction between

More information

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming. Big Picture. Design of Programming Languages Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics

More information

Axiomatic Specification. Al-Said, Apcar, Jerejian

Axiomatic Specification. Al-Said, Apcar, Jerejian Axiomatic Specification Al-Said, Apcar, Jerejian 1 Axioms: Wffs that can be written down without any reference to any other Wffs. Wffs that are stipulated as unproved premises for the proof of other wffs

More information

COMP4418 Knowledge Representation and Reasoning

COMP4418 Knowledge Representation and Reasoning COMP4418 Knowledge Representation and Reasoning Week 3 Practical Reasoning David Rajaratnam Click to edit Present s Name Practical Reasoning - My Interests Cognitive Robotics. Connect high level cognition

More information

The Prolog to Mercury transition guide

The 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 information

6. Hoare Logic and Weakest Preconditions

6. Hoare Logic and Weakest Preconditions 6. Hoare Logic and Weakest Preconditions Program Verification ETH Zurich, Spring Semester 07 Alexander J. Summers 30 Program Correctness There are many notions of correctness properties for a given program

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages Lesson 14 Type Checking Collaboration and Management Dana Fisman www.cs.bgu.ac.il/~ppl172 1 Type Checking We return to the issue of type safety we discussed informally,

More information

CS558 Programming Languages

CS558 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 information

Chapter 1. Introduction

Chapter 1. Introduction 1 Chapter 1 Introduction An exciting development of the 21st century is that the 20th-century vision of mechanized program verification is finally becoming practical, thanks to 30 years of advances in

More information

BOOGIE. Presentation by Itsik Hefez A MODULAR REUSABLE VERIFIER FOR OBJECT-ORIENTED PROGRAMS MICROSOFT RESEARCH

BOOGIE. Presentation by Itsik Hefez A MODULAR REUSABLE VERIFIER FOR OBJECT-ORIENTED PROGRAMS MICROSOFT RESEARCH BOOGIE A MODULAR REUSABLE VERIFIER FOR OBJECT-ORIENTED PROGRAMS MICROSOFT RESEARCH Presentation by Itsik Hefez Introduction Boogie is an intermediate verification language, intended as a layer on which

More information

Formally-Proven Kosaraju s algorithm

Formally-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 information

In Our Last Exciting Episode

In Our Last Exciting Episode In Our Last Exciting Episode #1 Lessons From Model Checking To find bugs, we need specifications What are some good specifications? To convert a program into a model, we need predicates/invariants and

More information

Introduction to OCaml

Introduction 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 information

Logic Programming and Resolution Lecture notes for INF3170/4171

Logic Programming and Resolution Lecture notes for INF3170/4171 Logic Programming and Resolution Lecture notes for INF3170/4171 Leif Harald Karlsen Autumn 2015 1 Introduction This note will explain the connection between logic and computer programming using Horn Clauses

More information

Range Restriction for General Formulas

Range Restriction for General Formulas Range Restriction for General Formulas 1 Range Restriction for General Formulas Stefan Brass Martin-Luther-Universität Halle-Wittenberg Germany Range Restriction for General Formulas 2 Motivation Deductive

More information

Multi-paradigm Declarative Languages

Multi-paradigm Declarative Languages Michael Hanus (CAU Kiel) Multi-paradigm Declarative Languages ICLP 2007 1 Multi-paradigm Declarative Languages Michael Hanus Christian-Albrechts-University of Kiel Programming Languages and Compiler Construction

More information

Semantic Analysis Type Checking

Semantic Analysis Type Checking Semantic Analysis Type Checking Maryam Siahbani CMPT 379 * Slides are modified version of Schwarz s compiler course at Stanford 4/8/2016 1 Type Checking Type errors arise when operations are performed

More information

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur Module 3 Requirements Analysis and Specification Lesson 6 Formal Requirements Specification Specific Instructional Objectives At the end of this lesson the student will be able to: Explain what a formal

More information

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

CIS 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 information

Topic Maps Reference Model, version 6.0

Topic Maps Reference Model, version 6.0 Topic Maps Reference Model, 13250-5 version 6.0 Patrick Durusau Steven R. Newcomb July 13, 2005 This is a working draft of the Topic Maps Reference Model. It focuses on the integration of Robert Barta

More information

Deductive Program Verification with Why3

Deductive Program Verification with Why3 Deductive Program Verification with Why3 Jean-Christophe Filliâtre CNRS Mathematical Structures of Computation Formal Proof, Symbolic Computation and Computer Arithmetic Lyon, February 2014 definition

More information

Functional Logic Programming. Kristjan Vedel

Functional 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 information

CS558 Programming Languages

CS558 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 information

Chapter 9: Constraint Logic Programming

Chapter 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 information

A Small Interpreted Language

A 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 information

Resolution (14A) Young W. Lim 6/14/14

Resolution (14A) Young W. Lim 6/14/14 Copyright (c) 2013-2014. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free

More information

Chapter 16. Logic Programming Languages

Chapter 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 information

Index. Cambridge University Press Functional Programming Using F# Michael R. Hansen and Hans Rischel. Index.

Index. Cambridge University Press Functional Programming Using F# Michael R. Hansen and Hans Rischel. Index. (),23 (*,3 ->,3,32 *,11 *),3.[...], 27, 186 //,3 ///,3 ::, 71, 80 :=, 182 ;, 179 ;;,1 @, 79, 80 @"...",26 >,38,35

More information

The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

More information

Introduction to Logic Programming

Introduction to Logic Programming Introduction to Logic Programming York University CSE 3401 Vida Movahedi York University CSE 3401 V. Movahedi 1 Overview Programming Language Paradigms Logic Programming Functional Programming Brief review

More information

Outline. Proof Carrying Code. Hardware Trojan Threat. Why Compromise HDL Code?

Outline. Proof Carrying Code. Hardware Trojan Threat. Why Compromise HDL Code? Outline Proof Carrying Code Mohammad Tehranipoor ECE6095: Hardware Security & Trust University of Connecticut ECE Department Hardware IP Verification Hardware PCC Background Software PCC Description Software

More information

Lecture 17 of 41. Clausal (Conjunctive Normal) Form and Resolution Techniques

Lecture 17 of 41. Clausal (Conjunctive Normal) Form and Resolution Techniques Lecture 17 of 41 Clausal (Conjunctive Normal) Form and Resolution Techniques Wednesday, 29 September 2004 William H. Hsu, KSU http://www.kddresearch.org http://www.cis.ksu.edu/~bhsu Reading: Chapter 9,

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Type Systems. Pierce Ch. 3, 8, 11, 15 CSE

Type Systems. Pierce Ch. 3, 8, 11, 15 CSE Type Systems Pierce Ch. 3, 8, 11, 15 CSE 6341 1 A Simple Language ::= true false if then else 0 succ pred iszero Simple untyped expressions Natural numbers encoded as succ succ

More information

HOL DEFINING HIGHER ORDER LOGIC LAST TIME ON HOL CONTENT. Slide 3. Slide 1. Slide 4. Slide 2 WHAT IS HIGHER ORDER LOGIC? 2 LAST TIME ON HOL 1

HOL DEFINING HIGHER ORDER LOGIC LAST TIME ON HOL CONTENT. Slide 3. Slide 1. Slide 4. Slide 2 WHAT IS HIGHER ORDER LOGIC? 2 LAST TIME ON HOL 1 LAST TIME ON HOL Proof rules for propositional and predicate logic Safe and unsafe rules NICTA Advanced Course Forward Proof Slide 1 Theorem Proving Principles, Techniques, Applications Slide 3 The Epsilon

More information

HySAT. what you can use it for how it works example from application domain final remarks. Christian Herde /12

HySAT. what you can use it for how it works example from application domain final remarks. Christian Herde /12 CP2007: Presentation of recent CP solvers HySAT what you can use it for how it works example from application domain final remarks Christian Herde 25.09.2007 /2 What you can use it for Satisfiability checker

More information

Deductive Verification in Frama-C and SPARK2014: Past, Present and Future

Deductive Verification in Frama-C and SPARK2014: Past, Present and Future Deductive Verification in Frama-C and SPARK2014: Past, Present and Future Claude Marché (Inria & Université Paris-Saclay) OSIS, Frama-C & SPARK day, May 30th, 2017 1 / 31 Outline Why this joint Frama-C

More information

Warm-Up Problem. Let L be the language consisting of as constant symbols, as a function symbol and as a predicate symbol. Give an interpretation where

Warm-Up Problem. Let L be the language consisting of as constant symbols, as a function symbol and as a predicate symbol. Give an interpretation where Warm-Up Problem Let L be the language consisting of as constant symbols, as a function symbol and as a predicate symbol Give an interpretation where is false Use a finite domain in your interpretation

More information

Incremental Proof Development in Dafny

Incremental Proof Development in Dafny 15-414 Lecture 17 1 Instructor: Matt Fredrikson Incremental Proof Development in Dafny TA: Ryan Wagner In this discussion, we ll see in more detail how to go about proving the total correctness of imperative

More information

Logic and its Applications

Logic and its Applications Logic and its Applications Edmund Burke and Eric Foxley PRENTICE HALL London New York Toronto Sydney Tokyo Singapore Madrid Mexico City Munich Contents Preface xiii Propositional logic 1 1.1 Informal introduction

More information

Predicate Refinement Heuristics in Program Verification with CEGAR

Predicate Refinement Heuristics in Program Verification with CEGAR Predicate Refinement Heuristics in Program Verification with CEGAR Tachio Terauchi (JAIST) Part of this is joint work with Hiroshi Unno (U. Tsukuba) 1 Predicate Abstraction with CEGAR Iteratively generate

More information

[Draft. Please do not distribute] Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic

[Draft. Please do not distribute] Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic [Draft Please do not distribute] Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic Sergey Berezin, Vijay Ganesh, and David L Dill Stanford University {berezin,vganesh,dill}@stanfordedu

More information

Lecture 14: Lower Bounds for Tree Resolution

Lecture 14: Lower Bounds for Tree Resolution IAS/PCMI Summer Session 2000 Clay Mathematics Undergraduate Program Advanced Course on Computational Complexity Lecture 14: Lower Bounds for Tree Resolution David Mix Barrington and Alexis Maciel August

More information

OpenSMT2: An SMT Solver for Multi-Core and Cloud Computing

OpenSMT2: An SMT Solver for Multi-Core and Cloud Computing OpenSMT2: An SMT Solver for Multi-Core and Cloud Computing Antti E. J. Hyvärinen, Matteo Marescotti, Leonardo Alt, and Natasha Sharygina Faculty of Informatics, University of Lugano Via Giuseppe Buffi

More information

EXTENSIONS OF FIRST ORDER LOGIC

EXTENSIONS OF FIRST ORDER LOGIC EXTENSIONS OF FIRST ORDER LOGIC Maria Manzano University of Barcelona CAMBRIDGE UNIVERSITY PRESS Table of contents PREFACE xv CHAPTER I: STANDARD SECOND ORDER LOGIC. 1 1.- Introduction. 1 1.1. General

More information

Rethinking Automated Theorem Provers?

Rethinking Automated Theorem Provers? Rethinking Automated Theorem Provers? David J. Pearce School of Engineering and Computer Science Victoria University of Wellington @WhileyDave http://whiley.org http://github.com/whiley Background Verification:

More information