Top Banner
Fundamentals of Programming Languages I Introduction and Logics Guoqiang Li School of Software, Shanghai Jiao Tong University
72

Fundamentals of Programming Languages I

Dec 07, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Fundamentals of Programming Languages I

Fundamentals of ProgrammingLanguages IIntroduction and Logics

Guoqiang Li

School of Software, Shanghai Jiao Tong University

Page 2: Fundamentals of Programming Languages I

Instructor and Teaching Assistants

• Guoqiang LI• Homepage: http://basics.sjtu.edu.cn/˜liguoqiang• Course page:

http://basics.sjtu.edu.cn/˜liguoqiang/teaching/Prog17/index.htm• Email: [email protected]• Office: Rm. 1212, Building of Software• Phone: 3420-4167

• TA:• Yuwei WANG: wangyuwei95 (AT) qq (DOT) com

• Office hour: Tue. 14:00-17:00 @ Software Building 3203

Page 3: Fundamentals of Programming Languages I

What does the lecture aim for?

Page 4: Fundamentals of Programming Languages I

Similar Lectures I

Fundamentals of Programming Languages by University of ColoradoBoulder

http://www.cs.colorado.edu/˜bec/courses/csci5535-f13/

• 2010 Spring Programming semantics• 2013 Fall Programming analysis and verification

Page 5: Fundamentals of Programming Languages I

Similar Lectures II

Principles of Programming Languages by University of Oxford

http://www.cs.ox.ac.uk/teaching/courses/2017-2018/principles/

Foundations of Programming Languages by CMU

www.cs.cmu.edu/˜rjsimmon/15312-s14/schedule.html

Theory of Programming Languages by ECNU

basics.sjtu.edu.cn/˜yuxin/teaching/Semantics/sem.html

Programming Semantics

Page 6: Fundamentals of Programming Languages I

Similar Lectures III

Fundamentals of Programming Analysis by MIT

ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-820-fundamentals-of-program-analysis-fall-2015/lecture-notes/

Principles of Programming Languages by Boston University

http://www.cs.bu.edu/˜hwxi/academic/courses/CS520/Fall15

Programming Analysis and Verification

Page 7: Fundamentals of Programming Languages I

Similar Lectures IV

Theory of Programming Languages by CMU

www.cs.cmu.edu/ aldrich/courses/15-819O-13sp

Introduction to Programming Languages Theory by Standford

https://courseware.stanford.edu/pg/courses/lectures/261141

Theory of Programming Languages by SJTU

http://basics.sjtu.edu.cn/˜xiaojuan/tapl2016/index.html

Types and Functional Programming Languages

Page 8: Fundamentals of Programming Languages I

Fundamental Requirements

• Program Verification and Analysis

• Propositional logic, predicate logic etc.• Automata theory, DFA, NFA, PDS, PN etc.• Algorithm.

• Program Semantics• Set theory.• Algebra theory, group, ring, domain etc.• category theory, maybe...

• Types and Programming Languages• Logic• Computability theory• Lambda calculus theory...

Page 9: Fundamentals of Programming Languages I

Fundamental of Fundamental

Several theories in theoretical computer science are given, which is aminimal requirement and self-contained in this lecture.

All of three directions are taught, which only include veryfundamental part, if time permitted.

As simple as possible, although it is very theoretical.

Page 10: Fundamentals of Programming Languages I

Lecture Agenda• Introduction and logic basics (1 lecture)• Formal basics (3 lectures)

• Model checking• Finite and Büchi automata• LTL model checking

• Programming verification (2 or 3 lectures)• Abstract interpretation• Pushdown automata and interprocedural programs• Petri Net and concurrent programs

• Exercise I. (1 lecture)• Programming semantics (2 lectures)

• Denotational semantics• Operational semantics• Axiomatic semantics

• Basic functional programming (3 lectures)• Lambda calculus• Simple types• Functional programming

• Exercise II. (1 lecture)• Conclusion and wrap up (1 lecture)

Page 11: Fundamentals of Programming Languages I

References

No particular textbook that can cover all the parts. Here are threeReference books:

Edmund M. Clarke Jr., Orna Grumberg, Doron A. Peled. Model Checking. MIT

Press, 1999

Glynn Winskel. Formal Semantics of Programming Languages: An Introduction.

MIT Press, 1993

Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002

+ Several famous papers

+ Lecture notes shared in the course webpage.

Page 12: Fundamentals of Programming Languages I

Scoring Policy

• 10% Attendance.• 20% Homework.

• Four assignments.• Each one is 5pts.• Work out individually.• Each assignment will be evaluated by A, B, C, D, F (Excellent(5),

Good(5), Fair(4), Delay(3), Fail(0))• 70% Final exam.

• Maybe replaced by report, if the condition is satisfied!

Page 13: Fundamentals of Programming Languages I

Any Questions?

Page 14: Fundamentals of Programming Languages I

Logic Basics

Page 15: Fundamentals of Programming Languages I

Brief Historical Notes on Logic

Page 16: Fundamentals of Programming Languages I

Historical View

• Philosophical Logic• 500 BC to 19th Century

• Symbolic Logic• Mid to late 19th Century

• Mathematical Logic• Late 19th to mid 20th Century

• Logic in Computer Science

Page 17: Fundamentals of Programming Languages I

Philosophical Logic

500 B.C - 19th Century

Logic dealt with arguments in the natural language used by humans.

Example:

• All men are mortal.• Socrates is a man.• Therefore, Socrates is mortal.

Page 18: Fundamentals of Programming Languages I

Philosophical LogicNatural languages are very ambiguous.

• Eric does not believe that Mary can pass any test.• does not believe that she can pass some test, or• does not believe that she can pass all tests

• I only borrowed your car.• And not ‘borrowed and used’, or• And not ‘car and coat’

• Tom hates Jim and he likes Mary.• Tom likes Mary, or• Jim likes Mary

It led to many paradoxes.

• “This sentence is a lie.”(The Liar’s Paradox)

Page 19: Fundamentals of Programming Languages I

Sophism

…Sophism generally refers to a particularly confusing, illogicaland/or insincere argument used by someone to make a point, or,perhaps, not to make a point.

Sophistry refers to […] rhetoric that is designed to appeal to thelistener on grounds other than the strict logical cogency of thestatements being made.

Page 20: Fundamentals of Programming Languages I

The Sophist’s Paradox

A Sophist is sued for his tuition by the school that educated him. Heargues that he must win, since, if he loses, the school didn’t educatehim well enough, and doesn’t deserve the money.

The school argues that he must lose, since, if he wins, he waseducated well enough, and therefore should pay for it.

Page 21: Fundamentals of Programming Languages I

Logic in Computer Science

Logic has a profound impact on computer science. Some examples:

• Propositional logic - the foundation of computers and circuitry• Databases - query languages• Programming languages (e.g. prolog)• Design Validation and verification• AI (e.g. inference systems)• …

Page 22: Fundamentals of Programming Languages I

Logic in Computer Science

Propositional Logic

First Order Logic

Higher Order Logic

Temporal Logic

Page 23: Fundamentals of Programming Languages I

Propositional Logic: Syntax

Page 24: Fundamentals of Programming Languages I

Propositional Logic

A proposition: a sentence that can be either true or false.

Propositions:• x is greater than y• Noam wrote this letter

Page 25: Fundamentals of Programming Languages I

Propositional Logic: SyntaxThe symbols of the language:

• Propositional symbols (Prop): A,B,C, . . .• Connectives:

• ∧ and• ∨ or• ¬ not• → implies• ↔ equivalent to• ⊕ xor (different than)• ⊥,> False, True

• Parenthesis: (, ).

Q1: How many different binary symbols can we define?

Q2: What is the minimal number of such symbols?

Page 26: Fundamentals of Programming Languages I

Formulas

Grammar of well-formed propositional formulas

Formula := prop | ¬(Formula) | (Formula ◦ Formula)

where prop ∈ Prop and ◦ is one of the binary relations.

Page 27: Fundamentals of Programming Languages I

Formulas

Examples of well-formed formulas:

• (¬A)

• (¬(¬A))

• (A ∧ (B ∧ C))

• (A→ (B→ C))

Correct expressions of Propositional Logic are full of unnecessaryparenthesis.

Page 28: Fundamentals of Programming Languages I

Formulas: Abbreviations

We writeA ◦ B ◦ C ◦ . . .

in place of(A ◦ (B ◦ (C ◦ . . .)))

Thus, we writeA ∧ B ∧ C, A→ B→ C, . . .

in place of(A ∧ (B ∧ C)), (A→ (B→ C)), . . .

Page 29: Fundamentals of Programming Languages I

Formulas: Abbreviations

We omit parenthesis whenever we may restore them through operatorprecedence:

¬ binds more strictly than ∧, ∨, and ∧, ∨ bind more strictly than→,↔.

Thus, we write:

• ¬¬A for (¬(¬A)),• ¬A ∧ B for ((¬A) ∧ B)

• A ∧ B→ C for ((A ∧ B)→ C)

• …

Page 30: Fundamentals of Programming Languages I

Propositional Logic: Semantics

Page 31: Fundamentals of Programming Languages I

Propositional Logic: Semantics

Truth tables define the semantics (=meaning) of the operators

Convention: 0 = false, 1 = true

A B A ∧ B A ∨ B A→ B0 0 0 0 10 1 0 1 11 0 0 1 01 1 1 1 1

Page 32: Fundamentals of Programming Languages I

Propositional Logic: Semantics

Truth tables define the semantics (=meaning) of the operators

Convention: 0 = false, 1 = true

A B ¬A A↔ B A⊕ B0 0 1 1 00 1 1 0 11 0 0 0 11 1 0 1 0

Page 33: Fundamentals of Programming Languages I

Back to Q1

Q1: How many binary operators can we define that have differentsemantic definition?

A: 16

Page 34: Fundamentals of Programming Languages I

Satisfiability and Validity

Page 35: Fundamentals of Programming Languages I

Assignments

Definition: A truth-values assignment, α, is an element of 2Prop (i.e.,α ∈ 2Prop).

In other words, α is a subset of the variables that are assigned true.

Equivalently, we can see α as a mapping from variables to truthvalues:

α : Prop 7→ {0, 1}

Example: α = {A 7→ 0,B 7→ 1, . . .}

Page 36: Fundamentals of Programming Languages I

Satisfaction Relation (|=): Intuition

An assignment can either satisfy or not satisfy a given formula.

α |= φ means• α satisfies φ or• φ holds at α or• α is a model of φ

We will first see an example.

Then we will define these notions formally.

Page 37: Fundamentals of Programming Languages I

Example

Let φ = (A ∨ (B→ C))

Let α = {A 7→ 0,B 7→ 0,C 7→ 1}

Q: Does α satisfy φ (α |= φ?)

A: (0 ∨ (0→ 1)) = (0 ∨ 1) = 1Hence, α |= φ.

Let us now formalize an evaluation process.

Page 38: Fundamentals of Programming Languages I

Satisfaction Relation (|=):Formalities

|= is a relation: |=⊆ (2Prop × Formula)

Examples:

• ({A},A ∨ B): the assignment α = {A} satisfies A ∨ B• ({A,B},A ∧ B)

Alternatively: |=⊆ ({0, 1}Prop × Formula)

Examples:

• (01,A ∨ B): the assignment α = {A 7→ 0,B 7→ 1} satisfies A ∨ B• (11,A ∧ B)

Page 39: Fundamentals of Programming Languages I

Satisfaction Relation (|=):Formalities

|= is defined recursively:• α |= A if α(A) = true• α |= ¬ϕ if α 6|= ϕ

• α |= ϕ1 ∧ ϕ2 if α |= ϕ1 and α |= ϕ2

• α |= ϕ1 ∨ ϕ2 if α |= ϕ1 or α |= ϕ2

• α |= ϕ1 → ϕ2 if α |= ϕ1 implies α |= ϕ2

• α |= ϕ1 ↔ ϕ2 if α |= ϕ1 iff α |= ϕ2

Page 40: Fundamentals of Programming Languages I

From Definition to an EvaluationAlgorithm

Truth Evaluation Problem:Given ϕ ∈ Formula and α ∈ 2AP(ϕ), does α |= ϕ?

Eval(ϕ, α)

if ϕ ≡ A then return α(A);if ϕ ≡ ¬φ then return ¬ Eval (φ, α);if ϕ ≡ ψ ◦ φ thenreturn Eval (ψ, α) ◦ Eval (φ, α);

Eval uses polynomial time and space.

Page 41: Fundamentals of Programming Languages I

Nothing More Than What WeAlready Know

Recall the Example:• Let φ = (A ∨ (B→ C))

• Let α = {A 7→ 0,B 7→ 0,C 7→ 1}

Eval(φ, α) = Eval(A, α) ∨ Eval(B→ C, α) =0 ∨ Eval(B, α)→ Eval(C, α) = 0 ∨ (0→ 1) = 0 ∨ 1 = 1

Hence, α |= φ.

Page 42: Fundamentals of Programming Languages I

Extending Truth Table

p q (p→ (q→ p)) (p ∧ ¬p) (p ∨ ¬q)

0 0 1 0 10 1 1 0 01 0 1 0 11 1 1 0 1

Page 43: Fundamentals of Programming Languages I

Extending Truth Table

p q r (p→ (q→ ¬r)

0 0 0 10 0 1 10 1 0 10 1 1 11 0 0 11 0 1 11 0 0 11 1 1 0

Page 44: Fundamentals of Programming Languages I

Set of Assignment

Intuition: a formula specifies a set of truth assignments.

Function models: models : Formula 7→ 22Prop

(a formula 7→ set of satisfying assignments)

Recursive definition:

• models(A) = {α|α(A) = 1},A ∈ Prop• models(¬ϕ) = 2Prop − models(ϕ)

• models(ϕ1 ∧ ϕ2) = models(ϕ1) ∩ models(ϕ2)

• models(ϕ1 ∨ ϕ2) = models(ϕ1) ∪ models(ϕ2)

• models(ϕ1 → ϕ2) = (2Prop − models(ϕ1) ∪ models(ϕ2)

Page 45: Fundamentals of Programming Languages I

Example

models(A ∨ B) = {{10}, {01}, {11}}

This is compatible with the recursive definition:

models(A ∨ B) = models(A) ∪ models(B) ={{10}, {11}} ∪ {{01}, {11}} ={{10}, {01}, {11}}

Page 46: Fundamentals of Programming Languages I

Theorem

Let ϕ ∈ Formula and α ∈ 2Prop, then the following statements areequivalent:

• α |= ϕ

• α ∈ models(ϕ)

Page 47: Fundamentals of Programming Languages I

Projected AssignmentAP(ϕ): the Atomic Propositions in ϕ.

Clearly AP(ϕ) ⊆ Prop.

Let α1, α2 ∈ 2Prop, ∈ Formula.

Lemma: if α1 |AP(ϕ)= α2 |AP(ϕ), then

α1 |= ϕ iff α2 |= ϕ

Corollary: α |= ϕ iff α |AP(ϕ)|= ϕ

We will assume, for simplicity, that Prop = AP(ϕ).

Page 48: Fundamentals of Programming Languages I

Extension of |= to Assignment Sets

Let ϕ ∈ Formula

Let T be a set of assignments, i.e., T ⊆ 22Prop

Definition. T |= ϕ if T ⊆ models(ϕ)

i.e., |=⊆ 22Prop × Formula

Page 49: Fundamentals of Programming Languages I

Extension of |= to Formulas|=⊆ 2Formula × 2Formula

Definition. Let Γ1,Γ2 be prop. formulas.

Γ1 |= Γ2

iff models(Γ1) ⊆ models(Γ2)

iff for all α ∈ 2Prop if α |= Γ1 then α |= Γ2

Examples:

x1 ∧ x2 |= x1 ∨ x2x1 ∧ x2 |= x2 ∨ x3

Page 50: Fundamentals of Programming Languages I

Classification of Formulas

A formula ϕ is called valid if models(ϕ) = 2Prop.(also called a tautology).

A formula ϕ is called satisfiable if models(ϕ) 6= ∅.

A formula ϕ is called unsatisfiable if models(ϕ) = ∅(also called a contradiction).

Page 51: Fundamentals of Programming Languages I

Characteristics of Formulas

A formula ϕ is valid iff ¬ϕ is unsatisfiable.

ϕ is satisfiable iff ¬ϕ is not valid.

Page 52: Fundamentals of Programming Languages I

Characteristics of Formulas

We can write

|= ϕ when ϕ is valid.

6|= ϕ when ϕ is not valid.

6|= ¬ϕ when ϕ is satisfiable.

|= ¬ϕ when ϕ is unsatisfiable

Page 53: Fundamentals of Programming Languages I

Examples

(p ∧ q)→ (p ∨ q) is valid(p ∨ q)→ p is satisfiable(p ∧ q) ∧ ¬p is unsatisfiable

Page 54: Fundamentals of Programming Languages I

Equivalences

|= A ∧ 1↔ A

|= A ∧ 0↔ 0

|= ¬¬A↔ A

|= A ∧ (B ∨ C)↔ (A ∧ B) ∨ (A ∧ C)

|= ¬(A ∧ B)↔ (¬A ∨ ¬B)

|= ¬(A ∨ B)↔ (¬A ∧ ¬B)

Page 55: Fundamentals of Programming Languages I

Minimal Set of Binary Operators

Recall the question: what is the minimal set of operators necessary?

A: Through such equivalences all Boolean operators can be writtenwith a single operator (⊕).

Indeed, typically industrial circuits only use one type of logical gate.

We’ll see how two are enough: ¬ and ∧

• Or: |= (A ∨ B)↔ ¬(¬A ∧ ¬B)

• Implies: |= (A→ B)↔ (¬A ∨ B)

• Equivalence: |= (A↔ B)↔ (A→ B) ∧ (B→ A)

• …

Page 56: Fundamentals of Programming Languages I

Decision Problem

The decision problem:

Given a propositional formula φ, is φ satisfiable?

An algorithm that always terminates with a correct answer to thisproblem is called a decision procedure for propositional logic.

Page 57: Fundamentals of Programming Languages I

Normal Forms

Page 58: Fundamentals of Programming Languages I

Definitions

A literal is either an atom or a negation of an atom.

Letφ = ¬(A ∨ ¬B). Then:• Atoms: AP(φ) = {A,B}• Literals: lit(φ) = {A,¬B}

Equivalent formulas can have different literals• φ = ¬(A ∨ ¬B) = ¬A ∧ B• Now lit(φ) = {¬A,B}

Page 59: Fundamentals of Programming Languages I

Definitions

A term is a conjunction of literals• Example: (A ∧ ¬B ∧ C)

A clause is a disjunction of literals• Example: (A ∨ ¬B ∨ C)

Page 60: Fundamentals of Programming Languages I

Negation Normal Form (NNF)

A formula is said to be in Negation Normal Form (NNF) if it onlycontains ¬,∧,∨ connectives and only atoms can be negated.

Examples:• ¬(A ∨ ¬B) is not in NNF• ¬A ∧ B is in NNF

Page 61: Fundamentals of Programming Languages I

Coverting to NNF

Every formula can be converted to NNF in linear time:• Eliminate all connectives other than ∧,∨,¬• Use De Morgan and double-negation rules to push negations to

the right

Example: ¬(A→ ¬B)

• Eliminate→: ¬(¬A ∨ ¬B)

• Push negation using De Morgan: (¬¬A ∧ ¬¬B)

• Use Double negation rule: (A ∧ B)

Page 62: Fundamentals of Programming Languages I

Disjunctive Normal Form (DNF)

A formula is said to be in Disjunctive Normal Form (DNF) if it is adisjunction of terms.

In other words, it is a formula of the form∨i

(∧

j

li,j)

where li,j is the j-th literal in the i-th term.

Examples• (A ∧ ¬B ∧ C) ∨ (∧A ∧ D) ∨ (B) is in DNF.

DNF is a special case of NNF.

Page 63: Fundamentals of Programming Languages I

Coverting to DNFEvery formula can be converted to DNF in exponential time andspace:

• Convert to NNF• Distribute disjunctions following the rule:

|= A ∧ (B ∨ C)↔ ((A ∧ B) ∨ (A ∧ C))

Example: (A ∨ B) ∧ (¬C ∨ D)

• ((A ∨ B) ∧ (¬C)) ∨ ((A ∨ B) ∧ D)

• (A ∧ ¬C) ∨ (B ∧ ¬C) ∨ (A ∧ D) ∨ (B ∧ D)

Q:How many clauses would the DNF have had we started from aconjunction of n clauses?

Page 64: Fundamentals of Programming Languages I

Satisfiability of DNF

Is the following DNF formula satisfiable?

(x1 ∧ x2 ∧ ¬x1) ∨ (x2 ∧ x1) ∨ (x2 ∧ ¬x3 ∧ x3)

What is the complexity of satisfiability of DNF formulas?

Page 65: Fundamentals of Programming Languages I

Conjunctive Normal Form (CNF)

A formula is said to be in Conjunctive Normal Form (CNF) if it is aconjunction of clauses.

In other words, it is a formula of the form∧i

(∨

j

li,j)

where li,j is the j-th literal in the i-th term.

Examples• (A ∨ ¬B ∨ C) ∧ (¬A ∨ D) ∧ (B) is in CNF

CNF is a special case of NNF.

Page 66: Fundamentals of Programming Languages I

Coverting to CNF

Every formula can be converted to CNF:• in exponential time and space with the same set of atoms• in linear time and space if new variables are added.

• In this case the original and converted formulas are“equi-satisfiable”.

• This technique is called Tseitin’s encoding.

Page 67: Fundamentals of Programming Languages I

Converting to CNF: the Exponential Way

CNF(φ){case

• φ is a literal: return φ• φ is ϕ1 ∧ ϕ2: return CNF(ϕ1) ∧ CNF(ϕ2)

• φ is ϕ1 ∨ ϕ2: return Dist(CNF(ϕ1),CNF(ϕ2))

}

Dist(ϕ1, ϕ2){case

• ϕ1 is ψ11 ∧ ψ12: return Dist(ψ11, ϕ2) ∧ Dist(ψ12, ϕ2)

• ϕ2 is ψ21 ∧ ψ22: return Dist(ϕ1, ψ21) ∧ Dist(ϕ1, ψ22)

}

Page 68: Fundamentals of Programming Languages I

Converting to CNF: the Exponential Way

Consider the formula φ = (x1 ∧ y1) ∨ (x2 ∧ y2)

CNF(φ) = (x1 ∨ x2) ∧ (x1 ∨ y2) ∧ (y1 ∨ x2) ∧ (y1 ∨ y2)

Now consider: φn = (x1 ∧ y1) ∨ (x2 ∧ y2) ∨ . . . ∨ (xn ∧ yn)

Q: How many clauses CNF(φn) returns?

A: 2n

Page 69: Fundamentals of Programming Languages I

Tseitin’s EncodingConsider the formula (A→ (B ∧ C))

The parse tree:

Associate a new auxiliary variable with each gate.

Add constraints that define these new variables.

Finally, enforce the root node.

Page 70: Fundamentals of Programming Languages I

Tseitin’s Encoding

(a1 ↔ (A→ a2)) ∧ (a2 ↔(B ∧ C)) ∧ (a1)

Each such constraint has a CNF representation with 3 or 4 clauses.

First: (a1 ∨ A) ∧ (a1 ∨ ¬a2) ∧ (¬a1 ∨ A ∨ a2)

Second: (¬a2 ∨ B) ∧ (¬a2 ∨ C) ∧ (a2 ∨ ¬B ∨ ¬C)

Page 71: Fundamentals of Programming Languages I

Tseitin’s Encoding

φn = (x1 ∧ y1) ∨ (x2 ∧ y2) ∨ . . . ∨ (xn ∧ yn)

With Tseitin’s encoding we need:• n auxiliary variables a1, . . . , an.• Each adds 3 constraints.• Top clause: (a1 ∨ . . . ∨ an)

Hence, we have• 3n + 1 clauses, instead of 2n.• 3n variables rather than 2n.

Page 72: Fundamentals of Programming Languages I

SAT Problem and SAT Solver

SAT problem is: Given a Boolean formula in CNF, asking whetherthere exists an assignment to each variable so that the value of theformula is true.

It is a NPC problem, which means that there is only exponentialalgorithm so far. A SAT solver is a tool that solves the SAT problem.However,

SAT solver is to be said as the ”most successful formal tools, whichcan handle 100,000 variables with millions of clauses in less than onesec.