Logika i teoria mnogo´sci - prz

Transkrypt

Logika i teoria mnogo´sci - prz
Politechnika Rzeszowska
Katedra Informatyki i Automatyki
Krzysztof Wiktorowicz
Logika i teoria mnogości
Zadania i ćwiczenia laboratoryjne
Rzeszów 2009
Literatura
1. Literatura podstawowa:
• Rasiowa H., Wstep
˛ do matematyki współczesnej, PWN, Warszawa 2003.
• Marek W., Onyszkiewicz J., Elementy logiki i teorii mnogo´sci w zadaniach, PWN, Warszawa 2003.
• Trzesicki
˛
K., Logika i teoria mnogo´sci, EXIT, Warszawa 2003.
• Ben-Ari M., Logika matematyczna w informatyce, WNT, Warszawa 2005.
• Clocksin W. F., Mellish C. S, Prolog. Programowanie, Helion, Gliwice, 2003.
2. Literatura dodatkowa:
• Stanosz B., Wprowadzenie do logiki formalnej, PWN, Warszawa 2002.
• Stanosz B., Ćwiczenia z logiki, PWN, Warszawa 2002.
• Mostowski A., Logika matematyczna, http://matwbn.icm.edu.pl/ksspis.php?wyd=10.
• Kuratowski C., Mostowski A., Teoria mnogo´sci, http://matwbn.icm.edu.pl/ksspis.php?wyd=10.
Oprogramowanie
1. Programator sterownika SIEMENS LOGO! Soft Comfort:
• strona WWW: http://www2.automation.siemens.com/logo/index_76.html,
• link: Updates & Demo software,
• wersja: Download LOGO! Soft Comfort demo version V5.0.
2. Interpreter jezyka
˛
SWI-Prolog:
• strona domowa SWI-Prolog: www.swi-prolog.org,
• linki: Download | Stable release,
• wersja: SWI-Prolog/XPCE for MS-Windows.
Uwaga: Na mojej stronie domowej
prz-rzeszow.pl/~kwiktor
znajduja˛ sie˛ linki do wymienionego oprogramowania.
2
Ćwiczenie 1
Formuły i funktory zdaniotwórcze.
Równoważność logiczna. Funkcjonalna
pełność. Postacie normalne
1.1
Zadania teoretyczne
1.1.1
Formuły i funktory zdaniotwórcze
1. Zapisać formuły zdań. W każdym przypadku opisać atomy.
(a) Jeżeli nie spróbuje,
˛ to nie wygram.
Rozwiazanie:
˛
∼ p ⇒ ∼ q,
p – spróbuje,
˛ q – wygram.
(b) Nie jest prawda,˛ że jeżeli spróbuje,
˛ to wygram.
Rozwiazanie:
˛
∼ (p ⇒ q),
p – spróbuje,
˛ q – wygram.
(c) Jeżeli Adam o´swiadczył sie˛ Karolinie, to jest ´slepy lub zakochany.
Rozwiazanie:
˛
p ⇒ (q ∨ r),
p – Adam o´swiadczył sie,
˛ q – Adam jest ´slepy, r – Adam jest zakochany.
(d) Karolina przyjmie o´swiadczyny Adama i wyjdzie za niego, wtedy i tylko wtedy, gdy Adam zapisze jej
dom lub podaruje dwa samochody.
Rozwiazanie:
˛
(p ∧ q) ⇔ (r ∨ s), p – Karolina przyjmie o´swiadczyny Adama, q – Karolina wyjdzie za
Adama, r – Adam zapisze Karolinie dom, s – Adam podaruje Karolinie dwa samochody.
(e) Alfred czy´sci rewolwer i obmy´sla plan zemsty.
(f) Je´sli Roman wygra wybory, to Adam straci prace.
˛
(g) Karol zostanie ministrem lub konsulem.
(h) Sufit jest biały, a ´sciany sa˛ kolorowe.
(i) Poziom nie jest wysoki.
(j) Albo ja przyjde,
˛ albo ty przyjdziesz.
(k) O ile przeczytam podrecznik
˛
lub bed
˛ e˛ chodził na wykłady, to zdam egzamin.
(l) Nieprawda, że jeżeli skocze,
˛ to złamie˛ noge.
˛
(m) Je´sli spotkam kolegów, to o ile nie bedzie
˛
za pó´zno, to pójdziemy do kina.
(n) Nie jest prawda,˛ że je´sli skończe˛ studia i kurs jezykowy,
˛
to znajde˛ prace.
˛
(o) Wynik jest dobry, jeżeli jest wiekszy
˛
od 12 i nie przekracza 15.
2. Dla jakich wartości logicznych p i q podane formuły sa˛ prawdziwe.
(a) p ∧ q
Rozwiazanie:
˛
w (p) = 1, w (q) = 1.
(b) (p ∧ q) ⇒ 0
(c) (p ∨ q) ⇒ 0
(d) (p ∧ ∼ q) ⇒ p
3
1.1.2
Równoważność logiczna
1. Uprościć formuły dla w (p) = 1, a nastepnie
˛
dla w (p) = 0.
(a) (p ∨ ∼ q) ∧ q
Rozwiazanie:
˛
• dla w (p) = 1,
(p ∨ ∼ q) ∧ q ≡ (1 ∨ ∼ q) ∧ q ≡ 1 ∧ q ≡ q
• dla w (p) = 0,
(p ∨ ∼ q) ∧ q ≡ (0 ∨ ∼ q) ∧ q ≡ ∼ q ∧ q ≡ 0
(b) p ∨ q
(c) p ⇒ q
(d) p ⇔ q
(e) p ∨ ∼ p
(f) (p ∧ q) ⇒ p
(g) (p ∧ q) ⇔ p
(h) p ∧ ∼ (p ∨ q)
(i) p ⇔ (∼ p ∧ q)
(j) (∼ p ⇒ q) ⇒ ∼ p
(k) (p ⇔ ∼ p) ∨ (q ⇒ p)
1.1.3
Funkcjonalna pełność
1. Zdefiniować funktory. Odpowiedź uzasadnić używajac
˛ tabel wartości logicznych.
(a) ∼ za pomoca˛ {|}
Rozwiazanie:
˛
∼ p ≡ p | p.
(b) ∨ za pomoca˛ {|}
Rozwiazanie:
˛
p ∨ q ≡ ∼ (∼ p ∧ ∼ q) ≡ (∼ p) | (∼ q) ≡ (p | p) | (q | q)
(c) ∧ za pomoca˛ {∨, ∼}
(d) ∨ za pomoca˛ {∧, ∼}
(e) ∨ za pomoca˛ {⇒, ∼}
(f) ⇒ za pomoca˛ {|}
(g) ∨ za pomoca˛ {↓}
1.1.4
Postacie normalne
1. Zapisać równoważność p ⇔ q w dysjunkcyjnej i koniunkcyjnej postaci normalnej.
Rozwiazanie:
˛
dpn: (∼ p ∧ ∼ q) ∨ (p ∧ q),
kpn: (∼ p ∨ q) ∧ (∼ q ∨ p).
2. Podane formuły przedstawić w dysjunkcyjnej i koniunkcyjnej postaci normalnej.
(a) p ∧ [q ∨ (∼ p ∧ r)]
(b) (p ∨ q) ⇒ (q ∨ r)
(c) (p ∧ q) ⇒ (q ∧ p)
(d) (p ∧ q) ⇔ p
4
1.2
1.2.1
Zadania praktyczne
Wprowadzenie
Logika zdaniowa znajduje zastosowanie w budowie układów cyfrowych. Poszczególnym funktorom zdaniotwórczym przyporzadkowuje
˛
sie˛ tzw. bramki logiczne.
Nazwa
Funkcja
AND
p∧q
OR
p∨q
NOT
∼p
NAND
p|q
NOR
p↓q
EXOR
p⊕q
Symbol
Symbol w LOGO!
Za pomoca˛ bramek tworzy sie˛ sieci logiczne (układy kombinacyjne), w których stan wyjścia zależy tylko od
bieżacych
˛
stanów wejść. Wejścia i wyjścia moga˛ znajdować sie˛ w jednym z dwóch stanów 0 lub 1. Moga˛ to być
np. dwa rozróżnialne napiecia.
˛
Niektóre bramki tworza˛ zbiory funkcjonalnie pełne, tzn. wykorzystujac
˛ tylko bramki z tego zbioru, można
zrealizować dowolnie złożony układ logiczny. Okazuje sie,
˛ że takich realizacji jest nieskończenie wiele, stad
˛
ważnym zagadnieniem jest upraszczanie (minimalizacja) sieci. Rozróżnia sie˛ metody: algebraiczne (przekształceń formalnych), algorytmiczne (Karnougha, Quine’a-McKluskey’a) i numeryczne.
1.2.2
Przebieg ćwiczenia
1. Uruchomić program LOGO! Soft Comfort.
2. Zapoznać sie˛ z wygladem
˛
okien i menu programu:
• tworzenie nowego schematu: File | New | Function block diagram,
• zapisywanie schematu: File | New | Save as... (ew. Save),
• narzedzia:
˛
Tools:
Wybór
Połaczenia
˛
Stałe, wejścia/wyjścia (Co)
Funkcje podstawowe (GF)
Escape
F5
F6
F7
5
Funkcje specjalne (SF)
Komentarz
Zmiana połaczeń
˛
Symulacja
F8
F9
F11
F3
3. Utworzyć schemat z trójwejściowa˛ bramka˛ AND. Przeanalizować jej działanie.
4. Przeanalizować schemat po przełaczeniu
˛
do jezyka
˛
drabinkowego (ikona Convert to LAD).
5. Przeanalizować działanie pozostałych bramek. Szczególna˛ uwage˛ zwrócić na NAND i NOR.
6. Zbadać, jakie funkcje Q1 = f1 (I1 , I2 ), Q2 = f2 (I1 , I2 ) realizuje podany układ?
I1
I2
7. Zbadać symulacyjnie jedno z praw identyczności p ∨ 1 ≡ 1.
8. Zbadać symulacyjnie.
(a)
(b)
(c)
(d)
(e)
pozostałe prawa identyczności
p∨∼p≡1
prawo sprzeczności
∼ (p ∧ q) ≡ ∼ p ∨ ∼ q
drugie prawo de Morgana
9. Zrealizować implikacje.
˛ Sprawdzić symulacyjnie tablice˛ wartości logicznych.
Rozwiazanie:
˛
p ⇒ q ≡ ∼ p ∨ q ≡ ∼ (p ∧ ∼ q).
10. Zrealizować p ⇒ (p ⇒ q).
11. Zrealizować funktory i sprawdzić symulacyjnie tablice wartości logicznych.
(a) p ⇔ q
(b) p ⊕ q
6
Q1
Q2
Ćwiczenie 2
Tautologie. Konsekwencje logiczne.
Rezolucja. Logika pierwszego rzedu
˛
2.1
Zadania teoretyczne
2.1.1
Tautologie
1. Sprawdzić, czy formuła (p ∨ q) ⇒ (∼ p ⇒ q) jest tautologia.
˛
Rozwiazanie:
˛
(a) metoda zero-jedynkowa
p
0
0
1
1
p∨q
0
1
1
1
q
0
1
0
1
∼p
1
1
0
0
∼p⇒q
0
1
1
1
(p ∨ q) ⇒ (∼ p ⇒ q)
1
1
1
1
(b) skrócona metoda zero-jedynkowa
1.
w [(p ∨ q) ⇒ (∼ p ⇒ q)] = 0
2.
w (p ∨ q) = 1
w (∼ p ⇒ q) = 0
3.
w (∼ p) = 1
w (q) = 0
w (p) = 0
4.
(0 ∨ 0) = 1
5.
0 = 1 SPRZECZNOŚĆ
Komentarz: 1. zakładamy fałszywość formuły; 2. ponieważ funktorem głównym jest implikacja, stad
˛ jej
poprzednik musi być prawdziwy, a nastepnik
˛
fałszywy; 3. warunek w (∼ p ⇒ q) = 0 jest fałszywa˛ implikacja,
˛
stad
˛ w (∼ p) = 1, tzn. w (p) = 0 i w (q) = 0; 4. podstawiamy w (p) = 0 i w (q) = 0 do warunku w (p ∨ q) = 1;
5. otrzymujemy sprzeczność, zatem nie udowodniliśmy fałszywości formuły.
(c) metoda przekształcenia do postaci normalnej
(p ∨ q) ⇒ (∼ p ⇒ q) ≡
1.
≡ ∼ (p ∨ q) ∨ [∼ (∼ p) ∨ q] ≡
2.
≡ (∼ p ∧ ∼ q) ∨ (p ∨ q) ≡
≡ ∼p∨p∨q ∧ ∼q∨p∨q ≡
3b.
≡1∧1≡1
Obydwie dysjunkcje elementarne sa˛ tautologiami – pierwsza zawiera pare˛ literałów komplementarnych
{p, ∼ p}, druga zawiera pare˛ {q, ∼ q}.
Odpowied´z: Formuła jest tautologia.
˛
7
2. Sprawdzić trzema metodami, czy formuła jest tautologia.
˛
(a) p ⇒ (p ⇒ q)
(b) (p ∧ q) ⇒ (p ∨ q)
(c) (p ∧ q) ∨ (p ⇒ q)
(d) (p ⇒ q) ⇒ (∼ p ∨ q)
(e) (p ∧ ∼ q) ⇒ ∼ (p ⇒ q)
Odpowied´z: Tautologiami sa˛ formuły: b, d, e.
3. Sprawdzić trzema metodami, czy formuła jest kontrtautologia.
˛
(a) (p ∨ q) ∧ (p ∧ ∼ q)
(b) (p ∧ q) ∧ (p ⇒ ∼ q)
(c) p ∧ ∼ (p ⇒ q)
(d) ∼ [p ⇒ (p ⇒ ∼ q)]
(e) ∼ (p ∨ q) ∧ (∼ p ⇒ q)
Odpowied´z: Kontrtautologiami sa˛ formuły: b, e.
4. Sprawdzić metoda˛ skrócona,
˛ czy formuła jest tautologia.
˛
(a) (p ⇔ q) ⇒ [(p ⇒ q) ∨ q]
(b) [(p ⇒ q) ∧ q] ⇒ (p ⇔ q)
(c) (p ⇒ q) ⇔ (∼ q ⇒ ∼ p)
(d) (∼ p ⇒ q) ⇔ (q ⇒ p)
(e) [(p ∧ ∼ q) ∧ (q ⇔ ∼ r)] ⇒ r
(f) [p ⇒ (q ∧ r)] ⇒ [∼ q ⇒ (p ∨ ∼ r)]
(g) (p ⇒ q) ⇒ {(p ⇒ r) ⇒ [p ⇒ (q ∧ r)]}
Odpowied´z: Tautologiami sa˛ formuły: a, c, e, g.
5. Sprawdzić metoda˛ skrócona,
˛ czy formuła jest kontrtautologia.
˛
(a) (p ⇔ q) ∧ ∼ (p ⇒ q)
(b) ∼ [p ⇒ (∼ q ∧ r)] ∧ (p ⇒ r)
(c) (p ⇒ q) ∧ (∼ q ⇒ ∼ r) ∧ ∼ [(p ∨ r) ⇒ q]
Odpowied´z: Kontrtautologiami sa˛ formuły: a, c.
2.1.2
Konsekwencje logiczne
1. Sprawdzić poprawność wnioskowania: Je´sli funkcja ma pochodna,˛ to jest ciagła,
˛
a je´sli funkcja jest ciagła,
˛
to ma pochodna,˛ a wiec
˛ funkcja ma pochodna,˛ wtedy i tylko wtedy, gdy jest ciagła.
˛
Rozwiazanie:
˛
• schemat wnioskowania można zapisać w trzech postaciach:
p ⇒ q, q ⇒ p
p⇔q
p⇒q
q⇒p
p⇔q
lub
lub
{p ⇒ q, q ⇒ p} |= p ⇔ q
gdzie p – funkcja ma pochodna,˛ q – funkcja jest ciagła,
˛
• korzystamy z definicji konsekwencji logicznej :
p
0
0
1
1
q
0
1
0
1
p⇒q
1
1
0
1
q⇒p
1
0
1
1
Istnieja˛ dwa modele i w każdym z nich wniosek jest prawdziwy.
8
p⇔q
1
0
0
1
• lub stosujemy twierdzenie o dedukcji i badamy np. metoda˛ skrócona,
˛ czy nastepuj
˛
aca
˛ formuła jest tautologia:
˛
[(p ⇒ q) ∧ (q ⇒ p)] ⇒ (p ⇔ q)
• lub korzystamy z metody rezolucji :
— przekształcamy przesłanki i negacje˛ wniosku do postaci klauzulowej:
przesłanki:
p ⇒q ≡ ∼p∨q
q ⇒p≡ ∼q∨p
negacja wniosku:
∼ (p ⇔ q) ≡ (∼ p ∨ ∼ q) ∧ (p ∨ q)
— stosujemy rezolucje˛ dla utworzonego zbioru S = {{∼ p, q} , {∼ q, p} , {∼ p , ∼ q} , {p, q}} :
1.
{∼ p, q}
2.
{∼ q, p}
3.
{∼ p , ∼ q}
4.
{p, q}
5.
{∼ q}
2, 3
6.
{q}
1, 4
7.
5, 6
— sprawdzenie w Prologu:
File | Consult ... (załadować resolve.pl)
?- resolve([[~p,q], [~q,p], [~p,~q], [p,q]]).
[[~p, q], [~q, p], [~p, ~q], [p, q]]
[[~p], [~p, q], [~q, p], [~p, ~q], [p, q]]
[[~q], [~p], [~p, q], [~q, p], [~p, ~q], [p, q]]
[[p], [~q], [~p], [~p, q], [~q, p], [~p, ~q], [p, q]]
[[], [p], [~q], [~p], [~p, q], [~q, p], [~p, ~q], [p, q]]
The empty clause is in the set of clauses so it is unsatisfiable.
Odpowied´z: Wnioskowanie jest poprawne.
2. Sprawdzić trzema metodami (jak w zadaniu 1.) poprawność wnioskowania.
(a) Dzisiaj jest piatek,
˛
a je´sli dzisiaj jest piatek,
˛
to jutro jest sobota, a wiec
˛ jutro jest sobota.
(b) Jeżeli Kazimierz spotkał Tadeusza, to wróci pó´zno. Kazimierz nie spotkał Tadeusza. Zatem Kazimierz
nie wróci pó´zno.
(c) Kazimierz był na meczu lub na zebraniu. Gdyby Kazimierz był na meczu, to nie wstałby dzi´s tak
wcze´snie. Kazimierz wstał wcze´snie. A zatem Kazimierz był na zebraniu.
Odpowied´z: Poprawne jest wnioskowanie: a, c.
3. Sprawdzić trzema metodami, czy U |= B.
(a) U = {p ⇒ q, q ⇒ p} , B = p ∨ q
(b) U = {p ⇒ q, q ⇒ p} , B = p ⊕ q
(c) U = {p ⇒ q, p ∨ q} , B = q
(d) U = {(p ∧ q) ⇒ r} , B = p ⇒ r
Odpowied´z: Zbiór U implikuje logicznie B w przypadku c.
9
2.1.3
Logika pierwszego rzedu
˛
1. Zapisać formuły zdań.
(a) Niektórzy ludzie sa˛ Polakami.
Rozwiazanie:
˛
[P (x) ∧ Q (x)] lub ∼
x
[P (x) ⇒ Q (x)],
P (x) – x jest człowiekiem, Q (x) – x jest Po-
[P (x) ⇒ ∼ Q (x)],
P (x) – x jest rzecza,˛ Q (x) – x jest trwały.
x
lakiem.
(b) Żadna rzecz nie jest trwała.
Rozwiazanie:
˛
∼
[P (x) ∧ Q (x)] lub
x
x
(c) Niektóre ptaki nie sa˛ orłami.
(d) Nie każdy bogacz jest skapcem.
˛
(e) Żadna góra nie jest wieczna.
(f) Niektóre piekne
˛
auta nie sa˛ drogie.
(g) Nie każde piekne
˛
auto jest drogie.
(h) Każdy człowiek jest me˛żczyzna˛ lub kobieta.˛
(i) Nie tylko samochody sa˛ pojazdami.
2. Określić, dla jakich argumentów funkcja zdaniowa jest zdaniem prawdziwym.
(a) x2 x, x ∈ R
(b) x2 x,
x∈N
(c) |x + 1| = 1, x ∈ R
2
x + y 2 = 1, x ∈ R
(d)
y∈R
3. Zaznaczyć na płaszczyźnie zbiór punktów o współrzednych
˛
(x, y) , dla którego funkcja zdaniowa jest
zdaniem prawdziwym.
(a) |x| > y
(b) ∼ (|x| > y)
(c) (x y) ∨ x2 + y 2 1
(d) (x y) ∧ x2 + y 2 < 1
10
2.2
Zadania praktyczne
1. Zrealizować za pomoca˛ bramek NAND, a nastepnie
˛
za pomoca˛ bramek NOR podane formuły.
(a) ∼ p
(b) p ∧ q
(c) p ∨ q
(d) p ⇒ q
(e) p ⇔ q
(f) p ⊕ q
(g) (p ∨ q) ∧ r
(h) (p ∧ q) ∨ (r ∧ s)
2. Dana jest tablica wartości logicznych pewnej formuły. Zrealizować ja˛ tylko za pomoca˛ bramek NAND.
p
0
0
1
1
q
0
1
0
1
A
1
0
0
1
Rozwiazanie:
˛
• na podstawie tablicy piszemy dysjunkcyjna˛ postać normalna:
˛
A = (∼ p ∧ ∼ q) ∨ (p ∧ q)
• wyprowadzamy negacje˛ przed nawias (prawa podwójnego przeczenia i de Morgana):
A = (∼ p ∧ ∼ q) ∨ (p ∧ q) ≡ ∼ [∼ (∼ p ∧ ∼ q) ∧ ∼ (p ∧ q)]
• realizacja:
3. Zrealizować formułe˛ z powyższego zadania tylko za pomoca˛ bramek NOR.
Wskazówka: Na podstawie tablicy przedstawić formułe˛ w koniunkcyjnej postaci normalnej i dalej postepować
˛
podobnie.
11
Ćwiczenie 3
Rachunek zbiorów
3.1
3.1.1
Zadania teoretyczne
Zbiór i zależności miedzy
˛
zbiorami
1. Podać elementy zbiorów:
(a) {a, b, a}
(b) ∅
(c) {{a}}
(d) {∅}
(e) {{a, b} , {a}}
(f) {x ∈ N : x 2}
(g) x ∈ N : x2 7
(h) {x ∈ N : x = 2 ∨ x = 3}
(i) x ∈ N : x2 = 4
(j) {x ∈ N : |3 − x| < 3}
(k) x ∈ R : x2 + 4x + 4 0
2. Zbadać jakie relacje (inkluzji, równości) zachodza˛ miedzy
˛
zbiorami:
(a) A = {a, b, c, d}, B = {a, c, d}
(b) A = {a, b}, B = {a, c, d}
(c) A = ∅, B = {a, b, c}
(d) A = {{a} , a, ∅}, B = {a}
(e) A = {{a, b} , {c, d} , c, d}, B = {{a, b} , c}
(f) A = {{a, b} , {a} , b, ∅}, B = {{a} , b, {∅}}
(g) A = {x ∈ N : x > 2}, B = {y ∈ N : y > 2}
3.1.2
Prawa rachunku zbiorów
1. Udowodnić i sprawdzić na diagramach Venna:
(a) A ∪ (A ∩ B) = A
Rozwiazanie:
˛
• korzystamy z definicji sumy i iloczynu zbiorów:
[x ∈ A ∨ (x ∈ A ∧ x ∈ B)] ⇔ x ∈ A
• oznaczajac
˛ p – x ∈ A, q – x ∈ B zapisujemy formułe:
˛
[p ∨ (p ∧ q)] ⇔ p
• ponieważ otrzymana formuła jest tautologia,
˛ to równość A ∪ (A ∩ B) = A jest prawdziwa.
12
(b) A − B = A ∩ B
(c) (A − B) ∩ B = ∅
(d) (A − B) ∪ B = A ∪ B
(e) A = (A ∩ B) ∪ (A ∩ B)
2. Udowodnić i sprawdzić na diagramach Venna prawa de Morgana dla zbiorów.
3. Udowodnić wzory:
(a) A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
(b) (A ∪ B) − C = (A − C) ∪ (B − C)
(c) A − (B ∪ C) = (A − B) − C
(d) [(A − B) = (B − A)] ⇒ (A = B)
(e) (A ⊂ B) ∧ (C ⊂ D) ⇒ (A ∩ C) ⊂ (B ∩ D)
(f) (A ∪ B) − (A ∩ B) = (A − B) ∪ (B − A)
4. Która z podanych inkluzji jest prawdziwa, a która fałszywa:
(a) (A ∩ B) ⊂ (A ∪ B)
(b) (A ∪ A) ⊂ A
(c) (A ∩ A) ⊂ A
(d) (A − B) ⊂ (A ∪ B)
(e) (A − B) ⊂ (A ∩ B)
(f) (A ∩ B) ⊂ A
Odpowied´z: Inkluzje a, b, c, d, f sa˛ prawdziwe; inkluzja e jest fałszywa.
3.1.3
Działania na zbiorach
1. Dla zbioru A = {a, b, c} wyznaczyć 2A .
2. Dane sa˛ zbiory A = {0, 1, 2, 8}, B = {0, 1, 2, 3, 4}. Znaleźć:
(a) A ∪ B
(b) A ∩ B
(c) A − B
(d) B − A
(e) A ⊕ B
3. Niech U = {1, 2, 3, 4, 5} bedzie
˛
przestrzenia.
˛ Znaleźć dopełnienie zbiorów:
(a) A = {2, 3, 5}
(b) B = {1, 2}
4. Dane sa˛ zbiory A = x ∈ R : x2 + 6x + 8 < 0 , B = x ∈ R : x2 + 3x < 0 . Znaleźć:
(a) A ∩ B
(b) A ∪ B
(c) A − B
(d) A
5. Dla zbiorów At = {x ∈ R : −t x t + 1} , gdzie t ∈ N wyznaczyć:
(a)
At
t∈T
(b)
At
t∈T
13
3.2
3.2.1
Zadania praktyczne
Wstep
˛
Twórcami jezyka
˛
Prolog sa˛ Alain Colmerauer i Robert Kowalski. Kowalski podał podstawy teoretyczne, natomiast Colmerauer opracował w 1972 roku jezyk
˛
programowania. Nazwa jest skrótem od Programming in Logic,
co oznacza programowanie w logice. Prolog zyskał popularność w latach osiemdziesiatych,
˛
kiedy Japonia wybrała
go na jezyk
˛
komputerów piatej
˛ generacji, a firma Borland wprowadziła na rynek kompilator Turbo-Prolog.
Pierwotne zastosowania Prologu dotyczyły dowodzenia twierdzeń logicznych i przetwarzania jezyka
˛
naturalnego. Ponieważ Prolog operuje głównie na symbolach, nadaje sie˛ także do rozwiazywania
˛
zagadnień sztucznej
inteligencji takich, jak wnioskowanie logiczne, podejmowanie decyzji czy rozgrywanie gier.
Praca z Prologiem polega na zasadzie zapytań. Zapytanie może być proste, np. Czy 2 jest wieksze
˛
od 1?
?- 2 > 1.
Yes
lub złożone np. Czy 2 jest wieksze
˛
od 1 i czy 3 jest mniejsze od 2?
?- 2 > 1, 5 < 3.
No
Uwaga 3.1 Koniunkcje˛ zapytań realizuje przecinek (,), za´s alternatywe˛ – ´srednik (;). Każde zapytanie musi
kończyć sie˛ kropka.˛
Prolog interpretuje zapytanie i drukuje odpowiedź. Odpowiedź może mieć postać:
1. Yes – odpowiedź twierdzaca,
˛
2. No – odpowiedź negatywna,
3. zmienne i ich wartości – sa˛ drukowane, jeżeli stanowia˛ odpowiedź na zapytanie. Po wydrukowaniu jednej
odpowiedzi, program czeka na decyzje˛ użytkownika. Aby wyświetlić kolejne rozwiazanie,
˛
należy nacisnać
˛
średnik (;). Aby zrezygnować z szukania dalszych odpowiedzi, należy nacisnać
˛ Enter.
Uwaga 3.2 W Prologu zmienne zaczynaja˛ sie˛ wielka˛ litera˛ (np. X, Kto, Delta).
3.2.2
Działania na zbiorach w jezyku
˛
Prolog
W jezyku
˛
Prolog zbiory sa˛ reprezentowane w postaci listy, na przykład:
Zbiór
∅
Lista
[]
{a, b, c}
[a,b,c]
{{a} , {b, c}}
[[a],[b,c]]
Działania na zbiorach realizuja˛ predykaty podane w tabeli:
Nazwa
przynależność
Operacja
x∈A
Predykat
member(X, A)
inkluzja (podzbiór)
A⊂B
subset(A, B)
suma
C =A∪B
union(A, B, C)
iloczyn
C =A∩B
intersection(A, B, C)
różnica
C =A−B
subtract(A, B, C)
Pozostałe działania można zdefiniować z wykorzystaniem wymienionych powyżej (por. wykład).
14
3.2.3
Przebieg ćwiczenia
1. Uruchomić interpreter jezyka
˛
SWI-Prolog.
2. Zapytać: Czy 2 > 1 i 3 < 2?
?- 2 > 1, 3 < 2.
No
3. Zapytać: Czy 2 > 1 lub 3 < 2?
4. Zbadać przynależności:
(a) x ∈ {a, b}
?- member(x, [a,b]).
No
(b) x ∈ {a, x}
(c) ∅ ∈ {∅, a, b}
(d) {a, b} ∈ {a, b, c}
(e) {a, b} ∈ {{a, b} , b, c}
5. Podać wszystkie elementy zbiorów:
(a) {a, b}
?- member(X, [a,b]).
X = a;
X = b;
No
(b) ∅
(c) {∅}
(d) {{a, b} , {b} , b}
(e) {{a} , b, {∅}}
6. Zbadać inkluzje˛ A ⊂ B dla A = {a, {b, c}}, B = {a, {b, c} , d}:
?- A = [a,[b,c]], B = [a,[b,c],d], subset(A,B).
A = [a, [b, c]]
B = [a, [b, c], d]
Yes
7. Zbadać równość zbiorów A = {a, b}, B = {b, a}.
8. Dla zbiorów A = {a, b, c, d}, B = {a, c, d} wyznaczyć:
(a) A ∪ B
?- A = [a,b,c,d], B = [a,c,d], union(A,B,Suma).
Suma = [b, a, c, d]
(b) A ∩ B
(c) A − B
(d) B − A
(e) (A ∪ B) ∩ B
(f) A ⊕ B
9. Wyznaczyć A, A, B, U dla
U = {a, b, c, d} ,
A = {a, c} ,
B = ∅.
10. Dla zbiorów
U = {1, 2, 3, 4, 5} ,
A = {1, 2} ,
zbadać prawa wyłaczonego
˛
środka, sprzeczności i de Morgana.
15
B = {2, 3, 4}
Ćwiczenie 4
Iloczyn kartezjański. Relacje. Funkcje
4.1
Zadania teoretyczne
4.1.1
Iloczyn kartezjański
1. Znaleźć iloczyny kartezjańskie A × B, B × A dla nastepuj
˛ acych
˛
zbiorów:
(a) A = {0, 1}, B = {1, 2}
(b) A = ∅, B = {1, 2, 3}
(c) A = {∅}, B = {1, 2, 3}
2. Znaleźć iloczyn kartezjański A × B × C dla A = {x, y, z}, B = {1, 2}, C = {u}.
Rozwiazanie:
˛
Tworzymy wszystkie trójki (a, b, c), w których a ∈ A, b ∈ B i c ∈ C:
A × B × C = {(x, 1, u) , (x, 2, u) , (y, 1, u) , (y, 2, u) , (z, 1, u) , (z, 2, u)}
3. Niech x, y ∈ R. Podać interpretacje˛ geometryczna˛ iloczynów A × B, B × A dla:
(a) A = {x : 0 < x}, B = {y : 0 < y}
(b) A = {x : 0 < x 1}, B = {y : −1 < y < 1}
(c) A = {x : (0 < x < 1) ∨ (2 < x 3)}, B = {y : (1 < y 2) ∨ (3 < y 4)}
4. Sprawdzić, czy prawdziwe sa˛ równości:
(a) A × (B ∩ C) = (A × B) ∩ (A × C)
(b) A − (B × C) = (A − B) × (A − C)
(c) A ∩ (B × C) = (A ∩ B) × (A ∩ C)
(d) A × (B − C) = (A × B) − (A × C)
4.1.2
Relacje
1. Określić dziedzin˛e, przeciwdziedzin˛e i pole relacji:
(a) {(a, a) , (a, b) , (a, c) , (b, d)}
(b) x jest przełożonym y
(c) x jest wyższy od y
(d) x jest bratem y
2. Określić własności relacji:
(a) x jest dzieckiem y
(b) x jest przeciwnej płci niż y
(c) x ma tyle samo lat co y
(d) x jest starszy od y
(e) x jest starszy o 10 lat od y
16
3. Niech U = {a, b, c, d}. Określić własności relacji:
(a) {(a, a) , (b, b) , (c, c) , (d, d) , (a, b) , (b, a) , (b, c) , (c, b) , (a, c) , (c, a)}
Wskazówka: Przedstawić relacje˛ w postaci tablicy, gdzie w wierszach mamy poprzedniki par, zaś w kolumnach
ich nastepniki.
˛
a b c d
a x x x
b x x x
c x x x
d
x
(b) {(a, a) , (c, c) , (a, b) , (b, c)}
(c) {(b, a) , (a, b) , (c, a) , (a, d) , (c, b) , (b, d) , (d, c)}
4. Określić własności relacji y > x, gdzie x, y ∈ R. Podać ich interpretacje˛ geometryczna.
˛
4.1.3
Funkcje
1. Dana jest funkcja f : R → R, gdzie f (x) = x2 . Zbadać, czy f jest injekcja,
˛ surjekcja˛ i bijekcja.
˛ Jeżeli nie
jest injekcja,
˛ podać x1 i x2 takie, że x1 = x2 i f (x1 ) = f (x2 ). Jeżeli nie jest surjekcja,
˛ podać Wf .
Rozwiazanie:
˛
• funkcja nie jest injekcja,
˛ ponieważ istnieja˛ takie x1 , x2 ∈ R, że (x1 = x2 ) ⇒ [f (x1 ) = f (x2 )], na przykład
x1 = −1, x2 = 1,
• funkcja nie jest surjekcja,
˛ ponieważ dla pewnych y nie istnieje takie x ∈ R, że y = f (x), na przykład dla
y = −4. Mamy tutaj Wf = R+ (zbiór liczb rzeczywistych nieujemnych),
• funkcja nie jest bijekcja,
˛ ponieważ nie jest injekcja˛ (nie jest także surjekcja).
˛
2. Dla danego przekształcenia f : R → R zbadać, czy f jest injekcja,
˛ surjekcja˛ i bijekcja.
˛ Jeżeli nie jest
injekcja,
˛ podać x1 i x2 takie, że x1 =
x2 i f (x1 ) = f (x2 ). Jeżeli nie jest surjekcja,
˛ podać Wf .
(a) f (x) = 2x
(b) f (x) = x3
 2x + 1

x−1
(c) f (x) =

0
dla x = 1
dla x = 1
Wskazówka: Wykorzystać własności funkcji homograficznej.
(d) f (x) = 2x + x
2x
(e) f (x) = 2
x +1
√
x + 1 dla x 0
(f) f (x) =
2x
dla x < 0
(g) f (x) = sin x
3. Dana jest funkcja f : R → R, gdzie f (x) = sin 2x + 1. Wyznaczyć obrazy i przeciwobraz:
(a) f (A), gdzie A = 0, π
π
(b) f (A), gdzie A = 0,
2
−1
(c) f (B), gdzie B = {0}
4. Niech f : R → R, gdzie f (x) = x2 − 3x + 2. Znaleźć obrazy i przeciwobrazy:
(a) f (0, 1)
(b) f (−2, −1)
(c) f −1 ((−∞, −6)
(d) f −1 ({−3, −4})
(e) f ({1, 2})
17
4.2
4.2.1
Zadania praktyczne
Wstep
˛
Iloczyny kartezjańskie i relacje sa˛ zbiorami składajacymi
˛
sie˛ z par uporzadkowanych,
˛
stad
˛ w Prologu sa˛ reprezentowane w postaci listy, na przykład:
Zbiór
{(a, 1) , (a, 2)}
Lista
[(a,1),(a,2)]
{(a, b, 1) , (a, b, 2)}
[(a,b,1),(a,b,2)]
Do generowania zbiorów wykorzystuje sie˛ predykat findall.
Definicja
L = {x : P (x)}
Zapytanie
findall(X, P(x), L)
L = {(x, y) : R (x, y)}
findall((X,Y), R(x,y), L)
Predykat ten zwraca liste˛ L, która zawiera wszystkie wartości zmiennej X lub pary zmiennych (X,Y) spełniajace
˛
funkcje˛ zdaniowa˛ P(x) lub R(x,y).
Uwaga 4.1 Funkcje zdaniowe złożone musza˛ by´c zapisane w nawiasie.
4.2.2
Przebieg ćwiczenia
1. Znaleźć wszystkie elementy zbioru A = {2, 3, 1, 7, 8}, które sa˛ wieksze
˛
od 2:
?- A = [2,3,1,7,8], findall(X,
L = [3, 7, 8]
(member(X,A),
X>2), L).
2. Dany jest zbiór A = {2, 3, 1, 7, 8}. Znaleźć wszystkie elementy x takie, że:
(a) x ∈ A
(b) x 4 (wsk. >=)
(c) 1 < x 7 (wsk. =<)
(d) x2 < 9
3. Znaleźć A × B dla A = {a, b} i B = {1, 2, 3}:
?- A = [a,b], B = [1,2,3], findall((X,Y), (member(X,A), member(Y,B)), L).
L = [(a, 1), (a, 2), (a, 3), (b, 1), (b, 2), (b, 3)]
4. Znaleźć A × B i B × A dla:
(a) A = {a}, B = {b}
(b) A = {a}, B = {1, 2, 3}
(c) A = {a, b}, B = ∅
(d) A = {a, b}, B = {∅}
5. Znaleźć A2 dla A = {a, b}.
6. Znaleźć A × B × C dla A = {x, y, z}, B = {1, 2}, C = {u}.
7. Dane sa˛ zbiory A = {1, 2}, B = {1, 2, 4}. Niech x ∈ A i y ∈ B. Znaleźć iloczyn kartezjański A × B i
relacje R w nim określone:
(a) A × B = {(x, y)}
(b) R = {(x, y) : x < y}
(c) R = {(x, y) : x > y + 1}
(d) R = {(x, y) : x = y}
(e) R = {(x, y) : x y}
(wsk. Y is X*X)
(f) R = (x, y) : y = x2
18