Úvod do teoretické informatiky Logika, množiny, matematická notace (pracovní verze)
Zdeněk Sawa
Verze: 11. února 2013
VŠB–Technická Univerzita Ostrava
ii
Obsah 1 Matematické důkazy 1.1 Čtení odborných textů . . . . . 1.2 Tvrzení, věty, důkazy . . . . . . 1.3 Předpoklady, definice a axiomy 1.4 Symboly . . . . . . . . . . . . . 1.5 Logika . . . . . . . . . . . . . . 1.6 Konjunkce . . . . . . . . . . . . 1.7 Zápis pravidel . . . . . . . . . . 1.8 Formálně zapsané důkazy . . . 1.9 Závorky . . . . . . . . . . . . . 1.10 Odvozená pravidla . . . . . . . 1.11 Předpoklady . . . . . . . . . . 1.12 Pravidla vs. sekventy . . . . . .
. . . . . . . . . . . .
1 1 2 5 7 8 9 11 13 14 15 16 18
. . . . .
21 21 23 26 28 29
. . . . . .
33 33 33 37 41 45 50
4 Kvantifikátory 4.1 Množiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Relace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53 53 54
2 Logické spojky 2.1 Disjunkce . . . . . 2.2 Negace . . . . . . . 2.3 Implikace . . . . . 2.4 Ekvivalence . . . . 2.5 Logické konstanty .
. . . . .
3 Syntaxe a sémantika 3.1 Formule . . . . . . . 3.2 Syntaxe formulí . . . 3.3 Sémantika formulí . 3.4 Dedukční systémy . 3.5 Tabulková metoda . 3.6 Ekvivalentní úpravy
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
iii
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . . . . . . . .
. . . . .
. . . . . .
iv 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11
Funkce . . . . . . . . . . . . . . . . . . . . Struktury . . . . . . . . . . . . . . . . . . Predikátové, funkční a konstantní symboly Termy . . . . . . . . . . . . . . . . . . . . Atomické formule . . . . . . . . . . . . . . Univerzální kvantifikátor . . . . . . . . . . Existenční kvantifikátor . . . . . . . . . . Rovnost . . . . . . . . . . . . . . . . . . . Dedukční systém pro predikátovou logiku
. . . . . . . . .
55 56 59 60 63 65 68 70 73
. . . . . . . .
75 75 76 78 80 83 85 85 86
6 Výroková logika 6.1 Syntaxe formulí výrokové logiky . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Sémantika formulí výrokové logiky . . . . . . . . . . . . . . . . . . . . . . . .
89 89 90
7 Predikátová logika prvního řádu 7.1 Syntaxe formulí predikátové logiky prvního řádu . . . . . . . . . . . . . . . . 7.2 Sémantika formulí predikátové logiky prvního řádu . . . . . . . . . . . . . . .
93 93 95
A Řecká abeceda
97
5 Naivní teorie množin 5.1 Množiny . . . . . . . . . . . . . 5.1.1 Predikát náležení . . . . 5.1.2 Schéma axiomu vydělení 5.1.3 Operace na množinách . 5.1.4 Uspořádané n-tice . . . 5.2 Relace . . . . . . . . . . . . . . 5.2.1 Relace typu ekvivalence 5.3 Funkce . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
Kapitola 1
Matematické důkazy 1.1
Čtení odborných textů
Pro nezkušeného čtenáře může být čtení matematického textu a zejména porozumění tomuto textu poněkud nesnadné. Toto se týká samozřejmě i jiných odborných textů, ale u textů, které obsahují hodně matematiky, se to projevuje zvláště výrazně. Matematický text bývá často dosti hutný a je zcela běžné, že jeho přečtení zabere čtenáři několikanásobek času, než kolik by mu zabralo přečtení stejného množství textu například beletrie nebo článků z novin. Obtížnost čtení může být dána tím, že problematika, která se v textu řeší, je složitá, vztahy, které jsou tam popisovány, jsou komplikované, atd. S takovýmto typem složitosti, která je dána tím, že samotná problematika je složitá, že řešené problémy jsou těžké apod., se asi obecně nedá nic dělat, a čtenář se s tím nějak musí vypořádat. My se zde zaměříme na některé potíže, se kterými může zápasit při čtení matematického textu nezkušený čtenář. Jedním z problémů, na který může narazit, je, že některá běžná slova, která se používají v běžné řeči v určitém významu, mohou být v odborném textu používána v nějakém poněkud jiném významu, který je často oproti významu v běžné řeči poněkud posunutý nebo úžeji a přesněji specifikovaný. Tento specifičtější význam bývá mnohdy dán konvencí. Příklady takového používání slov a slovních spojení, která mají matematice poněkud jiný nebo úžeji specifikovaný význam než v běžné řeči si ukážeme později. Dalším problémem, se kterým se musí čtenář vypořádat, je, že význam některých slov, slovních spojení nebo symbolů autor v rámci daného textu nějak definuje, a pak je používá v textu v tomto přesně daném významu, i když v přirozené řeči nebo v jiných textech tyto pojmy mohou označovat něco úplně jiného. Autor si také klidně může vymyslet nějaký úplně nový pojem nebo si zavést používání nějakého symbolu v nějakém novém smyslu, ve kterém se třeba ani daný symbol nikde jinde než v tom daném konkrétním textu nepoužívá. Při čtení odborného textu je tedy třeba se držet významu, který daným pojmům a symbolům přiřadil autor a toho, jak tyto pojmy definoval v rámci daného textu. Běžně používanou konvencí je, že pojmy, které autor definuje, tj. přiřazuje jim nějaký přesně daný konkrétní význam, bývají v textu zvýrazněny, většinou jiným typem písma, nejčastěji kurzivou. 1
2
1.2
Tvrzení, věty, důkazy
V matematice (ale zdaleka nejen v ní) můžeme formulovat nepřebernou řadu různých tvrzení. Tvrzením budeme rozumět libovolný výrok, u kterého má smysl mluvit o tom, zda je pravdivý nebo nepravdivý. Typické příklady takových výroků jsou například „x > 0ÿ, „Existuje nekonečně mnoho prvočísel.ÿ, „Algoritmus A řeší problém P .ÿ, apod. Obecně samozřejmě o nějakém takovém tvrzení, které stojí jen samo o sobě, vytrženo z kontextu, asi nelze říci, zda je pravdivé nebo ne. Pravdivost nebo nepravdivost tvrzení (nebo i to, zda se má vůbec smysl o této pravdivosti či nepravdivosti bavit) může záviset na celé řadě věcí, typicky zejména na předpokladech, ze kterých při posuzování této pravdivosti vycházíme, a na významech, které přiřadíme jednotlivým pojmům a symbolům, které se ve tvrzení vyskytují, tj., co přesně jednotlivá slova (nebo slovní spojení) a symboly znamenají, co označují. Předpokládejme teď na chvíli ideální případ, že máme nějaké (matematické) tvrzení, kde jsou přesně definované významy jednotlivých pojmů a symbolů a jsou přesně zformulovány nějaké předpoklady, za kterých by mělo něco platit. Předpokládejme také, že ve formulaci tohoto tvrzení nejsou žádné nejasnosti, ani nejednoznačnosti v tom, co přesně toto tvrzení říká. Tvrzení zkrátka říká něco o tom, že za daných předpokladů platí to a to. V tom případě může mít smysl začít se bavit o tom, zda tento závěr z daných předpokladů skutečně plyne nebo ne. Je samozřejmě možné, že je hned vidět (že je „očividnéÿ), zda tvrzení platí nebo neplatí, ve většině případů tomu tak ale není. Jaké jsou možnosti, jak může jeden člověk přesvědčit druhého člověka o tom, že nějaké tvrzení platí nebo naopak neplatí, resp. se sám ujistit s co největší jistotou o platnosti či neplatnosti daného tvrzení? Tvrzení může být formulováno nějak obecně, například „pro každé přirozené číslo n, pro které platí A platí i Bÿ, kde A a B budou nějaká konkrétní tvrzení o čísle n. Pokud se podaří najít nějaké alespoň jedno přirozené číslo, pro které platí tvrzení A, ale neplatí B, máme protipříklad, který ukazuje dané tvrzení pro všechna přirozená čísla neplatí. Obecně, když máme jakékoliv tvrzení, které říká, že pokud jsou splněny předpoklady A1 , A2 , . . . , An , tak musí platit závěr B, a podaří se najít nějaký příklad toho, kdy všechny předpoklady A1 , A2 , . . . , An platí a závěr B neplatí, tak je jasné, že závěr B z předpokladů A1 , A2 , . . . , An nevyplývá. Co když ale závěr B z předpokladů A1 , A2 , . . . , An vyplývá v tom smyslu, že vždy, když jsou splněny předpoklady A1 , A2 , . . . , An , tak platí i B (a žádný protipříklad tedy neexistuje)? Přístup, který se dá použít, je rozdělit argumentaci, proč při platnosti daných předpokladů musí platit i B, na řadu menších kroků, na řadu tvrzení, která také musí platit, pokud jsou příslušné předpoklady splněny. Každé tvrzení v této řadě by mělo „očividněÿ vyplývat z předpokladů a z tvrzení před ním. To jest, u každého tvrzení v této řadě by mělo být zjevné, že pokud platí všechny předpoklady a všechna tvrzení před ním, tak musí platit i toto tvrzení. Posledním tvrzením v řadě bude pak tvrzení B. Takovéto posloupnosti tvrzení se říká důkaz. Důkaz je tedy určitým druhem vysvětlení, proč nějaké tvrzení B musí za daných předpokladů platit. Řekněme, že máme nějaký důkaz, který dokazuje, že tvrzení B vyplývá z daných předpokladů. Pokud má někdo pochybnosti o správnosti vyvozeného závěru B (například se mu zdá, že vyvozený závěr odporuje zdravému rozumu), může začít hledat, kde je v důkaze chyba. Tím,
1.2
Tvrzení, věty, důkazy
3
že je důkaz rozdělen na mnoho menších kroků, mělo by být možné najít konkrétní místo, konkrétní nekorektní krok, ve kterém je v dané posloupnosti tvrzení uvedeno nějaké tvrzení, které z předpokladů a předchozích tvrzení nevyplývá. Jednotlivé kroky důkazu by tedy měly být co nejjednodušší, aby u žádného jednotlivého kroku nebyly pochybnosti o jeho korektnosti. Pokud u nějakého kroku přece jen o jeho korektnosti pochybnosti jsou, je možné zkusit rozdělit tento krok na ještě menší kroky, ty případně na ještě menší, atd. Tvrzení, které bylo dokázáno, to znamená, pro které byl nalezen důkaz, se stává větou neboli teorémem (angl. theorem). Takovou větu je pak možné používat při důkazech dalších tvrzení. V rámci důkazů dalších tvrzení není třeba tuto větu vždy znovu dokazovat, protože je možné se v případě potřeba odvolat na její již vytvořený důkaz. V tomto smyslu se tedy dříve dokázané věty používají v důkazech dalších tvrzení v podstatě jako další předpoklady. Pro ilustraci si uveďme typický příklad matematické věty spolu s jejím důkazem. Je to věta, √ ze které plyne, že 2 není racionální číslo, tj. nedá se vyjádřit jako zlomek ab , kde a a b jsou celá čísla (a kde b 6= 0). Věta 1.1 Rovnice x2 = 2 nemá v oboru racionálních čísel řešení (tj. neexistuje žádné racionální číslo x, které by bylo řešením této rovnice). Důkaz. Předpokládejme, že existuje nějaké racionální číslo x, které je řešením rovnice x2 = 2. Toto číslo x se dá vyjádřit zlomkem ab , kde a a b jsou celá čísla a kde b 6= 0. Navíc můžeme předpokládat, že čísla a a b jsou nesoudělná, tj. že jejich největší společný dělitel je roven jedné (pokud by jejich největší společný dělitel byl větší než jedna, mohli bychom a i b tímto dělitelem vydělit a zlomek tak zkrátit). Musí tedy platit a 2 = 2, b z čehož lze jednoduchými aritmetickými úpravami odvodit, že a2 = 2b2 . Číslo a2 je tedy sudé, z čehož plyne, že i číslo a je sudé (pokud by a bylo liché, tak i a2 je liché). Číslo a se tedy dá vyjádřit jako a = 2k, kde k je nějaké celé číslo. Dosazením za a do rovnice a2 = 2b2 dostáváme (2k)2 = 2b2 , z čehož plyne 4k2 = 2b2 , ze kterého zase plyne 2k2 = b2 . Ze vztahu 2k2 = b2 vyplývá, že b je sudé (podobně jako v předchozím případě, pokud by b bylo liché, pak by i b2 bylo liché). Číslo b se tedy dá vyjádřit jako b = 2ℓ, kde ℓ je nějaké celé číslo. Právě jsme ukázali, že a i b jsou dělitelná číslem 2, to je ale ve sporu s předpokladem, že čísla a a b jsou nesoudělná. Pokud by byly nějaké pochybnosti o některém z kroků v předchozím důkaze, například o tom, zda z toho, že a je liché plyne, že a2 je liché, můžeme zkusit napsat podrobnější důkaz tohoto dílčího tvrzení. Pochybnosti a nejasnosti se nemusí týkat je jednotlivých kroků důkazu, nýbrž i pojmů a symbolů, které se v důkaze objevují. Pokud by například nebylo jasné, co přesně znamenají slova „sudýÿ a „lichýÿ, můžeme je zkusit nějak přesněji definovat pomocí nějakých jednodušších pojmů. Můžeme je například definovat tak, že číslo a je sudé, jestliže existuje nějaké celé číslo k takové, že a = 2k, a že číslo a je liché, jestliže existuje nějaké celé číslo k takové, že a = 2k + 1. S využitím výše uvedené definice toho, kdy je číslo liché, můžeme pak dokázat tvrzení, že pokud a je liché, pak a2 je liché.
4 Lemma 1.2 Pro libovolné celé číslo a platí, že pokud je a liché, tak i a2 je liché. Důkaz. Pokud je a liché, tak existuje nějaké celé číslo k takové, že a = 2k + 1. Platí tedy a2 = (2k + 1)2 = 4k2 + 4k + 1 = 2(2k2 + 2k) + 1. Pokud tedy položíme ℓ = 2k2 + 2k, vidíme, že a2 = 2ℓ + 1, a že tedy a2 je liché. Pokud by byly nějaké pochybnosti třeba o tom, zda (2k + 1)2 = 4k2 + 4k + 1, mohli bychom začít dokazovat, že pro libovolná dvě čísla x a y platí (x+y)2 = x2 +2xy+y 2 , že (xy)2 = x2 y 2 , a tak dále, přičemž bychom dokazovali stále jednodušší a jednodušší tvrzení. Pro důkazy těchto jednodušších tvrzení bychom asi také museli stále více a více zpřesňovat jednotlivé pojmy, například nějak přesněji definovat jednotlivé aritmetické operace. Takové rozkládání důkazu na stále menší a menší kroky můžeme zastavit poté, co se nám budou zdát jednotlivé kroky dostatečně očividné a jednoduché. Co se týká běžného způsobu zápisu důkazů v matematických textech, většinou se používá nějaká varianta zápisu, který byl použit ve výše uvedených příkladech důkazů, tj. nejprve je uvedeno dokazované tvrzení a za ním následuje důkaz. Při tomto způsobu zápisu je vždy dokazované tvrzení uvedeno samostatně, odděleně od ostatního textu, aby bylo pro čtenáře dobře patrné, jaké tvrzení se dokazuje. Vlastní text důkazu je pak také oddělen od ostatního textu — začátek důkazu je vyznačen slovem Důkaz a konec čtverečkem (). Používání čtverečku pro označení konce důkazu je často používanou konvencí, rozhodně však není pravidlem. Zejména ve starších textech se pro označení konců důkazů často používá zkratka Q.E.D., z latinského quod erat demonstrandum (česky „což mělo být dokázánoÿ), a někteří autoři neoznačují konce důkazů vůbec. Pokud je důkaz nějaké věty komplikovaný, bývá typicky rozložen do důkazů několika samostatných vět, kde tyto věty reprezentují důležité kroky celkového důkazu. Typický text také může obsahovat důkazy více různých vět než jedné. Aby se na jednotlivé věty dalo snadněji odkazovat bývají tyto věty číslovány, a aby se odlišila důležitost jednotlivých vět v textu, bývají tyto věty nazývány různými jmény jako jsou věta, lemma, tvrzení, a podobně, jejichž význam je následující: Věta (angl. Theorem) — důležité hlavní tvrzení, které se v daném textu dokazuje. Pokud autor označí větu slovem Věta, dává tím čtenáři najevo, že ji považuje za důležitou samu o sobě, že to není jen nějaké pomocné tvrzení použité v nějakém kroku důkazu. Lemma (angl. Lemma) — pomocné tvrzení použité jako dílčí krok v důkaze nějaké věty. Lemma může (ale nemusí) být značně složité, s netriviálním důkazem. Někdy může být v důkazu lemmatu obsaženo jádro důkazu celé věty, která se pomocí tohoto lemmatu odvodí. Tvrzení (angl. Proposition) — obecně nějaké pomocné tvrzení, často s jednoduchým důkazem, použité jako krok v důkaze nějaké věty. Pozorování (angl. Observation) — pomocné tvrzení, použité jako krok v důkaze nějaké věty, které je natolik zřejmé nebo jehož důkaz je natolik jednoduchý, že není třeba tento důkaz uvádět. Pozorování se tedy prakticky vždy uvádí bez důkazu. Důsledek (angl. Corollary) — tvrzení, které plyne buď přímo nebo pomocí velmi jednoduchého důkazu z věty, která je uvedena bezprostředně před ním. Důsledek by tedy měl být uveden po nějaké větě nebo lemmatu, ne samostatně v textu.
1.3
Předpoklady, definice a axiomy
5
Určení, co by měla být věta, co lemma, co tvrzení, a podobně, je poněkud subjektivní. Je to prostředek, kterým autor může dát čtenáři najevo, jak důležitá jsou jednotlivá tvrzení a jakou roli hrají v rámci daného textu. Rozdělení na věty, lemmata, atd. se týká vždy daného konkretního textu a důležitost jednotlivých tvrzení se posuzuje relativně v rámci tohoto jednoho textu, ne ve vztahu k jiným textům. Co je v jednom textu věta, může být v jiném textu pozorování. Jak již bylo řečeno, aby se na jednotlivé věty, lemmata, atd. dalo v rámci textu odkazovat bývá zvykem je číslovat. Číslování může být jednoduché, tvořené jedním číslem (třeba Věta 8). Zejména v případě delších textů může být použitý způsob číslování komplikovanější, číslo věty může být například tvořeno číslem kapitoly a číslem daného tvrzení v rámci kapitoly (například Lemma 3.5). Při číslování tvrzení se používá jak způsob, kdy je použita jen jedna řada čísel, bez ohledu na typy jednotlivých tvrzení (následují za sebou například Lemma 1, Tvrzení 2, Tvrzení 3, Lemma 4 a Věta 5), tak způsob, kdy každý druh tvrzení (věta, lemma, . . . ) je číslován zvlášť (například Lemma 1, Tvrzení 1, Tvrzení 2, Lemma 2, Věta 1). Pokud se v textu odkazuje na nějaké tvrzení, u kterého je uvedeno jeho číslo, používá se v příslušném slově označujícím typ tvrzení vždy velké písmeno na začátku. Píše se tedy například „ jak bylo ukázáno v Lemmatu 5ÿ, ne „ lemmatu 5ÿ. Pokud naopak číslo uvedeno není, píší se slova věta, lemma, tvrzení, atd., s malým písmenem na začátku (pokud zrovna nejsou na začátku věty). Píše se tedy třeba „z následujícího lemmatu vyplývá, že . . . ÿ. Ohledně řazení jednotlivých tvrzení ještě uveďme, že tvrzení bývají většinou řazena tak, že v důkazech tvrzení se odkazuje na tvrzení uvedená v textu před tímto důkazem, a že důkaz každého tvrzení následuje bezprostředně po příslušném tvrzení. Někdy se může autor rozhodnout, že z hlediska plynulosti výkladu je například lepší uvést nejprve nějaké tvrzení (například nějaké lemma), pak ukázat, co se dá pomocí tohoto tvrzení dokázat, kdybychom věděli, že platí (například, jak se dá pomocí tohoto lemmatu dokázat nějaká věta), a až poté uvést důkaz původního tvrzení. Pokud se autor rozhodne prezentovat kroky důkazu v textu v jiném pořadí, než jak jdou logicky za sebou, měl by na to čtenáře v textu upozornit.
1.3
Předpoklady, definice a axiomy
V typických důkazech se většinou pracuje s velkým množstvím předpokladů. Některé z těchto předpokladů mohou být uvedeny explicitně, tj. mohou být přímo v textu napsány, většinou je však většina předpokladů implicitních (nevyslovených), tj. v textu není nikde přímo napsáno, že se daná konkrétní věc předpokládá, ale v krocích důkazu se daný předpoklad používá. Například ve většině matematických textů se implicitně předpokládá, že platí různé základní vlastnosti čísel a operací na číslech, že platí různá jednoduchá tvrzení o množinách a podobně. Co konkrétně se implicitně předpokládá, závisí samozřejmě na charakteru daného textu. Každý takový implicitní předpoklad by však mělo být možné v případě potřeby explicitně formulovat. Specifickým druhem „předpokladůÿ jsou definice. Definice slouží k zavádění nových pojmů, které budou v textu následně používány. Důležité je, že nový pojem musí být definován pomocí pojmů, které již byly zavedeny předtím (ať už explicitně nebo implicitně). Definice tak zavádí stručné pojmenování (buď jedním slovem, slovním spojením nebo symbolem) pro něco, co mohlo být popsáno pomocí těchto dříve zavedených pojmů. Pokud se v nějakém
6 tvrzení vyskytne tento nově definovaný pojem, v principu by mělo být možné ho nahradit pomocí pojmů, pomocí kterých byl tento pojem definován, aniž by se tím změnil význam tvrzení. Pokud se jedná o nějaký zvlášť důležitý pojem, bývá někdy definice tohoto pojmu v textu zvýrazněna a očíslována podobně jako jsou zvýrazněny věty, lemmata, atd. Například: Definice 1.3 Přirozené číslo n je prvočíslo, jestliže je větší než 1 a je beze zbytku dělitelné pouze čísly 1 a n. Většina definic takto zvýrazněna nebývá. Příslušné definice jsou pak různě roztroušeny v odstavcích obyčejného textu. Jak již bylo uvedeno, definovaný pojem vždy představuje určitou „zkratkuÿ pro něco, co může být popsáno i bez tohoto pojmu, s tím, že zápis by byl případně o něco delší a méně srozumitelný. Například místo tvrzení „existuje nekonečně mnoho prvočíselÿ bychom mohli říct „existuje nekonečně mnoho přirozených čísel větších než 1 a dělitelných pouze číslem 1 a sebou samýmÿ, a znamenalo by to v podstatě to samé. Ještě je dobré poznamenat, že jeden a tentýž pojem může mít několik alternativních definic. V rámci jednoho textu by měl mít pojem vždy jen jednu definici (nebo by měl autor čtenáře upozornit na to, že uvádí více alternativních definic). V různých textech ale mohou být uvedeny různé definice, které ale principu definují totéž. Řekněme, že máme nějaké dvě definice A a B nějakého pojmu p. Že jde o alternativní definice se pozná podle toho, že když vezmeme A jako definici pojmu p, tak je možné dokázat B jako větu, a když naopak vezmeme B jako definici pojmu p, tak je zase možné dokázat A jako větu. Například pojem prvočísla se dá alternativně definovat tak, že přirozené číslo n je prvočíslo, jestliže má právě dva dělitele. Poznamenejme, že pojmem „alternativní definiceÿ, tak jak byl výše popsán, nezahrnuje případ, kdy v různých textech je něco nazýváno stejným názvem, přičemž jsou ale definice tohoto pojmu v obou textech různé a označují něco jiného. V takovém případě jde prostě o různé definice a různé pojmy, i kdyby mezi nimi byly rozdíly jen v některých detailech. Jak již bylo řečeno, některé pojmy je možné definovat pomocí jednodušších pojmů, ty je možné definovat pomocí ještě jednodušších pojmů, ty pomocí ještě jednodušších, atd. Takto však není možné postupovat donekonečna a některé pojmy je třeba brát jako základní pojmy. Ostatní pojmy jsou pak definovány pomocí těchto základních pojmů (a dříve definovaných pojmů). Tyto základní pojmy tedy nejsou nijak definovány. Aby vůbec bylo možné začít dokazovat nějaká tvrzení o objektech popsanými těmito základními pojmy, je potřeba o těchto objektech alespoň něco předpokládat. Základní pojmy tedy bývají spojeny s nějakými základními předpoklady, což jsou nějaká tvrzení o objektech, popsáných těmito základními pojmy, která se nedokazují, ale o kterých se prostě předpokládá, že platí. Takovýmto základním nedokazovaným předpokladům se říká axiomy. Pokud si tedy vezmeme nějaké základní pojmy a nějaké axiomy týkající se těchto pojmů, je možné pomocí nich začít dokazovat další tvrzení, definovat odvozené pojmy a dokazovat tvrzení o těchto odvozených pojmech. Je asi jasné, že obecně je lepší, když jsou základní pojmy a axiomy co nejjednodušší, a když jich je co nejméně. Pokud se nějaký pojem dá definovat pomocí ostatních základních pojmů,
1.4
Symboly
7
nemá smysl ho považovat za základní. Podobně, pokud se nějaké tvrzení dá dokázat z ostatních axiomů, nemá smysl ho považovat za axiom. Axiomatický přístup, kdy jsou na nejprve uvedeny základní pojmy a explicitně formulovány axiomy a poté jsou zaváděny další pojmy a dokazovány další tvrzení pomocí těchto základních pojmů a axiomů, má dlouhou tradici sahající až do antického Řecka. Velký vliv měla v tomto ohledu kniha Základy řeckého matematika a geometra Euklida (žil asi 325 př.n.l. – asi 260 př.n.l), ve které shrnul geometrické a matematické znalosti své doby. Tato kniha nebyla důležitá jen v tom, jaké konkrétními znalosti v ní byly obsaženy (např. Pythagorova věta nebo to, že existuje nekonečně mnoho prvočísel), ale z určitého úhlu pohledu byla ještě důležitější v tom, jakým způsobem byly tyto znalosti organizovány a prezentovány a jak byla jednotlivá tvrzení systematicky dokazována. Na začátku jsou zavedeny základní pojmy, jako například bod, přímka, plocha, a formulovány axiomy, jako například axiom, že každými dvěma (různými) body prochází právě jedna přímka. Poté jsou pak další pojmy a tvrzení systematicky odvozovány a dokazovány pomocí těchto základních pojmů a axiomů, přičemž při zavádění nových pojmů a dokazování dalších tvrzení se využívají dříve zavedené pojmy a dříve dokázaná tvrzení. Právě tímto axiomatickým přístupem a systematickým dokazováním jednotlivých tvrzení se Eukleidovy Základy staly po mnoho století vzorem toho, jak organizovat a prezentovat znalosti, a to nejen pro matematiku, ale i pro mnoho dalších věd. Axiomatický přístup se uplatňuje v matematice všeobecně. Dá se říci, že naprostá většina současné matematiky je vybudována na několika málo základních pojmech a axiomech — konkrétně na pojmu množiny a několika málo základních axiomech teorie množin. Vše ostatní je z nich odvozeno. Matematika není jen jakýsi soubor faktů o tom, co platí, a jak to případně spočítat, nýbrž se jedná o systematicky budovanou logickou stavbu, kde jsou spolu jednotlivá tvrzení logicky provázána, a kde důkazy jednotlivých tvrzení staví na dříve dokázaných tvrzeních.
1.4
Symboly
V matematice se pracuje s objekty různých typů, například s čísly, funkcemi, množinami, relacemi, posloupnostmi, s různými objekty specifickými pro danou oblast, například v geometrii s body, přímkami, kružnicemi, v teorii grafů s grafy, jejich vrcholy a hranami, apod. Objekty, se kterými se pracuje, je třeba nějak pojmenovat a k tomu se používají různé symboly. V textu se pak mluví například o prvku x, o funkci f a podobně. Pojmenování objektů umožňuje se na daný objekt snadněji odkázat. Protože je v matematických textech často potřeba pojmenovat hodně různých objektů a 26 písmen latinské abecedy by na to nemuselo stačit, používá se několik různých způsobů, jak rozšířit množství symbolů, které jsou k dispozici. Nejprve je třeba zdůraznit, že v matematických textech se prakticky vždy při pojmenovávání různých objektů rozlišují velká a malá písmena, takže například symboly M a m mohou označovat (a většinou označují) nějaké dva úplně rozdílné objekty. Při pojmenování se rozlišuje nejen to, zda je dané písmeno velké nebo malé, ale i použitý font. Například každý z následujících šesti symbolů může v rámci jednoho textu označovat něco jiného: B
B
B
B
B
B
8 Dalším prostředkem, jak rozšířit množství dostupných symbolů, je používání dolních a horních indexů, například s7 , s7 a s77 . Dále se používá značení, kdy se příslušný symbol píše s čárkou (např. Q′ ), se dvěma čárkami (např. Q′′ ), atd. K písmenům je možné kromě čárek přidávat i celou řadu dalších značek. Například symboly cˆ
c¯
˚ c
~c
c˙
c˜
opět mohou označovat každý něco jiného. Všechny výše popsané možnosti (fonty, indexy, ~ 3. značky) je samozřejmě možné kombinovat a psát tak třeba H Kromě písmen latinské abecedy se v matematických textech s oblibou používají také písmena řecké abecedy, například α, δ, ϕ, Γ, ∆, apod. Přehled všech písmen řecké abecedy včetně jejich českých a anglických názvů je uveden v Apendixu A. Výjimečně se používají i písmena hebrejské abecedy, například ℵ (alef). Občas se hodí použít místo jednoho znaku posloupnost více písmen, jako například succ, Nodes nebo mark. Na danou posloupnost písmen se pak díváme jako na jediný symbol. I když může být název tvořený více písmeny více popisný než název tvořený jen jedním znakem, obecně se v matematických textech dává přednost jednoznakovým názvům. Kromě písmen a číslic se v matematických textech používá nepřeberné množství různých dalších symbolů. Některé z nich mají nějaký víceméně ustálený význam (například =, ∈ nebo +), pro většinu symbolů ale platí, že jejich použití je specifické pro daný konkrétní text (a v rámci toho textu by pak mělo být popsáno, co daný symbol označuje) nebo alespoň pro danou oblast matematiky. Pro ilustraci uveďme několik málo příkladů symbolů, které se mohou objevit v matematických textech: ⊐ ≪ ∼ ⊲⊳ ⊙ ⊲ ⊎
Podobně jako u písmen, i u ostatních symbolů hrají roli jakékoli rozdíly v jejich podobě. Například se v rámci jednoho textu mohou vyskytnout následující druhy šipek →
7→
⇒
֒→
։
a každá z těchto šipek bude označovat něco jiného. Rovněž použité závorky mohou mít různý význam a různé druhy závorek mohou označovat velmi rozdílné věci: (x)
[x]
{x}
hxi
|x|
kxk
⌊x⌋
⌈x⌉
[[x]]
Přestože je k dispozici velké množství různých symbolů, není nijak neobvyklé, že se jeden symbol v rámci jednoho textu používá současně v několika významech a několik různých objektů je pojmenováno stejně, přičemž konkrétní význam tohoto symbolu závisí na kontextu, ve kterém se nachází. V takovém případě mluvíme o tom, že je daný symbol přetížen. Typickým příkladem takového symbolu, který bývá často přetěžován, je symbol +, který může v rámci jednoho textu označovat například sčítání reálných čísel a současně třeba sčítání matic.
1.5
Logika
Při popisu toho, co jsou to matematické důkazy, v předchozích sekcích jsme se bavili o tvrzeních, větách, předpokladech, definicích a dalších věcech týkajících se důkazů, ale nebavili jsme
1.6
Konjunkce
9
se příliš o jednotlivých myšlenkových krocích, které se v důkazech vyskytují. Například jsme se nebavili příliš podrobně o tom, co přesně to znamená, že v důkaze nějaké tvrzení v nějakém kroku vyplývá z předchozích tvrzení a předpokladů, že daný krok důkazu je korektní, jaké kroky je možné v důkazech používat a které ne, apod. Těmito a dalšími souvisejícími otázkami se zabývá logika. Dá se říci, že logika je obor, který se zabývá vyvozováním, vyplýváním a argumentací. Logika zkoumá různá tvrzení, ale nesoustředí se na to, zda tato tvrzení „ve skutečnostiÿ platí nebo ne, ale spíše na to, zda je možné oprávně z platnosti nějakých tvrzení vyvodit platnost nějakých jiných tvrzení. Logika je obor velmi široký a v tématech, která se v rámci logiky zkoumají, se překrývá v různých ohledech s obory jako jsou filozofie, lingvistika, matematika a informatika. Logika má dlouhou tradici sahající až do antického Řecka a dalších dávných civilizací. Historicky byla logika pojímána jako součást filozofie, zabývající se správnou argumentací. Antičtí filozofové, jako například Aristotelés (384 př.n.l. – 322 př.n.l.), v jejím rámci zkoumali například tak zvané sylogismy, což byla určitá schémata argumentace. Příkladem takového sylogismu je třeba: Všichni lidé jsou smrtelní. Aristotelés je člověk. Aristotelés je smrtelný. První dva řádky představují premisy a třetí řádek pod čarou závěr, který z nich plyne. Důležité je, že v tomto schématu nejsou podstatná konkrétní slova jako člověk/lidé, Aristotelés nebo smrtelný, ani objekty nebo vlastnosti, ke kterým tato slova odkazují. Kdybychom tato slova nahradili za nějaká jiná, také bychom dostali logicky správný úsudek, kde by závěr vyplýval z premis. Sylogismus tedy představuje určitou formu argumentace, která je správná bez ohledu na to, jakými konkrétními pojmy tuto formu naplníme. Jak již bylo uvedeno, historicky byla logika považována za součást filozofie, a nebyla nijak úzce propojena s matematikou. Zhruba od druhé poloviny 19. století se logika (nebo přinejmenším její určitá část) začala stále více blížit matematice a to ve dvou ohledech. Jednak se začaly v logice stále více prosazovat matematický přístup k řešení problémů, používání matematické notace či formulace různých pojmů a konceptů v matematických pojmech. V tomto ohledu tedy logika začala využívat matematiky jako prostředku pro zkoumání logických pojmů, začala matematiku používat jako nástroj. Druhý posun spočíval v tom, že se logika začala stále více soustředit nikoliv na argumentaci obecně (např. ve filozofických spisech nebo třeba u soudu), ale na argumentaci v matematice. Matematika se tedy stala přímo předmětem (objektem) zkoumání, ne jen prostředkem tohoto zkoumání. Oblast logiky, která se zabývá matematikou (matematickými důkazy, vyvozováním v matematice, apod.), se nazývá matematická logika. My se v tomto textu budeme zabývat z logiky prakticky výhradně matematickou logikou.
1.6
Konjunkce
Jednodušší tvrzení je možné spolu kombinovat a vytvářet z nich složitější tvrzení pomocí logických spojek jako jsou například „aÿ (konjunkce), „neboÿ (disjunkce), „ jestliže . . . , pak . . . ÿ (implikace) a dalších.
10 V této a následující kapitole si postupně popíšeme základní logické spojky, zejména s důrazem na způsob, jakým jsou tyto spojky používány v matematických textech a důkazech, a jak se toto použití může lišit od významu v běžné řeči. Asi nejméně problematickou spojkou je spojka „aÿ, která se odborně nazývá konjunkce. Jestliže vezmeme nějaké dvě libovolné tvrzení A a B a utvoříme z nich složené tvrzení „A a Bÿ, je toto tvrzení pravdivé jedině v případě, že jsou pravdivé obě tvrzení — jak tvrzení A, tak tvrzení B. Jestliže je tedy alespoň jedeno z tvrzení A a B nepravdivé, je nepravdivé i tvrzení „A a Bÿ. Způsob, jakým je spojka „aÿ používána v matematice, se tedy nijak zásadně neliší od použití v běžné řeči. V symbolickém zápisu je konjunkce většinou reprezentována symbolem ∧. Tvrzení „A a Bÿ zapsané s použitím tohoto symbolu vypadá takto: A∧B Kromě symbolu ∧ se též někdy používá ve stejném významu i symbol &, takže tvrzení „A a Bÿ je pak zapsáno jako A&B. Anglicky se konjunkce také někdy označuje slovem and. Pravdivost nebo nepravdivost tvrzení můžeme reprezentovat pomocí pravdivostních hodnot. Například místo toho, abychom říkali, že dané tvrzení je pravdivé nebo nepravdivé, můžeme to formulovat tak, že pravdivostní hodnota daného tvrzení je „pravdaÿ nebo „nepravdaÿ, resp. True nebo False, Ano nebo Ne, apod. Pokud použijeme obvyklou konvenci a budeme pravdivostní hodnoty reprezentovat pomocí symbolů 0 a 1 v obvyklém významu, kdy 0 reprezentuje nepravdu (False, Ne) a 1 reprezentuje pravdu (True, Ano), můžeme význam spojky ∧ popsat následující tabulkou, ve které je uvedeno, jakých pravdivostních hodnot nabývá tvrzení A ∧ B při všech možných kombinacích pravdivostních hodnot tvrzení A a B: A 0 0 1 1
B 0 1 0 1
A∧B 0 0 0 1
Z prvního řádku této tabulky (resp. z druhého, pokud budeme počítat i řádek s nadpisy jednotlivých sloupců) je například vidět, že pokud výrok A má pravdivostní hodnotu 0 a výrok B také hodnotu 0, tak i tvrzení A ∧ B má pravdivostní hodnotu 0, tedy jinak řečeno, pokud jsou výroky A a B nepravdivé, je i výrok A ∧ B nepravdivý. Podobným způsobem můžeme interpretovat i další zbylé řádky tabulky. Zkusme se na chvíli zastavit u toho, jakým způsobem je možné postupovat při důkazu nějakého tvrzení, které je tvaru A ∧ B, případně, jak v důkazu nějakého dalšího tvrzení využít toho, že už víme, že tvrzení A ∧ B platí (například proto, že už jsme ho dříve dokázali, nebo třeba proto, že je součástí předpokladů, ze kterých vycházíme). V případě důkazu tvrzení tvaru A ∧ B je situace poměrně jednoduchá. Vzhledem k tomu, že tvrzení A ∧ B je pravdivé jedině v případě, že tvrzení A a B jsou obě pravdivá, přímo se nabízí myšlenka rozdělit důkaz toho, že platí tvrzení A∧ B, na dvě části — na důkaz platnosti
1.7
Zápis pravidel
11
tvrzení A a důkaz platnosti tvrzení B, a poté prohlásit, že na základě toho, že jsme dokázali tvrzení A i tvrzení B, jsme dokázali také tvrzení A ∧ B. Nikde není samozřejmě řečeno, že toto je jediná cesta, jak při důkazu nějakého tvrzení tvaru A ∧ B postupovat, je to ale asi nejpřímočařejší cesta. Pokud naopak už víme, že tvrzení A ∧ B za daných předpokladů platí (třeba proto, že je samo součástí těchto předpokladů, nebo proto, že již bylo z daných předpokladů dokázáno), můžeme z platnosti tohoto tvrzení vyvodit, že za stejných předpokladů musí platit i každé z obou tvrzení A a B samo o sobě, protože kdyby některé z nich neplatilo, neplatilo by ani A ∧ B. Pokud tedy máme nějaký důkaz tvrzení A ∧ B, tak pomocí něj okamžitě dostáváme i důkazy tvrzení A a B.
1.7
Zápis pravidel
Výše popsaný způsob argumentace, kdy z dokázaných tvrzení A a B odvodíme A ∧ B, je možné znázornit následujícím schématem: A
B A∧B
Toto schéma popisuje pravidlo, které říká, že z tvrzení A a z B je možné odvodit tvrzení A ∧ B. Obecně takováto pravidla mají podobu C1
C2 D
···
Cn
,
kde C1 , C2 , . . . , Cn jsou nějaká tvrzení, které představují premisy daného pravidla, a D je tvrzení, které představuje závěr, který je možné z těchto premis odvodit. Na každé takové pravidlo je možné se dívat dvěma různými způsoby. Jeden možný pohled je takový, že pravidlo popisuje krok v důkazu, kdy z dříve dokázaných tvrzení C1 , C2 , . . . , Cn můžeme odvodit tvrzení D. Alternativně se na něj můžeme dívat také tak, že pokud pokud chceme dokázat tvrzení D, tak jednou možností, jak to udělat, je dokázat tvrzení C1 , C2 , . . . , Cn a výsledný důkaz poskládat z důkazů těchto tvrzení a kroku popsaného daným pravidlem. První pohled se uplatní asi hlavně tehdy, když kontrolujeme nějaký již vytvořený důkaz, a druhý naopak v případě, kdy důkaz zatím nemáme a snažíme se ho vymyslet. Při důkazech se typicky postupuje od nějakých předem daných předpokladů ke tvrzením, která chceme z těchto předpokladů dokázat. Často se v důkazech používá přístup, kdy se v některých krocích důkazu přidávají nějaké další dodatečné předpoklady, které se pak v dalších krocích zase odstraní. Typickými příklady takového postupu jsou třeba důkaz sporem nebo důkaz rozborem případů, o kterých pojednáme v dalším textu. Pro popis takovýchto způsobů dokazování se hodí u každého tvrzení udržovat informaci o tom, z jakých předpokladů bylo toto tvrzení dokázáno. Jednou z možností, jak takovouto informaci udržovat, je použít použít zápis A1 , A2 , . . . , An ⊢ B pro označení toho, že tvrzení B bylo dokázáno z předpokladů A1 , A2 , . . . An . Výrazu A1 , A2 , . . . , An ⊢ B
12 se říká sekvent a můžeme se na něj dívat tak, že se jedná o zápis určitého tvrzení o tvrzeních — tvrzení, že z předpokladů A1 , A2 , . . . , An se dá dokázat tvrzení B. Symbol ⊢ rozděluje sekvent na dvě části, na levou stranu a na pravou stranu. Levé straně se říká antecedent a pravé straně sukcedent. Pokud tedy máme tvrzení A1 , A2 , . . . , An ⊢ B, antecedent je tvořen tvrzeními A1 , A2 , . . . , An a sukcedent tvrzením B. V antecedentu může být libovolný konečný počet tvrzení (i 0, v tom případě daný sekvent říká, že tvrzení na pravé straně je dokazatelné z prázdné množiny předpokladů), zatímco v sukcedentu je vždy právě jedno tvrzení. Poznámka: Existují i varianty tzv. sekventového kalkulu, kde se pracuje i se sekventy s libovolným (konečným) počtem formulí v sukcedentu, my se zde ale takovými variantami zabývat nebudeme. Na tvrzení A1 , A2 , . . . , An v antecedentu se podle potřeby budeme dívat buď jako na sekvenci, kde tvrzení jsou zapsaná v určitém pořadí, nebo jako na množinu, kde na pořadí nezáleží. Ve většině případů na tomto rozdílu příliš nezáleží. Aby byl zápis sekventů poněkud stručnější, budeme používat pro označení konečných sekvencí tvrzení velká písmena řecké abecedy, jako Γ, ∆, a podobně. Tato písmena mohou zastupovat i prázdnou sekvenci. Pokud tedy například Γ zastupuje sekvenci A1 , A2 , A3 , což budeme značit zápisem Γ := A1 , A2 , A3 , pak zápis Γ, B1 , B2 ⊢ C je zkráceným zápisem sekventu A1 , A2 , A3 , B1 , B2 ⊢ C. Ve většině pravidel budou symboly Γ, ∆, atd. zastupovat nějakou libovolnou sekvenci tvrzení. Pokud tedy nebude uvedeno, jakou konkrétní sekvenci zastupují, je tím myšleno, že zastupují nějakou libovolnou sekvenci, u které v dané chvíli nezáleží na tom, z jakých konkrétních tvrzení se skládá. Pokud tedy použijeme sekventy, můžeme výše popsané pravidlo, které říká, že z A a B se dá odvodit A ∧ B, zapsat následujícím způsobem: Γ⊢A Γ⊢B Γ⊢A∧B Přesněji řečeno, toto pravidlo říká, že pokud se z nějaké množiny předpokladů Γ dá dokázat tvrzení A a zároveň se z těchto předpokladů dá dokázat i tvrzení B, tak se z těchto předpokladů dá dokázat i tvrzení A ∧ B. Pro popis práce s pravidly, jako je třeba výše uvedené pravidlo, se hodí si tato pravidla nějak pojmenovat. Konkrétně toto výše uvedené pravidlo se nazývá zavedení konjunkce a budeme ho označovat zkratkou ∧i (kde písmeno „iÿ pochází z anglického „introductionÿ).
Podobně můžeme zavést pravidla reprezentující to, že pokud se z nějakých předpokladů dá dokázat A ∧ B, pak lze z těchto předpokladů dokázat také samotné tvrzení A a samotné tvrzení B: Γ⊢A∧B Γ⊢A∧B Γ⊢A Γ⊢B Obě tato pravidla se nazývají eliminace konjunkce a budeme je označovat zkratkami ∧e1 a ∧e2 (kde písmeno „eÿ je z anglického „eliminationÿ). (Pozn.: Indexy 1 a 2 v názvech těchto pravidel nemají žádný hlubší význam a slouží pouze k odlišení obou pravidel.)
1.8
1.8
Formálně zapsané důkazy
13
Formálně zapsané důkazy
I s těmi několika málo pravidly, která jsme si zatím uvedli (∧i, ∧e1 a ∧e2 ), je možné vytvářet jednoduché důkazy s tím, že jediné, co je k tomu ještě potřeba, aby takový důkaz vůbec mohl nějak začít, je nějaké pravidlo, které nemá žádné premisy. Příkladem takového pravidla je následující jednoduché pravidlo, které budeme označovat zkratkou Assm (z anglického „assumptionÿ): Γ, A, ∆ ⊢ A Toto pravidlo říká, že pokud je tvrzení A přímo obsaženo v dané množině předpokladů (tj. je jedním z těchto předpokladů), pak je z daných předpokladů dokázáno. Jinými slovy, pokud o něčem předpokládáme, že to platí, pak to za tohoto předpokladu platí. Připomeňme ještě, že ve výše uvedeném zápise zastupují symboly Γ a ∆ nějaké dvě libovolné konečné sekvence tvrzení. Vodorovná čára odděluje odvozený sekvent od premis, a to, že nad touto vodorovnou čarou nic není, znamená, že dané pravidlo žádné premisy nemá. Vezměme si nyní dva předpoklady — A ∧ B a C ∧ D, a zkusme z těchto předpokladů dokázat tvrzení B ∧ C. Ještě než se pustíme do důkazu, uvedeme si příslušný sekvent, který říká, že B ∧ C se dá dokázat z předpokladů A ∧ B a C ∧ D: A ∧ B, C ∧ D ⊢ B ∧ C Slovně zapsaný důkaz by mohl vypadat třeba nějak takto: Předpokládáme, že platí A ∧ B. Z toho plyne, že platí B. Podobně z předpokladu C ∧ D plyne C. Protože platí B i C, tak platí i B ∧ C. Tento slovní důkaz je možné zapsat i poněkud schématičtěji a formálněji. Jednou z možností, jak to udělat, je použít následující způsob zápisu: 1. 2. 3. 4. 5.
A ∧ B, C ∧ D A ∧ B, C ∧ D A ∧ B, C ∧ D A ∧ B, C ∧ D A ∧ B, C ∧ D
⊢A∧B ⊢B ⊢C∧D ⊢C ⊢B∧C
(Assm) (∧e2 1) (Assm) (∧e1 3) (∧i 2,4)
V tomto zápise jednotlivé řádky důkazu obsahují sekventy, které byly během důkazu odvozeny. Například první řádek říká, že z předpokladů A ∧ B a B ∧ C bylo dokázáno tvrzení A ∧ B pomocí pravidla Assm, druhý řádek říká, že z předpokladů A ∧ B a B ∧ C bylo dokázáno tvrzení B aplikací pravidla ∧e2 na sekvent z prvního řádku, atd. Řádky důkazu jsou číslovány, ale tato čísla slouží pouze k tomu, abychom se mohli na jednotlivé řádky snadněji odkazovat. Na konci každého řádku je v závorkách uveden komentář, ve kterém je uvedeno, jaké pravidlo bylo při odvození daného řádku použito a jaká jsou čísla řádků se sekventy, které byly při aplikaci tohoto pravidla použity jako premisy. Například komentář (∧e1 3) na řádku 4 říká, že sekvent na řádku 4 byl odvozen aplikací pravidla ∧e1 na sekvent na řádku 3, který byl použit jako premisa. Konkrétní pořadí řádků není příliš důležité. Co je ale podstatné, je to, že pro každý jednotlivý řádek musí platit, že premisy použité při odvození sekventu na tomto řádku musí být na
14 řádcích s nižšími čísly než je číslo daného řádku. Zejména je nepřípustné, aby mezi jednotlivými řádky existovaly nějaké cyklické závislosti toho typu, že například ze řádku 1 se odvodí řádek 2, ze řádků 1 a 2 řádek 3 a ze řádku 3 zase řádek 1. Sekvent, který chceme dokázat, je většinou na posledním řádku, protože poté, co jsme ho odvodili, nemá smysl odvozovat další sekventy. Na druhou stranu, pokud bychom v rámci daného důkazu chtěli dokázat nejen ten jeden sekvent, ale více různých sekventů, tak tyto sekventy samozřejmě nebudou všechny na posledním řádku. Při zápisu důkazu si můžeme ušetřit práci s neustálým opisováním předpokladů tím, že napíšeme Γ := A ∧ B, C ∧ D, a důkaz pak bude vypadat následovně (pro ilustraci byly navíc prohozeny některé kroky, aby důkaz nebyl úplně stejný, a aby bylo vidět, že pořadí jednotlivých kroků není moc podstatné): 1. 2. 3. 4. 5.
Γ⊢ A∧B Γ⊢C ∧D Γ⊢C Γ⊢B Γ⊢B∧C
(Assm) (Assm) (∧e1 2) (∧e2 1) (∧i 4,3)
Výše uvedený způsob zápisu formálních důkazů není zdaleka jediný, který se používá, existuje řada dalších. Pro ilustraci si uvedeme alespoň jeden další způsob, a to reprezentaci ve formě stromu. Důkaz toho, že A ∧ B, C ∧ D ⊢ B ∧ C, ve formě stromu vypadá následovně (opět Γ := A ∧ B, C ∧ D): Γ⊢C ∧D Γ⊢A∧B Γ⊢B Γ⊢C Γ⊢ B∧C Vrcholy stromu jsou tvořeny sekventy, přičemž kořen stromu je dole a (bezprostřední) potomci každého vrcholu jsou uvedeni nad ním (nad vodorovnou čarou) a reprezentují premisy, ze kterých byl sekvent v daném vrcholu odvozen. Listy jsou sekventy, které je možno odvodit pomocí pravidel, která nemají žádné premisy. Oproti zápisu po řádcích je při znázornění ve formě stromu lépe vidět struktura důkazu. Na druhou stranu může mít strom reprezentující nějaký důkaz větší počet vrcholů než je počet řádků v zápise stejného důkazu po řádcích, protože se může stát, že některé části důkazu se ve stromě opakují (stejný podstrom se ve stromě objevuje na více místech), zatímco v zápisu po řádcích je příslušná část důkazu uvedena jen jednou. Cvičení 1.1: Ukažte příklad nějakého důkazu, jednou ve formě stromu a jednou ve formě posloupnosti řádků, kde strom má větší počet vrcholů než je počet řádků v příslušné posloupnosti.
1.9
Závorky
Ve tvrzení, které je složeno pomocí nějaké logické spojky z nějakých jednodušších tvrzení, mohou být i tato jednodušší tvrzení složena pomocí logických spojek z nějakých ještě jednodušších tvrzení, a ta zase složena z ještě jednodušších, a tak dále. V takovém případě je možné
1.10
Odvozená pravidla
15
(a vhodné) vyznačit strukturu jednotlivých tvrzení pomocí závorek, aby ze zápisu bylo jasné, jak jsou jednotlivá tvrzení poskládána. Zatím jsme si uvedli jen jednu logickou spojku, konjunkci (∧), takže si příklady ukážeme na ní. Stejné je to ale i u dalších spojek, které si později ukážeme. Pokud například máme tvrzení A∧B a tvrzení C, můžeme z nich vytvořit tvrzení (A∧B)∧C, které říká, že platí A ∧ B a zároveň platí C. Podobně můžeme z tvrzení A a z tvrzení B ∧ C vytvořit tvrzení A ∧ (B ∧ C). Přísně vzato jsou (A ∧ B) ∧ C a A ∧ (B ∧ C) dvě různá tvrzení. Na druhou stranu je asi čtenáři jasné, že obě tato tvrzení jsou pravdivá v případě, kdy jsou všechna tři tvrzení A, B i C pravdivá, a obě tvrzení jsou nepravdivá v případě, že alespoň jedno z tvrzení A, B, C je nepravdivé. V tomto smyslu (A ∧ B) ∧ C i A ∧ (B ∧ C) říkají jiným způsobem totéž, a když je pravdivé jedno z těchto tvrzení, tak je pravdivé i druhé, a naopak, když je jedno z nich nepravdivé, je nepravdivé i druhé, jsou tedy vždy obě současně pravdivá nebo obě současně nepravdivá a nikdy nenastane situace, že by jedno platilo a druhé ne. O takových tvrzeních se říká, že jsou ekvivalentní (resp. logicky ekvivalentní). Co přesně tato ekvivalence znamená, a jak je přesně definována, si popíšeme později. Vzhledem k tomu, že (A ∧ B) ∧ C a A ∧ (B ∧ C) jsou ekvivalentní tvrzení, mezi kterými není z hlediska jejich pravdivosti nebo nepravdivosti rozdíl, tak se v zápise podobných tvrzení závorky často vynechávají a místo nich se píše A ∧ B ∧ C, s tím, že si čtenář může doplnit závorky, kam chce nebo podle konvencí, které případně stanovil autor textu. Poznámka: Pokud chce například autor textu stanovit, že A∧B ∧C se má číst jako A∧(B ∧C), často to bývá formulováno tak, že se řekne, že ∧ je asociativní doprava. Podobně, když se řekne, že ∧ je asociativní doleva, je tím myšleno, že A∧B∧C se má číst jako (A∧B)∧C. Obecně není ustáleno, jestli je ∧ asociativní doprava nebo doleva, ale jak vyplývá z předchozího popisu, u spojky ∧ není mezi oběma možnostmi podstatný rozdíl. Pokud by bylo potřeba mezi nimi rozlišovat, je lepší závorky nevypouštět, nebo si případně autor může stanovit příslušnou konvenci explicitně.
1.10
Odvozená pravidla
Jak bylo uvedeno v předchozí části, tvrzení (A ∧ B) ∧ C a A ∧ (B ∧ C) jsou ekvivalentní, jsou vždy současně pravdivá nebo současně nepravdivá. Mohlo by se tedy hodit přidat k dříve zavedeným pravidlům další dvě nová pravidla Γ ⊢ (A ∧ B) ∧ C Γ ⊢ A ∧ (B ∧ C)
Γ ⊢ A ∧ (B ∧ C) Γ ⊢ (A ∧ B) ∧ C
kde například první pravidlo umožní z dokázaného tvrzení (A ∧ B) ∧ C odvodit A ∧ (B ∧ C), a druhé zase umožní provést opačnou záměnu. Korektnost obou těchto pravidel bychom mohli zdůvodnit podobně jako v předchozích případech, např. argumentací, že (A ∧ B) ∧ C platí jedině v případě, že platí všechna tři tvrzení A, B, C, a že pokud platí všechna tato tři tvrzení, tak platí i A ∧ (B ∧ C). Taková argumentace se opírá o význam jednotlivých tvrzení. Pokud už ale nějaká dříve zavedená pravidla bereme jako korektní, může být u nově zaváděných pravidel lepší nezdůvodňovat jejich korektnost odvoláváním se na význam jednotlivých
16 tvrzení, a místo toho zkusit odvodit tato pravidla pomocí dříve zavedených pravidel, tj. ukázat, jak pomocí dříve zavedených pravidel odvodit závěr daného pravidla, pokud bychom již měli dokázány jeho premisy. Například pravidlo Γ ⊢ (A ∧ B) ∧ C (∗) Γ ⊢ A ∧ (B ∧ C)
se pomocí dříve zavedených pravidel ∧i, ∧e1 a ∧e2 dá odvodit následovně: 1. 2. 3. 4. 5. 6. 7.
Γ ⊢ (A ∧ B) ∧ C Γ⊢ A∧B Γ⊢A Γ⊢B Γ⊢C Γ⊢B∧C Γ ⊢ A ∧ (B ∧ C)
(premisa) (∧e1 1) (∧e1 2) (∧e2 2) (∧e2 1) (∧i 4,5) (∧i 3,6)
Pokud by tedy v nějakém důkaze bylo v některém kroku použito pravidlo (∗), mohli bychom použití tohoto pravidla nahradit výše popsanou sekvencí kroků, ve kterých jsou použita pouze pravidla ∧i, ∧e1 a ∧e2 . Korektnost pravidla (∗) se tedy opírá pouze o korektnost pravidel ∧i, ∧e1 a ∧e2 . Všimněte si také, že posloupnost kroků v odvození pravidla (∗) do značné míry odpovídá slovnímu zdůvodnění korektnosti uvedenému výše, je pouze o něco detailnější a formálnější. Poznámka: Pojem korektnost je zde zatím používán v poněkud neformálním intuitivním smyslu, kdy za korektní jsou považována ta pravidla, u kterých je zaručeno, že to, co pomocí nich odvodíme, také za daných předpokladů vždy skutečně platí, tj. pomocí daného pravidla není možné odvodit nic, co by za daných předpokladů neplatilo. Později pojem korektnosti poněkud upřesníme, k tomu je ale nejprve potřeba definovat, jak mohou jednotlivá tvrzení vypadat (jaká je příslušná syntaxe), a jaký je přesný význam těchto tvrzení (jaká je příslušná sémantika). K tomu se dostaneme až v následujících kapitolách týkajících se výrokové a predikátové logiky, kde bude popsáno, jakým způsobem je možné tvrzení zapisovat formálně pomocí formulí a jaký je přesný význam těchto formulí. Cvičení 1.2: Pomocí pravidel ∧i, ∧e1 a ∧e2 odvoďte následující pravidla: Γ ⊢ A ∧ (B ∧ C) Γ ⊢ (A ∧ B) ∧ C
1.11
Γ⊢ A∧B Γ⊢B∧A
Předpoklady
Předtím, než se vrátíme k dalším logickým spojkám, je vhodné si říct něco málo o tom, jakými způsoby můžeme ještě v důkazech pracovat s předpoklady. Jednou z prvních věcí, která nejspíše člověka v této souvislosti napadne, je, že pořadí předpokladů by asi nemělo být důležité, že to, zda se daný důkaz dá provést, by nemělo záležet na pořadí předpokladů v antecedentu. Například, když se dá dokázat A, B ⊢ C, tak by se mělo dát dokázat i B, A ⊢ C.
1.11
Předpoklady
17
Pokud se nyní budeme dívat na předpoklady v antecedentu jako na sekvenci tvrzení, prohození dvou po sobě jdoucích předpokladů se dá zajistit pomocí následujícího pravidla permutace: Γ, A, B, ∆ ⊢ C Γ, B, A, ∆ ⊢ C Není těžké si rozmyslet, že opakovanou aplikací tohoto pravidla se dá libovolně změnit pořadí předpokladů v antecedentu. Další věcí, kterou je možné s předpoklady udělat, je přidání nějakého dalšího dodatečného předpokladu. Je asi přirozené očekávat, že pokud se nějaké tvrzení B dá dokázat z nějakých předpokladů, tak se B dá dokázat i tehdy, když k těmto předpokladům přidáme nějaký další předpoklad A. Toto je vyjádřeno pomocí následujícího pravidla zeslabení: Γ, ∆ ⊢ B Γ, A, ∆ ⊢ B Třetí věc, kterou můžeme s předpoklady provádět, se týká případu, kdy se nějaké tvrzení mezi předpoklady vyskytuje vícekrát. Asi je opět přirozené očekávat, že pokud se nějaké tvrzení B dá dokázat z předpokladů, kde se nějaký předpoklad A vyskytuje dvakrát (nebo i vícekrát), pak se dá toto tvrzení B dokázat ze stejných předpokladů, kde se ale A bude vyskytovat jen jednou. To je zachyceno pomocí následujícího pravidla kontrakce: Γ, A, A, ∆ ⊢ B Γ, A, ∆ ⊢ B Výše uvedená tři pravidla (permutace, zeslabení, kontrakce) zajišťují, že se sekvencí předpokladů v antecedentu se dá pracovat jako s konečnou množinou. Tato tři pravidla je možné nahradit jedním pravidlem, které budeme označovat zkratkou Ant (z „antecedentÿ): Γ⊢A (Γ ⊆ Γ′ ) Γ′ ⊢ A Podmínka Γ ⊆ Γ′ zapsaná vedle pravidla říká, že toto pravidlo je možné použít pouze v případě, že každý předpoklad A obsažený v Γ je obsažen také v Γ′ . Zápis Γ ⊆ Γ′ je korektní v případě, že se na Γ a Γ′ díváme jako na množiny. V případě, že se na ně díváme jako na konečné sekvence předpokladů, tak takový zápis úplně korektní není. V takovém případě by bylo přesnější říct, že pravidlo se dá aplikovat pouze v případě, kdy platí, že pokud Γ := A1 , A2 , . . . , Am a Γ′ := A′1 , A′2 , . . . , A′n , tak každé Ai z Γ je stejné jako nějaké A′j z Γ′ . Čtenáři snad nebude činit žádný problém, pokud zápis Γ ⊆ Γ′ bude použit v tomto významu v případě, že Γ a Γ′ jsou sekvence tvrzení. Poznámka: U pravidel, která je možné aplikovat pouze v případě, že premisy a závěr splňují nějakou dodatečnou podmínku ϕ, se pro vyznačení této podmínky používá výše použitý způsob zápisu, kdy je tato podmínka ϕ uvedena v závorkách napravo od vodorovné čáry oddělující závěr od premis: C1 C2 · · · Ck (ϕ) D Pravidlo Ant je zobecněním pravidel permutace, zeslabení a kontrakce, protože všechna tři pravidla jsou speciálními případy aplikace pravidla Ant. V libovolném důkazu je tedy možné
18 nahradit použití kteréhokoliv z těchto tří pravidel pravidlem Ant. Na druhou stranu není těžké si rozmyslet, že jakoukoliv aplikaci pravidla Ant je možné nahradit nějakou posloupností aplikací pravidel permutace, zeslabení a kontrakce. Cvičení 1.3: Navrhněte nějaký konkrétní obecný postup, jak pro libovolné dva sekventy Γ ⊢ A a Γ′ ⊢ A, kde Γ′ ⊢ A byl získán aplikací pravidla Ant na Γ ⊢ A, odvodit Γ′ ⊢ A z Γ ⊢ A pouze aplikací pravidel permutace, zeslabení a kontrakce. V dalším textu budeme místo pravidel permutace, zeslabení a kontrakce většinou používat obecnější pravidlo Ant. S použitím pravidla Ant (resp. s použitím pravidel permutace, zeslabení a kontrakce) je možné místo dříve popsaného pravidla Assm používat následující jednodušší pravidlo: A⊢A Použití pravidla Assm by pak mohlo být nahrazeno použitím tohoto jednoduššího pravidla, za kterým by následovalo použití pravidla Ant, kterým by se doplnily další předpoklady do antecedentu. V dalším textu se nadále používá spíše pravidlo Assm, tak, jak bylo zavedeno dříve, a to z toho důvodu, že zápis důkazů je pak o něco stručnější (místo dvou řádků stačí jeden). Část věnovanou práci s předpoklady zakončeme zavedením následujícího pravidla, označeného zkratkou Ch (z angl. „chainÿ): Γ⊢A
Γ, A ⊢ B Γ⊢B
Jedná se o určitou variantu pravidla, které bývá v literatuře označováno jako pravidlo řezu (cut rule). Pravidlo Ch říká, že pokud se z nějakých předpokladů Γ dá dokázat nějaké tvrzení A, tak pro důkaz nějakého dalšího tvrzení B ze stejné množiny předpokladů se dá použít dříve dokázané tvrzení A jako další dodatečný předpoklad. Umožňuje tedy určité řetězení argumentů v důkazech (odtud výše použitý název) a umožňuje rozdělení důkazu tvrzení B na dvě části (jeho „rozříznutíÿ) — na důkaz tvrzení A a důkaz toho, že z A (případně spolu s dalšími původními předpoklady) se dá odvodit B. Pravidlům jako jsou třeba Assm, Ant, pravidla permutace, zeslabení, kontrakce nebo pravidlo Ch, ve kterých se nepracuje se žádnými logickými spojkami, kvantifikátory ani s ničím podobným, ale pouze se různě přeskupují, přidávají nebo odebírají předpoklady, se obecně říká strukturální pravidla.
1.12
Pravidla vs. sekventy
Snadno se odvodí, že pokud máme pravidlo typu Γ ⊢ A1
Γ ⊢ A2 ··· Γ⊢B
Γ ⊢ An
,
(∗)
tak se pomocí něj dá dokázat sekvent A1 , A2 , . . . , An ⊢ B .
(∗∗)
1.12
Pravidla vs. sekventy
19
Pro tento důkaz stačí položit Γ := A1 , A2 , . . . , An . Premisy Γ ⊢ A1 , Γ ⊢ A2 , . . . , Γ ⊢ An se pak odvodí pomocí pravidla Assm a sekvent (∗∗) dostaneme aplikací pravidla (∗) na tyto premisy. Na druhou stranu, pokud máme dokázaný sekvent (∗∗), tak pomocí pravidel Ant a Ch je možné z něj odvodit pravidlo (∗), a to následujícím způsobem. Aplikací pravidla Ant na (∗∗) dostaneme Γ, A1 , A2 , . . . , An ⊢ B. Stačí tedy umět odvodit pravidlo (∗) z toho sekventu. Vezměme si nejprve speciální případ, kdy n = 1. V takovém případě máme dokázaný sekvent Γ, A1 ⊢ B a chceme pomocí něj odvodit pravidlo Γ ⊢ A1 , Γ⊢B To se dá udělat aplikací pravidla Ch na premisu Γ ⊢ A1 a na sekvent Γ, A1 ⊢ B. Uvažujme nyní případ, kdy n = 2, takže máme dokázaný sekvent Γ, A1 , A2 ⊢ B a cílem je odvodit pravidlo Γ ⊢ A1 Γ ⊢ A2 . Γ⊢B
Pomocí Ant můžeme z premisy Γ ⊢ A2 odvodit Γ, A1 ⊢ A2 a aplikací Ch na tento sekvent a sekvent Γ, A1 , A2 ⊢ B dostáváme Γ, A1 ⊢ B. Nyní jsme tedy převedli případ, kdy n = 2, na případ, kdy n = 1, a můžeme aplikovat postup pro tento případ. Tento postup se dá zobecnit pro případy, kdy n = 3, n = 4, atd. Obecně případ, kdy n = i, kde i > 1, můžeme převést na případ, kdy n = i − 1, tím způsobem, že z premisy Γ ⊢ An odvodíme pomocí Ant sekvent Γ, A1 , A2 , . . . , An−1 ⊢ An a pak pomocí Ch dostaneme z tohoto sekventu a sekventu Γ, A1 , A2 , . . . , An−1 , An ⊢ B sekvent Γ, A1 , A2 , . . . , An−1 ⊢ B. Pokud tedy dříve bylo například odvozeno pravidlo Γ ⊢ (A ∧ B) ∧ C , Γ ⊢ A ∧ (B ∧ C) je možné pomocí tohoto pravidla dokázat sekvent (A ∧ B) ∧ C ⊢ A ∧ (B ∧ C) , a pokud bychom naopak měli důkaz tohoto sekventu, je z něj zase možné odvodit ono výše uvedené pravidlo. Cvičení 1.4: Předpokládejme, že již byl dokázán sekvent A1 , A2 , A3 ⊢ B. Proveďte detailní odvození následujícího pravidla pomocí tohoto sekventu a pravidel Ant a Ch: Γ ⊢ A1
Γ ⊢ A2 Γ⊢B
Γ ⊢ A3
Cvičení 1.5: Odvoďte pomocí pravidel Ant a Ch následující pravidlo: Γ, A, ∆ ⊢ B A′ ⊢ A Γ, A′ , ∆ ⊢ B
20 Cvičení 1.6: Je korektní následující obdoba pravidla z předchozího cvičení? Γ, A, ∆ ⊢ B A ⊢ A′ Γ, A′ , ∆ ⊢ B Pokud ano, odvoďte ho pomocí dříve zavedených pravidel, pokud ne, uveďte příklad, kdy toto pravidlo vede k odvození nekorektního závěru.
Kapitola 2
Logické spojky 2.1
Disjunkce
Vraťme se nyní k logickým spojkám. Další důležitou spojkou je spojka „neboÿ odborně nazývaná disjunkce. V odborných textech se „neboÿ používá prakticky vždy v nevylučujícím smyslu, kdy tvrzení „A nebo Bÿ je pravdivé, jestliže je pravdivé alespoň jedno z tvrzení A a B, tj. pokud je pravda A nebo je pravda B nebo pokud je pravda jak A tak B. V tomto nevylučujícím smyslu je tvrzení „A nebo Bÿ nepravdivé jedině v případě, že ani jedno z tvrzení A a B není pravdivé, tj. když A není pravda a zároveň B není pravda. Pro označení disjunkce se používá symbol ∨, takže tvrzení „A nebo Bÿ je pak formálně zapsáno jako A ∨ B. Disjunkce se také někdy označuje anglickým slovem or. Jakých pravdivostních hodnot nabývá tvrzení A ∨ B v závislosti na pravdivostních hodnotách tvrzení A a B, je popsáno v následující tabulce: A 0 0 1 1
A∨B 0 1 1 1
B 0 1 0 1
Pro úplnost dodejme, že v přirozené řeči se spojka „neboÿ často používá ve vylučujícím smyslu. Když například někdo řekne „zítra si udělám k obědu kuře nebo povidlové knedlíkyÿ, tak tím většinou myslí, že se rozmýšlí mezi těmito dvěma možnostmi, a ne, že zvažuje i možnost, že si dá k obědu obojí. Pro „neboÿ v tomto vylučujícím smyslu, kdy tvrzení „A nebo Bÿ je pravdivé jedině v případě, kdy právě jedno z tvrzení A a B je pravdivé (a druhé nepravdivé), a které je tedy nepravdivé, pokud jsou obě tvrzení A a B nepravdivá, nebo naopak v případě, že jsou obě pravdivá, se používá symbol ⊕ nebo označení xor (z angl. exclusive or ), a jeho význam je dán následující tabulkou: A 0 0 1 1
B 0 1 0 1
A⊕B 0 1 1 0 21
22 Jak již bylo řečeno, v matematických textech se „neboÿ používá prakticky výhradně v nevylučujícím smyslu (∨) a to často i ve formulacích jako „Buď A nebo B.ÿ Pokud chce autor použít „neboÿ ve vylučujícím smyslu (⊕), bývá to většinou formulováno jako „platí právě jedna z možností A nebo Bÿ, nebo nějak podobně. Spojka ⊕ se většinou nezařazuje mezi základní logické spojky a v této části se jí nebudeme dále zabývat. Zaměřme se nyní na to, jakým způsobem je možné používat spojku ∨ v důkazech.
Pokud je cílem dokázat tvrzení, které je tvaru A ∨ B, přímočarým způsobem, jak to udělat, je dokázat jedno z tvrzení A a B a na základě toho prohlásit, že bylo dokázáno A ∨ B. Toto je korektní postup, protože pokud platí za daných předpokladů například A (má pravdivostní hodnotu 1), bude za těchto předpokladů platit i A ∨ B, a podobně tomu bude i v případě, že za daných předpokladů platí B. Tento způsob argumentace je zachycen následujícími dvěma pravidly zavedení disjunkce, která budeme označovat zkratkami ∨i1 a ∨i2 : ∨i1 :
Γ⊢A Γ⊢A∨B
∨i2 :
Γ⊢B Γ⊢A∨B
Naopak, pokud již bylo dokázáno tvrzení A∨B, tj. pokud víme, že za daných předpokladů musí platit alespoň jedno z tvrzení A a B, můžeme toho při důkazu nějakého tvrzení C využít tak, že tento důkaz rozdělíme na dvě části. V jedné části budeme předpokládat, že platí tvrzení A, a ve druhé, že platí B. Pokud v každé z těchto částí nezávisle dokážeme tvrzení C (jednou s dodatečným předpokladem A a jednou s dodatečným předpokladem B), pokud už dříve bylo dokázáno A ∨ B, je možné prohlásit, že bylo dokázáno C i bez dodatečných předpokladů A a B. Takový způsob argumentace je reprezentován následujícím pravidlem eliminace disjunkce, které budeme označovat zkratkou ∨e: ∨e:
Γ⊢A∨B
Γ, A ⊢ C Γ⊢C
Γ, B ⊢ C
Toto pravidlo je korektní, protože, když za předpokladů Γ platí A ∨ B, tak za těchto předpokladů musí platit vždy alespoň jedno z tvrzení A a B. Pokud je tedy dokázáno, že v obou těchto případech platí i tvrzení C, musí C platit za předpokladů Γ vždy. Tomuto typu důkazu se říká větvený důkaz nebo také důkaz rozborem případů, protože se v něm rozebírá zvlášť případ, kdy platí A, a zvlášť případ, kdy platí B. Jako příklad použití pravidel ∨i1 , ∨i2 a ∨e si ukážeme odvození sekventu (A ∨ B) ∨ C ⊢ A ∨ (B ∨ C). V důkaze je tvrzení (A ∨ B) ∨ C z důvodu stručnějšího zápisu nahrazeno v antecedentech symbolem ϕ, tj. ϕ := (A ∨ B) ∨ C:
2.2
Negace
23 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
ϕ ⊢ (A ∨ B) ∨ C ϕ, A ∨ B ⊢ A ∨ B ϕ, A ∨ B, A ⊢ A ϕ, A ∨ B, A ⊢ A ∨ (B ∨ C) ϕ, A ∨ B, B ⊢ B ϕ, A ∨ B, B ⊢ B ∨ C ϕ, A ∨ B, B ⊢ A ∨ (B ∨ C) ϕ, A ∨ B ⊢ A ∨ (B ∨ C) ϕ, C ⊢ C ϕ, C ⊢ B ∨ C ϕ, C ⊢ A ∨ (B ∨ C) ϕ ⊢ A ∨ (B ∨ C)
(Assm) (Assm) (Assm) (∨i1 3) (Assm) (∨i1 5) (∨i2 6) (∨e 2,4,7) (Assm) (∨i2 9) (∨i2 10) (∨e 1,8,11)
Cvičení 2.1: Dokažte následující sekventy: (a) A ∨ (B ∨ C) ⊢ (A ∨ B) ∨ C (b) A ∨ B ⊢ B ∨ A Jak vyplývá z předchozího příkladu a z předchozího cvičení, tvrzení (A ∨ B) ∨ C a A ∨ (B ∨ C) jsou ekvivalentní, protože se jedno dá dokázat z druhého a naopak. Závorky je tedy možné ve většině případů vypustit a psát A ∨ B ∨ C, podobně jako u konjunkce. Pokud se ale v nějakém tvrzení objevuje více logických spojek, například jak konjunkce tak disjunkce, je lepší závorky nevypouštět. Třeba A ∧ (B ∨ C) není totéž co (A ∧ B) ∨ C, protože v případě, kdy A i B jsou nepravdivé a C je pravdivé, je tvrzení A ∧ (B ∨ C) nepravdivé, zatímco tvrzení (A ∧ B) ∨ C pravdivé. Cvičení 2.2: Dokažte následující sekventy:
(a) (b) (c) (d)
(A ∨ B) ∧ C ⊢ (A ∧ C) ∨ (B ∧ C) (A ∧ C) ∨ (B ∧ C) ⊢ (A ∨ B) ∧ C (A ∧ B) ∨ C ⊢ (A ∨ C) ∧ (B ∨ C) (A ∨ C) ∧ (B ∨ C) ⊢ (A ∧ B) ∨ C
2.2
Negace
Velice důležitou logickou spojkou je negace. Na rozdíl od jiných spojek nespojuje dva výroky, ale je vždy aplikována na jedno tvrzení. Pokud máme například tvrzení A, tvrzení, které dostaneme aplikací negace na A, by v přirozené řeči znělo „není pravda, že platí Aÿ, „A neplatíÿ, „není pravda Aÿ, apod. Tyto věty znějí poněkud šroubovaně, v přirozené řeči bývá proto negace nejčastěji vyjádřena použitím záporu příslušného slovesa, např. místo „ jeÿ se použije „neníÿ. Například negací tvrzení „prvek x je největším prvkem množiny Sÿ je tvrzení „prvek x není největším prvkem množiny Sÿ. Oproti tomu třeba tvrzení „prvek x je nejmenším prvkem množiny Sÿ není negací původního tvrzení, ale říká něco jiného.
24 Pro označení negace se používá symbol ¬, a tvrzení „není pravda Aÿ se formálně zapisuje jako ¬A. Ve stejném významu jako ¬ se též někdy používá symbol ∼. Používá se také notace, kde se píše vodorovná čára nad negovaným tvrzením. Například ¬A je při tomto způsobu zápisu zapsáno jako A a třeba ¬(A ∧ B) se zapíše jako A ∧ B. Někdy se negace také označuje anglickým slovem not. Tabulka pravdivostních hodnot pro negaci vypadá takto: A 0 1
¬A 1 0
Je zřejmé, že když platí jedno z tvrzení A a ¬A, tak druhé neplatí, a naopak. Není tedy možné, aby současně platilo nějaké tvrzení i jeho negace. Toho se využívá v různých variantách důkazu sporem. Jednou takovou variantou je případ, kdy chceme dokázat, že platí ¬A (tj. že neplatí A), a postupujeme tak, že předpokládáme, že platí A (tj. přidáme A jako dodatečný předpoklad) a ukážeme, že po přidání tohoto předpokladu je možné odvodit nějaké tvrzení B i jeho negaci. Takový postup se dá vyjádřit následující pravidlem Ctr (z angl. „contradictionÿ): Ctr:
Γ, A ⊢ B
Γ, A ⊢ ¬B Γ ⊢ ¬A
Zdůvodnění, proč je takové pravidlo korektní, je založeno na tom, že nemůže nastat případ, kdy by platilo současně B i ¬B, nemůže tedy nastat případ, kdy by platila všechna tvrzení z Γ a zároveň platilo A. Pokud tedy platí všechna tvrzení z Γ, tak neplatí A a platí tedy ¬A. Obdobná je varianta důkazu sporem, kdy chceme dokázat A a postupujeme tak, že předpokládáme, že platí ¬A, a ukážeme, že tento předpoklad vede k odvození sporu (tj. současně by muselo platit B i ¬B). Tato varianta je zachycena pravidlem CtrN (z angl. „contradiction with negationÿ): Γ, ¬A ⊢ B Γ, ¬A ⊢ ¬B CtrN: Γ⊢A Zdůvodnění korektnosti tohoto pravidla je podobné jako v předchozím případě a je ponecháno čtenáři jako cvičení. Asi je celkem očividné, že když platí A, tak platí i ¬¬A, a naopak, když platí ¬¬A, tak platí i A, jak je zachyceno následujícími dvěma pravidly ¬¬i (zavedení dvojité negace) a ¬¬e (eliminace dvojité negace): ¬¬i:
Γ⊢A Γ ⊢ ¬¬A
¬¬e:
Γ ⊢ ¬¬A Γ⊢A
Pravidla ¬¬i a ¬¬e se dají odvodit pomocí pravidel Ctr a CtrN následovně: 1. 2. 3. 4.
Γ⊢A Γ, ¬A ⊢ A Γ, ¬A ⊢ ¬A Γ ⊢ ¬¬A
(premisa) (Ant 1) (Assm) (Ctr 2,3)
1. 2. 3. 4.
Γ ⊢ ¬¬A Γ, ¬A ⊢ ¬A Γ, ¬A ⊢ ¬¬A Γ⊢A
(premisa) (Assm) (Ant 1) (CtrN 2,3)
Pokud bychom naopak vzali za základní pravidla třeba Ctr a ¬¬e, je zase možné pomocí nich odvodit CtrN:
2.2
Negace
25 1. 2. 3. 4.
Γ, ¬A ⊢ B Γ, ¬A ⊢ ¬B Γ ⊢ ¬¬A Γ⊢A
(premisa) (premisa) (Ctr 1,2) (¬¬e 3)
Pokud se z nějakých předpokladů dá odvodit spor, tak se z nich dá odvodit jakékoliv tvrzení, jak je zachyceno následujícím pravidlem CtrA (z angl. „from a contradition, anything followsÿ): Γ⊢A Γ ⊢ ¬A CtrA: Γ⊢B Odvození pravidla CtrA: 1. 2. 3. 4. 5.
Γ⊢A Γ ⊢ ¬A Γ, ¬B ⊢ A Γ, ¬B ⊢ ¬A Γ⊢B
(premisa) (premisa) (Ant 1) (Ant 2) (CtrN 3,4)
S důkazy sporem úzce souvisí důkazy pomocí kontrapozice. Tyto důkazy vypadají tak, že pokud například chceme dokázat, že za předpokladu B platí A, tak předpokládáme, že neplatí A (tj. že platí ¬A), a dokážeme, že pak neplatí B (tj. platí ¬B). Různé varianty tohoto postupu jsou znázorněny následujícími čtyřmi pravidly, označenými zkratkou Cp (z angl. „contrapositionÿ), přičemž konkrétně výše popsanému postupu odpovídá varianta (d): a)
Γ, A ⊢ B Γ, ¬B ⊢ ¬A
b)
Γ, A ⊢ ¬B Γ, B ⊢ ¬A
d)
Γ, ¬A ⊢ ¬B Γ, B ⊢ A
c)
Γ, ¬A ⊢ B Γ, ¬B ⊢ A
Varianty (a) a (b) se dají odvodit následovně: 1. 2. 3. 4.
Γ, A ⊢ B Γ, ¬B, A ⊢ B Γ, ¬B, A ⊢ ¬B Γ, ¬B ⊢ ¬A
(premisa) (Ant 1) (Assm) (Ctr 2,3)
1. 2. 3. 4.
Γ, A ⊢ ¬B Γ, B, A ⊢ B Γ, B, A ⊢ ¬B Γ, B ⊢ ¬A
(premisa) (Assm) (Ant 1) (Ctr 2,3)
Varianty (c) a (d) se pak dají odvodit pomocí variant (a) a (b) a pravidla ¬¬e. Dříve zavedené pravidlo Ch nemusí být bráno jako základní pravidlo, ale dá se odvodit řadou způsobů. Například odvození využívající pravidel Cp (a) a CtrN vypadá takto: 1. 2. 3. 4. 5.
Γ⊢A Γ, A ⊢ B Γ, ¬B ⊢ A Γ, ¬B ⊢ ¬A Γ⊢B
(premisa) (premisa) (Ant 1) (Cp (a) 2) (CtrN 3,4)
26 Často používanou variantou důkazu rozborem případů je důkaz, kdy dokážeme nějaké tvrzení B jednou za předpokladu, že nějaké tvrzení A platí, a podruhé za předpokladu, že A neplatí (tj. platí ¬A), jak je popsáno následujícím pravidlem PC (z angl. „proof by casesÿ): PC:
Γ, A ⊢ B
Γ, ¬A ⊢ B Γ⊢B
Toto pravidlo se dá odvodit například takto: 1. 2. 3. 4. 5.
Γ, A ⊢ B Γ, ¬A ⊢ B Γ, ¬B ⊢ A Γ, ¬B ⊢ ¬A Γ⊢B
(premisa) (premisa) (Cp (c) 2) (Cp (a) 1) (CtrN 3,4)
Je asi zřejmé, že nikdy nemůže současně platit tvrzení A a i tvrzení ¬A. Na druhou stranu vždy musí jedno z těchto tvrzení platit (tj. když neplatí A, tak musí platit ¬A, a naopak), tedy vždy platí A ∨ ¬A. Toto je známo jako zákon vyloučení třetího (latinsky tertium non datur ). Pomocí pravidla PC se dá tvrzení A ∨ ¬A velice snadno dokázat (z prázdné množiny předpokladů): 1. 2. 3. 4. 5.
A⊢A A ⊢ A ∨ ¬A ¬A ⊢ ¬A ¬A ⊢ A ∨ ¬A ⊢ A ∨ ¬A
(Assm) (∨i1 1) (Assm) (∨i2 3) (PC 2,4)
Ve výše uvedeném důkaze tvrzení A ∨ ¬A byl použit postup často používaný pro dokazování tvrzení tvaru A ∨ B, kdy předpokládáme, že neplatí A (a platí tedy ¬A), a na základě tohoto předpokladu dokážeme, že platí B (respektive předpokládáme, že neplatí B, a dokážeme, že pak platí A). Tento postup je vyjádřen následujícími dvěma pravidly: Γ, ¬A ⊢ B Γ⊢A∨B
Γ, ¬B ⊢ A Γ⊢A∨B
První z těchto pravidel se odvodí následujícím způsobem a odvození druhého je podobné: 1. 2. 3. 4. 5.
2.3
Γ, A ⊢ A Γ, A ⊢ A ∨ B Γ, ¬A ⊢ B Γ, ¬A ⊢ A ∨ B Γ⊢ A∨B
(Assm) (∨i1 1) (premisa) (∨i2 3) (PC 2,4)
Implikace
Slovní formulaci „Jestliže A, pak B.ÿ odpovídá logická spojka implikace. Implikace se označuje symbolem →, takže výše uvedené tvrzení se formálně dá zapsat jako A → B. Ve stejném významu jako → se někdy používají pro vyjádření implikace také symboly ⇒ a ⊃.
2.3
Implikace
27
V přirozené řeči může být tvrzení A → B formulováno celou řadou způsobů. Zde jsou uvedeny některé z nich: „z A plyne Bÿ, „za předpokladu A platí Bÿ, „B, pokud Aÿ, „A je postačující podmínka pro Bÿ, „B je nutná podmínka pro Aÿ. Ve tvrzení A → B představuje tvrzení A předpoklad a tvrzení B závěr. Tvrzení A → B je nepravdivé jedině v případě, že platí předpoklad A a neplatí závěr B. Ve všech ostatních případech je tvrzení A → B pravdivé, jak je uvedeno v následující tabulce pravdivostních hodnot: A 0 0 1 1
B 0 1 0 1
A→B 1 1 0 1
V přirozené řeči formulace jako „pokud A, pak Bÿ naznačuje, že mezi A a B existuje nějaká příčinná souvislost. Při způsobu, jakým je používána implikace v odborných textech, mohou být implikací spojeny i výroky, které spolu vůbec nesouvisí. Například tvrzení „ jestliže x je kladné, pak y je sudéÿ může být pravdivé i v případě, kdy hodnota proměnné y vůbec nezávisí na hodnotě proměnné x. Běžný způsob, jak dokázat tvrzení ve tvaru A → B, je přidat A jako předpoklad a dokázat B, tj. použít následujícího pravidla → i (zavedení implikace): → i:
Γ, A ⊢ B Γ⊢A→B
Pokud máme dokázáno tvrzení A → B a zároveň i tvrzení A, můžeme z nich odvodit tvrzení B. Tento postup je zachycen následujícím pravidlem → e (eliminace implikace), které je známější pod latinským názvem modus ponens: → e:
Γ⊢A→B Γ⊢B
Γ⊢A
Zdůvodnění korektnosti obou pravidel je ponecháno čtenáři jako cvičení. Pomocí → e se dá například snadno odvodit i opačný postup, než je použit v pravidle → i: Γ⊢A→B Γ, A ⊢ B Odvození vypadá takto: 1. 2. 3. 4.
Γ⊢A→B Γ, A ⊢ A → B Γ, A ⊢ A Γ, A ⊢ B
(premisa) (Ant 1) (Assm) (→ e 2,3)
Pomocí pravidel → i a → e se dá odvodit také pravidlo Ch: 1. 2. 3. 4.
Γ⊢A Γ, A ⊢ B Γ⊢A→B Γ⊢B
(premisa) (premisa) (→ i 2) (→ e 3,1)
28
2.4
Ekvivalence
Další důležitou logickou spojkou je ekvivalence. Ta slouží k vyjádření tvrzení, jako jsou například „A právě tehdy, když Bÿ, „A tehdy a jen tehdy, když Bÿ a podobně. Ekvivalence se zapisuje symbolem ↔. Tvrzení „A právě tehdy, když Bÿ se formálně zapisuje jako A↔B. Pro označení ekvivalence se též používají místo symbolu ↔ symboly ⇔ a ≡.
Tvrzení A ↔ B je pravdivé, jestliže tvrzení A a B buď obě současně platí nebo obě současně neplatí. Naopak je nepravdivé, jestliže jedno z tvrzení A a B platí a druhé neplatí. Tabulka pravdivostních hodnot pro ekvivalenci vypadá následovně: A 0 0 1 1
B 0 1 0 1
A↔B 1 0 0 1
Můžeme si všimnout, že pokud platí tvrzení A ↔ B, tak platí i implikace A → B a B → A. Na druhou stranu, pokud platí obě tyto implikace, tak platí i tvrzení A ↔ B, protože pokud A ↔ B neplatí, tak neplatí jedna z těchto implikací. Například pokud má A pravdivostní hodnotu 1 a B pravdivostní hodnotu 0, tak neplatí implikace A → B, a podobně, pokud má A pravdivostní hodnotu 0 a B pravdivostní hodnotu 1, tak zase neplatí implikace B → A.
Při dokazování tvrzení tvaru A ↔ B se tedy nejčastěji postupuje tak, že se dokazují obě implikace A → B a B → A. Pro dokazování implikací můžeme použít pravidlo → i. Když spojíme tento postup dohromady, dostaneme následující pravidlo zavedení ekvivalence, které budeme označovat ↔ i: Γ, A ⊢ B Γ, B ⊢ A ↔ i: Γ⊢A↔B
Motivací pro použití premis Γ, A ⊢ B a Γ, B ⊢ A v pravidle ↔ i namísto premis Γ ⊢ A → B a Γ ⊢ B → A je to, že chceme, aby se v pravidlech pro zavedení nebo eliminaci logických spojek vyskytovala pokud možno vždy jen spojka, které se příslušné pravidlo týká, a žádné jiné spojky. Pokud už naopak máme dokázáno, že za předpokladů Γ platí tvrzení A ↔ B a zároveň tvrzení A, můžeme z toho vyvodit, že za předpokladů Γ musí platit i tvrzení B, protože pokud by B neplatilo, neplatilo by ani A ↔ B. Podobně pokud už máme dokázáno, že za předpokladů Γ platí tvrzení A ↔ B a zároveň tvrzení B, můžeme z toho vyvodit, že musí za těchto předpokladů platit také A. Toto je zachyceno následujícími dvěma pravidly pro eliminaci ekvivalence, která budeme označovat ↔ e1 a ↔ e2 : ↔ e1 :
Γ⊢A↔B Γ⊢B
Γ⊢A
↔ e2 :
Γ⊢A↔B Γ⊢A
Γ⊢B
2.5
2.5
Logické konstanty
29
Logické konstanty
Někdy se hodí mít speciální tvrzení, která jsou buď vždy pravdivá nebo vždy nepravdivá. Pro označení tvrzení, které je vždy nepravdivé, budeme používat symbol ⊥. Pravdivostní hodnota tvrzení ⊥ je vždy 0. Podobně pro označení tvrzení, které je vždy pravdivé a které má vždy pravdivostní hodnotu 1, budeme používat symbol ⊤. Symboly ⊥ a ⊤ tedy představují určitý druh logických konstant. Z jistého pohledu můžeme logické konstanty zařadit mezi logické spojky, i když nic nespojují a tvoří výroky samy o sobě. V literatuře se pro označení logických konstant ⊥ a ⊤ používají také například symboly 0 a 1 nebo ff a tt. V následujícím textu se symboly 0 a 1 používají pro označení pravdivostních hodnot, zatímco symboly ⊥ a ⊤ pro označení tvrzení, která těchto pravdivostních hodnot nabývají. Slovně můžeme pojmenovat logickou konstantu ⊥ anglickým slovem false (nepravda) a logickou konstantu ⊤ anglickým slovem true (pravda). Zaměřme se nejprve na logickou konstantu ⊥. Řekněme, že se nám podařilo odvodit sekvent Γ ⊢ ⊥. Mělo by tedy platit, že pokud jsou pravdivé všechny předpoklady Γ, měl by být pravdivý i závěr ⊥. Tvrzení ⊥ je ale vždy nepravdivé, takže není možné, aby byla současně pravdivá všechna tvrzení z Γ. Znamená to, že předpoklady Γ jsou sporné. Za předpokladů Γ tedy platí jakékoliv libovolné tvrzení A, protože tyto předpoklady nebudou nikdy současně všechny platit. Tato úvaha je zachycena následujícím pravidlem pro eliminaci ⊥, které budeme označovat ⊥e: ⊥e:
Γ⊢⊥ Γ⊢A
Pomocí pravidla ⊥e spolu s pravidlem Ctr můžeme odvodit následující pravidlo pro zavedení negace, které budeme označovat ¬i: ¬i:
Γ, A ⊢ ⊥ Γ ⊢ ¬A
Odvození tohoto pravidla může vypadat například takto: 1. Γ, A ⊢ ⊥ 2. Γ, A ⊢ ¬⊥ 3. Γ ⊢ ¬A
(premisa) (⊥e 1) (Ctr 1,2)
Z pravidla CtrA přímo vyplývá, že pokud můžeme z daných předpokladů odvodit nějaké tvrzení i jeho negaci, můžeme z těchto předpokladů odvodit i tvrzení ⊥. Tím dostáváme pravidlo pro eliminaci negace, ¬e:
Γ ⊢ ¬A Γ⊢A , Γ⊢⊥
které budeme označovat ¬e, které je v podstatě speciálním případem pravidla CtrA. Pokud vezmeme pravidla ¬i, ¬e a ⊥e jako základní, můžeme pomocí nich odvodit pravidla Ctr a CtrA jako odvozená pravidla:
30 1. 2. 3. 4.
Γ, A ⊢ B Γ, A ⊢ ¬B Γ, A ⊢ ⊥ Γ ⊢ ¬A
(premisa) (premisa) (¬e 2,1) (¬i 3)
1. 2. 3. 4.
Γ⊢A Γ ⊢ ¬A Γ⊢⊥ Γ⊢B
(premisa) (premisa) (¬e 2,1) (⊥e 3)
Vzhledem k tomu, že tvrzení ⊤ je vždy pravdivé, je důkaz tvrzení ⊤ velice jednoduchý — prostě prohlásíme, že tvrzení ⊤ platí, jak je naznačeno následujícím pravidlem pro zavedení ⊤, které budeme označovat ⊤i: ⊤i:
⊢⊤
Pokud odvodíme, že za nějakých předpokladů Γ platí ⊤, tak nám tato informace při odvozování nějakých dalších závěrů příliš nepomůže, protože tvrzení ⊤ platí vždy. Logické konstanty ⊥ a ⊤ mohou být sice někdy užitečné, ale není nezbytně nutné, aby byly integrální součástí daného logického systému. Místo ⊥ můžeme používat libovolné tvrzení F , pro které platí ⊢ ¬F . Podobně místo ⊤ můžeme používat libovolné tvrzení T takové, že ⊢ T . Symboly ⊥ a ⊤ pak můžeme chápat jako zkratky pro tvrzení F a T .
Cvičení 2.3: Uveďte příklady nějakých konkrétních tvrzení F a T takových, že ⊢ ¬F a ⊢ T .
Řekněme tedy, že jsme si zvolili nějaké F , pro které platí ⊢ ¬F . Pomocí pravidel Ctr a CtrA můžeme snadno dokázat pravidla analogická pravidlům ¬i, ¬e a ⊥e. Konkrétně pravidlo Γ, A ⊢ F , Γ ⊢ ¬A odpovídající pravidlu ¬i, můžeme odvodit takto: 1. 2. 3. 4.
Γ, A ⊢ F ⊢ ¬F Γ, A ⊢ ¬F Γ ⊢ ¬A
(premisa) (definice F ) (Ant 2) (Ctr 1,3)
Podobně pravidlo Γ ⊢ ¬A Γ⊢A , Γ⊢F odpovídající pravidlu ¬e, je možné odvodit následovně: 1. Γ ⊢ ¬A 2. Γ ⊢ A 3. Γ ⊢ F
(premisa) (premisa) (CtrA 2,1)
Konečně pravidlo Γ⊢F , Γ⊢A odpovídající pravidlu ⊥e , se dá odvodit takto:
2.5
Logické konstanty
31 1. 2. 3. 4.
Γ⊢F ⊢ ¬F Γ ⊢ ¬F Γ⊢A
(premisa) (definice F ) (Ant 2) (CtrA 1,3)
V případě náhrady logické spojky ⊤ nějakým tvrzením T , pro které platí ⊢ T , je odvození pravidla odpovídajícího pravidlu ⊤i triviální, neboť ⊢ T je přímo požadavek, který klademe na tvrzení T .
32
Kapitola 3
Syntaxe a sémantika 3.1
Formule
Zatím jsme mluvili obecně o tvrzeních. V dalším textu budeme často mluvit o formulích. Zatímco pojem tvrzení můžeme chápat obecně v tom smyslu, že nijak neomezujeme (ale ani blíže nespecifikujeme), co oním tvrzením může nebo nemůže být a jak je konkrétně zapsáno, pojmem formule se rozumí konkrétní posloupnost symbolů, pomocí kterých je toto tvrzení reprezentováno. Pro formule musí být předem dána nějaká konkrétní přesná pravidla, podle kterých je formule možné vytvářet, a která určují, co je a co není dobře vytvořená formule. Pravidla, která určují, jak formule vypadají, jak je možné formule vytvářet, které posloupnosti symbolů jsou dobře utvořenými formulemi atd., se označují jako syntaxe. Oproti tomu sémantika přiřazuje těmto formulím nějaký význam, určuje, co znamenají, resp. co označují, jednotlivé symboly, jakých pravdivostních hodnot mohou formule nabývat, kdy formule platí, a podobně. Poznámka: Pojmy syntaxe a sémantika mají obecnější význam a nemusí se týkat jen formulí. Je možné například mluvit o syntaxi a sémantice programovacích jazyků, kdy syntaxe daného programovacího jazyka určuje, které posloupnosti znaků tvoří korektně utvořené programy a které ne, zatímco sémantika určuje, co jednotlivé konstrukce znamenají, jakým způsobem se například budou provádět jednotlivé příkazy jazyka, jak se budou vyhodnocovat výrazy, co musí být splněno z hlediska datových typů, se kterými se pracuje, apod. Pojem logika se používá ve více různých významech. Jednak označuje obor, přičemž tento obor se zabývá zkoumáním různých logik nebo také logických systémů. Těchto různých logik existuje velké množství a jednotlivé logiky se liší především v tom, jaká je konkrétní syntaxe a sémantika formulí, se kterými se v nich pracuje. V tomto textu se budeme zabývat prakticky výhradně jen dvěma logikami — výrokovou logikou a predikátovou logikou prvního řádu. Tyto dvě logiky jsou ale asi nejdůležitějšími logikami ze všech.
3.2
Syntaxe formulí
V této chvíli nebudeme zatím přesně definovat, jak vypadají formule výrokové nebo predikátové logiky (ani jiných logik). Tyto definice budou uvedeny později. V této chvíli se zaměříme 33
34 pouze na rys, který je společný oběma těmto logikám (a celé řadě dalších logik), a to, že formule je možné spojovat pomocí logických spojek a vytvářet tak složitější formule, jak již bylo naznačeno v předchozím textu. Konkrétně budeme předpokládat, že pokud A a B jsou dobře vytvořené formule, tak i ¬A, A ∧ B, A ∨ B, A → B a A ↔ B jsou dobře vytvořené formule, a že také ⊥ a ⊤ jsou dobře vytvořené formule. Navíc pro vyjádření struktury formule budeme používat závorky, tj. symboly ) a (, v běžném významu. Pokud například A, B a C jsou dobře vytvořené formule, tak i (¬A ∨ (B → ⊥)) → ¬(B ↔ (A ∧ ¬C)) ,
(∗)
je dobře vytvořená formule. Zdůvodnění může vypadat například takto: • Protože A je dobře vytvořená formule, tak i ¬A je dobře vytvořená formule. • Protože B a ⊥ jsou dobře vytvořené formule, tak i B → ⊥ je dobře vytvořená formule. • Protože ¬A a B → ⊥ jsou dobře vytvořené formule, tak i ¬A ∨ (B → ⊥) je dobře vytvořená formule. • Protože C je dobře vytvořená formule, tak i ¬C je dobře vytvořená formule. • Protože A a ¬C jsou dobře vytvořené formule, tak i A ∧ ¬C je dobře vytvořená formule. • Protože B a A ∧ ¬C jsou dobře vytvořené formule, tak i B ↔ (A ∧ ¬C) je dobře vytvořená formule. • Protože B ↔ (A ∧ ¬C) je dobře vytvořená formule, tak i ¬(B ↔ (A ∧ ¬C)) je dobře vytvořená formule. • Protože ¬A ∨ (B → ⊥) a ¬(B ↔ (A ∧ ¬C)) jsou dobře vytvořené formule, tak i (¬A ∨ (B → ⊥)) → ¬(B ↔ (A ∧ ¬C)), tj. celá formule (∗), je dobře vytvořená formule. Je možná dobré zdůraznit, že symboly A, B a C nejsou formule, ale jména zastupující nějaké dobře vytvořené formule. Formule zastupované těmito symboly mohou mít samy o sobě nějakou strukturu, mohou obsahovat logické spojky a různé jiné konstrukce, které jsme nijak blíže nespecifikovali a které nejsou v této chvíli důležité. To, že se například symbol A nachází ve formuli (∗) na dvou místech, znamená, že se na těchto místech musí nalézat stejné formule. Symboly A, B a C zastupují obecně různé formule, není ale vyloučeno, že například A a B nemohou být třeba jedna a tatáž formule. Může být užitečné si znázornit strukturu formule stromem, jak je naznačeno na Obrázku 3.2 pro formuli (∗). Takovému stromu se říká syntaktický strom nebo přesněji abstraktní syntaktický strom (angl. abstract syntax tree — AST ). Kořen stromu je nahoře. Vrcholy, které nejsou listy, odpovídají jednotlivým logickým spojkám, přičemž potomky každého takového vrcholu jsou vrcholy, které jsou kořeny podstromů reprezentujících formule spojené danou logickou spojkou. Podstromy odpovídající formulím A, B a C jsou vyznačeny schématicky jako trojúhelníky. Na obrázku je vyznačen jediný list, odpovídající formuli ⊥. Další listy jsou „ukrytyÿ v podstromech odpovídajících formulím A, B a C. Zatím jsme neřekli ani nic bližšího o tom, jak by tyto listy mohly vypadat. Obecně se formulím, které nejsou složené z menších formulí pomocí logických spojek ani jiných konstrukcí (jako jsou například kvantifikátory) říká atomické formule. Atomické formule reprezentují tvrzení, která se již nedají rozložit na jednodušší tvrzení. V případě výrokové logiky jsou atomické formule tvořeny atomickými tvrzeními z nějaké předem dané množiny. Každé takové atomické tvrzení je reprezentováno jediným symbolem
3.2
Syntaxe formulí
35 → ¬
∨
↔
→
¬
⊥ A
B
∧ B
¬ A C
Obrázek 3.1: Syntaktický strom formule (¬A ∨ (B → ⊥)) → ¬(B ↔ (A ∧ ¬C)) a nemá žádnou další strukturu. Pokud si například vezmeme množinu atomických tvrzení At tvořenou symboly p, q a r, je možné z nich vytvořit atomické formule jako třeba p nebo r a skládáním těchto atomický formulí pomocí logických spojek pak formule jako například p∧¬q nebo (¬r → ¬¬p) ∨ q. Žádné další syntaktické konstrukce se ve výrokové logice nepoužívají. Formule výrokové logiky jsou tedy tvořeny (výhradně) z atomických tvrzení z nějaké dané množiny atomických tvrzení At spojovaných pomocí logických spojek jako jsou ¬, ∧, ∨, →, ↔, ⊥ a ⊤. Tímto je tedy plně popsáno, jak vypadá syntaxe formulí výrokové logiky, i když zatím poněkud neformálně. Později budou formule výrokové logiky popsány o něco přesněji. V případě predikátové logiky je situace o něco složitější. Atomické formule tam mají poněkud složitější strukturu. Jednotlivé symboly tam reprezentují různé relace, funkce a proměnné. Podrobněji se budeme popisem formulí predikátové logiky zabývat později. V této chvíli si pro konkrétnost může čtenář zatím přestavovat například různá tvrzení o číslech, například „1 + 1 = 2ÿ, „x ≥ 7ÿ nebo „x + y = zÿ, přičemž ale zdůrazněme, že toto je jen ilustrační příklad, a že se v žádném případě nemusíme omezovat jen na tato tvrzení nebo naopak trvat na tom, že se v dané logice musí dát tato tvrzení vyjádřit. Oproti výrokové logice se v predikátové logice dále navíc objevují takzvané kvantifikátory, které slouží k reprezentaci tvrzení jako jsou „pro každé x platí . . . ÿ, „existuje z takové, že . . . ÿ, apod. Tyto kvantifikátory jsou reprezentovány symboly jako ∀ a ∃ a budeme se jimi podrobněji zabývat později. Poznamenejme ještě na okraj, že v různých jiných logikách, kterými se zde nebudeme zabývat, se mohou používat i další konstrukce než jen logické spojky a kvantifikátory. Když máme dánu nějakou formuli ϕ, podformule formule ϕ jsou všechny formule, které se ve formuli ϕ nachází jako její součást. Když se podíváme na syntaktický strom formule ϕ, jednotlivé podstromy tohoto stromu odpovídají jednotlivým podformulím. Příslušný podstrom
36 je syntaktickým stromem dané podformule. Například formule (∗) obsahuje podformule A, B, C, ¬A, ⊥, B → ⊥, ¬A ∨ (B → ⊥), ¬C, A ∧ ¬C, B ↔ (A ∧ ¬C), ¬(B ↔ (A ∧ ¬C)) a (¬A ∨ (B → ⊥)) → ¬(B ↔ (A ∧ ¬C)), jakož i všechny formule, které jsou podformulemi formulí A, B a C. Pro jistotu zdůrazněme, že každá formule je sama svou podformulí. Abstraktní syntaktický strom zachycuje strukturu formule. Slovo „abstraktníÿ v názvu tohoto stromu znamená, že strom zachycuje důležité aspekty této struktury, ale ne nepodstatné detaily toho, jak je formule přesně zapsána. Například v tomto stromě není zachycena informace o tom, kde přesně byly v zápisu formule použity závorky a kde ne. Závorky slouží v zápise formule jen jako pomocné symboly použité k vyznačení struktury. Poté, co je tato struktura reprezentována v samotné struktuře stromu, jsou již tyto symboly nepotřebné a můžeme je ignorovat. Mezi formulemi, které mají stejný syntaktický strom, ale které se liší v zapsaných závorkách, nebudeme dělat rozdíl a budeme je považovat za jednu a tutéž formuli. Zatím jsme závorky používali poněkud volně. Jednou možností, jak se vyhnout nejednoznačnostem v tom, jak má vypadat příslušný strom, je stanovit, že se závorky musí psát všude. Tento přístup je jistě možný, ale vede u složitějších formulí k zápisu, který nemusí být pro člověka vždy úplně dobře čitelný, protože je v něm poněkud „přezávorkovánoÿ. Často se tedy používají různé konvence, které pokud možno jednoznačně stanovují, jak vypadá příslušný syntaktický strom v případech, kdy závorky nejsou uvedeny. Jednou z konvencí, která se používá prakticky vždy, je to, že se mohou vynechávat závorky kolem celé formule, takže například (A ∧ B) a A ∧ B je jedna a tatáž formule. Dále bývá stanovena priorita jednotlivých logických spojek a případně dalších konstrukcí, které se mohou ve formuli objevit. Často se používá následující pořadí priority logických spojek: ¬
∧
∨
→
↔,
kde ¬ má nejvyšší prioritu a ↔ nejnižší prioritu. Při takto stanovených prioritách se tedy například formule ¬A → B ∨ C čte jako (¬A) → (B ∨ C) a ne například jako ¬((A → B) ∨ C). Pro úplnost uveďme ještě jednu možnost, jak se úplně vyhnout používání závorek. Tato možnost spočívá v používání prefixového zápisu místo obvyklejšího infixového zápisu. Jde o to, že místo A ∧ B se píše ∧AB, místo A ∨ B se píše ∨AB a tak dále. Výše uvedená formule (∗) by při tomto způsobu zápisu vypadala takto: → ∨¬A → B⊥¬ ↔ B ∧ A¬C Tento způsob zápisu asi není pro člověka příliš čitelný, ale má výhodu, že se při něm nemusí používat závorky. Dá se ukázat, že i bez použití závorek je při prefixovém zápisu vždy jednoznačně určen příslušný syntaktický strom, aniž by bylo potřeba nějak stanovovat prioritu jednotlivých logických spojek (nebo jakýchkoliv jiných operátorů a konstrukcí, které se ve formuli mohou vyskytnout). Prefixovému způsobu zápisu se říká polská notace, podle polského logika Jana Lukasiewicze, který tento způsob zápisu zavedl (ve 20. letech 20. století). Poznamenejme ještě, že postfixovému způsobu zápisu, kdy třeba A ∨ B je zapsáno jako AB∨, se říká obrácená polská notace nebo též reverzní polská notace (angl. reverse Polish notation — RPN ). Abstraktní syntaktický strom dané formule vypadá úplně stejně, ať už se použije pro zapsání této formule infixový zápis, prefixový zápis nebo postfixový zápis. Rozlišování mezi těmito
3.3
Sémantika formulí
37
třemi způsoby zápisu je tedy dalším aspektem, od kterého se při vytváření příslušného abstraktního syntaktického stromu abstrahuje, a který není tímto stromem zachycen.
3.3
Sémantika formulí
Formule, tak jak byly zatím popsány, nejsou nic jiného než jen posloupnosti symbolů vytvořené podle nějakých určitých pravidel. K tomu, aby bylo možno těmto posloupnostem symbolů přiřadit nějaký význam, slouží sémantika příslušné logiky. Sémantika je v podstatě sada definic, které nějakým způsobem specifikují, jaké typy objektů mohou jednotlivé symboly ve formuli reprezentovat, určují, kdy je tvrzení reprezentované formulí příslušné logiky pravdivé a kdy nepravdivé, atd. Mimo jiné příslušná sémantika určuje, jakých pravdivostních hodnot mohou formule nabývat. Zatím jsme se zabývali jen klasickou dvouhodnotovou logikou, ve které se pracuje jen se dvěma pravdivostními hodnotami — pravda a nepravda (které označujeme symboly 1 a 0). V této klasické logice je každé tvrzení vždy buď pravdivé nebo nepravdivé. Není tedy jednak možné, aby bylo nějaké tvrzení současně pravdivé i nepravdivé, ale není také možné, aby neplatila ani jedna z těchto možností. Předpokládá se, že každé tvrzení je buď pravdivé nebo nepravdivé, i když v daném konkrétním případě třeba nevíme (nebo nejsme schopni určit), která z těchto dvou možností platí, tj. nevíme, jestli je dané tvrzení pravdivé nebo ne. Kromě této klasické dvouhodnotové logiky se dají studovat i různé vícehodnotové logiky. Například se dá uvažovat o logice, ve které se kromě pravdivostních hodnot pravda a nepravda používá ještě třetí pravdivostní hodnota reprezentující případ „nevím, jestli je to pravda nebo nepravdaÿ. Pokud například víme, že tvrzení A neplatí (má pravdivostní hodnotu 0), pak i když nevíme, zda B platí nebo ne, můžeme s jistotou říci, že tvrzení A ∧ B neplatí. Jedním z využití vícehodnotových logik je právě možnost zachycení tohoto způsobu uvažování. Obecně se dá uvažovat dokonce o logikách, kde je počet pravdivostních hodnot nekonečný. Například si můžeme představit logiku, kde pravdivostní hodnoty jsou libovolná reálná čísla z intervalu [0, 1] reprezentující pravděpodobnost s jakou dané tvrzení platí. V tomto textu se dále vícehodnotovými logikami zabývat nebudeme a omezíme se na klasickou dvouhodnotovou logiku. Vraťme se nyní k tomu, jak sémantika přiřazuje význam jednotlivým symbolům, které se ve formuli nacházejí. Obecně to není tak, že by sémantika přiřazovala každému jednotlivému symbolu pevně jeden specifický konkrétní význam. Spíše je to tak, že sémantika specifikuje (a případně nějakým způsobem omezuje) možnosti, jak je možné každý jednotlivý symbol interpretovat. Například může být sémantikou určeno, že daný konkrétní symbol f nemůže reprezentovat libovolný objekt, ale že bude vždy reprezentovat funkci, která má dva argumenty. Sémantika ale nebude určovat, kterou konkrétní funkci symbol f reprezentuje. Pokud máme nějakou konkrétní logiku, sémantika této logiky nějakým způsobem určuje možné interpretace, při kterých je možné vyhodnotit pravdivost nebo nepravdivost jednotlivých formulí této logiky. Sémantika tedy obecně připouští mnoho různých interpretací, přičemž pravdivost nebo nepravdivost příslušné formule závisí na konkrétní interpretaci. Obecně může být tvrzení vyjádřené danou formulí v některých interpretacích pravdivé a v jiných zase nepravdivé. To, ve kterých interpretacích je formule pravdivá a ve kterých nepravdivá, je pak určeno příslušnou sémantikou.
38 Pojem „interpretaceÿ je v této sekci použit poněkud volně. Interpretace je zde chápána jako přiřazení konkrétních specifických významů jednotlivým symbolům, například přiřazení konkrétních objektů symbolům, které tyto objekty ve formulích reprezentují. Pro názornost si například můžeme představit, že daná interpretace symbolu f přiřadí význam, že f reprezentuje funkci, která reálným číslům x a y přiřazuje hodnotu 3x − y 2 , symbolu g zase přiřadí nějakou jinou funkci, a tak dále pro všechny ostatní symboly. Jiná interpretace by symbolu f přiřadila třeba funkci f (x, y) = x3 + y, která by pro změnu nebyla definována na reálných číslech, ale na přirozených, a další interpretace by symbolu f přiřadila nějakou úplně jinou funkci. Poznámka: Jak bylo uvedeno, pojem interpretace je zde použit dosti volně. V případě konkrétních logik se často používá poněkud jiné názvosloví, konkrétně se v závislosti na tom, o jakou logiku se jedná, mluví například o interpretačních strukturách, valuacích, pravdivostních ohodnoceních apod. Tyto pojmy budou v rámci tohoto textu popsány později. Jak jsme viděli, ve výrokové logice jsou atomické formule tvořeny atomickými tvrzeními z nějaké dané množiny atomických tvrzení At. Interpretace je pak přiřazení pravdivostních hodnot všem atomickým tvrzením z množiny At. U výrokové logiky se v této souvislosti často místo pojmu „interpretaceÿ používá pojem pravdivostní ohodnocení, ale to v této chvíli není příliš důležité. Pokud například máme množinu atomických tvrzení {p, q, r}, jedna z možných interpretací například přiřadí symbolu p pravdivostní hodnotu 0, symbolu q pravdivostní hodnotu 1 a symbolu r hodnotu 0. Důležité je, že jednotlivá atomická tvrzení jsou naprosto nezávislá v tom smyslu, že to, jakou pravdivostní hodnotu má jedno atomické tvrzení, nijak neovlivňuje, jaké pravdivostní hodnoty je možné přiřadit ostatním atomickým tvrzením. V případě predikátové logiky je popis toho, jak vypadají jednotlivé interpretace, poněkud složitější a budeme se tím zabývat později. Zatím jen uveďme, že v případě predikátové logiky se popis interpretace skládá z toho, jaká je množina objektů, o kterých se formule vyjadřují, a jaké relace a funkce na této množině jsou přiřazeny jednotlivým symbolům, které se ve formuli vyskytují. Poznamenejme, že v případě predikátové logiky už jednotlivé atomické formule úplně vzájemně nezávislé nejsou. Pokud bychom zvolili interpretaci, kde se pracuje s množinou přirozených čísel, a která symbolům = a > přiřadí jejich „standardníÿ význam, tj. rovnost a větší než, a číslům také jejich standardní význam (tj. například, že 5 označuje číslo pět), tak například pokud platí c = 5, tak musí platit i c > 0. Jak již bylo řečeno, sémantika nějaké dané logiky obecně připouští mnoho různých interpretací. Někdy, jako například v případě výrokové logiky, kde uvažujeme nějakou konečnou množinu atomických tvrzení At, jako třeba {p, q, r}, může být možných interpretací konečný počet (protože existuje jen konečný počet možností, jak symbolům p, q a r přiřadit pravdivostní hodnoty 0 a 1). Tyto případy jsou ale spíše výjimečné a pro většinu logik příslušná sémantika připouští nekonečně mnoho různých interpretací. Například i v případě výrokové logiky je možné uvažovat nekonečnou množinu atomických tvrzení At, takže pak existuje nekonečný počet možností, jak přiřadit tvrzením z této množiny pravdivostní hodnoty 0 a 1. Pokud se mluví o nějaké konkrétní logice a její sémantice, často se používá následující notace. Řekněme, že I je nějaká jedna konkrétní interpretace přípustná podle sémantiky dané logiky (ať už je touto konkrétní interpretací cokoliv) a A zase nějaké jedna konkrétní formule dané
3.3
Sémantika formulí
39
logiky. Zápis I |= A
označuje, že při interpretaci I formule A platí (že formule A je pravdivá v interpretaci I), neboli jinak řečeno, že při interpretaci I má formule A pravdivostní hodnotu 1. Podobně zápis I 6|= A se používá pro označení toho, že při interpretaci I formule A neplatí (má při této interpretaci pravdivostní hodnotu 0). Interpretacím I, pro které platí I |= A, tj. interpretacím, ve kterých platí formule A, se říká modely formule A. Při popisu sémantiky se pak většinou postupuje tak, že to, kdy platí I |= A, je definováno na základě struktury formule A. Typicky se nejprve definuje, kdy při dané interpretaci I platí jednotlivé atomické formule, a při definici toho, kdy platí formule, které jsou složeny z nějakých menších podformulí, se pak platnost nebo neplatnost těchto větších formulí při interpretaci I definuje na základě platnosti nebo neplatnosti podformulí, ze kterých jsou složeny. V logikách, které obsahují logické spojky ¬, ∧, ∨, →, ↔, ⊥ a ⊤, je pak sémantika těchto logických spojek definována například nějak takto: • • • • • • •
I |= ¬A platí právě tehdy, když I 6|= A. I |= A ∧ B platí právě tehdy, když I |= A a I |= B. I |= A ∨ B platí právě tehdy, když I |= A nebo I |= B. I |= A → B platí právě tehdy, když I 6|= A nebo I |= B. I |= A ↔ B platí právě tehdy, když I |= A a I |= B, nebo když I 6|= A a I 6|= B. I |= ⊥ neplatí nikdy (tj. vždy platí I 6|= ⊥). I |= ⊤ platí vždy.
V případě výrokové logiky stačí k těmto pravidlům doplnit pravidlo, které říká, že atomické tvrzení p je v interpretaci I pravdivé právě tehdy, když mu tato interpretace přiřadí pravdivostní hodnotu 1 (tj. I |= p, pokud má p při interpretaci I pravdivostní hodnotu 1, a I 6|= p, pokud má p při interpretaci I pravdivostní hodnotu 0). Tímto způsobem tedy teď máme popsánu celou sémantiku výrokové logiky. Symbol |= se dále používá ještě v následujících dvou významech, které jsou poněkud odlišné od výše uvedeného významu, kdy symbol |= označuje, že formule je pravdivá v dané interpretaci. Prvním z těchto dalších dvou významů je označení toho, že formule logicky vyplývá z nějakých předpokladů. Zastavme se na chvíli u toho, co přesně to znamená, že formule logicky vyplývá z daných předpokladů. Řekněme A1 , A2 , . . . , An jsou nějaké formule představující předpoklady a B je nějaká další formule. Řekneme, že formule B logicky vyplývá z předpokladů A1 , A2 , . . . , An , jestliže vždy, když platí všechny předpoklady A1 , A2 , . . . , An , tak platí i formule B. Slovem „vždyÿ v předchozí větě je myšleno v každé interpretaci. Přesná definice logického vyplývání je tedy taková, že B logicky vyplývá z předpokladů A1 , A2 , . . . , An , jestliže v každé interpretaci I takové, že pro každý předpoklad Ai platí I |= Ai (tj. pro kterou platí I |= A1 , I |= A2 , . . . , I |= An ), platí také I |= B. Pro označení toho, že B logicky vyplývá z předpokladů A1 , A2 , . . . , An se používá zápis A1 , A2 , . . . , An |= B .
Někdy může být výhodné se dívat na předpoklady jako na množinu formulí. Pokud tedy Γ je nějaká množina formulí, zápis Γ |= B
40 znamená, že B logicky vyplývá z množiny předpokladů Γ, tedy, že pro každou interpretaci I, ve které platí všechny předpoklady z Γ (tj. kde pro každé A ∈ Γ platí I |= A), platí i I |= B. To, že se díváme na předpoklady jako na množinu má i tu výhodu, že se není třeba omezovat jen na konečné množiny předpokladů, ale je klidně možné uvažovat i nekonečné množiny formulí. S trochou nadsázky se dá říct, že velká část (pokud ne většina) problémů a otázek, které se řeší v matematice, je buď typu zjistit, jestli platí I |= B, kde I je nějaká konkrétní interpretace a B nějaké konkrétní tvrzení, nebo typu zjistit, jestli platí Γ |= B, kde Γ je nějaká množina tvrzení a B nějaké jedno tvrzení. Zhruba se dá říct, že úlohy typu zjistit, jestli platí I |= B, více odpovídají konkrétním příkladům, a úlohy typu zjistit, jestli platí Γ |= B, zase spíše odpovídají tomu, zjistit, zda platí nějaká obecnější tvrzení. Pokud má daná logika dostatečnou vyjadřovací sílu k tomu, aby se v ní daly zformulovat různé obecné (a obtížné) matematické problémy (což není případ výrokové logiky, ale je to případ predikátové logiky), nelze asi očekávat, že by se na otázky jako, jestli platí I |= B nebo jestli platí Γ |= B, dalo vždy nějak snadno odpovědět nebo, že by dokonce existovat nějaký obecný mechanický postup, který by vedl ke zjištěni správné odpovědi. Oba výše zmíněné typy úloh jsou v obecnosti hodně obtížné, to ale neznamená, že se v konkrétních případech na ně nedá odpovědět. Záleží samozřejmě na konkrétním případě, ale zhruba se dá říct, že úlohy druhého typu (tj. zjistit, zda něco platí za nějakých předpokladů), bývají většinou obtížnější než úlohy prvního typu (tj. zjistit, zda v konkrétním případě něco platí). Jaké jsou možnosti, pokud se chceme přesvědčit o tom, že platí nebo neplatí Γ |= B? Pokud Γ |= B neplatí, stačí se zaměřit na hledáni nějaké interpretace I, ve které platí všechny formule z Γ a zároveň neplatí B. Taková interpretace pak představuje protipříklad, který ukazuje, že formule B z předpokladů Γ nevyplývá. Oproti tomu zdůvodnit, že B platí v každé interpretaci, ve které platí předpoklady Γ, může být o dost zapeklitější problém, protože takových interpretací může být hodně, často i nekonečně mnoho. Prostředkem, který se dá použít pro takové zdůvodnění, může být matematický důkaz. Důkazy se budeme zabývat o něco podrobněji v následující sekci. Třetím významem, ve kterém se používá symbol |=, je označení toho, že nějaká formule je vždy pravdivá, tj. je pravdivá ve všech interpretacích. Takové formule se nazývají tautologie. Formule B je tedy tautologie, což se označuje zápisem |= B ,
jestliže pro každou interpretaci I platí I |= B. Vzhledem k tomu, že pro prázdnou množinu předpokladů a libovolnou interpretaci I platí, že všechny předpoklady z této prázdné množiny předpokladů platí v I (protože tam žádné nejsou), dá se pojem tautologie charakterizovat také tak, že B je tautologie, jestliže logicky vyplývá z prázdné množiny předpokladů, tj. pokud platí ∅ |= B. Na otázku, zda platí |= B se tedy lze dívat jako na speciální případ otázky, zda platí Γ |= B (speciální případ, kde Γ = ∅). Čtenáře by mohlo napadnout, jestli tento speciální případ nebude náhodou z hlediska řešení o něco jednodušší než obecný případ, kdy se ptáme, jestli platí Γ |= B pro nějakou (neprázdnou) množinu Γ. Ukazuje se však, že tomu tak většinou není. Konkrétně, pokud pro danou logiku platí, že Γ, A |= B
právě tehdy, když
Γ |= A → B ,
3.4
Dedukční systémy
41
což pro řadu logik platí (toto tvrzení se často označuje jako (sémantická) věta o dedukci ), je možné přeformulovat otázku zjistit, zda platí A1 , A2 , . . . , An |= B , na otázku, zda A1 → (A2 → (· · · (An → B))) je tautologie. Formule se nazývá kontradikce, jestliže neplatí v žádné interpretaci, tj. jestliže je vždy nepravdivá. Formule B je tedy kontradikce, jestliže pro každou interpretaci I platí I 6|= B. Pojmy tautologie a kontradikce jsou spolu úzce svázány. Čtenáři by nemělo činit problém si promyslet, že B je tautologie právě tehdy, když ¬B je kontradikce, a naopak, že B je kontradikce právě tehdy, když ¬B je tautologie. Podobně jako v případě tautologie se otázka ohledně logického vyplývání dá přeformulovat jako otázka, zda určitá formule je kontradikce. Konkrétně otázka, zda platí A1 , A2 , . . . , An |= B , dá převést na otázku, zda A1 ∧ A2 ∧ · · · ∧ An ∧ ¬B je kontradikce. Zjišťování, zda je nějaká formule kontradikce, je tedy obecně také obtížný problém. Formule B je splnitelná, jestliže existuje model této formule, tj. jestliže existuje nějaká interpretace I taková, že I |= B. Z předchozích definic je asi jasné, že B je splnitelná právě tehdy, když není kontradikce (a není splnitelná právě tehdy, když je kontradikce). Otázky týkající se toho, zda je daná formule splnitelná nebo kontradikce, se tedy ptají v zásadě na totéž, jenom je to pokaždé trochu jinak formulováno. Posledním důležitým pojmem týkajícím se sémantiky, u kterého se teď zastavíme, je pojem logické ekvivalence. Formule A a B jsou logicky ekvivalentní, jestliže mají v každé interpretaci stejnou pravdivostní hodnotu, tj. jestliže pro každou interpretaci I platí, že I |= A platí právě tehdy, když platí I |= B. To, že formule A a B jsou logicky ekvivalentní se označuje zápisem A⇔B. Alternativní možností, jak definovat pojem logické ekvivalence, je říct, že A ⇔ B platí právě tehdy, když A |= B a zároveň B |= A, tj. když v každé interpretaci, ve které platí A, platí i B, a současně v každé interpretaci, ve které platí B platí i A. Intuitivně logická ekvivalence odpovídá tomu, že dvě formule jsou logicky ekvivalentní, jestliže říkají obě jiným způsobem totéž. Vzhledem k tomu, že A ⇔ ⊤ platí právě tehdy, když |= A, nedá se čekat, že by zjišťování toho, zda jsou dvě formule logicky ekvivalentní, bylo nějak výrazně jednodušší než zjišťování, zda je daná formule tautologie (resp. než zjišťování, zda daná formule logicky vyplývá ze zadaných předpokladů).
3.4
Dedukční systémy
Odvozovací nebo také dedukční systém je soustava pravidel, pomocí kterých je možné vytvářet důkazy tvrzení zapsaných formulemi v nějaké konkrétní logice. Různých dedukčních systémů
42
Assm:
∧i: ∨i1 :
Γ, A, ∆ ⊢ A
Γ⊢A Γ⊢B Γ⊢A∧B
Γ⊢A Γ⊢A∨B
Γ⊢B Γ⊢A∨B
Γ⊢ A∧B Γ⊢A
∧e1 : ∨e:
Γ⊢A∨B
∧e2 : Γ, A ⊢ C Γ⊢C
Γ⊢ A∧B Γ⊢B Γ, B ⊢ C
Γ, A ⊢ B Γ⊢A→B
→ e:
Γ⊢A→B Γ⊢B
Γ⊢A
Γ, A ⊢ B Γ, B ⊢ A Γ⊢A↔B
↔ e1 :
Γ⊢A↔B Γ⊢B
Γ⊢A
↔ e2 :
Γ⊢A↔B Γ⊢A
Γ⊢B
→ i: ↔ i:
∨i2 :
Γ⊢A (Γ ⊆ Γ′ ) Γ′ ⊢ A
Ant:
¬i: ⊤i:
Γ, A ⊢ ⊥ Γ ⊢ ¬A
¬e:
Γ ⊢ ¬A Γ⊢A Γ⊢⊥ ⊥e:
⊢⊤
¬¬e:
Γ⊢⊥ Γ⊢A Γ ⊢ ¬¬A Γ⊢A
Obrázek 3.2: Základní pravidla pro logické spojky existuje nepřeberné množství, ještě mnohem víc než různých logik, protože pro jednu a tutéž logiku může být zavedeno více různých dedukčních systémů. Jako typický příklad dedukčního systému si uveďme systém pro výrokovou logiku tvořený pravidly uvedenými na Obrázku 3.2. Jednotlivá pravidla tohoto systému byla podrobněji popsána v předchozí kapitole. Aby byl popis tohoto systému úplný, je třeba (mimo jiné) upřesnit, co v pravidlech reprezentují symboly A, B, C, Γ, apod. Konkrétně v případě systému pro výrokovou logiku například můžeme říct, že symboly A, B a C zastupují libovolné formule výrokové logiky a symboly Γ, Γ′ a ∆ libovolné konečné sekvence formulí výrokové logiky. Pokud se bavíme o různých dedukčních systémech, může být výhodné si příslušné dedukční systémy nějak pojmenovat. Konkrétně výše uvedený systém pro výrokovou logiku budeme v dalším textu označovat ND0 (z anglického „natural deductionÿ – přirozená dedukce). Pokud máme nějaký konkrétní dedukční systém D, mělo by být z jeho popisu jasné, jak přesně vypadají tvrzení, která se pomocí systému D dají dokázat, a jak přesně vypadají důkazy v tomto systému. Pokud se mluví o nějakém dedukčním systému D pro odvozování důkazů tvrzení zapsaných formulemi nějaké logiky, zápisem Γ ⊢D A ,
3.4
Dedukční systémy Γ, A ⊢ B
Ctr:
CtrA:
Γ, A ⊢ ¬B Γ ⊢ ¬A
Γ⊢A
CtrN:
¬¬i: Cp (b):
Γ, ¬A ⊢ B Γ, ¬B ⊢ A
Cp (c): Γ⊢A
Γ, ¬A ⊢ B
Γ ⊢ ¬A Γ⊢B
Γ, A ⊢ B Γ, ¬B ⊢ ¬A
Cp (a):
Ch:
43
Cp (d):
Γ, A ⊢ B Γ⊢B
PC:
Γ, A ⊢ B
Γ, ¬A ⊢ ¬B Γ⊢A
Γ⊢A Γ ⊢ ¬¬A Γ, A ⊢ ¬B Γ, B ⊢ ¬A Γ, ¬A ⊢ ¬B Γ, B ⊢ A Γ, ¬A ⊢ B Γ⊢B
Obrázek 3.3: Některá užitečná odvozená pravidla kde Γ je nějaká libovolná (případně i nekonečná) množina formulí dané logiky a A je nějaká formule této logiky, se označuje to, že v rámci dedukčního systému D se dá z předpokladů obsažených v množině Γ dokázat formule A. Konkrétně například v případě systému ND0 můžeme říct, že důkaz v rámci tohoto systému je libovolná konečná posloupnou sekventů, kde každý jednotlivý sekvent je tvaru A1 , A2 , . . . , An ⊢ B , kde A1 , A2 , . . . , An , B jsou formule výrokové logiky, a kde tento sekvent vznikl aplikací některého pravidla z Obrázku 3.2 na některé sekventy, které jsou v důkaze před ním. Důkaz sekventu A1 , A2 , . . . , An ⊢ B je libovolný důkaz končící tímto sekventem. Pro libovolnou množinu formulí výrokové logiky Γ a libovolnou formuli výrokové logiky A pak platí Γ ⊢ND0 B právě tehdy, jestliže v systému ND0 existuje důkaz nějakého sekventu A1 , A2 , . . . , An ⊢ B, kde všechny formule A1 , A2 , . . . , An jsou z množiny Γ (ale ne všechny formule z Γ se musí vyskytovat mezi formulemi A1 , A2 , . . . , An ). Poznamenejme, že ne všechny odvozovací systémy pracují se sekventy. V řadě dedukčních systémů se pracuje přímo s formulemi (tj. premisy a závěry jednotlivých pravidel jsou tvořeny formulemi, ne sekventy). Musí se pak specifikovat, co přesně to znamená, že nějaká formule se dá v rámci daného systému odvodit z nějakých předpokladů. Jak jsme viděli dříve, s využitím určitých základních pravidel se dají v rámci daného dedukčního systému odvodit další odvozená pravidla, na která se pak můžeme dívat jako na „zkratkyÿ reprezentující určité posloupnosti kroků v původním systému. Například jsme viděli, že v rámci systému ND0 se dají odvodit jako odvozená pravidla pravidla uvedená na Obrázku 3.3. Uveďme nyní několik vlastností, u kterých je většinou žádoucí, aby je daný dedukční systém měl.
44 Řekněme, že máme dán nějaký konkrétní dedukční systém D a nějakou konkrétní sémantiku, která určuje, kdy jsou formule dané logiky pravdivé, kdy daná formule logicky vyplývá z daných předpokladů, atd. Dedukční systém D je korektní, jestliže pro každou formuli ϕ a každou množinu formulí Γ platí, že pokud Γ ⊢D ϕ,
potom
Γ |= ϕ .
Jinými slovy korektnost daného systému znamená, že pokud se dá něco v rámci tohoto systému odvodit, tak to skutečně platí. V rámci systému se tedy nedá odvodit nic, co by ve skutečnosti neplatilo. Mohou ale existovat tvrzení, která sice platí, ale která se v rámci daného systému nedají odvodit. Dedukční systém D je úplný, jestliže pro každou formuli ϕ a každou množinu formulí Γ platí, že pokud Γ |= ϕ,
potom
Γ ⊢D ϕ .
Úplnost systému tedy znamená, že všechno, co platí, se dá také v rámci daného systému odvodit. Jak korektnost tak úplnost jsou vlastnosti dedukčního systému, které se vždy vztahují k nějaké sémantice. Další vlastnost, konzistence, která bude popsána v následujícím odstavci, se týká dedukčního systému jako takového a netýká se sémantik. Dedukční systém D je konzistentní, jestliže neexistuje žádná formule ϕ, pro kterou by zároveň platilo ⊢D ϕ i ⊢D ϕ. Systém tedy není konzistentní (je nekonzistentní) v případě, že se dá v rámci tohoto systému dokázat současně nějaká formule i její negace. Vzhledem k tomu, že nějaká formule nemůže současně platit i neplatit (a platit tedy její negace), je jasné, že pokud je systém nekonzistentní, tak je i nekorektní. V případě, že se v rámci daného systému D dá odvodit pravidlo CtrA (ze sporu se dá odvodit cokoliv), platí, že pokud je systém nekonzistentní, tak se v rámci tohoto systému dá dokázat libovolná formule, tj. pro každou formuli ϕ platí ⊢D ϕ. Samozřejmě, pokud se v rámci systému D dá dokázat každá formule, je možné v rámci tohoto systému dokázat i nějakou konkrétní formuli ϕ a její negaci ¬ϕ. Vidíme tedy, že pokud se v rámci systému D dá odvodit pravidlo CtrA, tak platí, že systém D je konzistentní právě tehdy, pokud existuje alespoň jedna formule, která se v rámci systému D nedá dokázat. Někdy tedy bývá konzistence definována tímto způsobem, tj. je definováno, že systém je konzistentní, pokud existuje alespoň jedna formule, která se v rámci tohoto systému nedá dokázat. Je asi jasné, že systém, který je nekorektní nebo dokonce nekonzistentní, je celkem neužitečný, protože když se v rámci takového systému něco dokáže, stejně nevíme, jestli to platí nebo ne. Na druhou stranu, pokud je systém konzistentní a korektní, ale není úplný, pořád může být takový systém velmi užitečný, protože cokoliv v něm dokážeme, tak skutečně platí. Obecně jsou otázky týkající se toho, zda je nějaký dedukční systém korektní, úplný a konzistentní, poměrně obtížné a patří mezi pokročilejší oblasti, které se v rámci logiky jako oboru studují. Záleží samozřejmě na konkrétní logice a konkrétním dedukčním systému, ale zhruba se dá říci, že dokazování úplnosti daného systému je většinou obtížnější než dokazování jeho korektnosti. V rámci tohoto textu se dále otázkami týkajícími se korektnosti, úplnosti a konzistence dedukčních systémů nebudeme podrobněji zabývat.
3.5
3.5
Tabulková metoda
45
Tabulková metoda
Řekněme, že máme nějakou formuli výrokové logiky ϕ, ve které vyskytují nějaká atomická tvrzení p1 , p2 , . . . , pn a žádná další atomická tvrzení Jako příklad si vezměme třeba formuli p ∧ (q → ¬r) ,
(∗)
ve které se vyskytují atomická tvrzení p, q a r. Pokud bychom u každého z tvrzení p, q, r věděli, jestli je toto tvrzení pravdivé nebo nebo nepravdivé (tj. jestli má pravdivostní hodnotu 1 nebo 0), mohli bychom určit pravdivostní hodnotu celého tvrzení na základě dříve uvedených tabulek pravdivostních hodnot pro jednotlivé logické spojky. Řekněme, že p platí, q neplatí a r platí, takže p a r mají pravdivostní hodnotu 1 a q pravdivostní hodnotu 0. Podle tabulky pro negaci má ¬r pravdivostní hodnotu 0 (protože r má pravdivostní hodnotu 1). Tvrzení q má pravdivostní hodnotu 0 a tvrzení ¬r má pravdivostní hodnotu 0, takže podle tabulky pro implikaci má q → ¬r pravdivostní hodnotu 1. Protože p má pravdivostní hodnotu 1 a (q → ¬r) také pravdivostní hodnotu 1, má podle tabulky pro konjunkci p ∧ (q → ¬r) pravdivostní hodnotu 1. Shrňme kroky z předchozího odstavce v následující tabulce: # 1. 2. 3. 4. 5. 6.
Tvrzení p q r ¬r q → ¬r p ∧ (q → ¬r)
Pravd. hodnota 1 0 1 0 1 1
Komentář předpoklad předpoklad předpoklad podle řádku 3 a tabulky pro ¬ podle řádků 2 a 4 a tabulky pro → podle řádků 1 a 5 a tabulky pro ∧
Vynecháme číslování a komentáře a napíšeme tutéž tabulku „naležatoÿ, tj. tak, že sloupce budou odpovídat podformulím formule p ∧ (q → ¬q), horní řádek bude obsahovat jednotlivé podformule a řádek pod ním pravdivostní hodnoty těchto podformulí: p 1
q 0
r 1
¬r 0
q → ¬r 1
p ∧ (q → ¬r) 1
Není problém doplnit do tabulky další řádky odpovídající všem dalším možnostem, jak mohou atomická tvrzení p, q a r platit nebo neplatit: p 0 0 0 0 1 1 1 1
q 0 0 1 1 0 0 1 1
r 0 1 0 1 0 1 0 1
¬r 1 0 1 0 1 0 1 0
q → ¬r 1 1 1 0 1 1 1 0
p ∧ (q → ¬r) 0 0 0 0 1 1 1 0
Vzhledem k tomu, že pravdivostní hodnota formule výrokové logiky nezávisí na pravdivostních hodnotách atomických tvrzení, která se v ní nevyskytují, dává nám taková tabulka úplný
46 přehled o tom, jakých pravdivostních hodnot nabývá daná formule při jednotlivých pravdivostních ohodnoceních (tj. při jednotlivých interpretacích). Pokud například uvidíme, že ve sloupci tabulky odpovídající formuli ϕ jsou samé hodnoty 1, tj. že ve všech interpretacích je formule pravdivá, můžeme z toho hned vyvodit, že formule ϕ je tautologie. Podobně pokud uvidíme ve sloupečku formule ϕ samé hodnoty 0, můžeme z toho usoudit, že ϕ je kontradikce. Pokud sloupeček obsahuje alespoň jednu hodnotu 1, můžeme zase říct, že formule ϕ je splnitelná. Obecně se při použití tabulkové metody nemusíme omezovat jen na výrokovou logiku nebo jen na to, že zkoušíme všechna možná přiřazení pravdivostních hodnot atomickým tvrzením. Pokud je například nějaká formule ϕ sestavena z nějakých menších formulí A1 , A2 , . . . , An pomocí logických spojek, můžeme v tabulce vyzkoušet všechna možná pravdivostní ohodnocení podformulí A1 , A2 , . . . , An , tj. s podformulemi A1 , A2 , . . . , An , můžeme zacházet podobně jako s atomickými tvrzeními. Pokud ve sloupci formule ϕ vyjdou samé hodnoty 1, opět můžeme oprávněně prohlásit, že ϕ je tautologie, a podobně, pokud tam vyjdou samé hodnoty 0, můžeme oprávněně prohlásit, že ϕ je kontradikce. Ukážeme si to na příkladě formule ((A → B) → A) → A, u které pomocí tabulky dokážeme, že je to tautologie, ať už formule A a B vypadají jakkoliv: A 0 0 1 1
B 0 1 0 1
A→B 1 1 0 1
(A → B) → A 0 0 1 1
((A → B) → A) → A 1 1 1 1
Na druhou stranu, pokud ve sloupci formule ϕ vyjdou jak hodnoty 1, tak hodnoty 0, nelze v tomto případě o formuli nic říct. Pořád ještě může platit, že ϕ je tautologie nebo kontradikce, ale my to z tabulky nepoznáme. Problém je zde v tom, že v případě, kdy A1 , A2 , . . . , An nejsou atomická tvrzení, tak ne každé přiřazení pravdivostních hodnot těmto proměnným musí být možné. Pokud si například vezmeme formuli p ∧ ¬p, jedná se zjevně o kontradikci. Pokud bychom ji ale rozložili na podformuli A, která by odpovídala podformuli p, a podformuli B, která by odpovídala podformuli ¬p. Podle tabulky pro formuli A ∧ B by to pak na první pohled vypadalo, že tato formule je splnitelná, protože má pravdivostní hodnotu jedna v případě, že A i B mají pravdivostní hodnotu 1. Toto ovšem není možné, protože p a ¬p nemohou mít současně pravdivostní hodnotu 1. Tabulková metoda, tak jak byla popsána, se odvolávala na sémantiku logických spojek. Ve skutečnosti je možné tabulkovou metodu rovněž „simulovatÿ v rámci důkazů, které nepracují přímo s pravdivostními hodnotami, ale pouze používají dříve zavedená pravidla pro logické spojky. Vezměme si například tabulku pravdivostních hodnot pro konjunkci:
3.5
Tabulková metoda
47 A 0 0 1 1
B 0 1 0 1
A∧B 0 0 0 1
První řádek této tabulky říká, že pokud neplatí A a neplatí B, tak A∧B neplatí, druhý řádek, že pokud neplatí A a platí B, tak A ∧ B neplatí, atd. Pokud uvažujeme klasickou dvouhodnotovou logiku, kde každé tvrzení buď platí (má pravdivostní hodnotu 1) nebo neplatí (má pravdivostní hodnotu 0), můžeme to, že tvrzení A platí, vyjádřit formulí A, a to, že tvrzení A neplatí, vyjádřit formulí ¬A. Pokud tedy z nějakých předpokladů Γ odvodíme, že za těchto předpokladů A neplatí (tj. odvodíme sekvent Γ ⊢ ¬A), a také, že za těchto předpokladů B neplatí (tj. odvodíme sekvent Γ ⊢ ¬B), a chtěli bychom na základě prvního řádku tabulky pro konjunkci prohlásit, že za předpokladů Γ tedy neplatí ani A ∧ B (tj. platí ¬(A ∧ B)), mohli tento krok v argumentaci reprezentovat pravidlem Γ ⊢ ¬A Γ ⊢ ¬B . a) Γ ⊢ ¬(A ∧ B)
Toto pravidlo tedy v určitém smyslu reprezentuje to, co je uvedeno v prvním řádku tabulky pro konjunkci. Analogicky je možné informaci zachycenou v dalších třech řádcích tabulky reprezentovat pomocí následujících tří pravidel: b)
Γ ⊢ ¬A Γ⊢B Γ ⊢ ¬(A ∧ B)
c)
Γ⊢A Γ ⊢ ¬B Γ ⊢ ¬(A ∧ B)
d)
Γ⊢A Γ⊢B Γ⊢A∧B
Všechna tato čtyři pravidla se dají dokázat pomocí již dříve zavedených pravidel. Například je hned vidět, že pravidlo (d) je přímo pravidlo pro zavedení konjunkce (∧i). Pravidla (a) a (b) se dají snadno vyvodit z následujícího pravidla Γ ⊢ ¬A , Γ ⊢ ¬(A ∧ B) které se dá dokázat následujícím způsobem: 1. 2. 3. 4. 5.
Γ ⊢ ¬A Γ, A ∧ B ⊢ A ∧ B Γ, A ∧ B ⊢ A Γ, A ∧ B ⊢ ¬A Γ ⊢ ¬(A ∧ B)
(premisa) (Assm) (∧e1 2) (Ant 1) (Ctr 3,4)
Podobně se dokáže i pravidlo (c). Podobně můžeme vytvořit pravidla odpovídající jednotlivým řádkům tabulek pravdivostních hodnot pro další logické spojky. Konkrétně například čtyři řádky tabulky pro disjunkci (∨) je možné reprezentovat následujícími čtyřmi pravidly: a) c)
Γ ⊢ ¬A Γ ⊢ ¬B Γ ⊢ ¬(A ∨ B)
Γ⊢A Γ ⊢ ¬B Γ⊢A∨B
b) d)
Γ ⊢ ¬A Γ⊢B Γ⊢A∨B Γ⊢A Γ⊢B Γ⊢A∨B
48 Pravidla (b), (c) a (d) se odvodí prakticky v jednom kroku pomocí pravidel ∨i1 a ∨i2 . Důkaz pravidla (a) je o něco komplikovanější: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Γ ⊢ ¬A Γ ⊢ ¬B Γ, A ∨ B ⊢ A ∨ B Γ, A ∨ B, A, A ∨ B ⊢ A Γ, A ∨ B, A, A ∨ B ⊢ ¬A Γ, A ∨ B, A ⊢ ¬(A ∨ B) Γ, A ∨ B, B, A ∨ B ⊢ B Γ, A ∨ B, B, A ∨ B ⊢ ¬B Γ, A ∨ B, B ⊢ ¬(A ∨ B) Γ, A ∨ B ⊢ ¬(A ∨ B) Γ ⊢ ¬(A ∨ B)
(premisa) (premisa) (Assm) (Assm) (Ant 1) (Ctr 4,5) (Assm) (Ant 2) (Ctr 7,8) (∨e 3,6,9) (Ctr 3,10)
Následující čtyři pravidla zase odpovídají jednotlivým řádkům tabulky pravdivostních hodnot pro implikaci (→): a) c)
Γ ⊢ ¬A Γ ⊢ ¬B Γ⊢A→B
Γ⊢A Γ ⊢ ¬B Γ ⊢ ¬(A → B)
b) d)
Γ ⊢ ¬A Γ⊢B Γ⊢A→B
Γ⊢A Γ⊢B Γ⊢A→B
Pravidla (b) a (d) se odvodí velice snadno s využitím pravidla → i. Konkrétní odvození je ponecháno čtenáři jako cvičení. Pravidla (a) a (c) se dají dokázat následovně:
1. 2. 3. 4. 5.
Γ ⊢ ¬A Γ, A ⊢ A Γ, A ⊢ ¬A Γ, A ⊢ B Γ⊢A→B
(premisa) (Assm) (Ant 1) (CtrA 2,3) (→ i 4)
1. 2. 3. 4. 5. 6. 7.
Γ⊢A Γ ⊢ ¬B Γ, A → B ⊢ A → B Γ, A → B ⊢ A Γ, A → B ⊢ B Γ, A → B ⊢ ¬B Γ ⊢ ¬(A → B)
(premisa) (premisa) (Assm) (Ant 1) (→ e 3,4) (Ant 2) (Ctr 5,6)
Poznámka: V důkaze pravidla (a) není využita premisa Γ ⊢ ¬B, stejný důkaz se tedy dá použít i pro odvození pravidla (b). Pravidla odpovídající řádkům tabulky pravdivostních hodnot pro ekvivalenci (↔) vypadají takto: a) c)
Γ ⊢ ¬A Γ ⊢ ¬B Γ⊢A↔B
Γ⊢A Γ ⊢ ¬B Γ ⊢ ¬(A ↔ B)
Pravidla (a) a (b) se dokáží následovně:
b) d)
Γ ⊢ ¬A Γ⊢B Γ ⊢ ¬(A ↔ B)
Γ⊢A Γ⊢B Γ⊢A↔B
3.5
Tabulková metoda 1. 2. 3. 4. 5. 6. 7. 8. 9.
Γ ⊢ ¬A Γ ⊢ ¬B Γ, A ⊢ A Γ, A ⊢ ¬A Γ, A ⊢ B Γ, B ⊢ B Γ, B ⊢ ¬B Γ, B ⊢ A Γ⊢A↔B
49
(premisa) (premisa) (Assm) (Ant 1) (CtrA 3,4) (Assm) (Ant 2) (CtrA 6,7) (↔ i 5,8)
1. 2. 3. 4. 5. 6. 7.
Γ ⊢ ¬A Γ⊢B Γ, A ↔ B ⊢ A ↔ B Γ, A ↔ B ⊢ B Γ, A ↔ B ⊢ A Γ, A ↔ B ⊢ ¬A Γ ⊢ ¬(A ↔ B)
(premisa) (premisa) (Assm) (Ant 2) (↔ e2 3,4) (Ant 1) (Ctr 5,6)
Pravidlo (c) se dokáže podobně jako pravidlo (b). Pravidlo (d) se snadno odvodí pomocí pravidla ↔ i. Příslušné odvození je ponecháno čtenáři jako cvičení. Připomeňme si, jak vypadá tabulka pravdivostních hodnot pro negaci (¬): ¬A 1 0
A 0 1
První řádek této tabulky říká, že pokud neplatí A (tj. pokud platí ¬A), tak platí ¬A. Tomuto řádku tedy odpovídá pravidlo, které říká, že pokud se dá odvodit sekvent Γ ⊢ ¬A, tak se dá odvodit sekvent Γ ⊢ ¬A. Toto je ovšem triviální a žádné kroky důkazu není v tomto případě třeba provádět. Druhý řádek tabulky říká, že pokud platí A, tak neplatí ¬A (tj. platí ¬¬A). Tomu odpovídá pravidlo, které umožní ze sekventu Γ ⊢ A odvodit sekvent Γ ⊢ ¬¬A, což není nic jiného než již dříve zavedené pravidlo ¬¬i. Čtenář si jistě sám snadno odvodí sekventy Γ ⊢ ¬⊥ a Γ ⊢ ⊤ pro libovolné předpoklady Γ. Vidíme tedy, že dříve uvedená pravidla pro logické spojky v sobě v jistém smyslu obsahují informaci o tabulkách pravdivostních hodnot pro jednotlivé logické spojky. Vidíme také, že pokud mají být všechna tato pravidla korektní, tak tabulky nemohou vypadat jinak, než vypadají. Řekněme, že nějaká formule ϕ je složena z podformulí A1 , A2 , . . . , An pomocí logických spojek a pro každou možnost, jak platí nebo neplatí podformule A1 , A2 , . . . , An se podaří formuli ϕ odvodit, pokud přidáme odpovídající formule A1 , A2 , . . . , An nebo jejich negace jako dodatečné předpoklady, což by odpovídalo vyhodnocení tabulky, kde zkoušíme všechny možnosti, jak mohou formule A1 , A2 , . . . , An platit nebo neplatit, kde jsou ve sloupci odpovídajícím formuli ϕ samé hodnoty 1. Opakovaným použitím pravidla PC pak můžeme odvodit formuli ϕ i bez použití těchto dodatečných předpokladů. Obecně, když odvodíme Γ, L1 , L2 , . . . , Ln−1 , An ⊢ ϕ
a
Γ, L1 , L2 , . . . , Ln−1 , ¬An ⊢ ϕ ,
kde Li je vždy Ai nebo ¬Ai , můžeme z toho použitím pravidla PC odvodit Γ, L1 , L2 , . . . , Ln−1 ⊢ ϕ . Opakováním tohoto postupu pak postupně dospějeme až k dokázání sekventu Γ ⊢ ϕ.
50
3.6
Ekvivalentní úpravy
Formule A a B jsou dokazatelně ekvivalentní, jestliže zároveň platí A ⊢ B i B ⊢ A. Pro označení toho, že formule A a B jsou dokazatelně ekvivalentní budeme v dalším textu používat zápis A ⊣⊢ B. Jestliže je daný dedukční systém korektní, tak každé dvě formule, které jsou dokazatelně ekvivalentní jsou také logicky ekvivalentní, tj. z A ⊣⊢ B plyne A ⇔ B. Pokud je dedukční systém navíc úplný, tak se dá v rámci tohoto systému pro každé dvě logicky ekvivalentní formule dokázat, že jsou ekvivalentní, tj. v případě úplného dedukčního systému platí, že pokud A ⇔ B, tak A ⊣⊢ B. Není těžké dokázat, že A ⊣⊢ B platí právě tehdy, když ⊢ A ↔ B. Protože díky pravidlu Assm platí A ⊢ A pro libovolné tvrzení A, platí pro tvrzení A také A ⊣⊢ A. Pokud platí A ⊣⊢ B, tak platí B ⊣⊢ A, protože, jak A ⊣⊢ B tak B ⊣⊢ A platí právě tehdy, když platí A ⊢ B a B ⊢ A. Pokud platí A ⊣⊢ B a B ⊣⊢ C, tak platí A ⊢ B, B ⊢ A, B ⊢ C a C ⊢ B. S využitím pravidla Ch se snadno ukáže, že A ⊢ C a C ⊢ A, takže A ⊣⊢ C. Pokud se nám tedy podaří najít posloupnost formulí A1 , A2 , . . . , An , kde platí A1 ⊣⊢ A2 , A2 ⊣⊢ A3 , . . . , An−1 ⊣⊢ An , tak také pro libovolné dvě formule Ai , Aj z této posloupnosti platí Ai ⊣⊢ Aj . Speciálně platí A1 ⊣⊢ An . Jednotlivým ekvivalencím v této posloupnosti kroků se říká ekvivalentní úpravy. V následujícím textu budeme většinou používat stručnější zápis, kdy místo A1 ⊣⊢ A2 , A2 ⊣⊢ A3 , . . . , An−1 ⊣⊢ An , budeme psát A1 ⊣⊢ A2 ⊣⊢ · · · ⊣⊢ An . Ekvivalentní úpravy mohou sloužit k tomu, že pomocí nich můžeme různé formule transformovat na ekvivalentní formule, které budou v nějakém tvaru, se kterým se bude v dané situaci lépe pracovat. V následujícím textu budou popsány některé jednoduché dokazatelné ekvivalence, které je možné často při ekvivalentních úpravách použít. Než se dostaneme k jednotlivým ekvivalencím, udělejme nyní drobnou odbočku týkající se pojmů jako jsou asociativita, komutativita a idempotence. Tyto pojmy se většinou používají v souvislosti s algebraickými operacemi. Vezměme si například nějakou operaci ◦, která vždy dvěma libovolným prvkům přiřazuje třetí prvek (tj. například prvkům x a y přiřadí prvek z, který označíme zápisem x ◦ y). Operace ◦ je: • asociativní, jestliže pro každé x, y a z platí (x ◦ y) ◦ z = x ◦ (y ◦ z), • komutativní, jestliže pro každé x a y platí x ◦ y = y ◦ x, • idempotentní, jestliže pro každé x platí x ◦ x = x. Na logické spojky se můžeme z jistého úhlu pohledu dívat jako na určitý druh operací, které pravdivostním hodnotám přiřazují pravdivostní hodnoty. Nemá asi moc smysl mluvit o rovnosti nějakých dvou formulí A a B (leda bychom měli na mysli to, že A a B jsou jedna a tatáž formule), můžeme místo toho ale uvažovat vztahy jako jsou ⇔ a ⊣⊢. Z hlediska těchto vztahů se některé logické spojky chovají podobně jako asociativní, komutativní nebo idempotentní operace. Pojmy jako asociativita, komutativita a idempotence se tedy běžně používají i v souvislosti s logickými spojkami, i když logické spojky v pravém slova smyslu operace
3.6
Ekvivalentní úpravy
51
nejsou a výsledné formule vzniklé aplikací těchto spojek na menší formule si ve skutečnosti nejsou rovny, ale jsou pouze logicky ekvivalentní nebo dokazatelně ekvivalentní. Následuje stručný přehled některých důležitých ekvivalencí, které je možné použít při ekvivalentních úpravách. Všechny tyto ekvivalence se dají celkem snadno dokázat. Pro dokázání toho, že platí A ⊣⊢ B můžeme použít buď tabulkovou metodu nebo můžeme zkusit rovnou najít nějaké co nejjednodušší důkazy sekventů A ⊢ B a B ⊢ A. Čtenáři je doporučeno, aby si vyzkoušel obě možnosti. (Některé níže uvedené ekvivalentní úpravy snadno vyplývají z toho, co již bylo dokázáno v předchozích sekcích.) Jednou z nejdůležitějších ekvivalentních úprav je A ⊣⊢ ¬¬A , která se dá dokázat velice snadno pomocí pravidel ¬¬i a ¬¬e. Spojky ∧, ∨ a ↔ jsou asociativní: (A ∧ B) ∧ C ⊣⊢ A ∧ (B ∧ C) (A ∨ B) ∨ C ⊣⊢ A ∨ (B ∨ C) (A ↔ B) ↔ C ⊣⊢ A ↔ (B ↔ C) Tyto tři spojky jsou také komutativní: A ∧ B ⊣⊢ B ∧ A
A ∨ B ⊣⊢ B ∨ A
A ↔ B ⊣⊢ B ↔ A
Spojky ∧ a ∨ jsou idempotentní: A ∧ A ⊣⊢ A
A ∨ A ⊣⊢ A
Cvičení 3.1: Zdůvodněte, že implikace (→) není ani asociativní, ani komutativní, ani idempotentní, a že ekvivalence (↔) není idempotentní. Pro ∧ a ∨ platí distributivní zákony: A ∧ (B ∨ C) ⊣⊢ (A ∧ B) ∨ (A ∧ C)
A ∨ (B ∧ C) ⊣⊢ (A ∨ B) ∧ (A ∨ C)
Důležitým typem ekvivalentních úprav jsou tak zvané De Morganovy zákony: ¬(A ∧ B) ⊣⊢ ¬A ∨ ¬B
¬(A ∨ B) ⊣⊢ ¬A ∧ ¬B
Konjunkce, resp. disjunkce, formulí A a ¬A je ekvivalentní formuli ⊥, resp. ⊤: A ∧ ¬A ⊣⊢ ⊥
A ∨ ¬A ⊣⊢ ⊤
Pomocí následujících ekvivalentních úprav je možné zjednodušovat formule obsahující podformule ⊥ a ⊤: ¬⊥ ⊣⊢ ⊤ ¬⊤ ⊣⊢ ⊥ A ∧ ⊥ ⊣⊢ ⊥ A ∧ ⊤ ⊣⊢ A A ∨ ⊥ ⊣⊢ A A ∨ ⊤ ⊣⊢ ⊤ A → ⊥ ⊣⊢ ¬A A → ⊤ ⊣⊢ ⊤ ⊥ → A ⊣⊢ ⊤ ⊤ → A ⊣⊢ A A ↔ ⊥ ⊣⊢ ¬A A ↔ ⊤ ⊣⊢ A
52 Ke zbavení se implikace mohou posloužit následující ekvivalentní úpravy: A → B ⊣⊢ ¬A ∨ B
¬(A → B) ⊣⊢ A ∧ ¬B
Podobně ke zbavení se ekvivalence je možné použít některou ze tří následujících ekvivalentních úprav: A ↔ B ⊣⊢ (A → B) ∧ (B → A) A ↔ B ⊣⊢ (A ∧ B) ∨ (¬A ∧ ¬B) A ↔ B ⊣⊢ (A ∨ ¬B) ∧ (¬A ∨ B) Existuje ještě další možnost, jak dokazovat ekvivalence, o které jsme se předtím nezmínili. Pokud už jsou některé ekvivalence dokázané, je možné dokázat další pomocí ekvivalentních úprav, kdy jsou pro ekvivalentní úpravy použity již dříve dokázané ekvivalence. Například, pokud už jsou dokázané ekvivalence A ⊣⊢ ¬¬A, A → B ⊣⊢ ¬A ∨ B a ¬(A ∨ B) ⊣⊢ ¬A ∧ ¬B, je možné dokázat ekvivalenci ¬(A → B) ⊣⊢ A ∧ ¬B pomocí ekvivalentních úprav takto: ¬(A → B) ⊣⊢ ¬(¬A ∨ B) ⊣⊢ ¬¬A ∧ ¬B ⊣⊢ A ∧ ¬B
Podobně, pokud už jsou dokázané ekvivalence A ⊣⊢ ¬¬A a ¬(A ∨ B) ⊣⊢ ¬A ∧ ¬B, je možné dokázat ekvivalenci ¬(A ∧ B) ⊣⊢ ¬A ∨ ¬B pomocí ekvivalentních úprav takto: ¬(A ∧ B) ⊣⊢ ¬(¬¬A ∧ B) ⊣⊢ ¬(¬¬A ∧ ¬¬B) ⊣⊢ ¬¬(¬A ∨ ¬B) ⊣⊢ ¬A ∨ ¬B
Podobným způsobem by se dalo dokázat i ¬(A ∨ B) ⊣⊢ ¬A ∧ ¬B pokud bychom naopak už měli dokázáno A ⊣⊢ ¬¬A a ¬(A ∧ B) ⊣⊢ ¬A ∨ ¬B. Uveďme, ještě příklad toho, jak se s použitím De Morganových zákonů a asociativity konjunkce (a odstraňování a přidávání dvojité negace) dá pomocí ekvivalentních úprav dokázat asociativita disjunkce: (A ∨ B) ∨ C ⊣⊢ ¬¬(A ∨ B) ∨ C ⊣⊢ ¬¬(A ∨ B) ∨ ¬¬C ⊣⊢ ¬(¬(A ∨ B) ∧ ¬C) ⊣⊢ ¬((¬A ∧ ¬B) ∧ ¬C) ⊣⊢ ¬(¬A ∧ (¬B ∧ ¬C)) ⊣⊢ ¬(¬A ∧ ¬(B ∨ C)) ⊣⊢ ¬¬(A ∨ (B ∨ C)) ⊣⊢ A ∨ (B ∨ C)
Kapitola 4
Kvantifikátory 4.1
Množiny
Jak již bylo řečeno, v matematických textech se pracuje s mnoha různými druhy objektů. Některé z nich mohou být jednoduché (primitivní, atomické) v tom smyslu, že se s nimi pracuje jako s nedělitelnými základními jednotkami, jiné mohou mít složitější strukturu. Co konkrétně je v rámci nějakého textu považováno za primitivní objekty a co za objekty s nějakou bohatější strukturou závisí samozřejmě na konkrétním textu a na oblasti, které se týká. Například v rámci matematické analýzy nebo lineární algebry se třeba většinou pracuje s reálnými nebo komplexními čísly jako s primitivními objekty a složitějšími objekty, které se zkoumají, jsou třeba funkce, matice nebo vektorové prostory, zatímco například z pohledu teorie množin jsou reálná čísla poměrně komplikované objekty vystavěné ne zcela triviálním způsobem pomocí různých relací a operací na množinách. Asi nejjednodušším druhem objektu, který má nějakou strukturu, je množina. Neformálně se na množinu můžeme dívat tak, že je to prostě nějaký soubor prvků, kde je nějakým způsobem dáno, které prvky do něj patří a které ne. Prvky množin nemusí být jen primitivní objekty, jako třeba čísla, ale mohou to být i další množiny, relace, funkce a podobně. Navíc není nikde řečeno, že všechny prvky množiny musí být stejného druhu. Například klidně můžeme pracovat s množinou, která obsahuje jako prvky jak přirozená čísla, tak množiny reálných čísel a kromě toho také funkce, které vždy dvojici reálných čísel přiřazují přirozené číslo. Typicky se při formulaci matematických tvrzení pracuje s prvky nějakých daných množin. Může se jednat o nějaké velmi konkrétní množiny, jako například o množinu všech přirozených čísel N = {0, 1, 2, . . .} nebo množinu {a, b, c} tvořenou blíže nespecifikovanými atomickými prvky a, b a c. Stejně tak ale můžeme pracovat s prvky nějaké množiny A, o které nevíme nic bližšího, než že je to množina. Samozřejmě, čím konkrétněji specifikujeme množiny a prvky, se kterými pracujeme, tím více různých tvrzení o nich můžeme zformulovat a případně dokázat. Na druhou stranu je pak většina těchto tvrzení specifických pro danou množinu. Pokud naopak od různých detailů abstrahujeme a na prvky a množiny, které zkoumáme, klademe co nejméně omezujících podmínek, pak vše, co dokážeme, platí pro jakékoliv množiny, pro které jsou tyto omezující podmínky splněny, a dokázané výsledky jsou obecnější. 53
54
4.2
Relace
Prvky, se kterými se pracuje a o kterých se tvrzení vyjadřují, mohou být v různých vzájemných vztazích. Příklady takových vztahů jsou třeba: • • • •
číslo x je menší než číslo y, přirozené číslo x je celočíselným dělitelem přirozeného čísla y, bod A leží na přímce p, číslo x je součtem čísel y a z.
První tři příklady vztahů jsou vztahy mezi dvěma prvky, ve čtvrtém příkladě se jedná o vztah mezi třemi prvky. Vztahy se tedy týkají dvojic, trojic, čtveřic nebo obecně n-tic prvků (kde n je nějaké přirozené číslo). Zdůrazněme, že se jedná o uspořádané n-tice. Tím je myšleno to, že na pořadí jednotlivých prvků v n-tici záleží. Uspořádané n-tice se obvykle zapisují tak, že jsou jednotlivé prvky zapsány v řadě za sebou a odděleny čárkami, a celá n-tice je uzavřena v kulatých nebo lomených závorkách. Například uspořádaná dvojice tvořena prvky x a y (v tomto pořadí), se zapisuje jako (x, y) nebo jako hx, yi. Uspořádaná n-tice tvořená prvky x1 , x2 , . . . , xn se tedy zapisuje jako (x1 , x2 , . . . , xn )
nebo
hx1 , x2 , . . . , xn i .
Na pořadí záleží v tom smyslu, že (x, y) je obecně něco jiného než (y, x). Pokud mluvíme o vztazích, je asi jasné, že pokud x a y jsou v daném vztahu, nijak z toho neplyne, že y a x musí být v tomto vztahu. Například pokud číslo x je dělitelem čísla y, číslo y může ale nemusí být dělitelem čísla x. Vztahy mezi prvky jsou v matematice zachyceny pomocí relací. Relace je množina těch ntic prvků, kde jsou v příslušném vztahu. Pokud například chceme reprezentovat vztah mezi přirozenými čísly, že jedno číslo je menší než druhé, můžeme ho reprezentovat jako množinu R tvořenou všemi uspořádanými dvojicemi přirozených čísel, kde první číslo je menší než druhé. Množina R bude tedy obsahovat právě ty dvojice (x, y), kde x je menší než y, jako třeba (0, 1), (0, 2), (3, 8), (1, 194) a dalších nekonečně mnoho dvojic. Naopak nebude obsahovat ty dvojice, kde x není menší než y, jako třeba (0, 0), (1, 0), (5, 5) nebo (10, 4). Množina všech uspořádaných dvojic, kde první prvek je z množiny A a druhý prvek je z množiny B, se nazývá kartézský součin množin A a B a označuje se zápisem A × B. Obecněji množina všech n-tic, kde první prvek je z množiny A1 , druhý prvek z množiny A2 , až n-tý prvek z množiny An , se nazývá kartézský součin množin A1 , A2 , . . . , An a označuje se zápisem A1 × A2 × · · · × An . Formálně se tedy dá říct, že relace je libovolná podmnožina nějaké množiny A1 ×A2 ×· · ·×An , kde A1 , A2 , . . . , An jsou nějaké množiny. To, že relace R je tvořena n-ticemi prvků, kde první prvek je z množiny A1 , druhý z množiny A2 , atd., až n-tý z množiny An , se tedy zapisuje pomocí notace pro podmnožinu: R ⊆ A1 × A2 × · · · × An Řekněme, že relace R je tvořena n-ticemi prvků, takže vyjadřuje vztahy mezi n prvky. Toto číslo n se nazývá arita relace R. Pokud máme například relaci, která vyjadřuje vztahy mezi
4.3
Funkce
55
dvojicemi prvků (tj. prvky této relace jsou dvojice prvků), je arita této relace 2 (říkáme také, že tato relace má aritu 2). Pokud máme relaci, která je tvořena trojicemi prvků, je arita této relace 3. Místo toho, aby se říkalo, že arita relace je 2, používá se formulace, že daná relace je binární. Místo toho, aby se říkalo, že arita relace je 3, používá se formulace, že daná relace je ternární. Obecně relace s aritou n je n-ární. Výše uvedená relace tvořená těmi dvojicemi přirozených čísel (x, y), kde x je menší než y, je tedy binární relace. Tuto relaci je možné si nějak pojmenovat, například ji můžeme nazvat relace „menší nežÿ. Relace tvořená těmi trojicemi čísel (x, y, z), pro která platí x = y + z, je zase příkladem ternární relace. Vzhledem k tomu, že relace jsou množiny, je možné pro vyjádření toho, že nějaká n-tice (x1 , x2 , . . . , xn ) náleží do relace R (tedy toho, že prvky x1 , x2 , . . . , xn jsou ve vztahu reprezentovaném relací R), použít standardní zápis pro náležení do množiny: (x1 , x2 , . . . , xn ) ∈ R Místo výše uvedeného zápisu se také používá ve stejném významu zápis R(x1 , x2 , . . . , xn ) . Při použití tohoto způsobu zápisu se někdy místo o relaci R mluví o predikátu R. Predikát přiřazuje zadané n-tici prvků pravdivostní hodnotu podle toho, zda tato n-tice patří do příslušné relace nebo ne. Zastavme se ještě u relací, které mají aritu 1. Takovým relacím se říká unární relace. Prvky unárních relací jsou 1-tice prvků, tedy jednotlivé prvky. Taková relace je tedy prostě podmnožina nějaké dané množiny A. U unárních relací asi nemá smysl mluvit o tom, že vyjadřují nějaký vztah mezi prvky, když by se příslušný vztah týkal jediného prvku. Lepší je se na to dívat tak, že unární relace vyjadřují vlastnosti prvků. Pokud například máme nějakou množinu A a nějakou unární relaci R na této množině (tj. R ⊆ A), tak R reprezentuje nějakou vlastnost prvků z množiny A — ty prvky prvky z množiny A, které patří do R, tuto vlastnost mají, a ty, které nepatří do R, tuto vlastnost nemají. V případě binárních relací se často místo zápisu (x, y) ∈ R nebo R(x, y) používá ve stejném významu také infixový zápis xRy. Kromě písmen (jako třeba R) se pro označování relací používají různé symboly, zejména při použití infixového zápisu. Některé takové symboly mají poměrně pevně stanovený význam, který stejný nebo podobný ve většině textů (jako třeba =, ∈ nebo ≤), jiné mohou být specifické pro daný text (třeba ⊏).
4.3
Funkce
Funkce přiřazuje n-tici prvků nějaký další prvek. Například funkce „plusÿ přiřazuje dvěma přirozeným číslům číslo, které je jejich součtem, funkce „faktoriálÿ přiřazuje přirozenému číslu jeho faktoriál (tj. součin všech čísel od jedné do tohoto čísla). Pro označení toho, že f je funkce, která n-tici prvků, kde první prvek z množiny A1 , druhý z množiny A2 , atd., až n-tý z množiny An , přiřazuje prvek z množiny B, se používá zápis f : A1 × A2 × · · · × An → B .
56 Pro vyjádření hodnoty, kterou funkce f přiřadí n-tici (x1 , x2 , . . . , xn ), kde x1 je z množiny A1 , x2 z množiny A2 , atd., až xn z množiny An , se používá zápis f (x1 , x2 , . . . , xn ) . Pokud f : A1 × A2 × · · · × An → B, hodnotou výrazu f (x1 , x2 , . . . , xn ) je nějaký prvek z množiny B. Prvkům x1 , x2 , . . . ve výraze f (x1 , x2 , . . . , xn ) se říká argumenty funkce f . Obecně se může stát, že pro některé n-tice (x1 , x2 , . . . , xn ) z A1 × A2 × · · · × An , není hodnota funkce f definována. Pokud se připouští taková možnost, mluví se o parciální funkci, zatímco v opačném případě, kdy hodnota f (x1 , x2 , . . . , xn ) je definována pro všechny n-tice z A1 × A2 × · · · × An se mluví o funkci totální. Většinou, pokud není explicitně zdůrazněno, že hodnota dané funkce nemusí být pro některé hodnoty argumentu definována (a že se tedy jedná o parciální), bere se daná funkce automaticky za totální (tj. definovanou pro všechny hodnoty argumentů). Podobně jako u relací se i u funkcí používá pojem arity. Arita funkce je počet argumentů dané funkce. Unární funkce je tedy funkce s jedním argumentem, binární funkce má argumenty dva, ternární tři, atd. Podobně jako u binárních relací se v případě binárních funkcí používá často infixový zápis, kdy se místo f (x, y) píše xf y, zejména v případech, kdy je místo písmena použit pro označení funkce použit nějaký speciální symbol. Například se obvykle píše x + y místo +(x, y). Někdy se může hodit mít možnost popsat nějakou funkci bez toho, že by bylo nutné přidělit této funkci jméno. K tomu se dá použít následující notace. Například funkci, která přiřazuje číslu číslo o jedna větší, je možné zapsat jako x 7→ x + 1
nebo
λx.(x + 1) ,
v literatuře se používají obě notace. Konstanta je nějaký konkrétní jeden prvek z dané množiny. Z určitého pohledu se na konstanty můžeme dívat jako na speciální případ funkcí, konkrétně jako na funkce bez argumentů (tj. funkce s aritou 0). Zápis konstant jako funkcí bez argumentů (tj. c() místo c) se však prakticky nepoužívá.
4.4
Struktury
Pokud máme dánu nějakou neprázdnou množinu spolu s nějakými relacemi, funkcemi (a konstantami) na této množině, mluví se o takovém celku někdy jako o struktuře. Příkladem takové struktury je například množina přirozených čísel N, spolu s konstantou 0, unární funkcí „následníkÿ (tj. funkci x 7→ x + 1), binární funkcí „plusÿ (tj. funkcí (x, y) 7→ x + y), binární funkcí „krátÿ (tj. funkcí (x, y) 7→ x · y), a binárními relacemi „rovnostÿ (tj. množina všech dvojic (x, y), kde x = y) a „menší nežÿ (tj. množina všech dvojic (x, y), kde x < y). Jiným příkladem je třeba struktura tvořená množinou A = {a, b, c}, unární funkcí f a binární funkcí g, které jsou zadány tabulkami x a b c
f (x) b a b
g a b c
a c a a
b a b c
c a c c
4.4
Struktury
57
a dále pak binární relací tvořenou dvojicemi {(a, a), (a, c), (b, b), (c, a), (c, b)}. Z určitého pohledu se dá říci, že celá matematika je v podstatě studium takovýchto struktur. Samozřejmě ne všechny struktury jsou z hlediska matematiky stejně zajímavé. Pokud je struktura hodně jednoduchá (jako třeba struktura tvořená prvky {a, b, c} uvedená výše), většina věcí, co se o ní dá říct, je dost triviální. Když si vezmeme nějakou konkrétní strukturu, většina toho, co se dá o této struktuře říct, je specifické jenom pro tuto jednu strukturu a těžko se to dá zobecnit. Je pak otázka, čím je daná struktura tak významná, aby měl někdo nějakou motivaci zkoumat, co v této struktuře platí. Samozřejmě není pochyb o tom, že některé struktury jsou důležité a má smysl se jimi podrobně zabývat. Příkladem takové důležité struktury je třeba výše uvedená struktura tvořená přirozenými čísly, aritmetickými operacemi na přirozených číslech a relacemi mezi přirozenými čísly (pozn. této konkrétní struktuře se někdy říká aritmetika přirozených čísel). Kromě zkoumání konkrétních struktur se matematika zabývá těmi vlastnostmi struktur, které jsou společné mnoha různým strukturám. Historicky se asi nejprve zkoumaly konkrétní struktury, jako třeba přirozená čísla nebo reálná čísla, později i o něco složitější struktury jako například struktura tvořená všemi čtvercovými maticemi stejné velikosti, apod. Mezi takovými strukturami existují četné analogie, ale i rozdíly. Existuje například značná podobnost mezi násobením reálných čísel a násobením čtvercových matic, i když se v obou případech pracuje s různými objekty. Obě operace jsou například asociativní (tj. platí (x · y) · z = x · (y · z), ať už jsou x, y, z reálná čísla nebo matice). V obou strukturách existuje neutrální prvek, kterým když se vynásobí nějaký libovolný prvek x, dostaneme jako výsledek opět prvek x. V reálných číslech hraje tuto roli číslo 1, u matic zase jednotková matice příslušné velikosti. Mezi násobením reálných čísel a násobením matice ale existují i rozdíly. Například násobení reálných čísel je komutativní (tj. pro každá dvě reálná čísla x a y platí, že x · y = y · x), zatímco pro matice to obecně neplatí. Může se pak ukázat, že důkazy různých tvrzení o reálných číslech a o maticích jsou si třeba docela podobné. Pokud se například v takovém důkaze nepoužívají žádné jiné vlastnosti reálných čísel a matic než to, že násobení je asociativní a že vzhledem k násobení existuje neutrální prvek, může se v podstatě v principu jednat o jeden a tentýž důkaz, ve kterém se používají v podstatě tytéž myšlenky, pouze s tím rozdílem, že jednou se v něm mluví o reálných číslech a podruhé o maticích. Takových případů se v matematice vyskytuje spousta. V takovém případě se pak nabízí myšlenka, zkusit z příslušných důkazů vyseparovat ty vlastnosti daných struktur, které byly pro daný důkaz skutečně potřeba, a ostatní vlastnosti dané struktury ignorovat. Příslušný důkaz pak funguje pro jakoukoliv strukturu, která má tyto vlastnosti. Důkaz pak vypadá tak, že se řekne, že předpokládáme libovolnou strukturu, ve které platí ta a ta tvrzení, a dokážeme, že pak v takové struktuře platí nějaké další tvrzení. Tomuto procesu, kdy se některé vlastnosti konkrétních struktur zobecní na všechny další struktury, ve kterých platí určitá tvrzení, se říká abstrakce. V matematice se na tento proces abstrakce naráží na každém kroku. Typickým příkladem jsou různé abstraktní algebraické struktury s podivnými a cize znějícími nesrozumitelnými názvy jako jsou třeba grupa, monoid, pologrupa, okruh, obor integrity, těleso, vektorový prostor, apod. V případě těchto struktur v podstatě nejde o nic jiného, než o to, že máme dánu nějakou množinu a operace na této množině a že předpokládáme, že nějakých několik konkrétních tvrzení platí (bereme je jako axiomy), ale nepředpokládáme o dané struktuře nic
58 dalšího. Další tvrzení se pak dokazují čistě na základě toho, co plyne ze zvolených axiomů. Tato dokázaná tvrzení potom platí v jakékoliv struktuře, ve které platí příslušné axiomy. Jiným příkladem jsou třeba různé relační struktury, ve kterých se zase zkoumají různé obecné vlastnosti relací. Dají se třeba zkoumat relace typu ekvivalence, relace typu uspořádání, svazy, apod. Vraťme se nyní obecně ke strukturám. Množina prvků dané struktury se nazývá univerzum. Univerzum je tedy množina všech prvků, se kterými se při práci s danou strukturou pracuje. Všechny relace a funkce v dané struktuře jsou definovány nad prvky tohoto univerza. Například v předchozích dvou příkladech struktur byla jednou univerzem množina všech přirozených čísel N a podruhé množina {a, b, c}. Někdy je potřeba pracovat s více množinami. Například, když se v lineární algebře studují vektorové prostory, je takový vektorový prostor dán jednak množinou skalárů (což může být například množina reálných čísel R), dále množinou vektorů (což může být třeba množina R3 ), a dále několika operacemi na těchto skalárech a vektorech (tyto operace nebudeme teď popisovat, protože v danou chvíli nejsou příliš podstatné). V takovém případě je možné jako univerzum zvolit množinu obsahující všechny prvky, se kterými chceme pracovat. Například v případě vektorového prostoru bude univerzum obsahovat jak skaláry, tak vektory. To, jestli je daný prvek skalár nebo vektor, je pak možné vyjádřit pomocí dvou unárních relací, které se do struktury přidají — jedna bude reprezentovat vlastnost, že daný prvek je skalár (tj. daná relace bude podmnožina právě těch prvků univerza, které jsou skaláry), a druhá vlastnost, že daný prvek je vektor (tj. daná relace bude podmnožina právě těch prvků univerza, které jsou vektory). Pokud je univerzum tvořeno prvky více různých „typůÿ (například skaláry a vektory ve vektorových prostorech), často chceme pracovat s relacemi a funkcemi, které jsou definované jen na prvcích určitých „typůÿ. Například skalární součin je funkce, která dvěma vektorům přiřazuje skalár. V popisu toho, co je to struktura, bylo uvedeno, že všechny relace a funkce jsou definovány na prvcích univerza. U relací nevzniká s tímto zobecněním na celé univerzum žádný problém, prvky, které nejsou správných „typůÿ, prostě v dané relaci nejsou. Pokud bychom povolili parciální funkce (tj. funkce, jejichž hodnota není pro některé hodnoty argumentů definována), rovněž žádný problém nevzniká, protože hodnota příslušné funkce prostě nebude definována pro prvky, které nejsou správných „typůÿ (například nebude definováno, co je výsledkem skalárního součinu, když třeba jeden z argumentů není vektor). Technicky je pohodlnější pracovat s totálními funkcemi (tj. s funkcemi, jejichž hodnota je definována pro všechny hodnoty argumentů). Jednou možností je nahradit ty funkce, které nejsou totální, relacemi a pracovat s těmito relacemi. Druhou možností je definovat hodnoty všech funkcí pro všechny hodnoty argumentů, tj., pokud argumenty nejsou správných „typůÿ, přiřadit jako hodnotu dané funkce nějaký libovolný prvek univerza. Ani jedna z těchto možností není příliš elegantní, v praxi to však většinou příliš nevadí a není to obvykle potřeba nějak moc řešit, protože se v normálních matematických textech prakticky vždy pracuje jen s tvrzeními, jejichž pravdivost nebo nepravdivost nezávisí na tom, jaké konkrétní hodnoty jsou nějakou funkcí přiřazeny hodnotám argumentů, které nejsou těch správných „typůÿ. Například v textu z lineární algebry se pravděpodobně nenajde žádné tvrzení, které by něco tvrdilo o skalárním součinu nějakých jiných prvků než dvou vektorů. Někdy se v matematice pracuje s tvrzeními, která se netýkají jen jedné struktury, ale vztahů mezi více strukturami. Například v lineární algebře je možné se bavit o různých zobrazeních
4.5
Predikátové, funkční a konstantní symboly
59
mezi vektorovými prostory. V takovém případě můžeme vytvořit strukturu, která bude obsahovat jako své prvky všechny prvky původních struktur, a pracovat s touto větší strukturou. Často je také potřeba pracovat nejen s jednotlivými prvky dané struktury (například s reálnými čísly), ale s množinami těchto prvků. Jednou možností, jak se s tím vypořádat, je zahrnout do univerza jako prvky nejen příslušné elementární prvky (jako třeba reálná čísla), ale i množiny těchto prvků. Prvkem univerza pak může být jak reálné číslo, tak i množina reálných čísel. Aby bylo možné se o těchto množinách vyjadřovat, může být potřeba přidat do struktury další relace nebo funkce. Můžeme například přidat relaci vyjadřující vztah, že daný prvek je prvkem dané množiny. Totéž, co bylo řečeno o množinách, se týká i relací a funkcí. Pokud se například nechceme bavit jen o několika daných konkrétní relacích a funkcích, ale chceme třeba formulovat tvrzení, která mluví o všech funkcích s danou vlastností, můžeme to vyřešit tak, že do univerza přidáme relace a funkce jako další prvky. Je to úplně stejné jako u množin, neboť relace a funkce jsou de facto speciální případy množin. Do extrému může být tento přístup dotažen tak, že jako univerzum vezmeme soubor všech matematických objektů včetně všech množin, funkcí, relací, atd. Z určitého abstraktního pohledu může být dokonce výhodné dívat se i na takové objekty, jako jsou třeba reálná čísla, jako na speciální případy množin. Takové univerzum, které obsahuje všechny matematické objekty, pak vlastně není tvořeno ničím jiným než množinami. Dá se říci, že toto univerzum představuje celý „svět matematikyÿ. Tento přístup naráží na určité problémy. Při popisu toho, co je to struktura, bylo uvedeno, že univerzum je množina. Dá se ukázat, že předpoklad, že univerzum tvořené všemi množinami je také množina, vede k odvození logických sporů. Soubor všech množin je zkrátka příliš velký na to, aby ho bylo možné považovat za množinu. V takovém případě se místo o množinách mluví o tzv. třídách, přičemž každá množina je třída, ale ne všechny třídy jsou množiny. Třídám, které nejsou množiny se říká vlastní třídy, a v mnoha ohledech se s nimi může pracovat podobně jako s množinami, ovšem ne vždy. Tyto a podobné otázky jsou důležité v pokročilejších oblastech teorie množin a při zkoumání základů matematiky, my se zde ale jimi nebudeme podrobněji zabývat. Ve většině matematiky se typicky nepracuje s celým množinovým univerzem, ale vždy pouze s jeho „malouÿ částí, u které není pochyb o tom, že jde o množinu. Slovo „maláÿ je zde ale poněkud relativní, protože se stále může jednat o značně velkou nekonečnou množinu, jako například množinu zahrnující všechny podmnožiny reálných čísel.
4.5
Predikátové, funkční a konstantní symboly
Dostáváme se k otázce, jak formulovat tvrzení o strukturách pomocí formulí predikátové logiky. Když máme nějakou strukturu (tj. množinu s relacemi a funkcemi na této množině) a chceme formulovat nějaká tvrzení o této struktuře, hodí se nejprve si nějak pojmenovat jednotlivé relace, funkce, a případně i některé prvky, které se v této struktuře vyskytují. Můžeme si tedy zavést nějaké (navzájem různé) symboly pro označení jednotlivých relací, funkcí a některých prvků univerza, přičemž u každého symbolu bude určeno, zda označuje relaci, funkci nebo prvek univerza, a u symbolů označujících relace a funkce bude určena arita příslušné funkce. Například je možné určit, že pro označení určité unární relace budeme používat symbol P ,
60 pro označení další unární relace symbol Q, pro označení určité binární relace symbol R, pro označení určité binární funkce symbol f a pro označení jednoho konkrétního prvku univerza symbol c. Obecně je dobré rozlišovat mezi objektem, jako je třeba relace, funkce nebo prvek univerza, a symbolem, kterým je tento objekt označen. Normálně se mluví například o funkci f . Je ovšem dobré si uvědomit rozdíl mezi touto funkci jako takovou, což je abstraktní matematický objekt, a symbolem f , který ji označuje. Symbol f je prostě písmeno „fÿ zapsané určitým fontem, které samo o sobě žádnou informaci o příslušné funkci v sobě nenese. Je to jen jméno. Symbolům, které označují relace, se říká predikátové symboly. Podobně symbolům, které označují funkce, se říká funkční symboly a symbolům, které označují (některé) prvky univerza, se říká konstantní symboly. Poznámka: V dalším textu budeme často jako predikátové symboly používat písmena P , Q a R, jako funkční symboly písmena f , g a h, a jako konstantní symboly písmena c a d. V žádném případě ale není třeba se omezovat jen na tato písmena. Pokud máme dán nějaký soubor predikátových, funkčních a konstantních symbolů, kde jsou navíc u všech predikátových a funkčních symbolů pevně stanoveny arity relací a funkcí, které mohou být těmito predikátovými a funkčními symboly označeny, používá se pro takový soubor symbolů název signatura. Pokud nyní máme dánu nějakou konkrétní signaturu a nějakou strukturu, kde počet relací a funkcí v dané struktuře včetně jejich arit přesně odpovídá počtu počtu a aritám jednotlivých predikátových a funkčních symbolů v dané signatuře, můžeme namapovat jednotlivé relace na jednotlivé predikátové symboly, jednotlivé funkce na jednotlivé funkční symboly a některé prvky univerza na konstantní symboly. Toto určení příslušné struktury, tj. určení jejího univerza a přiřazení jejich relací, funkcí a prvků univerza příslušným predikátovým, funkčním a konstantním symbolům se nazývá interpretace. Pravdivost nebo nepravdivost různých tvrzení, která budou zapsána jako formule predikátové logiky obsahující predikátové, funkční a konstantní symboly z příslušné signatury, se pak bude posuzovat vzhledem k dané konkrétní interpretaci.
4.6
Termy
Začněme tím, jakým způsobem vůbec můžeme ve vytvářených tvrzení označovat jednotlivé prvky univerza. Výrazům, které označují jednotlivé prvky univerza se obecně říká termy. V dané interpretaci je hodnotou termu vždy nějaký prvek univerza. U termu tedy nemá smysl mluvit o jeho pravdivostní hodnotě, term není tvrzení, které by mohlo platit nebo neplatit. Asi nejjednodušším typem termu je term tvořený jedním konstantním symbolem. Pokud například c je konstantní symbol, je c term, jehož hodnotou v dané interpretaci je prvek univerza, který tato interpretace přiřazuje konstantnímu symbolu c. Typickými příklady konstantních symbolů, které se často v matematice používají, jsou třeba symboly π a e označující Ludolfovo číslo a Eulerovo číslo. V některých případech můžeme mít takovou signaturu a interpretaci, že pro každý prvek univerza máme nějaký konstantní symbol, který ho označuje. Například pokud máme univerzum
4.6
Termy
61
{0, 1, 2} a konstantní symboly a, b a c, tak můžeme použít třeba a pro označení prvku 0, b pro označení prvku 1 a c pro označení prvku 2. Obecně to ale spíše bývá tak, že konstantní symboly označují jen některé prvky univerza. Jako na určitý příklad konstantních symbolů se také můžeme dívat na běžně používaný zápis čísel. Například na 176 se můžeme dívat jako na konstantní symbol označující číslo „sto sedmdesát šestÿ. V běžné interpretaci, kterou asi máme na mysli, když někde uvidíme napsáno 176, tedy přiřadíme tomuto „symboluÿ tvořenému třemi číslicemi právě toto číslo. Není také nikde řečeno, že různé konstantní symboly musí označovat různé prvky univerza. Docela dobře se může stát, že dva různé konstantní symboly označují jeden a tentýž prvek. Klidně tedy může platit, že například konstantní symboly c a d označují tentýž prvek. Kromě toho, že můžeme chtít odkazovat na některé fixně dané prvky struktury, k čemuž se dají použít konstanty, můžeme chtít mít možnost formulovat i tvrzení, která mluví o nějakých libovolných prvcích univerza. Příklady takových tvrzení jsou třeba „existuje nějaký prvek, pro který platí . . . ÿ nebo „pro libovolné tři prvky platí . . . ÿ, apod. K tomu, aby se na libovolné prvky univerza dalo nějak odkazovat, slouží proměnné. Proměnná je prostě nějaký symbol, který může zastupovat v daném tvrzení libovolný prvek univerza. V dalším textu budeme většinou používat jako proměnné symboly x, y a z, případně s indexy. Obecně se předpokládá, že máme k dispozici nekonečnou zásobu jmen proměnných, a že tato jména nekolidují s ostatními symboly, tj. že žádný z těchto symbolů není stejný jako nějaký predikátový, funkční nebo konstantní symbol, ani jako logická spojka nebo jiný symbol se speciálním významem. Zaručit to, že je k dispozici nekonečně mnoho proměnných není žádný problém, protože můžeme používat indexy. K dispozici jsou tedy proměnné x0 , x1 , x2 , x3 , . . . Proměnné může být jako její hodnota přiřazen libovolný prvek univerza. Ohodnocení neboli valuace je přiřazení hodnot všem proměnným, tj. dané ohodnocení stanovuje pro každou jednotlivou proměnnou, jaký prvek univerza je této proměnné přiřazen. Obecně pravdivost nebo nepravdivost tvrzení reprezentovaných formulemi predikátové logiky nezávisí jen aktuálně zvolené interpretaci (tj. na univerzu a relacích a funkcích přiřazených predikátovým a funkčním symbolům), ale také na zvolené valuaci, tj. na tom, jaké konkrétní prvky univerza jsou přiřazeny jednotlivým proměnným. Vraťme se nyní k tomu, jak mohou vypadat termy. Zatím jsme viděli, že výraz tvořený jediným konstantním symbolem je term. Další možností, jak může term vypadat, je term tvořený jedinou proměnnou. Pokud tedy například x je proměnná, tak x je dobře vytvořený term. Předpokládejme, že máme pevně dánu nějakou interpretaci a valuaci. Hodnotou termu x je prvek univerza, který proměnné x přiřazuje příslušná valuace. Pokud například máme jako univerzum přirozená čísla a valuace přiřazuje proměnné x číslo 5, tak hodnotou termu x v této interpretaci a valuaci je číslo 5. Další (a poslední) možností, jak vytvářet termy, je aplikovat nějaký funkční symbol na už dříve vytvořené termy. Aplikací funkčního symbolu na termy je zde myšleno to, že napíšeme příslušný funkční symbol a za ním v závorkách jednotlivé termy, na které je aplikován, oddělené čárkami. Počet termů, na které je možné daný funkční symbol aplikovat, je určen aritou příslušného funkčního symbolu. Pokud je například určeno, že c je konstantní symbol a x je proměnná, podle toho, co bylo popsáno dříve, jsou c a x dobře utvořené termy. Pokud bude například určeno, že f je binární
62 funkční symbol (tj. funkční symbol s aritou 2), je možné aplikovat tento funkční symbol na termy c a x, čímž dostaneme term f (c, x). Funkční symboly je možné aplikovat nejen na termy tvořené konstantním symbolem nebo proměnnou, ale i na jakékoliv jiné termy. Například aplikací funkčního symbolu f na termy f (c, x) a x dostaneme term f (f (c, x), x). Pokud máme dánu konkrétní interpretaci a valuaci. Hodnotou termu, který vznikl aplikací funkčního symbolu f na nějaké další termy, je hodnota, kterou přiřadí funkce přiřazená funkčnímu symbolu f argumentům, které dostaneme vyhodnocením příslušných termů, na které byl funkční symbol f aplikován. Typickými příklady termů jsou běžně používané aritmetické výrazy. Pokud si vezmeme nějaké takové výrazy, jako třeba x + 3, y 2 + xz nebo sin(xy ), na první pohled se může zdát, že příliš neodpovídají výše uvedenému popisu toho, jak mohou termy vypadat. Důvod je ten, že se při zápisů aritmetických výrazů běžně uplatňuje celá řada konvencí, které zápis zjednodušují a zpřehledňují, aby byl lépe čitelný pro člověka. Není ale problém přepsat každý takový výraz do podoby, která přesně odpovídá výše uvedenému popisu termů. Na výše uvedených třech příkladech aritmetických výrazů si ukážeme, jak takový přepis provést. Vezměme si nejprve výraz x+ 3. V tomto výraze je x proměnná a 3 konstanta (resp. konstantní symbol). V principu můžeme místo zápisu čísla 3 použít i nějaký jiný libovolný konstantní symbol, třeba symbol c, a místo x + 3 psát x + c, s tím, že konstantní symbol c zastupuje v daném výraze číslo 3. Symbol + zase reprezentuje funkci „plusÿ. Tato funkce je binární a ve výraze x + c je použit běžný infixový zápis, kdy je název funkce (+) zapsán mezi operandy x a c. Pokud bychom funkci „plusÿ pojmenovali například f a použili běžný způsob zápisu, kde je uveden nejprve název funkce a za ním v závorkách argumenty této funkce oddělené čárkami, tak bychom místo x + c psali f (x, c). V tomto případě je tedy funkce „plusÿ reprezentována binárním funkčním symbolem f . Vezměme si nyní výraz y 2 + xz. Předpokládejme, že x, y, z jsou proměnné. V aritmetických výrazech se běžně vynechává symbol pro násobení. Výraz xz je tedy totéž, co x·z, kde · reprezentuje funkci „krátÿ. Podobně jako u + se i u · používá infixový zápis. Pokud bychom funkci „krátÿ pojmenovali binárním funkčním symbolem g, tak bychom místo x · z napsali g(x, z). Na výraz y 2 , který označuje umocnění hodnoty y na druhou, se dá dívat dvěma různými způsoby. Jeden možný pohled je, že zde máme unární funkci, která umocňuje svůj argument na druhou. Pokud bychom si tuto funkci pojmenovali třeba e, výraz y 2 by bylo možno zapsat jako e(y). Unární funkční symbol e zde tedy reprezentuje funkci x 7→ x2 . Při tomto přístupu by tedy například umocnění na třetí muselo být reprezentováno další jiným funkčním symbolem, umocnění na čtvrtou ještě jiným, atd. Druhou možností, jak se dívat na výraz y 2 , je brát to tak, že zde máme funkci pro umocnění, která má dva argumenty. První argument reprezentuje základ (tj. jakou hodnotu umocňujeme) a druhý exponent (na jakou hodnotu umocňujeme). Pokud bychom si funkci pro umocnění pojmenovali například binárním funkčním symbolem h, místo y 2 bychom mohli psát h(y, 2), případně h(y, d), pokud bychom číslo 2 reprezentovali konstantním funkčním symbolem d. Pokud bychom místo + použili symbol f , jak bylo popsáno výše, celý výraz y 2 + xz by bylo možné zapsat jako f (h(y, d), g(x, z)). Podobná analýza výrazu sin(xy ) by nyní neměla dělat čtenáři problémy. Stačí si uvědomit, že zápis sin (označující funkci sinus) je zde použit jako unární funkční symbol. Kdybychom místo
4.7
Atomické formule
63
něj použili například unární funkční symbol s, mohli bychom přepsat výraz sin(xy ) přepsat do podoby s(h(x, y)). (Všimněte si, že pro vyjádření umocňování, zde nemůžeme použít unární funkci, jako byla třeba funkce e předchozím příkladě, protože ve výraze xy se v exponentu nachází proměnná.) Vraťme se nyní k termům obecně. Pokud budeme v dalším textu mluvit o termech, budeme je označovat písmenem t, případně s indexy (t0 , t1 , t2 , . . .) nebo s čárkami (t′ , t′′ ). Písmeno t tedy není přímo term sám o sobě, ale symbol zastupující nějaký libovolný term podobně, jako používáme písmena A, B, C pro označení formulí. Cílem výše uvedených příkladů aritmetických výrazů bylo ilustrovat, že z obecného hlediska není nijak omezující, pokud se obecně omezíme na to, že veškeré termy mohou být jen následujících tří dříve popsaných typů: • Term tvořený proměnnou, například x. • Term tvořený konstantním symbolem, například c. • Term tvaru f (t1 , t2 , . . . , tn ), kde f je nějaký funkční symbol s aritou n a kde t1 , t2 , . . . , tn jsou nějaké libovolné termy. Pro jistotu ještě jednou shrňme, co je hodnotou termu při dané interpretaci a valuaci: • Pokud je x proměnná, hodnotou termu x je prvek univerza přiřazený této proměnné příslušnou valuací. • Pokud je c konstantní symbol, hodnotou termu c je prvek univerza přiřazený symbolu c danou interpretací. • Pokud má term tvar f (t1 , t2 , . . . , tn ), kde f je nějaký funkční symbol s aritou n a kde t1 , t2 , . . . , tn jsou nějaké libovolné termy, určí se nejprve hodnoty termů t1 , t2 , . . . , tn při dané interpretaci a valuaci. Řekněme, že a1 , a2 , . . . , an jsou prvky univerza, které se při dané interpretaci a valuaci vyhodnotily termy t1 , t2 , . . . , tn . Hodnotou termu f (t1 , t2 , . . . , tn ) při této interpretaci a valuaci je pak prvek univerza, který (n-ární) funkce přiřazená danou interpretací funkčnímu symbolu f přiřadí n-tici prvků (a1 , a2 , . . . , an ) .
4.7
Atomické formule
Když tedy nyní víme, jak vypadají termy, můžeme se dostat k tomu, jak v predikátové logice vypadají atomické formule. Pokud P je predikátový symbol s aritou n a t1 , t2 , . . . , tn termy, tak P (t1 , t2 , . . . , tn ) je dobře utvořená atomická formule predikátové logiky. V predikátové logice jsou atomické formule jen tohoto jediného typu, každá atomická formule je vytvořena z nějakého predikátu P a z nějakých termů, které představují jeho argumenty. Pokud například P je binární predikát a f (x) a c jsou termy (kde f je unární funkční symbol, c konstantní symbol a x proměnná), tak P (f (x), c) je dobře utvořená atomická formule. Pravdivostní hodnota atomické formule P (t1 , t2 , . . . , tn ) při dané interpretaci a valuaci je dána následujícím způsobem. Nejprve se určí hodnoty termů t1 , t2 , . . . , tn při této interpretaci a valuaci. Řekněme, že těmito hodnotami jsou prvky univerza a1 , a2 , . . . , an . Formule je v dané interpretaci a valuaci pravdivá, jestliže n-tice prvků (a1 , a2 , . . . , an ) je v relaci, která je přiřazena v dané interpretaci predikátovému symbolu P , a nepravdivá, pokud tato n-tice v této relaci není.
64 Pokud si například vezmeme interpretaci, kde univerzem je množina reálných čísel, kde predikátovému symbolu P je přiřazena relace „menší nežÿ, kde funkčnímu symbolu f je přiřazena funkce x 7→ x+1 a konstantnímu symbolu c hodnota 0, a valuaci, kde proměnné x je přiřazena hodnota 5, bude mít term f (x) hodnotu 6 a term c hodnotu 0. Protože 6 není menší než 0, je v této interpretaci a valuaci formule P (f (x), c) nepravdivá. Pokud bychom vzali tutéž interpretaci, ale valuaci, kde x má hodnotu −7, bude mít f (x) hodnotu −6 a formule P (f (x), c) bude pravdivá, protože −6 je menší než 0. Podobně jako v případě funkcí se i v případě relací používají v běžných matematických textech různé konvence, které usnadňují zápis formulí. Například v případě binárních relací se často používá infixový zápis a jako predikátový symbol se nepoužívá písmeno, ale nějaký speciální znak. V normálním matematickém textu tedy bude spíše napsáno například f (x) < c, než P (f (x), c), kde by P mělo reprezentovat relaci „menší nežÿ. Opět jde jen o konvenci usnadňující čtení a zápis, v principu by ale nebylo nijak omezující používat jen atomické formule typu P (t1 , t2 , . . . , tn ), kde P je predikátový symbol a t1 , t2 , . . . , tn termy. Atomické (a nejen atomické) formule predikátové logiky je možné skládat pomocí logických spojek. Pokud tedy máme nějakou takovou formuli, jako třeba P (x, f (c)) ∧ ¬Q(y), určí se pravdivostní hodnota této formule při dané interpretaci a valuaci tak, že se nejprve určí pravdivostní hodnoty atomických formulí při této interpretaci a valuaci a poté se pravdivost formulí složených z těchto formulí určí na základě významu jednotlivých logických spojek. Poznámka: Systému, který se skládá z atomických formulí predikátové logiky, tak jak byly popsány v předchozím textu, a z formulí, které je z nich možné složit pomocí logických spojek, ale kde se ve formulích nevyskytují žádné další konstrukce (jako například kvantifikátory), se někdy říká predikátová logika nultého řádu. Než se dostaneme ke kvantifikátorům, zastavme se ještě u pojmu substituce. Substitucí se myslí dosazení nějakého termu za proměnnou. Řekněme, že x je proměnná a t nějaký term. Pokud si vezmeme nějaký term t1 , zápisem t1 [t/x] budeme označovat term, který dostaneme z termu t1 tak, že v něm za x dosadíme t, tj. tak, že všechny výskyty proměnné x v termu t1 nahradíme termem t. Pokud například y je proměnná a f (g(y, x), y) term, substitucí termu f (c, z) za proměnnou y v termu f (g(y, x), y) dostaneme term f (g(f (c, z), x), f (c, z)). Podobně, pokud A je formule, zápisem A[t/x] budeme označovat formuli, kterou dostaneme, když za proměnnou x ve formuli A dosadíme term t. Pokud uvažujeme jen atomické formule a formule, které se z nich dají vytvořit pomocí logických spojek, platí, že veškeré výskyty proměnných v takových formulích jsou tzv. volné. Myslí se tím to, že při vyhodnocování pravdivosti takovýchto formulí hraje roli to, jaké prvky univerza jsou těmto proměnným přiřazeny. Později uvidíme, že ve formulích, které obsahují kvantifikátory, mohou být některé výskyty proměnných ve formuli tzv. vázané. Při substituci se obecně dosazuje příslušný term pouze za volné výskyty dané proměnné. Pokud uvažujeme formule vytvořené pomocí logických spojek z atomických formulí (ve kterých se tedy nevyskytují kvantifikátory), je substituce jednoduchá, nahradí se prostě všechny výskyty dané proměnné. V případě formulí s kvantifikátory je situace o něco složitější. Budeme se tím zabývat později. Pro jistotu zdůrazněme, že hranaté závorky, lomítko, atd., v zápisu substituce, kdy píšeme t1 [t/x] nebo A[t/x], nejsou součástí syntaxe termů nebo formulí. Substituce představuje určitou operaci na termech nebo na formulích, kdy k danému termu t1 vytvoříme nový term a
4.8
Univerzální kvantifikátor
65
k dané formuli A novou formuli. Není asi nijak překvapivé, že ze dvou různých termů nebo ze dvou různých formulí můžeme po provedení substitucí dostat stejné termy nebo stejné formule. Tj. pokud máme dva různé termy t1 a t2 nebo dvě různé formule A1 a A2 , může se třeba stát, že t1 [t/x] a t2 [t′ /y] jsou jeden a tentýž term, a podobně, že A1 [t/x] a A2 [t′ /y] jsou jedna a tatáž formule. Jako příklad si třeba vezměme formule P (x, f (z)) a P (g(c), f (y)). Výsledkem substitucí (P (x, f (z)))[g(c)/x] a (P (g(c), f (y)))[z/y] je v obou případech formule P (g(c), f (z)). Protože v zápisech důkazů bude někdy výhodné pro názornost uvést způsob, jak některé formule vznikly z jiných formulí pomocí substitucí, může se hodit mít možnost zapsat některé sekventy opakovaně s tím, že někdy budou uvedeny některé formule se substitucemi a jindy bez substitucí nebo s jinými substitucemi, i když se pořád bude jednat o jedny a tytéž formule. K tomu se nám bude hodit následující „pravidloÿ, označené zkratkou rep. (z angl. repeat), které říká, že v zápise důkazu je možné kterýkoliv sekvent znovu zopakovat: rep.:
Γ⊢A Γ⊢A
Nejedná se o skutečné pravidlo, protože v důkazech není ve skutečnosti důvod sekventy opakovat, případně je možné opakující se sekvent dostat aplikací téhož pravidla, pomocí něhož byl odvozen původní sekvent.
4.8
Univerzální kvantifikátor
Pro vyjádření toho, že nějaké tvrzení platí pro každý prvek, slouží univerzální kvantifikátor. Pro zápis univerzálního kvantifikátoru se používá symbol ∀. Jestliže x je proměnná a ϕ(x) nějaké tvrzení, tak pro vyjádření tvrzení „pro každé x platí ϕ(x)ÿ se používá zápis ∀xϕ(x) . Toto tvrzení je pravdivé, jestliže ϕ(x) platí, ať za x dosadíme jakýkoliv prvek univerza. Naopak, pokud najdeme alespoň jeden prvek a, pro který tvrzení ϕ(x) neplatí, když za x dosadíme a, tak ∀xϕ(x) neplatí. Notace pro psaní kvantifikátorů není zcela ujednocená a používá se několik různých variant zápisu. Pro ilustraci uveďme některé z nich: (∀x)ϕ(x)
∀x.ϕ(x)
∀x : ϕ(x)
Někdy chceme kvantifikovat ne přes všechny prvky univerza, ale jen přes prvky nějaké množiny A, která je podmnožinou univerza, tj. chceme vyjádřit, že „pro každé x z množiny A platí ϕ(x)ÿ. To je možné vyjádřit následujícím zápisem: ∀x(x ∈ A → ϕ(x)) Protože se tvrzení tohoto typu objevují poměrně často, mnohdy se místo něj používá následující zápis (∀x ∈ A)ϕ(x) ,
který je možné chápat jako zkratku pro předchozí tvrzení.
66 Řekněme, že vytváříme tvrzení o přirozených číslech a jako univerzum bereme množinu (všech) přirozených čísel. Je dobré si všimnout, že například mezi tvrzením x > 5 a tvrzením ∀x(x > 5) je zásadní rozdíl. Prvé tvrzení říká, že hodnota přiřazená proměnné x je větší než pět. Je to tedy tvrzení, které něco říká o proměnné x, resp. o hodnotě, která je do této proměnné přiřazena. Abychom mohli říct, zda je toto tvrzení pravdivé nebo nepravdivé, museli bychom vědět, jaká hodnota je přiřazena proměnné x. Pokud je například x = 12, je tvrzení x > 5 pravdivé, zatímco třeba v případě, kdy x = 3, je nepravdivé. Naproti tomu tvrzení ∀x(x > 5) říká, že každé přirozené číslo je větší než pět, je to tedy tvrzení o celé množině přirozených čísel. (V tomto konkrétním případě se jedná o nepravdivé tvrzení.) V tomto tvrzení není příliš podstatné, že jsme použili ve formálním zápise zrovna proměnnou x. Kdybychom přejmenovali x na y a napsali ∀y(y > 5), bude toto tvrzení říkat to samé, co předtím: každé přirozené číslo je větší než pět. Kdybychom ale přejmenovali ve tvrzení x > 5 proměnnou x na y, dostaneme tvrzení y > 5, které říká, že hodnota proměnné y je větší než pět, což je něco úplně jiného než tvrzení, že hodnota proměnné x je větší než pět, protože obě tvrzení se vyjadřují o různých proměnných. Ve tvrzení x > 5 se x vyskytuje jako tzv. volná proměnná. Znamená to, že pravdivost daného tvrzení závisí (nebo alespoň může záviset) na hodnotě, která je do této proměnné přiřazena. Naproti tomu v tvrzení ∀x(x > 5) je proměnná x vázaná kvantifikátorem ∀. V takovém případě závisí pravdivost celého tvrzení na tom, zda je x > 5 pravda, ať do x přiřadíme jakoukoliv hodnotu, ne na tom, jaká je aktuální hodnota proměnné x. Kdy je nějaká proměnná volná nebo vázaná v nějakém tvrzení je přesněji definováno takto: Jakýkoliv výskyt proměnné x ve tvrzení tvaru ∀xϕ(x) je vázaný. Výskyt proměnné, který není vázaný je volný. Všimněme si, že se v této definici hovoří o výskytu proměnné, nikoliv o proměnné jako takové. Důvod je ten, že se jedna a tatáž proměnná může vyskytovat ve stejném tvrzení jednou jako volná a jindy vázaná. Například ve tvrzení x > 5 ∧ ∀x(2 + x ≥ y)
je první výskyt proměnné x (tj. výskyt ve x > 5) volný, zatímco druhý výskyt (tj. výskyt ve 2 + x ≥ y) je vázaný. Tyto dva výskyty spolu vůbec nesouvisí. Proměnnou ve vázaných výskytech můžeme přejmenovat, aniž bychom změnili význam celého tvrzení. Pokud například přejmenujeme vázané x na z dostaneme tvrzení x > 5 ∧ ∀z(2 + z ≥ y) ,
které říká to samé, co předchozí tvrzení. Při přejmenovávání je však třeba určité opatrnosti, abychom přejmenováním jedné proměnné neudělali z výskytů nějaké volné proměnné výskyty vázané nebo u vázaných výskytů nějaké jiné proměnné nezměnili kvantifikátor, kterým jsou vázány. Například by nebylo korektní přejmenovat z na y, protože bychom dostali tvrzení x > 5 ∧ ∀y(2 + y ≥ y) ,
kde se volná proměnná y stala vázanou, a které říká něco jiného než předchozí tvrzení. Je třeba upozornit na to, že výše uvedená definice toho, kdy je výskyt proměnné vázaný, není úplná, protože proměnná může být vázaná i jiným typem kvantifikátoru než jen univerzálním. Navíc existuje v matematice celá řada různých typů notace jiných než kvantifikátory, které také vážou určitou proměnnou. Například v notaci n X i=1
f (i)
4.8
Univerzální kvantifikátor
67
pro zápis součtu řady, je výskyt proměnné i ve výraze f (i) vázaný, a význam celého výrazu by se nezměnil, pokud bychom přejmenovali i třeba na j: n X
f (j)
j=1
Pro vyjádření množiny všech proměnných, které se vyskytují volně ve tvrzení A budeme používat zápis free(A). Toto označení rozšíříme i na množiny či sekvence tvrzení. Pokud je tedy Γ množina nebo sekvence tvrzení bude free(Γ) označovat množinu všech proměnných, které se vyskytují jako volné proměnné ve tvrzeních v Γ. Budeme také psát free(Γ, A) místo free(Γ ∪ {A}), apod. Nyní si řekněme, jakým způsobem pracovat s univerzálním kvantifikátorem v důkazech. Pokud umíme dokázat tvrzení tvaru ∀xA z nějakých předpokladů Γ, tj. umíme odvodit sekvent Γ ⊢ ∀xA, znamená to, že za předpokladů Γ platí tvrzení A, ať už za x dosadíme jakýkoliv prvek univerza. Pokud si tedy vezmeme libovolný term t, pro jakoukoliv hodnotu, na kterou se tento term vyhodnotí, bude také platit tvrzení A, ve kterém bude mít x hodnotu, na kterou se vyhodnotí term t. Bude tedy platit i tvrzení A[t/x], které dostaneme z tvrzení A, když za x dosadíme t. Tato úvaha je zachycena následujícím pravidlem pro eliminaci univerzálního kvantifikátoru, které budeme označovat ∀e: Γ ⊢ ∀xA ∀e: Γ ⊢ A[t/x] Toto pravidlo tedy říká to, že pokud nějaké tvrzení platí pro každou hodnotu x, tak můžeme za x dosadit cokoliv. Zkusme se nyní zamyslet, jak postupovat, pokud bychom naopak chtěli nějaké tvrzení tvaru ∀xA dokázat z nějakých předpokladů Γ. Pokud bychom věděli, že univerzum je konečné, rozumně malé a navíc máme konstantní symbol nebo výraz (term) pro každý prvek tohoto univerza, mohli bychom zkusit přístup, kdy bychom dosadili za x postupně všechny tyto symboly nebo výrazy a pro každý z nich dokázali A. Řekněme, že bychom měli například konstantní symboly a, b a c a navíc bychom uměli z předpokladů Γ dokázat, že každý prvek univerza je roven některému z prvků přiřazených těmto třem symbolům. Kdybychom pak dokázali, že platí Γ ⊢ A[a/x], Γ ⊢ A[b/x] a Γ ⊢ A[c/x], mohli bychom oprávněně prohlásit, že Γ ⊢ ∀xA. Je ovšem jasné, že takový přístup většinou možný není. Aby se dal použít, musí být univerzum konečné (a relativně malé), navíc ale musí být součástí předpokladů nějaká tvrzení, která kladou velmi silná omezení na to, jak musí univerzum (a funkce a relace na něm definované) vypadat, aby byly tyto předpoklady splněny. Obecně se tedy při dokazování tvrzení typu ∀xA postupuje poněkud jinak. Tvrzení A se dokáže pro jeden prvek, ale ne pro nějaký konkrétní prvek (například pro číslo 5), nýbrž pro nějaký prvek, o kterém nepředpokládáme naprosto nic (tedy kromě toho, že je prvkem univerza) a který je v tomto smyslu libovolný. Tento prvek si pojmenujeme pomocí nějaké proměnné, řekněme třeba y. Tím, že o prvku y nic nepředpokládáme, je myšleno to, že žádný z předpokladů v Γ a ani tvrzení ∀xA, které chceme dokázat, neříkají nic o hodnotě proměnné y. Formálně to znamená, že proměnná y se nesmí vyskytovat jako volná proměnná v Γ ani v ∀xA. Poté dokážeme, že (za předpokladů Γ) platí tvrzení A, ve kterém za x dosadíme y,
68 tj. Γ ⊢ A[y/x]. Protože jsme o proměnné y nic nepředpokládali, můžeme ji přiřadit jako hodnotu kterýkoli z prvků univerza. Při tomto přiřazení musí za předpokladů Γ tvrzení A[y/x] platit. To ale znamená, že bychom mohli přiřadit kterýkoli z prvků univerza do proměnné x ve tvrzení A (ne ale v předpokladech Γ) a při při tomto přiřazení by bylo tvrzení A pravdivé. Proto je pravdivé (za předpokladů Γ) i tvrzení, že pro každou hodnotu x platí A, tj. tvrzení ∀xA, které jsme chtěli dokázat. Tato argumentace je zachycena následujícím pravidlem pro zavedení univerzálního kvantifikátoru, které budeme označovat ∀i: ∀i:
Γ ⊢ A[y/x] (y 6∈ free(Γ, ∀xA)) Γ ⊢ ∀xA
Pokud se proměnná x nevyskytuje jako volná proměnná v předpokladech Γ, není třeba proměnnou x v A přejmenovávat (resp. můžeme x přejmenovat na x) a v tom případě dostáváme následující speciální případ pravidla ∀i: Γ⊢A (x 6∈ free(Γ)) Γ ⊢ ∀xA Přejmenování slouží jen k tomu, abychom zaručili, že o „libovolnémÿ prvku, pro který dokazujeme tvrzení A, opravdu nic nepředpokládáme. To, že podmínka y 6∈ free(Γ, ∀xA) v definici pravidla ∀i je opravdu podstatná, je vidět z následujících dvou příkladů. V prvním z těchto dvou příkladů odvodíme zjevně nesprávný závěr, že pokud x je větší než pět, pak všechna čísla jsou větší než pět: 1. x > 5 ⊢ x > 5 2. x > 5 ⊢ ∀x(x > 5)
(Assm) (∀i 1) ←− toto je nekorektní krok!
V tomto „důkazeÿ je samozřejmě chyba v tom, že v sekventu na řádku 1 je proměnná x volná v předpokladech Γ (ve tvrzení x > 5). Podívejme se na jiný příklad chybného důkazu: 1. 2. 3. 4.
∀x(x = x) ⊢ ∀x(x = x) ∀x(x = x) ⊢ y = y ∀x(x = x) ⊢ (x = y)[y/x] ∀x(x = x) ⊢ ∀x(x = y)
(Assm) (∀e 1) (rep. 2) (∀i 3) ←− toto je nekorektní krok!
V tomto případě sice v sekventu na řádku 3 není proměnná y volná v předpokladech, je ale volná v sukcedentu ∀x(x = y) na řádku 4, který použitím pravidla ∀i dokážeme.
4.9
Existenční kvantifikátor
Dalším typem kvantifikátoru je existenční kvantifikátor, který slouží pro vyjádření tvrzení typu „existuje x, pro které platí ϕ(x)ÿ, kde ϕ(x) je nějaké libovolné tvrzení. Existenční kvantifikátor se označuje symbolem ∃ a formálně se tvrzení „existuje x, pro které platí ϕ(x)ÿ zapisuje jako ∃xϕ(x) .
4.9
Existenční kvantifikátor
69
Podobně jako v případě univerzálního kvantifikátoru se používají různé drobně odlišné varianty této notace, například: (∃x)ϕ(x)
∃x.ϕ(x)
∃x : ϕ(x)
V přirozené řeči může být tvrzení, které odpovídá formálnímu zápisu ∃xϕ(x), formulováno i jinak, například „pro nějaké x platí ϕ(x)ÿ, „nějaké x splňuje ϕ(x)ÿ, a podobně. Tvrzení ∃xϕ(x) je pravdivé, jestliže existuje nějaký alespoň jeden prvek univerza, který když přiřadíme proměnné x, tak bude pravda ϕ(x). Naopak je nepravdivé v případě, že tvrzení ϕ(x) je vždy nepravdivé, ať už za x dosadíme jakýkoliv prvek univerza. Podobně jako u univerzálního kvantifikátoru se i v případě existenčního kvantifikátoru často objevují v matematických textech formulace, kdy se kvantifikuje ne přes celé univerzum, ale jen přes prvky nějaké množiny. Tvrzení „existuje x z množiny M , pro které platí ϕÿ, kde ϕ je nějaké libovolné tvrzení, je možné zapsat formulí ∃x(x ∈ M ∧ ϕ) . Taková formule se mnohdy zapisuje zkráceně jako (∃x ∈ M )(ϕ). Přejděme nyní k tomu, jak pracovat v důkazech s tvrzeními, ve kterých se objevuje existenční kvantifikátor. Pokud dokážeme, že nějaké tvrzení platí pro nějaký prvek, který je reprezentován nějakým termem t, můžeme z toho vyvodit, že tedy existuje nějaký prvek, pro který toto tvrzení platí. Tato úvaha je reprezentována následujícím pravidlem pro zavedení existenčního kvantifikátoru, které budeme označovat ∃i: Γ ⊢ A[t/x] ∃i: Γ ⊢ ∃xA Pokud už máme naopak dokázáno, že za daných předpokladů Γ existuje nějaký prvek x, pro který platí A, tj. pokud jsme již dokázali Γ ⊢ ∃xA, můžeme toho při dokazování dalších tvrzení využít následujícím způsobem. Protože podle Γ ⊢ ∃xA existuje v případě, že platí předpoklady Γ, nějaký alespoň jeden prvek x, pro který platí tvrzení A, můžeme jeden z těchto prvků vzít a nějak si ho pojmenovat, například y. V další části důkazu pak můžeme používat jako dodatečný předpoklad, že pro prvek y platí tvrzení A, tj. že platí tvrzení A[y/x]. Pokud za tohoto předpokladu dokážeme nějaké tvrzení B, tak toto tvrzení B platí i bez tohoto dodatečného předpokladu. Podobně jako v případě pravidla ∀i má i tento postup určitá omezení. Nedodržení těchto omezení může vést k odvození nekorektních závěrů. Prvním omezením je, že y musí být nové jméno, o prvku y se nesmí předem nic předpokládat. To je zachyceno podmínkou, že y se nesmí vyskytovat jako volná proměnná v předpokladech Γ. Dalším omezením je, že y se může používat jen jako dočasné pomocné pojmenování prvku, pro který platí A, v dílčích krocích důkazu, nesmí se ale vyskytovat jako volná proměnná ve výsledném tvrzení B, které se pomocí něj odvodí. Pokud je y jiná proměnná než x, nesmí se také vyskytovat jako volná proměnná ve formuli A. Výše popsaný postup je zachycen následujícím pravidlem pro eliminaci existenčního kvantifikátoru, které budeme označovat zkratkou ∃e: ∃e:
Γ ⊢ ∃xA
Γ, A[y/x] ⊢ B (y 6∈ free(Γ, ∃xA, B)) Γ⊢B
70 Ukážeme si několik příkladů nekorektního použití pravidla ∃e, které ukazují všechny tři podmínky y 6∈ free(Γ), y 6∈ free(∃xA) a y 6∈ free(B) jsou skutečně potřeba, protože jinak by bylo možné pomocí pravidla ∃e odvodit nesmyslné závěry. V prvním příkladě ukážeme, jak z předpokladů y = 4 a ∃x(x = 7) odvodit chybný závěr, že existuje x, které je současně rovno čtyřem i sedmi. Předpokládejme, že Γ := y = 4, ∃x(x = 7). 1. 2. 3. 4. 5. 6.
Γ ⊢ ∃x(x = 7) Γ, y = 7 ⊢ y = 4 Γ, y = 7 ⊢ y = 7 Γ, y = 7 ⊢ (y = 4) ∧ (y = 7) Γ, y = 7 ⊢ ∃x((x = 4) ∧ (x = 7)) Γ ⊢ ∃x((x = 4) ∧ (x = 7))
(Assm) (Assm) (Assm) (∧i 2,3) (∃i 4) (∃e 1,5) ←− toto je nekorektní krok!
Chyba je zde samozřejmě v tom, že proměnná y se vyskytuje jako volná proměnná v předpokladu y = 4. Je tedy chybou pojmenovat prvek, který je roven sedmi a který existuje podle předpokladu ∃(x = 7), jako y. Řekněme, že P je unární predikátový symbol. Neformálně se dá říct, že formule P (x) říká, že prvek x má vlastnost P . V následujícím nekorektním důkaze se odvodí, že obecně by mělo vždycky platit, že když existuje nějaký prvek s vlastností P , tak všechny prvky mají vlastnost P , což je zjevný nesmysl. 1. 2. 3. 4.
∃xP (x) ⊢ ∃xP (x) ∃xP (x), P (y) ⊢ P (y) ∃xP (x)) ⊢ P (y) ∃xP (x) ⊢ ∀xP (x)
(Assm) (Assm) (∃e 1,2) ←− toto je nekorektní krok! (∀i 3)
Problém je zde v tom, že proměnná y se vyskytuje jako volná proměnná ve formuli P (y), která byla pomocí pravidla ∃e na řádku 3 odvozena. Ve třetím příkladě nekorektního použití pravidla ∃e je odvozeno z předpokladu, že ke každému prvku existuje prvek, který mu není roven, což je předpoklad, který je splněn v případě každé interpretace, kde má univerzum alespoň dva prvky, že existuje prvek, který není roven sám sobě, což je opět zjevný nesmysl. 1. 2. 3. 4. 5.
∀y∃x(x 6= y) ⊢ ∀y∃x(x 6= y) ∀y∃x(x 6= y) ⊢ ∃x(x 6= y) ∀y∃x(x 6= y), y 6= y ⊢ y 6= y ∀y∃x(x 6= y), y 6= y ⊢ ∃x(x 6= x) ∀y∃x(x 6= y) ⊢ ∃x(x 6= x)
(Assm) (∀e 1) (Assm) (∃i 3) (∃e 2,4) ←− toto je nekorektní krok!
Chyba je zde v tom, že ve tvrzení ∃x(x 6= y) se y vyskytuje jako volná proměnná. Když tedy předpokládáme, že existuje prvek x, pro který platí x 6= y, je nekorektní pojmenovat si tento prvek y.
4.10
Rovnost
Jednou z nejdůležitějších relací je rovnost neboli identita. Dva prvky x a y jsou si rovny (jsou identické), jestliže se jedná o jeden a tentýž prvek. Pro označení rovnosti se standardně používá symbol = („rovná seÿ), přičemž se při použití
4.10
Rovnost
71
tohoto symbolu prakticky vždy používá infixový zápis. To, že prvky x a y si jsou rovny se tedy zapisuje x = y, a to, že hodnoty, na které se vyhodnotí termy t1 a t2 se zapisuje jako atomická formule t1 = t2 . Rovnost je sice jednou z relací a mohli bychom tedy s ní pracovat v rámci predikátové logiky jako s ostatními binárními relacemi. Na druhou stranu se jedná o natolik významnou relaci, že se často zařazuje do systému predikátové logiky jako jeho pevná součást s tím, že symbolu = se nepřiřazuje nějaká libovolná relace v závislosti na interpretaci, ale vždy relace rovnosti. Navíc se pevně stanoví, že při zápisu rovnosti se vždy používá infixový zápis. Běžně považujeme za samozřejmé, že rovnost je reflexivní (tj. že pro každé x platí x = x), symetrická (tj. že, když platí x = y, tak také platí y = x) a tranzitivní (tj. že když platí x = y a y = z, tak také platí x = z). Běžně se také v matematice využívá fakt, že pokud se hodnoty nějakých dvou výrazů rovnají, tak se dá kdekoliv na místo jednoho z těchto výrazů dosadit druhý výraz a platnost tvrzení se tím nezmění. Poznamenejme ještě, že místo ¬(t1 = t2 ) se většinou píše t1 6= t2 . Pokud bychom chtěli dokazovat nějaká tvrzení, ve kterých budou figurovat rovnosti, mohou se nám k tomu hodit následující pravidla. První z těchto pravidel je pravidlo pro zavedení rovnosti, které budeme označovat zkratkou = i: = i:
⊢t=t
Toto pravidlo říká, že pro libovolný term t platí, že roven sám sobě, a že tedy relace rovnosti je reflexivní. Druhé pravidlo pro rovnost, nazvané eliminace rovnosti a označované zkratkou = e, reprezentuje to, že pokud pro nějaké dva termy t a t′ dokážeme za předpokladů Γ se hodnoty obou termů rovnají, tj. dokážeme, že Γ ⊢ t = t′ , tak v libovolném tvrzení, o kterém je dokázáno, že za předpokladů Γ platí, můžeme výskyt (nebo i více výskytů) termu t nahradit termem t′ , a o takto vytvořeném tvrzení tím bude dokázáno, že také platí za předpokladů Γ. Pravidlo = e vypadá následovně: = e:
Γ ⊢ t = t′ Γ ⊢ A[t/x] ′ Γ ⊢ A[t /x]
Jak již bylo řečeno, reflexivita rovnosti je dána pravidlem = i. Symetrie a tranzitivita rovnosti se pak už dají odvodit pomocí pravidel = i a = e. Konkrétně symetrie rovnosti se dá formulovat ve formě následujícího odvozeného pravidla: Γ ⊢ t1 = t2 Γ ⊢ t2 = t1 Důkaz tohoto pravidla vypadá takto: 1. 2. 3. 4. 5. 6.
Γ ⊢ t1 = t2 ⊢ t1 = t1 Γ ⊢ t1 = t1 Γ ⊢ (x = t1 )[t1 /x] Γ ⊢ (x = t1 )[t2 /x] Γ ⊢ t2 = t1
(premisa) (= i) (Ant 2) (rep. 3, x 6∈ free(t1 )) (= e 1,4) (rep. 5)
72 Podobně tranzitivita rovnosti se dá vyjádřit následujícím pravidlem: Γ ⊢ t1 = t2 Γ ⊢ t2 = t3 Γ ⊢ t1 = t3 Důkaz tohoto pravidla je opět poměrně jednoduchý a postačuje k němu pravidlo = e (předpokládáme, že x je nějaká libovolná proměnná nevyskytující se v termu t1 ): 1. 2. 3. 4. 5.
Γ ⊢ t1 = t2 Γ ⊢ t2 = t3 Γ ⊢ (t1 = x)[t2 /x] Γ ⊢ (t1 = x)[t3 /x] Γ ⊢ t1 = t3
(premisa) (premisa) (rep. 1, x 6∈ free(t1 )) (= e 2,3) (rep. 4)
Jako ilustrace toho, že pokud se dva termy rovnají, tak je možné nahradit jeden druhým i uvnitř nějakého jiného termu, je zde dokázáno následující pravidlo (čtenář jistě nebude mít problém v tom, zobecnit tento postup na jiné podobné případy): Γ ⊢ t1 = t′1 Γ ⊢ f (t1 , t2 ) = f (t′1 , t2 ) Důkaz vypadá takto: 1. 2. 3. 4. 5.
Γ ⊢ t1 = t′1 Γ ⊢ f (t1 , t2 ) = f (t1 , t2 ) Γ ⊢ (f (t1 , t2 ) = f (x, t2 ))[t1 /x] Γ ⊢ (f (t1 , t2 ) = f (x, t2 ))[t′1 /x] Γ ⊢ f (t1 , t2 ) = f (t′1 , t2 )
(premisa) (= i) (rep. 2, x 6∈ free(t1 , t2 )) (= e 1,3) (rep. 4)
S využitím rovnosti se dají formulovat pomocí již dříve zavedených kvantifikátorů ∀ a ∃ tvrzení typu „pro právě jeden prvek x platí ϕÿ, kde ϕ je nějaké libovolné tvrzení. Předpokládejme, že proměnná y je různá od proměnné x a že se nevyskytuje jako volná proměnná ve formuli ϕ. Tvrzení „pro právě jeden prvek x platí ϕÿ se pak dá zapsat formulí ∃x(ϕ ∧ ∀y(ϕ[y/x] → x = y)) ,
(∗)
která říká, že existuje prvek x, pro který ϕ platí, přičemž každý další prvek, pro který také platí ϕ, je roven prvku x. Někdy se pro vyjádření tvrzení typu „pro právě jeden prvek x platí ϕÿ zavádí speciální kvantifikátor označený například ∃=1 , pomocí kterého je toto tvrzení zapsáno jako ∃=1 xϕ . Většinou se však takový kvantifikátor nezavádí jako součást logiky. Místo toho je zápis ∃=1 xϕ chápán jako zkrácený zápis formule (∗). Používaný symbol pro kvantifikátor „právě jedenÿ není ujednoceno. Ve stejném významu se používají například symboly ∃1 , ∃=1 , ∃!, apod.
4.11
Dedukční systém pro predikátovou logiku
∀e:
Γ ⊢ ∀xA Γ ⊢ A[t/x]
∃i:
Γ ⊢ A[t/x] Γ ⊢ ∃xA
= i:
⊢t=t
∀i: ∃e:
Γ ⊢ ∃xA
= e:
73
Γ ⊢ A[y/x] (y 6∈ free(Γ, ∀xA)) Γ ⊢ ∀xA Γ, A[y/x] ⊢ B (y 6∈ free(Γ, ∃xA, B)) Γ⊢B Γ ⊢ t = t′ Γ ⊢ A[t/x] Γ ⊢ A[t′ /x]
Obrázek 4.1: Pravidla pro kvantifikátory a pro rovnost
4.11
Dedukční systém pro predikátovou logiku
Vezměme si nyní dedukční systém tvořený pravidly na Obrázku 3.2 spolu s pravidly pro kvantifikátory a pro rovnost uvedenými na Obrázku 4.1 s tím, že v rámci tohoto systému se pracuje formulemi predikátové logiky 1. řádu. Označme tento dedukční systém ND. Dá se ukázat, že tento systém je konzistentní, korektní a úplný. Ačkoliv asi příliš nepřekvapí, že je tento systém konzistentní a korektní, je asi dosti nečekané, že těchto několik pravidel v principu postačuje k tomu, aby se pomocí nich dalo dokázat libovolné tvrzení, které se dá vyjádřit v rámci predikátové logiky 1. řádu. Je třeba si uvědomit, že v rámci logiky 1. řádu se dá vyjádřit prakticky každé matematické tvrzení. Úplnost systému ND (nebo jakéhokoliv jiného systému, ve kterém se všechna pravidla systému ND dají odvodit) tedy v podstatě znamená, že v rámci tohoto systému se dají dokázat všechna pravdivá matematická tvrzení. V rámci tohoto textu však korektnost ani úplnost systému ND dokazovat nebudeme, protože jde o problematiku, jejíž obtížnost značně přesahuje zaměření tohoto textu.
74
Kapitola 5
Naivní teorie množin Teorie množin tvoří základ, na kterém je vybudována velká část veškeré matematiky. Různé oblasti matematiky zavádí různé pojmy specifické pro danou oblast a v rámci dané oblasti jsou pak dokazována různá tvrzení týkající se těchto pojmů. Příklady takových oblastí jsou třeba matematická analýza (integrální a diferenciální počet), lineární algebra, teorie čísel, (abstraktní) algebra, kombinatorika, teorie grafů, teorie pravděpodobnosti, geometrie, topologie, teorie her, a řada dalších. Například v rámci matematické analýzy se pracuje třeba s reálnými a komplexními čísly a s funkcemi na těchto číslech, v oblasti algebry s různými algebraickými strukturami jako jsou například grupy nebo tělesa, v rámci geometrie s objekty jako jsou body, přímky, kružnice, trojúhelníky, atd. V rámci dané oblasti jsou vždy některé pojmy brány jako základní a další pojmy jsou pak definovány pomocí nich, přičemž při dokazování toho, co platí pro složitější pojmy, se vychází z toho, co platí pro tyto základní pojmy. Základní pojmy pro nějakou specifickou oblast jsou v naprosté většině případů definovány pomocí pojmů jako jsou množiny, relace, funkce, uspořádané n-tice, různé druhy čísel (přirozená, racionální, reálná, komplexní, . . . ), apod. I tyto pojmy, které většinou máme tendenci považovat za elementární, se však dají definovat pomocí ještě jednodušších pojmů a jejich vlastnosti se dají odvodit z vlastností těchto jednodušších pojmů. Základním pojmem teorie množin je množina. Všechny ostatní pojmy jsou pak definovány pomocí tohoto jediného pojmu. Objekty, jako jsou relace, funkce, čísla a podobně, pak nejsou nic jiného než speciální případy množin. V rámci teorie množin se tedy nepracuje s jinými objekty než jsou množiny, všechny ostatní matematické objekty se však pomocí množin dají definovat a jejich vlastnosti se dají odvodit z několika málo axiomů teorie množin.
5.1
Množiny
Neformálně je možné chápat množinu jako určitý soubor nebo kolekci objektů. Běžně například můžeme pracovat třeba s množinami přirozených čísel, bodů v rovině, apod. Objektům, které patří do dané množiny, se říká její prvky. Jak již bylo řečeno, v rámci teorie množin se pracuje s objekty jediného typu, s množinami. Prvky množiny tedy mohou být jen další množiny, přičemž je ale třeba mít na paměti, že prvky, jako jsou třeba přirozená čísla nebo body v rovině, které asi běžně za množiny nepovažujeme, jsou v rámci teorie množin ztotožněny s určitými konkrétními množinami. 75
76 Je třeba upozornit, že ne každou kolekci objektů a dokonce ani ne každou kolekci množin je možné pokládat za množinu. Pojetí pojmu množiny v tom smyslu, že jakoukoliv kolekci množin (nebo případně jiných objektů) je možné prohlásit za množinu, vede k odvození logických sporů, jako je například tzv. Russellův paradox, který bude popsán později. Proto je třeba při popisu toho, co je to množina, postupovat poněkud opatrněji, abychom se takovýmto sporům vyhnuli. Běžný postup je takový, že pojem množiny se jako takový nijak nedefinuje, a bere se jako základní, s tím, že základní vlastnosti množin jsou popsány pomocí několika základních axiomů teorie množin. Existuje několik možných souborů axiomů teorie množin. Nejznámější je asi Zermelova-Fraekelova axiomatizace označovaná zkratkou ZF a její rozšíření označované zkratkou ZFC, které vznikne přidání tzv. axiomu výběru k axiomům teorie ZF. Dalším příkladem axiomatizace teorie množin je axiomatizace Bernaysova-Gödelova (někdy též označovaná jako von Neumannova-Bernaysova-Gödelova). V následujícím textu budou stručně popsány (některé) axiomy ZF a některá fakta, která se z nich dají odvodit. Teorie množin pracuje se dvěma základními predikáty a to s predikátem náležení (∈) a predikátem rovnosti (=), přičemž pouze predikát náležení je specifický pro teorii množin. Všechny ostatní relace a funkce na množinách jsou definovány jako odvozené pojmy pomocí těchto dvou základních predikátů.
5.1.1
Predikát náležení
Predikát náležení vyjadřuje vztah mezi dvěma množinami, kdy jedna množina je prvkem druhé množiny. Predikát náležení se zapisuje symbolem ∈. Formální zápis x∈y označuje, že „x je prvkem množiny yÿ („x náleží do yÿ). Pro označení toho, že x není prvkem y se většinou místo ¬(x ∈ y) používá stručnější zápis x 6∈ y. Symbol = označuje rovnost (identitu), tj. x = y znamená, že x a y jsou jeden a tentýž prvek. Místo ¬(x = y) je obvyklejší psát x 6= y. Z vlastností rovnosti plyne, že pokud A = B, pak množiny A a B obsahují tytéž prvky, tj. že platí ∀A∀B(A = B → ∀x(x ∈ A ↔ x ∈ B)). Prvním z axiomů teorie množin, který si uvedeme, je axiom extenzionality (axiom of extensionality), který říká, že platí i opačná implikace: Axiom extenzionality. Pro každé dvě množiny platí, že pokud obsahují tytéž prvky, tak se rovnají: ∀A∀B(∀x(x ∈ A ↔ x ∈ B) → A = B) Axiom extenzionality tedy říká, že pokud A a B obsahují tytéž prvky, jedná se o jednu a tutéž množinu. Obecně tedy platí, že A = B právě tehdy, když ∀x(x ∈ A ↔ x ∈ B), z čehož vyplývá, že pokud A 6= B, tak musí existovat nějaký prvek, který patří do jedné z těchto množin a nepatří do druhé.
5.1
Množiny
77
Cvičení 5.1: Pomocí axiomu extenzionality dokažte, že (a) ∀A∀B(A = B ↔ ∀x(x ∈ A ↔ x ∈ B)) (b) ∀A∀B(A = 6 B → ∃x((x ∈ A ∧ x 6∈ B) ∨ (x 6∈ A ∧ x ∈ B))) Pomocí predikátů náležení a rovnosti je možné definovat další odvozené pojmy. Množina A je podmnožinou množiny B, pokud platí, že každý prvek množiny A je také prvkem množiny B, tj. pokud ∀x(x ∈ A → x ∈ B) . To, že A je podmnožinou množiny B se formálně zapisuje jako A⊆B. Pokud A je podmnožinou množiny B, tak také říkáme, že B je nadmnožinou množiny A. Místo A ⊆ B je možné psát B ⊇ A a místo ¬(A ⊆ B) a ¬(B ⊇ A) se používá zápis A 6⊆ B a B 6⊇ A. Z definice ⊆ přímo vyplývá, že A 6⊆ B platí právě tehdy, když existuje nějaký prvek x takový, že x ∈ A a x 6∈ B. Množina A je vlastní podmnožinou množiny B (resp. B je vlastní nadmnožinou množiny A), jestliže A ⊆ B a A 6= B, tj. právě tehdy, když platí ∀x(x ∈ A → x ∈ B) ∧ ∃x(x 6∈ A ∧ x ∈ B) . Pro označení toho, že x je vlastní podmnožinou se používá zápis A⊂B. Podobně jako v předchozím případě se místo A ⊂ B může psát B ⊃ A a místo ¬(A ⊂ B), resp. ¬(B ⊃ A), se píše A 6⊂ B, resp. B 6⊃ A.
Poznámka: Používání symbolů pro vztahy býti podmnožinou a býti vlastní podmnožinou není v literatuře úplně ujednoceno. Výše popsaná konvence, kdy A ⊆ B označuje, že A je podmnožinou B, a A ⊂ B, že A je vlastní podmnožinou, je jednou z často používaných konvencí. Poměrně často se ale lze setkat také s používáním zápisu A ⊂ B ve významu, že A je podmnožinou B (tj. to, co bylo výše zapsáno jako A ⊆ B), a zápisem A ( B pro označení toho, že A je vlastní podmnožinou B. Cvičení 5.2: Vysvětlete, jaký je rozdíl ve významu symbolů 6⊆ a (. Snadno se dá odvodit, že A = B právě tehdy, když A ⊆ B a A ⊇ B. Při dokazování tvrzení, která jsou tvaru A = B, se tedy často postupuje tak, že se důkaz rozloží na dvě části, na důkaz toho, že A ⊆ B, a důkaz toho, že A ⊇ B.
Protože A ⊆ B platí právě tehdy, když každý prvek množiny A je prvkem množiny B, tak důkazy tvrzení tvaru A ⊆ B vypadají obvykle tak, že se přidá x ∈ A jako nový předpoklad (kde x je nějaká nově zavedená proměnná nevyskytující se jako volná proměnná v ostatních předpokladech ani závěru), a s tímto předpokladem se dokáže, že x ∈ B.
78
5.1.2
Schéma axiomu vydělení
Řekněme, že ϕ(x) je nějaké tvrzení, jehož pravdivost závisí na hodnotě proměnné x, tj. může být pro některé hodnoty x pravdivé a pro jiné nepravdivé. Tvrzení ϕ(x) tedy představuje nějakou podmínku, kterou prvek x buď splňuje nebo nesplňuje. Pokud si vezmeme nějakou libovolnou množinu A, je možné z ní vybrat právě ty prvky, které splňují podmínku ϕ(x), tj. pro které je tvrzení ϕ(x) pravdivé. To, že tyto vybrané prvky tvoří množinu je dáno schématem axiomů vydělení (axiom schema of specification). Schéma axiomů vydělení. Pro každou množinu A a každé tvrzení ϕ(x) existuje množina tvořená právě těmi prvky množiny A, pro které platí ϕ(x): ∀A∃B∀x(x ∈ B ↔ (x ∈ A ∧ ϕ(x))) Jedná se o axiomové schéma, nikoliv o jediný axiom, protože jako ϕ(x) můžeme dosadit libovolné tvrzení. Dosazením nějakého konkrétního tvrzení za ϕ(x) dostaneme příslušný axiom. Protože různých tvrzení ϕ(x) je nekonečně mnoho, zastupuje toto axiomové schéma nekonečně mnoho různých axiomů. Pokud máme nějakou konkrétní množinu A a nějaké konkrétní tvrzení ϕ(x), ze schématu axiomů vydělení vyplývá, že existuje nějaká množina B tvořená právě těmi prvky množiny A, pro které platí ϕ(x). Z axiomu extenzionality pak vyplývá, že existuje právě jedna taková množina. Pro označení této množiny se používá zápis {x ∈ A | ϕ(x)} , nebo též {x ∈ A : ϕ(x)}. Je dobré si uvědomit, že {x ∈ A | ϕ(x)} není tvrzení, nýbrž výraz označující určitou množinu. Na {x ∈ A | ϕ(x)} můžeme nahlížet jako na určitou operaci, která množině A přiřadí množinu B splňující podmínku ∀x(x ∈ B ↔ (x ∈ A ∧ ϕ(x))) . Například zápis y ∈ {x ∈ A | ϕ(x)} je pak možné chápat jako jiný zápis tvrzení y ∈ A ∧ ϕ(y). Všimněme si také, že {x ∈ A | ϕ(x)} je podmnožinou množiny A, tj. {x ∈ A | ϕ(x)} ⊆ A. Přijměme nyní jako axiom, že existuje alespoň jedna množina, tedy, že platí ∃x(x = x) . (Tvrzení x = x v tomto axiomu není příliš podstatné, stejně dobře by na jeho místě posloužilo i jakékoliv jiné tvrzení, které je vždy pravdivé, například ψ ∨ ¬ψ, kde ψ je nějaké libovolné tvrzení, nebo třeba tvrzení ⊤.) Tento axiom se většinou neřadí mezí základní axiomy teorie množin, protože existence nějaké alespoň jedné množiny vyplývá z dalších axiomů, konkrétně například z axiomu nekonečna (o kterém není v tomto textu pojednáno). Pokud existuje nějaká množina A, tak nutně existuje její podmnožina B, tvořená právě těmi prvky x množiny A, pro které platí x 6= x (nebo nějaké jiné vždy nepravdivé tvrzení, např. ψ ∧ ¬ψ nebo ⊥), tedy B = {x ∈ A | x 6= x} .
Tato množina B neobsahuje žádné prvky, platí pro ni tedy ∀x(x 6∈ B). Z axiomu extenzionality pak vyplývá, že existuje právě jedna množina s touto vlastností, tj. existuje právě jedna
5.1
Množiny
79
množina, která neobsahuje žádné prvky. Tato množina se nazývá prázdná množina a označuje se symbolem ∅. Z předchozího tedy vyplývá, že pokud existuje alespoň jedna množina, tak existuje prázdná množina ∅. Cvičení 5.3: Dokažte, že ∅ je podmnožinou každé množiny x.
Přirozeně vyvstává otázka, proč ve schématu axiomů vydělení vybíráme vždy prvky patřící do nějaké množiny A. Nebylo by vhodnější předpokládat, že soubor všech množin splňujících nějakou danou podmínku ϕ(x) tvoří množinu? To jest, nebylo by možné prohlásit za axiom, že pro každé tvrzení ϕ(x) existuje množina B, pro kterou platí ∀x(x ∈ B ↔ ϕ(x)) ? Z axiomu extenzionality vyplývá, že pokud taková množina existuje, tak je právě jedna. Soubor všech množin splňujících podmínku ϕ(x) bychom mohli zapsat jako {x | ϕ(x)} nebo {x : ϕ(x)}. Některé takové soubory jsou množinami. Pokud bychom však považovali každý takový soubor automaticky za množinu, dojdeme k odvození logického sporu. Soubor všech množin splňujících nějakou konkrétní podmínku ϕ(x) je dobře definován. Má například dobrý smysl se ptát, jestli platí y ∈ {x | ϕ(x)} (což je v podstatě jinak zapsané tvrzení ϕ(y)). Ne každý takový soubor množin tvoří množinu, jak vyplývá z následující věty, která je známá pod názvem Russellův paradox. Věta 5.1 Neexistuje množina A tvořená právě těmi množinami, pro které platí, že nejsou svými prvky, tj. neexistuje množina A, pro kterou by platilo ∀x(x ∈ A ↔ x 6∈ x) . Důkaz. Předpokládejme, že taková množina A existuje. Pak tvrzení x ∈ A ↔ x 6∈ x platí pro libovolné x. Speciálně za x můžeme dosadit A a dostáváme, že musí platit A ∈ A ↔ A 6∈ A, což je ale tvrzení, které je vždy nepravdivé. Dostáváme tedy spor s předpokladem, že existuje nějaká množina A splňující výše uvedenou podmínku. Z Věty 5.1 tedy vyplývá, že soubor množin {x | x 6∈ x} netvoří množinu. Bezprostředním důsledkem Russellova paradoxu je to, že soubor všech množin netvoří množinu, protože kdyby existovala nějaká množina M obsahující všechny množiny (tj. množina, pro kterou by platilo ∀x(x ∈ M )), tak by podle schématu axiomu vydělení existovala množina A = {x ∈ M | x 6∈ x}, pro kterou by platilo ∀x(x ∈ A ↔ x 6∈ x). V teorii množin se soubory množin typu {x | ϕ(x)} běžně pracuje. Tyto soubory množin se označují jako třídy. Množiny jsou pak speciálním případem tříd, tj. každá množina je třída, ale ne každá třída je množinou. Viděli jsme, že třeba třída {x | x 6∈ x} není množinou. Množiny jsou ty třídy, které jsou samy prvkem nějaké třídy. Třídy, které samy do žádné třídy nepatří, množinami nejsou a označují se jako vlastní třídy.
80 Některé pojmy definované pro množiny (např. různé operace na množinách, relace mezi množinami, apod.) se dají obecněji definovat i pro třídy. V tomto ohledu se dá se třídami pracovat do určité míry podobně jako s množinami. Na druhou stranu se řada věcí, které se dají dělat s množinami, se s (vlastními) třídami provádět nedá. Pojem třídy a práce se třídami patří mezi pokročilejší a náročnější oblasti teorie množin. V tomto textu se třídami zabývat nebudeme. Poznámka: Velká část matematiky si vystačí s množinami. Zabývat se třídami má smysl, pokud chceme zkoumat základy matematiky, uvažovat o objektech jako je soubor všech množin, apod.
5.1.3
Operace na množinách
Dalším z axiomů teorie množin je axiom dvojice (axiom of pairing), který říká, že z každých dvou prvků je možné vytvořit množinu tvořenou právě těmito dvěma prvky: Axiom dvojice. Pro každé dvě množiny x a y existuje množina A, která obsahuje prvky x a y (a žádné další prvky), tj. pro libovolné z platí, že z je prvkem množiny A právě tehdy, když z = x nebo z = y: ∀x∀y∃A∀z(z ∈ A ↔ (z = x ∨ z = y)) Z axiomu extenzionality vyplývá, že pro dané x a y existuje právě jedna množina A tvořená prvky x a y. Pro označení této množiny se používá zápis {x, y} . Cvičení 5.4: Dokažte, že pro každé x a y platí {x, y} = {y, x}. V případě, že x = y, tak platí {x, y} = {x, x}. Místo zápisu {x, x} se používá zápis {x}, který označuje jednoprvkovou množinu tvořenou prvkem x. Z axiomu dvojice vyplývá, že z libovolných množin můžeme vytvářet jednoprvkové a dvouprvkové množiny, které je obsahují jako své prvky. Asi bychom čekali, že podobným způsobem je možné z nich vytvářet i množiny tříprvkové, čtyřprvkové, pětiprvkové, stoprvkové, atd. K zavedení těchto víceprvkových množin budeme potřebovat další z axiomů teorie množin — axiom sumy (axiom of union). Předtím, než se dostaneme k tomuto axiomu, pomocí kterého je pak možné definovat i operaci sjednocení množin, zastavme se ještě na chvíli u množin, jejichž existence plyne čistě z axiomu sumy. Pokud existuje prázdná množina ∅ (k čemuž nám stačí předpokládat, že existuje alespoň jedna nějaká libovolná množina, jak jsme již viděli dříve), z axiomu dvojice vyplývá, že existuje i řada dalších množin jako jsou například {∅}, {{∅}}, {∅, {∅}}, apod. Cvičení 5.5: Uvažujme všechny množiny, které je možné vytvořit v konečném počtu kroků z množiny ∅ čistě pomocí následujících dvou operací: • k již vytvořené množině x vytvořit množinu {x}, • k již vytvořeným množinám x a y vytvořit množinu {x, y}.
5.1
Množiny
81
Je těchto množin nekonečně mnoho? Jsou každé dvě takové množiny vždy různé, jestliže byly vytvořeny různými posloupnostmi operací? Uveďme nyní již dříve zmíněný axiom sumy (axiom of union): Axiom sumy. Ke každé množině A existuje množina B, která je tvořena právě těmi prvky, které náleží do množin, které jsou prvky množiny A, tj. pro libovolné x platí, že x je prvkem množiny B právě tehdy, když existuje nějaké y ∈ A takové, že x ∈ y: ∀A∃B∀x(x ∈ B ↔ ∃y(y ∈ A ∧ x ∈ y)) Z axiomu extenzionality pak vyplývá, že k libovolné množině A existuje právě jedna množina B splňující podmínku ∀x(x ∈ B ↔ ∃y(y ∈ A ∧ x ∈ y)). Této množině se říká sjednocení množiny A a označuje se zápisem [ A. Tento způsob zápisu však není v matematických textech příliš běžný a většinou se místo něj raději používá následující zápis, ze kterého je lépe vidět, že daný výraz označuje sjednocení množin, které jsou prvky množiny A: [ y y∈A
Místo a to
S
{A, B}, kde A a B jsou množiny, se většinou používá obvyklejší zápis pro sjednocení, A∪B.
Všimněme si, že A ∪ B je množina tvořená právě těmi prvky x, které náleží do A nebo do B, tj. pro které platí x ∈ A ∨ x ∈ B. Sjednocení množin A a B tedy můžeme také popsat jako následující soubor prvků {x | x ∈ A ∨ x ∈ B} . Z axiomu sumy plyne, že tento soubor prvků je množina. Cvičení 5.6: Dokažte, že {x, y} = {x} ∪ {y}. Další operací, kterou na množinách můžeme provádět, je průnik. Průnik množin A a B je množina tvořená právě těmi prvky, které náleží jak do A, tak do B, tj. těmi prvky x, pro které platí x ∈ A∧x ∈ B. K tomu, abychom zdůvodnili, že soubor těchto prvků skutečně tvoří množinu nepotřebujeme žádný další axiom a dokonce ani nepotřebujeme axiom sumy nebo dvojice. To, že tyto prvky tvoří množinu, totiž plyne ze schématu axiomu vydělení. Příslušnou množinu můžeme popsat jako množinu těch prvků množiny A, které mají tu vlastnost, že patří do množiny B, tj. jako množinu {x ∈ A | x ∈ B} , resp. jako množinu těch prvků množiny B, které náleží do množiny A, tj. {x ∈ B | x ∈ A}. Cvičení 5.7: Dokažte, že {x ∈ A | x ∈ B} = {x ∈ B | x ∈ A}
Průnik množin A a B se označuje zápisem A ∩ B.
82 Z předchozí definice operace ∩ tedy plyne, že pro každé x platí, že x ∈ A ∩ B právě tehdy, když x ∈ A ∧ x ∈ B. Průnik množin A a B tedy můžeme též charakterizovat jako soubor prvků {x | x ∈ A ∧ x ∈ B} ,
a to, že se jedná o množinu, plyne ze schématu axiomů vydělení. Podobně jako v případě sjednocení nemusíme uvažovat jen průnik dvou množin, ale můžeme tuto operaci zobecnit na libovolné soubory množin. Pokud A je neprázdná množina (tj. A 6= ∅), pak zápisem \ A T označujeme průnik všech množin, které jsou prvky množiny A, tj. pro libovolné x platí x ∈ A právě tehdy, když x je prvkem všech množin patřících do A: \ x∈ A ↔ ∀y(y ∈ A → x ∈ y) T To, že A je množina, plyne opět ze schématu axiomů vydělení: Vezměme nějaké libovolné zT∈ A (nějaké takové z nutně existuje, protože předpokládáme, že A je neprázdná), vytvořme A jako množinu {x ∈ z | ∀y(y ∈ A → x ∈ y)} . T Předpoklad, že A je neprázdná množina, je v definici A podstatný. Pokud by platilo A = T ∅, podmínka ∀y(y ∈ A → x ∈ y) platí pro každé x (protože y ∈ ∅ neplatí pro žádné y), a A by byl soubor všech množin, o kterém již víme, že není množinou. S T Podobně jako A se ani zápis A v matematických textech příliš nepoužívá a místo něj se používá spíše způsob zápisu \ x. x∈A
Další operací je rozdíl množin. Rozdíl množin A a B je množina tvořená právě těmi prvky množiny A, které nejsou prvky množiny B, tj. rozdíl množin můžeme definovat jako množinu {x ∈ A | x 6∈ B} . Rozdíl množin se označuje zápisem A − B (někdy se též používá zápis A \ B). Stejně jako v případě průniku plyne to, že A − B je množina, ze schématu axiomů vydělení. Pokud pracujeme pouze s množinami, které jsou podmnožinami nějaké jedné pevně dané množiny M , můžeme operace sjednocení, průniku a rozdílu popsat následujícím způsobem. Předpokládejme, že A, B ⊆ M . • sjednocení: A ∪ B = {x ∈ M | x ∈ A ∨ x ∈ B} • průnik: A ∩ B = {x ∈ M | x ∈ A ∧ x ∈ B} • rozdíl: A − B = {x ∈ M | x ∈ A ∧ x 6∈ B} Pokud máme dánu množinu M , můžeme také pro A ⊆ M definovat doplněk množiny A ¯ Je třeba zdůraznit, že k tomu, aby byla operace doplňku dobře jako M − A a označit ho A. definována, je potřeba specifikovat, co je množina M . Vraťme se nyní k tomu, jak pro daných n prvků x1 , x2 , . . . , xn , kde n ≥ 1, definovat množinu {x1 , x2 , . . . , xn } tvořenou právě těmito prvky.
5.1
Množiny
83
• Pro n = 1 byla již množina {x1 } definována dříve (její existence plyne z axiomu dvojice). • Pro n > 1 položme {x1 , x2 , . . . , xn } = {x1 , x2 , . . . , xn−1 } ∪ {xn }. Všimněme si, že tato definice je konzistentní s dříve uvedenou definicí množiny {x1 , x2 }, neboť {x1 , x2 } = {x1 } ∪ {x2 }. Všimněme si také, že pro libovolné y platí y ∈ {x1 , x2 , . . . , xn } právě tehdy, když y = x1 ∨ y = x2 ∨ . . . ∨ y = xn . Cvičení 5.8: Mějme množiny x1 , x2 , . . . , xm a y1 , y2 , . . . , yn , kde:
• pro každé xi , kde 1 ≤ i ≤ m, existuje nějaké yj , kde 1 ≤ j ≤ n, takové, že xi = yj , • pro každé yj , kde 1 ≤ j ≤ n, existuje nějaké xi , kde 1 ≤ i ≤ m, takové, že xi = yj . Dokažte, že {x1 , x2 , . . . , xm } = {y1 , y2 , . . . , yn }. Vezměme si libovolnou množinu A. To, že soubor všech jejích podmnožin {B | B ⊆ A} tvoří množinu, vyplývá z axiomu potence (axiom of power set): Axiom potence. Pro každou množinu A existuje množina C, jejíž prvky jsou právě ty množiny, které jsou podmnožinami množiny A, tj. taková množina C, že pro každé B platí B ∈ C právě tehdy, když B ⊆ A: ∀A∃C∀B(B ∈ C ↔ ∀x(x ∈ B → x ∈ A)) Z axiomu extenzionality vyplývá, že pro danou množinu A existuje právě jedna taková množina C. Tato množina se nazývá potenční množina množiny A a označuje se zápisem P(A). Poznámka: Často se pro označení potenční množiny používá také zápis 2A . Všimněme si, že ∅ ∈ P(A) platí pro jakoukoliv množinu A (protože ∅ ⊆ A). Všimněme si také, že {a1 , a2 , . . . , an } ∈ P(A) právě tehdy, když a1 ∈ A ∧ a2 ∈ A ∧ · · · ∧ an ∈ A. Speciálně pak {a} ∈ P(A) právě tehdy, když a ∈ A.
5.1.4
Uspořádané n-tice
Prvky množiny nejsou nijak uspořádané, například {a, b, c} a {b, c, a} je jedna a tatáž množina. Pro mnohé účely se hodí pracovat s dvojicemi, trojicemi, čtveřicemi, nebo obecně n-ticemi prvků, kde jsou prvky v dané n-tici uspořádané v nějakém konkrétním pořadí a má smysl mluvit o prvním, druhém, osmnáctém prvku dané n-tice. Těmto n-ticím se říká uspořádané n-tice. Pro uspořádanou n-tici tvořenou prvky a1 , a2 , . . . , an se většinou používá zápis (a1 , a2 , . . . , an )
nebo
ha1 , a2 , . . . , an i .
Například uspořádanou dvojici tvořenou prvky a a b můžeme zapsat jako (a, b) (resp. ha, bi), přičemž a je první prvek této dvojice a b druhý. Důležitou vlastností uspořádaných n-tic je, že (a1 , a2 , . . . , an ) = (b1 , b2 , . . . , bn ) právě tehdy, když a1 = b1 ∧ a2 = b2 ∧ · · · ∧ an = bn .
84 Pojem uspořádané n-tice není třeba zavádět přidáním dalších axiomů jako zcela nový pojem odlišný od pojmu množiny, nýbrž je možné definovat uspořádané n-tice pomocí již dříve definovaných pojmů jako určité speciální případy množin. Existuje několik alternativních možností, jak definovat uspořádané n-tice pomocí množin. My si zde ukážeme pro ilustraci jednu z nich. Jako základní stavební blok nám poslouží uspořádaná dvojice definovaná následujícím způsobem. Řekněme, že a a b jsou nějaké dva libovolné prvky. Uspořádaná dvojice (a, b) tvořená prvky a a b je definována jako {{a}, {a, b}} . Z definice je zřejmé, že pokud a a b jsou množiny, pak i (a, b) je množina. Všimněme si také, že (a, a) = {{a}, {a, a}} = {{a}}. Důkaz následující věty je ponechán čtenáři jako cvičení: Věta 5.2 (a, b) = (c, d) právě tehdy, když a = c a b = d. Pro libovolné množiny A a B je možné vytvořit soubor všech uspořádaných dvojic (a, b), kde a ∈ A a b ∈ B. Tento soubor se nazývá kartézský součin množin A a B a označuje se zápisem A × B. Není těžké dokázat, že pokud A a B jsou množiny, tak i A × B je množina. Pomocí právě zavedeného pojmu uspořádané dvojice je možné zavést pojem uspořádané n-tice (a1 , a2 , . . . , an ) tvořené prvky a1 , a2 , . . . , an , kde n ≥ 1, například takto: • Pro n = 1 je uspořádaná 1-tice (a1 ) definována jako a1 . • Pro n > 1 je (a1 , a2 , . . . , an ) = ((a1 , a2 , . . . , an−1 ), an ). S využitím Věty 5.2 není těžké dokázat, že (a1 , a2 , . . . , an ) = (b1 , b2 , . . . , bn ) právě tehdy, když a 1 = b1 ∧ a 2 = b2 ∧ · · · ∧ a n = bn . Všimněme si také, že ((a, b), c) (= (a, b, c)) je něco jiného než (a, (b, c)). Rovněž pojem kartézského součinu se dá zobecnit pro n množin A1 , A2 , . . . , An , kde n ≥ 2. Kartézský součin dvou množin A1 a A2 již byl definován. Pro n > 2 je A1 × A2 × · · · × An = (A1 × A2 × · · · × An−1 ) × An . Poznámka: Pro n = 1, to můžeme brát tak, že A1 × A2 × · · · × An je totéž, co A1 . Pro n ≥ 1 tedy A1 × A2 × · · · × An reprezentuje množinu všech uspořádaných n-tic tvaru (a1 , a2 , . . . , an ) , kde a1 ∈ A1 , a2 ∈ A2 , . . . , an ∈ An . Je dobré upozornit na to, že kartézský součin není asociativní operace. Obecně (A × B) × C není totéž, co A × (B × C). V speciálním případě, kdy A1 = A2 = · · · = An je možné použít následující stručnější zápis, kdy se místo n krát
}| { z A × A × ··· × A
píše An . Přesněji se dá An definovat tak, že A1 = A a pro n > 1 je An = An−1 × A.
5.2
Relace
5.2
85
Relace
Relace na množinách A1 , A2 , . . . , An je libovolná množina R taková, že R ⊆ A1 × A2 × · · · × An . Počet množin n v kartézském součinu A1 × A2 × · · · × An , jehož je relace R podmnožinou, se nazývá arita relace R. V případě, kdy n = 1, říkáme, že R je unární relace, v případě, kdy n = 2, že R je binární relace, kdy n = 3, že R je ternární relace, a obecně, že R je n-ární relace. V případě, kdy A1 = A2 = · · · = An , tj. když R ⊆ An , mluvíme o homogenní relaci, v opačném případě o relaci heterogenní. O homogenní relaci R ⊆ An můžeme říci, že se jedná o n-ární relaci na množině A. Vezměme si nějakou relaci R ⊆ A1 × A2 × · · · × An pro nějaké A1 , A2 , . . . , An . Místo (x1 , x2 , . . . , xn ) ∈ R se může psát také R(x1 , x2 , . . . , xn ). V případě binárních relací, tj. když R ⊆ A×B pro nějaké A a B, se místo (x, y) ∈ R může psát R(x, y) a často se používá i infixový zápis xRy. Relace je možné skládat. Řekněme, že R ⊆ A × B a S ⊆ B × C. Složením relací je relace T ⊆ A × C definovaná T = {(x, z) ∈ A × C | (∃y ∈ B)(xRy ∧ ySz)} . Zaměřme se nyní na binární homogenní relace. Řekněme, že R je binární relace na množině A, tj. R ⊆ A × A. Relace R je: • • • • • •
reflexivní, jestliže pro každé x ∈ A platí xRx, ireflexivní, jestliže pro každé x ∈ A platí ¬(xRx), symetrická, jestliže pro každé x, y ∈ A platí, že jestliže xRy, pak yRx. asymetrická, jestliže pro každé x, y ∈ A platí, že jestliže xRy, pak ¬(yRx). antisymetrická, jestliže pro každé x, y ∈ A platí, že jestliže xRy a yRx, pak x = y. tranzitivní, jestliže pro každé x, y, z ∈ A platí, že pokud xRy a yRz, pak xRz.
5.2.1
Relace typu ekvivalence
Homogenní binární relace, která je reflexivní, symetrická a tranzitivní se nazývá ekvivalence. S pojmem ekvivalence úzce souvisí pojem rozkladu. Rozklad množiny A je taková množina C neprázdných navzájem disjunktních podmnožin množiny A, jejichž sjednocení tvoří celou množinu A, tj. pro C platí, že pro každé B1 , B2 ∈ C je buď B1 = B2 nebo B1 ∩ B2 = ∅, dále pak, že [ B = A, B∈C
a pro každé B ∈ C, že B 6= ∅. Řekněme, že máme dánu nějakou množinu A a nějakou ekvivalenci ∼⊆ A×A na této množině. Každému prvku x ∈ A můžeme přiřadit množinu prvků ekvivalentních s tímto prvkem. Tuto množinu označíme [x]∼ a je definována jako [x]∼ = {y ∈ A | x ∼ y} .
86 Takovým množinám [x]∼ se říká třídy ekvivalence ∼. Definujme nyní množinu C jako množinu všech těchto tříd: C = {[x]∼ | x ∈ A} Věta 5.3 Množina C tvoří rozklad množiny A. Důkaz. Díky tomu, že relace ∼ je reflexivní, platí pro každé x ∈ A, že x ∈ [x]∼ . Všechny třídy [x]∼ z množiny C jsou tedy neprázdné a každý prvek x ∈ A patří do alespoň jedné třídy, takže sjednocení všech těchto tříd tvoří množinu A. Zbývá ověřit, zda platí, že libovolné dvě třídy z množiny C jsou buď disjunktní nebo stejné. Vezměme si tedy libovolné dva prvky x, y ∈ A takové, že x 6= y, a jim příslušné třídy [x]∼ a [y]∼ . Musíme dokázat, že buď [x]∼ ∩ [y]∼ = ∅ nebo [x]∼ = [y]∼ . Předpokládejme, že [x]∼ ∩ [y]∼ 6= ∅, a ukážeme, že za tohoto předpokladu je každý prvek třídy [x]∼ prvkem třídy [y]∼ a každý prvek třídy [y]∼ je prvkem třídy [x]∼ , takže [x]∼ = [y]∼ . Vezměme si libovolný prvek z ∈ [x]∼ . Podle definice třídy [x]∼ platí x ∼ z. Z předpokladu [x]∼ ∩ [y]∼ 6= ∅ vyplývá, že existuje nějaký prvek w ∈ A takový, že w ∈ [x]∼ a w ∈ [y]∼ , takže x ∼ w a y ∼ w. Díky tomu, že relace ∼ je symetrická a tranzitivní, můžeme ze vztahů x ∼ z, x ∼ w a y ∼ w vyvodit, že y ∼ z, takže z ∈ [y]∼ . Pokud v předchozím argumentu zaměníme x a y, dostaneme zcela analogicky, že pro libovolný prvek z ∈ [y]∼ platí z ∈ [x]∼ , čímž je důkaz hotov.
5.3
Funkce
Vezměme si libovolné dvě množiny A a B a nějakou relaci R ⊆ A × B. Relace R je funkce neboli funkční relace, jestliže platí, že pro každý prvek x ∈ A existuje nejvýše jeden prvek y ∈ B takový, že (x, y) ∈ R. Poněkud formálněji je možné tuto podmínku formulovat tak, že pro každé x ∈ A a každé y1 , y2 ∈ B platí (x, y1 ) ∈ R ∧ (x, y2 ) ∈ R → y1 = y2 . Řekněme, že f ⊆ A × B je funkce. Vezměme si libovolný prvek x ∈ A. Z předchozí definice plyne, že pokud existuje nějaký prvek y takový, že (x, y) ∈ f , je tento prvek y určen jednoznačně. Pro označení tohoto prvku se používá zápis f (x) . Funkce f tedy přiřazuje prvkům z množiny A prvky z množiny B. Pro vyjádření toho, že f ⊆ A × B a že f je funkce, se používá zápis f :A→B, a říkáme, že f je funkce z A do B. Ve stejném významu jako pojem funkce se často používají jako synonyma i pojmy zobrazení a operace. Funkce f : A → B, kde pro každý prvek x ∈ A existuje nějaký prvek y ∈ B takový, že (x, y) ∈ f , a kde je tedy hodnota f (x) definována pro každé x ∈ A, se nazývá totální nebo také úplná. Pokud tato podmínka nemusí být splněna, tj. pokud připouštíme, že mohou
5.3
Funkce
87
existovat nějaké prvky z množiny A, pro které není hodnota funkce f definována, mluvíme o funkci parciální nebo také částečné. V následujícím textu budeme používat konvenci, že pokud nebude při popisu nějaké funkce explicitně uvedeno, že se jedná o parciální funkci, budeme automaticky předpokládat, že se jedná o funkci totální. V případě, kdy máme funkci f : A → B, kde A = A1 × A2 × · · · × An pro nějaké množiny A1 , A2 , . . . , An , je možné psát f : A1 × A2 × · · · × An → B . V zápise f ((x1 , x2 , . . . , xn )), kde x1 ∈ A1 , x2 ∈ A2 , . . . , xn ∈ An , je pak zvykem prakticky vždy vynechávat jeden pár závorek a místo toho psát f (x1 , x2 , . . . , xn ) . O funkci f : A1 × A2 × · · · × An → B se říká, že je to n-ární funkce (v případě, kdy n = 1, tak unární, když n = 2, tak binární, atd.). Speciálně v případě, kdy A1 = A2 = · · · = An , je možné místo f : A × A × · · · × A → B psát f : An → B. Pokud navíc A = B, o funkci f : An → A můžeme říct, že se jedná o n-ární funkci na množině A. Soubor všech funkcí z A do B se označuje B A . Zápis f : A → B tedy označuje to samé, co f ∈ B A . Není těžké dokázat, že pokud A a B jsou množiny, tak i B A je množina. Vezměme si nyní libovolnou funkci f : A → B. • Funkce f je injektivní (prostá), jestliže f zobrazí každé dva různé prvky množiny A na dva různé prvky množiny B, tj. pokud pro každé dva prvky x1 , x2 ∈ A platí f (x1 ) = f (x2 ) → x1 = x2 . • Funkce f je surjektivní (na), jestliže pro každý prvek množiny B existuje nějaký prvek množiny A, který se na něj zobrazí, tj. pokud pro každé y ∈ B existuje x ∈ A takové, že f (x) = y. • Funkce f je bijektivní, jestliže je zároveň injektivní i surjektivní. Místo toho, že funkce je injektivní, surjektivní nebo bijektivní se také říká, že funkce je injekce, surjekce nebo bijekce. Ukažme si nyní, že pro každou množinu A platí, že neexistuje žádná surjekce (a tím pádem ani žádná bijekce) z množiny A do množiny P(A). Věta 5.4 Pro libovolnou množinu A a libovolnou funkci f : A → P(A) platí, že f není surjektivní. Důkaz. Podle schématu axiomu vydělení existuje pro danou množinu A a funkci f : A → P(A) množina B = {x ∈ A | x 6∈ f (x)} .
Zjevně platí, že B ⊆ A a tedy B ∈ P(A). Pokud je f surjektivní, tak musí existovat nějaký prvek x ∈ A takový, že f (x) = B. Buď platí x ∈ B nebo x 6∈ B:
88 • Pokud x ∈ B, tak z definice množiny B, plyne, že x 6∈ f (x). Protože f (x) = B, znamená to, že x 6∈ B, což je spor. • Pokud x 6∈ B, tak z definice množiny B, plyne, že x ∈ f (x). Protože f (x) = B, znamená to, že x ∈ B, což je spor. Obě možnosti vedou ke sporu, z čehož můžeme vyvodit, že neexistuje žádný prvek x ∈ A, pro který by platilo f (x) = B, takže funkce f není surjektivní.
Kapitola 6
Výroková logika 6.1
Syntaxe formulí výrokové logiky
Formule výrokové logiky jsou konečné sekvence symbolů vytvořené podle určitých syntaktických pravidel. Předpokládejme, že máme dánu množinu atomických tvrzení At. Formule výrokové logiky pro danou množinu At tvoří jazyk, který budeme označovat LAt . Slova tohoto jazyka jsou sekvence symbolů z abecedy AAt = At ∪ {¬, ∧, ∨, →, ↔, ⊥, ⊤, ), (}, kde předpokládáme, že At ∩ {¬, ∧, ∨, →, ↔, ⊥, ⊤, ), (} = ∅. Symboly abecedy AAt jsou následujících tří typů: • atomická tvrzení — symboly p, kde p ∈ At, • logické spojky — symboly ¬, ∧, ∨, →, ↔, ⊥ a ⊤, • závorky — symboly ) a (. Množinu všech dobře vytvořených formulí výrokové logiky pro množinu atomických tvrzení At budeme označovat LAt . Množina LAt je definována jako nejmenší podmnožina množiny všech slov nad abecedou AAt , splňující následující podmínky: P1: P2: P3: P4:
Pokud p ∈ At, tak p je formule náležející do LAt . ⊥ a ⊤ jsou formule náležející do LAt . Pokud ϕ je formule náležející do LAt , tak i ¬ϕ je formule náležející do LAt . Pokud ϕ a ψ jsou formule náležející do LAt , tak (ϕ ∧ ψ), (ϕ ∨ ψ), (ϕ → ψ) a (ϕ ↔ ψ) jsou formule náležející do LAt
Při zápisu formulí budeme používat běžné konvence pro vypouštění závorek: • Vnější pár závorek je možné vypustit. • Pokud nejsou závorky uvedeny, použije se uzávorkování určené následující prioritou jednotlivých logických spojek (od největší po nejmenší): ¬, ∧, ∨, →, ↔ • Díky asociativitě ∧ a ∨ je možné vypouštět závorky ve formulích tvaru (A ∧ B) ∧ C, A ∧ (B ∧ C), (A ∨ B) ∨ C a A ∨ (B ∨ C), a místo prvních dvou psát A ∧ B ∧ C a místo druhých dvou psát A ∨ B ∨ C. 89
90
6.2
Sémantika formulí výrokové logiky
Jak již bylo řečeno dříve, v klasické logice se pracuje se dvěma pravdivostními hodnotami — nepravda (kterou budeme označovat 0) a pravda (kterou budeme označovat 1). Množinu tvořenou těmito dvěma pravdivostními hodnotami budeme označovat Bool, tj. Bool = {0, 1}. Předpokládejme nyní, že máme dánu nějakou množinu atomických tvrzení At. Pravdivostní ohodnocení přiřazuje pravdivostní hodnotu každému atomickému výroku z množiny At. Formálně tedy můžeme definovat pravdivostní ohodnocení ν jako libovolnou funkci ν : At → Bool. Sémantika výrokové logiky pak určuje pro každou formuli ϕ ∈ LAt , jakou pravdivostní hodnotu nabývá formule ϕ při ohodnocení ν. Formálně se to dá popsat tak, že tato sémantika popisuje zobrazení, které každé funkci ν : At → Bool přiřadí funkci νˆ : LAt → Bool takovou, že νˆ(ϕ) reprezentuje pravdivostní hodnotu, kterou formule ϕ nabývá při ohodnocení ν. Pro vyjádření toho, že formule ϕ je pravdivá při ohodnocení ν, tj. , že νˆ(ϕ) = 1, budeme používat zápis ν |= ϕ. Pro vyjádření toho, že formule ϕ je při ohodnocení ν nepravdivá, tj. toho, že νˆ(ϕ) = 0, pak zápis ν 6|= ϕ. Funkce νˆ, tj. to, kdy platí ν |= ϕ, je definováno induktivně: • • • • • • •
ν ν ν ν ν ν ν
|= p, kde p ∈ At, právě tehdy, když ν(p) = 1, 6|= ⊥ a ν |= ⊤, |= ¬ϕ právě tehdy, když ν 6|= ϕ, |= ϕ ∧ ψ právě tehdy, když ν |= ϕ a ν |= ψ, |= ϕ ∨ ψ právě tehdy, když ν |= ϕ nebo ν |= ψ, |= ϕ → ψ právě tehdy, když ν 6|= ϕ nebo ν |= ψ, |= ϕ ↔ ψ právě tehdy, když ν |= ϕ a ν |= ψ, nebo když ν 6|= ϕ a ν 6|= ψ.
Poněkud formálněji je možné funkci νˆ definovat následujícím způsobem. Předtím než popíšeme tuto formálnější definici, zavedeme pomocné funkce h¬ , h∧ , h∨ , h→ a h↔ , kde h¬ : Bool → Bool a h∗ : Bool × Bool → Bool pro ∗ ∈ {∧, ∨, →, ↔}, které definují význam jednotlivých logických spojek. Hodnoty, kterých nabývá funkce h¬ jsou popsány touto tabulkou: x 0 1
h¬ (x) 1 0
Hodnoty, kterých nabývají funkce h∧ , h∨ , h→ a h↔ jsou uvedeny v následující tabulce: x 0 0 1 1
y 0 1 0 1
h∧ (x, y) 0 0 0 1
h∨ (x, y) 0 1 1 1
h→ (x, y) 1 1 0 1
h↔ (x, y) 1 0 0 1
Pro dané pravdivostní ohodnocení ν je funkce νˆ definována následovně: • νˆ(p) = ν(p) pro p ∈ At,
6.2
Sémantika formulí výrokové logiky
91
• νˆ(⊥) = 0 a νˆ(⊤) = 1, • νˆ(¬ϕ) = h¬ (ˆ ν (ϕ)), • νˆ(ϕ ∗ ψ) = h∗ (ˆ ν (ϕ), νˆ(ψ)) pro ∗ ∈ {∧, ∨, →, ↔}. Formule ϕ ∈ LAt je: • tautologie, jestliže je pravdivá při každém pravdivostním ohodnocení, tj. když pro každé pravdivostní ohodnocení ν : At → Bool platí ν |= ϕ, • splnitelná, jestliže je pravdivá při alespoň jednom pravdivostním ohodnocení, tj. když existuje nějaké pravdivostní ohodnocení ν : At → Bool, pro které platí ν |= ϕ, • kontradikce, jestliže je nepravdivá při každém pravdivostním ohodnocení, tj. když pro každé pravdivostní ohodnocení ν : At → Bool platí ν 6|= ϕ, Zápis |= ϕ
označuje, že formule ϕ je tautologie. Symbol |= je zde použit v jiném významu než ve výše uvedeném zápise ν |= ϕ, který označuje, že formule ϕ je pravdivá při ohodnocení ν. Symbol |= je tedy přetížen a jeho konkrétní význam závisí na kontextu, ve kterém se nachází. Kromě těchto dvou významů se symbol |= používá ještě pro označení logického vyplývání, což je pojem, který je popsán v následujícím odstavci. Vezměme si libovolnou množinu formulí Γ ⊆ LAt , která představuje množinu předpokladů. Formule ϕ ∈ LAt logicky vyplývá z této množiny předpokladů Γ, jestliže při každém pravdivostním ohodnocení, při kterém jsou pravdivé všechny formule z Γ, je pravdivá i formule ϕ. Jinak řečeno, ϕ logicky vyplývá z Γ, jestliže pro každé ohodnocení ν : At → Bool platí, že pokud ν |= ψ platí pro každé ψ ∈ Γ, tak ν |= ϕ. To, že formule ϕ logicky vyplývá z předpokladů Γ se označuje zápisem Γ |= ϕ . Formule ϕ tedy logicky nevyplývá z předpokladů Γ, jestliže existuje nějaké alespoň jedno ohodnocení ν, pro které platí ν |= ψ pro všechna ψ ∈ Γ a zároveň ν 6|= ϕ. Nyní si budeme definovat, kdy jsou dvě formule logicky ekvivalentní. Vezměme si dvojici formulí ϕ, ψ ∈ LAt . Formule ϕ a ψ jsou logicky ekvivalentní, jestliže nabývají stejných pravdivostních hodnot při každém pravdivostním ohodnocení, tj. jestliže pro každé ohodnocení ν : At → Bool platí ν |= ϕ právě tehdy, když ν |= ψ. Pro označení toho, že formule ϕ a ψ jsou logicky ekvivalentní, se používá zápis ϕ ⇔ ψ. Alternativně bychom mohli logickou ekvivalenci formulí definovat tak, že formule ϕ a ψ jsou logicky ekvivalentní, jestliže ϕ |= ψ a zároveň ψ |= ϕ. Cvičení 6.1: Ukažte, že ϕ ⇔ ψ platí právě tehdy, když ϕ |= ψ a ψ |= ϕ.
92
Kapitola 7
Predikátová logika prvního řádu Na rozdíl od výrokové logiky, která pracuje jen s atomickými výroky, které jsou buď pravdivé nebo nepravdivé, ale nemají žádnou další vnitřní strukturu, se formule predikátové logiky vyjadřují o strukturách tvořených nějakou množinou prvků a různými relacemi a funkcemi nad touto množinou. U výrokové logiky předpokládáme, že máme předem dánu nějakou množinu atomických tvrzení. Oproti tomu u predikátové logiky předpokládáme, že máme předem dány jména relací, funkcí i některých konkrétních prvků, o kterých se budou vytvořené formule vyjadřovat. Seznam těchto jmen je popsán tzv. signaturou, kterou můžeme formálně popsat jako čtveřici S = (P, F, C, arity) , kde • • • •
P je množina predikátových symbolů, F je množina funkčních symbolů, C je množina konstantních symbolů, arity : P ∪ F → N je funkce určující aritu jednotlivých predikátových a funkčních symbolů,
přičemž množiny P, F a C jsou navzájem disjunktní (tj. P ∩ (F ∪ C) = ∅ a F ∩ C = ∅), a navíc pro každé f ∈ F platí arity(f ) ≥ 1 a pro každé P ∈ P platí arity(P ) ≥ 1. Predikátové symboly slouží pro pojmenování relací, funkční symboly pro pojmenování funkcí a konstantní symboly pro pojmenování (některých) prvků. Arita predikátového nebo funkčního symbolu, určená hodnotou funkce arity, udává aritu příslušné relace nebo funkce, která je tímto symbolem pojmenována. Jako predikátové symboly budeme většinou používat symboly P , Q, R, jako funkční symboly f , g, h, a jako konstantní symboly c a d.
7.1
Syntaxe formulí predikátové logiky prvního řádu
Řekněme, že máme dánu nějakou signaturu S = (P, F, C, arity). Pro tuto signaturu S budeme definovat množinu LS všech formulí predikátové logiky prvního řádu s touto signaturou. 93
94 Formule v množině LS jsou určité konečné sekvence symbolů abecedy AS . Abeceda AS se skládá jednak z mimologických symbolů, což jsou predikátové, funkční a konstantní symboly dané danou konkrétní signaturou S, a dále z logických symbolů, které jsou nezávislé na použité signatuře. Logické symboly je možno rozdělit do několika skupin: • proměnné — množinu proměnných budeme označovat Var . Tato množina je nekonečná spočetná. Pro označení proměnných budeme většinou používat symboly x, y, z (případně s indexy). • logické spojky: ¬, ∧, ∨, →, ↔ • kvantifikátory: existenční kvantifikátor ∃, univerzální kvantifikátor ∀ • závorky: ), ( • symbol pro rovnost: = Dříve než budeme definovat množinu formulí LS definujme množinu termů TS . Množina TS je nejmenší množina slov nad abecedou AS splňující následující podmínky: T1: Pro každou proměnnou x ∈ Var platí, že x náleží do TS . T2: Pro každý konstantní symbol c ∈ C platí, že c náleží do TS . T3: Pokud t1 , t2 , . . . , tn jsou termy patřící do TS a f ∈ F je funkční symbol, kde arity(f ) = n, pak i f (t1 , t2 , . . . , tn ) náleží do TS . Nyní je možné definovat LS jako nejmenší množinu slov nad abecedou AS splňující následující podmínky: F1: Pokud t1 , t2 , . . . , tn jsou termy patřící do TS a P ∈ P je predikátový symbol, kde arity(P ) = n, pak P (t1 , t2 , . . . , tn ) je formule náležející do LS . F2: Pokud t1 , t2 jsou termy patřící do TS , pak t1 = t2 je formule náležející do LS . F3: Pokud ϕ je formule náležející do LS , pak i ¬ϕ je formule náležející do LS . F4: Pokud ϕ a ψ jsou formule náležející do LS , pak i (ϕ ∧ ψ), (ϕ ∨ ψ), (ϕ → ψ) a (ϕ ↔ ψ) jsou formule náležející do LS . F5: Pokud x ∈ Var je proměnná a ϕ je formule náležející do LS , pak i ∃xϕ a ∀xϕ jsou formule náležející do LS . Rozlišují se varianty predikátové logiky s rovností a bez rovnosti. Ve výše uvedené definici se jedná o variantu s rovností. Variantu bez rovnosti dostaneme, pokud vypustíme v definici množiny LS bod F2 a z abecedy AS vypustíme symbol pro rovnost = (nebo ho necháme jako predikátový symbol patřící do množiny P). Pro každý term t a každou formuli ϕ můžeme definovat množinu všech volných proměnných vyskytujících se v daném termu nebo formuli. Tyto množinu budeme označovat zápisem free(t) a free(ϕ). Nejprve definujme množinu free(t) pro t ∈ TS : • free(x) = {x} pro x ∈ Var , • free(c) = ∅ pro c ∈ C, • free(f (t1 , t2 , . . . , tn )) = free(t1 ) ∪ free(t2 ) ∪ . . . ∪ free(tn ) pro f ∈ F. Nyní můžeme definovat free(ϕ) pro ϕ ∈ LS :
7.2
Sémantika formulí predikátové logiky prvního řádu • • • • •
7.2
95
free(P (t1 , t2 , . . . , tn )) = free(t1 ) ∪ free(t2 ) ∪ · · · ∪ free(tn ) pro P ∈ P, free(t1 = t2 ) = free(t1 ) ∪ free(t2 ), free(¬ϕ) = free(ϕ), free(ϕ ∗ ψ) = free(ϕ) ∪ free(ψ) pro ∗ ∈ {∧, ∨, →, ↔}, free(Qxϕ) = free(ϕ) − {x} pro Q ∈ {∃, ∀} a x ∈ Var .
Sémantika formulí predikátové logiky prvního řádu
Jak již bylo naznačeno dříve, formule predikátové logiky jsou vyhodnocovány ve strukturách, které se skládají z množiny prvků a nějakých konkrétních relací a funkcí nad touto množinou. Těmto strukturám se říká interpretační struktury nebo zkráceně interpretace. Předpokládejme, že máme dánu nějakou signaturu S = (P, F, C, arity). Pro danou signaturu S je možné vytvořit nekonečně mnoho různých interpretací. Každá taková interpretace se skládá z neprázdné množiny prvků, která se nazývá univerzum, a ze zobrazení, které každému symbolu ze signatury S přiřazuje příslušnou relaci, funkci nebo prvek univerza, přičemž arity těchto relací a funkcí musí souhlasit s aritami odpovídajících symbolů v signatuře S. Formálně je interpretace A definována jako dvojice A = (A, a), kde A je libovolná neprázdná množina představující univerzum a a je zobrazení přiřazující význam jednotlivým symbolům signatury S, kde: • pro P ∈ P, kde arity(P ) = n, je a(P ) = P A , kde P A ⊆ An je libovolná n-ární relace nad množinou A, • pro f ∈ F, kde arity(f ) = n, je a(f ) = f A , kde f A : An → A je libovolná n-ární (totální) funkce nad množinou A, • pro c ∈ C je a(c) = cA , kde cA ∈ A je libovolný prvek univerza A. V dalším textu budeme místo zápisu a(P ) (kde P ∈ P) používat zápis P A , místo a(f ) (kde f ∈ F) zápis f A a místo a(c) (kde c ∈ C) zápis cA . Obecně pravdivost tvrzení zapsaného formulí nezávisí jen na interpretaci A = (A, a), ale také na hodnotách přiřazených jednotlivým proměnným z množiny Var . Toto přiřazení prvků univerza proměnným se nazývá valuace a je formálně definováno jako funkce v : Var → A. Při definici sémantiky formulí se nám bude hodit následující notace pro vyjádření valuace, která se od nějaké zadané valuace v liší v hodnotě jediné proměnné. Řekněme, že v : Var → A je valuace, x ∈ Var je proměnná a a ∈ A je prvek univerza. Zápisem v[x 7→ a] označujeme valuaci v ′ : Var → A, která se s valuací v shoduje v hodnotách všech proměnných jiných než x, a kde x nabývá hodnoty a, tj. pro y ∈ Var je a pokud y = x ′ v (y) = v(y) jinak Vezměme si nyní libovolnou interpretaci A = (A, a) s valuací v : Var → A a utvořme z nich dvojici I = (A, v). Zápisem I[x 7→ a], kde x ∈ Var a a ∈ A, budeme označovat dvojici (A, v[x 7→ a]) tvořenou interpretací A a valuací v[x 7→ a].
96 Předpokládejme tedy, že I = (A, v). Zápisem I(t) budeme označovat hodnotu, jaké nabývá term t ∈ TS v interpretaci A při ohodnocení v. Hodnotou I(t) termu t je vždy nějaký prvek univerza A. Hodnota I(t) je definována následovně: • Pro x ∈ Var je I(x) = v(x). • Pro c ∈ C je I(c) = cA . • Pro f ∈ F, kde arity(f ) = n, a termy t1 , t2 , . . . , tn ∈ TS je I(f (t1 , t2 , . . . , tn )) = f A (I(t1 ), I(t2 ), . . . , I(tn )). Pro označení toho, že formule ϕ ∈ LS platí v interpretaci A při valuaci v, budeme používat zápis I |= ϕ a pro označení toho, že ϕ v interpretaci A při valuaci v neplatí, zápis I 6|= ϕ. Vždy platí právě jedna z možností I |= ϕ a I 6|= ϕ. Nyní můžeme definovat, kdy platí I |= ϕ: • Pro P ∈ P, kde arity(P ) = n, a pro termy t1 , t2 , . . . , tn ∈ TS platí I |= P (t1 , t2 , . . . , tn ) právě tehdy, když (I(t1 ), I(t2 ), . . . , I(tn )) ∈ P A . • Pro termy t1 , t2 ∈ TS platí I |= t1 = t2 právě tehdy, když I(t1 ) = I(t2 ). • I |= ¬ϕ platí právě tehdy, když I 6|= ϕ. • I |= ϕ ∧ ψ platí právě tehdy, když I |= ϕ a I |= ψ. • I |= ϕ ∨ ψ platí právě tehdy, když I |= ϕ nebo I |= ψ. • I |= ϕ → ψ platí právě tehdy, když I 6|= ϕ nebo I |= ψ. • I |= ϕ ↔ ψ platí právě tehdy, když I |= ϕ a I |= ψ, nebo když I 6|= ϕ a I 6|= ψ. • I |= ∃xϕ platí právě tehdy, když existuje nějaké a ∈ A takové, že I[x 7→ a] |= ϕ. • I |= ∀xϕ platí právě tehdy, když pro každé a ∈ A platí I[x 7→ a] |= ϕ. Kromě výše uvedeného významu se symbol |= používá v několika dalších významech. Pokud je Γ ⊆ LS množina formulí a ϕ ∈ LS formule, zápis Γ |= ϕ znamená, že formule ϕ logicky vyplývá z předpokladů Γ. Přesně je tento pojem definován tak, že Γ |= ϕ platí právě tehdy, když pro každou interpretaci A a valuaci v platí, že pokud (A, v) |= ψ platí pro všechny formule ψ ∈ Γ, tak také platí (A, v) |= ϕ. Zápis |= ϕ označuje, že formule ϕ platí v interpretaci a valuaci, tj. že pro každé I platí I |= ϕ. Jak již bylo uvedeno dříve, formulím, které splňují |= ϕ se říká tautologie.
Apendix A
Řecká abeceda V následující tabulce je uveden přehled písmen řecké abecedy. První sloupec obsahuje velká písmena, druhý malá, třetí český název a čtvrtý anglický název daného písmene. Některá malá písmena řecké abecedy existují ve dvou variantách. U písmen, kterých se to týká, jsou uvedeny obě varianty. velké A B Γ ∆ E Z H Θ I K Λ M N Ξ O Π P Σ T Υ Φ X Ψ Ω
malé α β γ δ ǫ, ε ζ η θ, ϑ ι κ λ µ ν ξ o π, ̟ ρ, ̺ σ, ς τ υ φ, ϕ χ ψ ω
česky alfa beta gama delta epsilon zéta éta théta ióta kappa lambda mí ný ksí omikron pí rhó sigma tau ypsilon fí chí psí omega
97
anglicky alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau upsilon phi chi psi omega