Applications of Predicate Logic


Discrete Mathematics I

8th lecture, November 22, 2019

Martin J. Dürst


© 2005-19 Martin J. Dürst Aoyama Gakuin University

Today's Schedule



There will be a minitest (ca. 30minutes) at the start of the next lecture. Please prepare well!

Some problem(s) will ask for Japanese equivalents of English terms.

All other problems will be in both Japanese and English, and answers can be written in Japanese or English.


Leftovers of Last Lecture


Summary of Last Lecture


Last Week's Homework

Create formulæ for the statements below about numbers, students, and pets. Use the quantifiers and operators that we used in the lecture. The set of (all) Students is denoted with S, the set of (all) pets with P. The fact that student s likes pet p is written like(s, p). The age of student s is written age(s). You can use any operators generally used in this lecture. Do not introduce any new functional predicates.

Example: All natural numbers are greater than -5.

n∈ℕ: n > -5

  1. There is no greatest natural number.
    n∈ℕ: ∃m∈ℕ: m>n
  2. All students are older than 18.
    sS: age(s) > 18
  3. Every student likes a pet.
    sS: ∃pP: like(s, p)
  4. There is a pet liked by all students.
    pP: ∀sS: like(s, p)
  5. All students like all pets.
    sS: ∀pP: like(s, p)
  6. There is a student who likes all pets.
    sS: ∀pP: like(s, p)
  7. Every pet is liked by a student.
    pP: ∃sS: like(s, p)
  8. There is a student who likes a pet.
    sS: ∃pP: like(s, p)
  9. All students younger than 21 like a pet.
    sS: age(s) < 21 → ∃pP: like(s, p)
  10. Every pet is disliked (not liked) by a student.
    pP: ∃sS: ¬like(s, p)
  11. There is a pet that is disliked by all students who are older than 20.
    pP: ∀sS: age(s) > 20 → ¬like(s, p)


Question for Example from Last Week

There is no food that all students like.

Solution given in lecture: ¬∃fF: ∀sS: like(s, f)

Alternative (question by students): ∀fF: ∃sS: ¬like(s, f)

Using laws to show that these are the same:

¬∃fF: ∀sS: like(s, f) [law 2]

= ∀fF: ¬∀sS: like(s, f) [law 1]

= ∀fF: ∃sS: ¬like(s, f)

Another Transformation

There is no greatest natural number.

¬∃m∈ℕ: ∀n∈ℕ: nm [law 2]

= ∀m∈ℕ: ¬∀n∈ℕ: nm [law 1]

= ∀n∈ℕ: ∃m∈ℕ: ¬nm [arithmetic]

= ∀n∈ℕ: ∃m∈ℕ: n>m

Concrete Example for Law 1

Law 1:
¬∀x: P(x) = ∃x: ¬P(x)

Concrete example:
Not all students are from Kanagawa means that there is at least one student who is not from Kanagawa, and the other way round.

¬∀sS: native(s, Kanagawa) = ∃sS: ¬native(s, Kanagawa)


Notation used in Examples

The examples all are about the students taking Discrete Mathematics I.

Sets, predicates and functions used:

S: Set of students

age(s): A student's age (fully completed years)

college(s): A student's faculty or college (example: College of Science and Engineering, CSE)

female(s), male(s): Predicates for a student's gender.

native(s, k): True if student s is a native of prefecture k (using "abroad" for students from outside Japan)


Concrete Example for Law 5

Law 5:
(∃x: P(x)) ∧ Q(y) = ∃x: (P(x)∧Q(y))

Concrete example:

There exists a student from Shizuoka, and a student is older than 20 ⇔ There is a case where there is a student from Shizuoka and a student is older than 20.

(∃sS: native(s, Shizuoka)) ∧ age(y)>20 = ∃sS: (native(s, Shizuoka)∧age(y)>20)


Concrete Example for Law 8

Law 8:
(∀x: P(x)) ∧ (∀x: R(x)) = ∀x: P(x)∧R(x)

Concrete example:
All students are less that 30 years old, and all students belong to the College of Science and Engineering. = All students are less than 30 years old and belong to the College of Science and Engineering.

(∀sS: age(s)≤30) ∧ (∀tS: college(t)=CSE) = ∀uS: (age(u)≤30 ∧ college(u)=CSE)


Concrete Example for Law 11

Law 11:
(∃x: P(x)) ∧ (∃x: R(x)) ⇐ ∃x: P(x) ∧ R(x)

Example of how the left side follows from the right:
There is a student who is a native of Hiroshima and who is male. ⇒ There is a student who is a native of Hiroshima, and there is a student who is male.

(∃sS: native(s, Hiroshima)) ∧ (∃sS: male(s)) ⇐ ∃sS: (native(s, Hiroshima) ∧ male(s))

Example of how the right side does not follow from the left side:
There is a student who is a native from Hokkaido, and there is a student who is female. However, this does not imply that there is a student who is a native from Hokkaido and is female.

(∃sS: native(s, Hokkaido)) ∧ (∃sS: female(s)) ⇏ ∃sS: (native(s, Hokkaido) ∧ female(s))


Concrete Example for Law 12

Law 12:
(∃y: ∀x: P(x, y)) ⇒ (∀x: ∃y: P(x, y))

Example of how the left side follows from the right:
There is an age y (e.g. 30) so that for all students, their age is below y. From this follows that for each student, there is an age for which the student's age is lower.

(∃y: ∀sS: age(s)<y) ⇒ (∀sS: ∃y: age(s)<y)

Example of how the right side doesn't follow from the left side:
All students are native of some prefecture (or abroad). But this does not mean that there is a single prefecture of which all students are native.

(∀sS: ∃y: native(s, y)) ⇏ (∃y: ∀sS: native(s, y))


Sums, Products, and Quantifiers

Quantifiers are similar to sums and products:

Sum: i=1 1/i2 = 1 + 1/4 + 1/9 + 1/16 + 1/25 + ...

Product: i=1 1+1/(-2)i = 0.5 · 1.25 · 0.875 · 1.0625 · ...

Universal quantification: (∀i ∈ℕ+: i>0) = i=1 i>0 = 1>0 ∧ 2>0 ∧ 3>0 ∧...

Existential quantification: (∃i ∈ℕ+: odd(i)) = i=1 odd(i) = odd(1)∨odd(2)∨odd(3)∨...


Quantification as a Generalization

Quantification is a generalization of conjunction/disjunction to more than two operands,
in the same way that sum and product are a generalization of addition/multiplication to more than two operands.

two operands many operands
name symbol name symbol(s)
addition + sum
multiplication * product
conjunction universal quantification ∀/
disjunction existential quantification ∃/



Notation: n!

Definition: n! = 1 · 2 · ... (n-1) · n = ∏ni=1 i


1! = 1

0! = 1


Neutral Element of an Operation


Quantifiers for Empty Sets

i (i<0⋀i>5): odd(i) = T (because the neutral element of conjunction is T)

i (i<0⋀i>5): odd(i) = F (because the neutral element of disjunction is F)


Structure of a Program to Calculate Sums, ...

Concrete example (sum):

int sum = 0;
for (i=0; i<end; i++)
    sum += array[i];

General Structure

In programming language C:

type result = neutral element;
for (i=0; i<end; i++)
    result = result operator array[i];

In programming language Ruby:

array.inject(neutral element) do |memo, next|
  memo operator next


Extension of DeMorgans' Laws

Laws 1 and 2 introduced in the last lecture are generalizations of DeMorgans' laws:


Formula Manipulation with Quantifiers

Simplify ¬(∃x: P(x) → ∀y: ¬Q(y))

¬(∃x: P(x) → ∀y: ¬Q(y)) [removing implication]

= ¬(¬∃x: P(x) ∨ ∀y: ¬Q(y)) [deMorgan's law]

= ¬¬∃x: P(x) ∧ ¬∀y: ¬Q(y) [law 1 of last lecture]

= ¬¬∃x: P(x) ∧ ∃y: ¬¬Q(y) [double negation]

= ∃x: P(x) ∧ ∃y: Q(y)

Actual example:

Let P(x) mean "it is raining in x", and Q(y) "it is snowing y"

Then the original formula says "It's wrong that if it rains somewhere, then it snows nowhere". The final formula says "There is a place where it rains and there is a place where it snows".

(There has to be a place where it rains because otherwise the implication is automatically true.)


Pascal's Triangle

Start with a single 1 in the first row, surrounded by zeroes ((0 ... 0) 1 (0 ... 0)).
Create row by row by adding the number above and to the left and the number above and to the right.

                1   1
              1   2   1
            1   3   3   1
          1   4   6   4   1
        1   5  10  10   5   1
      1   6  15  20  15   6   1
    1   7  21  35  35  21   7   1
  1   8  28  56  70  56  28   8   1


Subsets and Pascal's Triangle


Subsets and Combinations


Direct Formula for Combinations

(prove it as a homework, problem 2)


Homework Due November 28

Deadline: November 28, 2019 (Thursday), 19:00.

Format: A4 single page (using both sides is okay; NO cover page), easily readable handwriting (NO printouts), name (kanji and kana) and student number at the top right

Where to submit: Box in front of room O-529 (building O, 5th floor)

Problem 1: For ternary (three-valued) logic, create defining truth tables for conjunction, disjunction, and negation. The three values are T, F, and ?, where ? stands for "unknown" (in more words: "maybe true, maybe false, we don't know").

Hint: What's the result of "?∨T"? ? can be T or F, but in both cases the result will be T, so ?∨T=T.

Problem 2: Prove nCm = n!/(m! (n-m)!) for 0≦n, 0≦mn using nCm = n-1Cm-1 + n-1Cm
(Hint: Prove first for m=0 and m=n, then for 0<m<n)



Pascal's triangle
repeated combination
repeated permutation
product (∏)
neutral element