(述語論理の応用)

http://www.sw.it.aoyama.ac.jp/2018/Math1/lecture8.html

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

- Summary and homework from last lecture
- Applications of predicate logic
- Examples for various laws
- Quantifiers and variables
- Quantifiers and sums/products

- There are many different kinds of symbolic logic: Propositional logic, predicate logic,...
- Predicates take arguments (propositions are predicates with zero arguments)
- Predicate logic allows more general statements and inferences than propositional logic
- Predicate logic uses universal quantifiers (∀) and existential quantifiers (∃)

Sorry, it was removed! :)

Sorry, it was removed! :)

Sorry, it was removed! :)

Sum: ∑^{∞}_{i}_{=1}
1/`i`^{2} = 1 + 1/4 + 1/9 + 1/16 + 1/25 + ...

Product: ∏^{∞}_{i}_{=1}
1+1/(-2)^{i} = ...

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 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` =
∏^{n}_{i=1} `i`

(∏ is called *product*)

Question:

1! = 1

0! = 1

- Neutral element of addition: 0
- Neutral element of multiplication: 1
- Neutral element of conjunction:
`true`

- Neutral element of disjunction:
`false` - Neutral element of substraction:

does not exist, but 0 is a rigth identity (satisfying only ∀`x`:`x`=`x`△`e`)

Concrete example (sum):

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

In programming language C:

typeresult =neutral element; for (i=0; i<end; i++) result = resultoperatorarray[i];

In programming language Ruby:

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

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

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

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

- ¬∀
`x`: P(`x`)

= ¬(P(`x`_{1})∧P(`x`_{2})∧P(`x`_{3})∧P(`x`_{4})∧...)

= (¬P(`x`_{1})∨¬P(`x`_{2})∨¬P(`x`_{3})∨¬P(`x`_{4})∨...)

= ∃`x`: ¬P(`x`) - ¬∃
`x`: P(`x`)

= ¬(P(`x`_{1})∨P(`x`_{2})∨P(`x`_{3})∨P(`x`_{4})∨...)

= (¬P(`x`_{1})∧¬P(`x`_{2})∧¬P(`x`_{3})∧¬P(`x`_{4})∧...)

= ∀`x`: ¬P(`x`)

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".

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

- For a set
`A`with |`A`| =`n`, we can write

|{`B`|`B`⊂`A`∧|`B`|=`m`}| as_{n}`C`_{m} _{n}`C`_{n}= 1 (the only subset of size`n`is`A`itself, {`B`|`B`⊂`A`∧|`B`|=|`A`|=`n`} = {{`A`}})_{n}`C`_{0}= 1 (the only subset of size 0 is {}, {`B`|`B`⊂`A`∧|`B`|=1} = {{}})_{n}`C`_{m}=_{n-1}`C`_{m-1}+_{n-1}`C`_{m}(`n`>0, 0<`m`<`n`)

*Combinatorics*is very important for Information Technology- Combinatorics deals with counting the number of different things under various conditions or restrictions
- The word
*combinations*refers to the choices of a given size from a set*without repetitions*and*without considering order* - Combinations of a certain size
`m`selected from a set of size`n`are the same as the subsets of a given size`m`in a powerset of size`n` - The number of
**c**ombinations is written_{n}`C`_{m} - There are also
`permutations`(considering order),*repeated permutations*(allowing an element to be selected more than once), and*repeated combinations*

_{n}`C`_{m}=`n`!/(`m`! (`n`-`m`)!)

(prove it as a homework)

Deadline: November **22**, 2018 (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: By using formula manipulation, show that the Wolfram axiom of
Boolean logic
(((` A`⊼

Hints: Simplify the left side to obtain the right side. There should be between 15 and 20 steps.

Problem 2: 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.

Deadline: November **29**, 2018 (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)

Prove _{n}`C`_{m} =
`n`!/(`m`! (`n`-`m`)!) for
0≦`n`, 0≦`m`≦`n` using
_{n}`C`_{m} =
_{n-1}`C`_{m-1} +
_{n-1}`C`_{m}

(Hint: Prove first for `m`=0 and `m`=`n`, then for
0<`m`<`n`)

- Pascal's triangle
- パスカルの三角形
- combinatorics
- 組合せ論
- combination
- 組合せ
- permutation
- 順列
- repeated combination
- 重複組合せ
- repeated permutation
- 重複順列