Na otázku „Dáš si čaj, nebo kávu?“ odpovíš „obojí“. Hostitel se zarazí, logik se usměje.
Je „obojí“ podle logiky správná odpověď? A je pravdivý výrok „Jestliže 2 > 4, pak Praha leží v Brazílii“?
Odhalit odpověď
Ano i ano. V češtině je „nebo“ často vylučovací, v logice i v kódu (||) je nevylučovací: platí i tehdy, když platí obě části. A „jestliže“ v řeči čeká souvislost příčiny a následku, v logice ne: předpoklad 2 > 4 je nepravdivý, a implikace s nepravdivým předpokladem je pravdivá.
II
MyšlenkaTři místa, kde to programátor musí vědět.
„Nebo“: v češtině často vylučovací („čaj, nebo kávu?“), v logice i v kódu nevylučovací.
„Jestliže“: v řeči čekáme souvislost příčiny a následku, v logice ne.
Priorita: jazyk ji vyjadřuje intonací a čárkami, formální jazyk závorkami a pravidly. Proto AND váže silněji než OR a v podmínkách se vyplatí závorkovat.
Logika vždy stála na otázce, co věta říká. Proto ji po celou historii posouvali lidé, kteří zkoumali jazyk. Logika a jazykověda se rodily spolu, rozešly se a v počítači se znovu potkaly. Tahle stránka je vložkou ke kapitole Logika.
III
VzorecDvojí „nebo“.
NEBO, A NEBO
nebo i obojí: p ∨ q
buď, anebo: (p ∨ q) ∧ ¬(p ∧ q)
Logika neslyší intonaci.
I
ZASTAVENÍ I · 3. STOLETÍ PŘ. N. L. · ATHÉNY, STOA
Stoici: gramatici, kteří vymysleli výrok
stoičtí gramatici
I
OtázkaGramatika, nebo logika?
Kdo rozhodne, že „Prší?“ není výrok – gramatik, nebo logik?
K zamyšlení
U stoiků oba zároveň. Rozlišit výrok od otázky a rozkazu je původně gramatická práce: kdo chce vědět, o čem lze říct „platí to“, musí nejdřív roztřídit druhy vět.
II
ČlověkStejní lidé, dvě vědy.
Stoici byli zároveň gramatici. Stejní lidé, kteří vymysleli výrok a spojky (Chrysippos a jeho škola, viz kapitola Logika), rozpracovali i nauku o mluvnických pádech a slovních druzích.
Stopu toho nosíme v češtině dodnes. Řecké ptósis znamená „pád“; Římané ho přeložili jako casus a čeština zase jako pád. Když ve škole skloňuješ, používáš stoické slovo.
Stoické gramatické spisy se nedochovaly celé; jejich nauku známe hlavně z pozdějších autorů, například z Diógena Laertia (Životy filozofů, kniha VII).
III
MyšlenkaZe všech druhů vět si logika vzala jen jeden.
Otázka, rozkaz, přání, oslovení, oznámení: gramatika rozlišuje mnoho druhů vět. Logika si z nich vybrala jen ty, o kterých má smysl se ptát „platí to?“, a ty nazvala výroky.
PRO ZVÍDAVÉ: TŘÍDĚNÍ VĚT
Které z těchto vět jsou výroky?
Praha je hlavní město Česka.
Zavři okno!
Kolik je hodin?
x > 3.
Toto tvrzení je nepravdivé.
Řešení
Výrokem je jen první věta. Rozkaz a otázka pravdivostní hodnotu nemají. „x > 3“ je výroková forma: výrokem se stane, až za x dosadíme číslo – jako podmínka v kódu, která má hodnotu, až když proměnná nějakou má. A poslední věta je paradox lháře: oznamovací, a přesto ne výrok.
IV
VzorecVýrok je to, co má pravdivostní hodnotu.
VÝROK
„Prší.“↦ 0, nebo 1
„Prší?“· „Ať prší!“↦ žádná hodnota
Gramatika rozlišila druhy vět, logika si z nich vzala jeden.
II
ZASTAVENÍ II · 13.–14. STOLETÍ · PAŘÍŽ, OXFORD
Středověk: na co slovo ukazuje?
středověcí logici a modisté
I
OtázkaStejné slovo, jiný význam?
Ve větě „Člověk běží“ i ve větě „Člověk je druh“ stojí totéž slovo. Ukazuje v obou na totéž?
Odhalit odpověď
Ne. V první větě „člověk“ ukazuje na nějakého konkrétního běžícího člověka. Ve druhé na pojem člověka: druhem není žádný jednotlivec. Kdybychom to nerozlišili, mohli bychom z „Sokratés je člověk“ a „Člověk je druh“ vyvodit nesmysl „Sokratés je druh“.
II
ČlověkLogici a modisté středověkých univerzit.
Na univerzitách v Paříži a Oxfordu 13. a 14. století se logika učila jako základ všeho studia. Středověcí logici (například Petr Hispánský v 13. století nebo Vilém Ockham ve 14. století) zkoumali, na co přesně slovo v dané větě odkazuje. Říkali tomu suppositio, „zastupování“: slovo ve větě zastupuje nějaké věci, a které to jsou, záleží na větě.
Vedle nich působili modisté, gramatici, kteří hledali obecné „způsoby“ (modi) vyjadřování společné všem jazykům. Nejznámější modistický spis, Grammatica speculativa Tomáše z Erfurtu (počátek 14. století), je jedním z prvních pokusů o univerzální gramatiku.
III
MyšlenkaTři způsoby, jak slovo zastupuje.
Osobní (suppositio personalis): „Člověk běží.“ Slovo zastupuje jednotlivce.
Jednoduché (suppositio simplex): „Člověk je druh.“ Slovo zastupuje pojem.
Materiální (suppositio materialis): „Člověk je podstatné jméno.“ Slovo zastupuje samo sebe.
Je to předchůdce dnešního rozlišení proměnné a hodnoty. Programátor dělá totéž denně:
// osobní: konkrétní hodnota
clovek.bezi()
// jednoduché: typ, pojem
class Clovek { }
// materiální: samo slovo, řetězec
"clovek".length // 6
PRO ZVÍDAVÉ: CO TY NA TO?
Jak zastupuje slovo „Praha“ ve větách: (a) Praha leží na Vltavě. (b) Praha má pět písmen. (c) Praha je slovo ženského rodu.
Řešení
(a) osobně, mluví se o městě; (b) a (c) materiálně, mluví se o slově. V psaném textu to dnes řešíme uvozovkami: „Praha“ má pět písmen. Uvozovky jsou přesně to, co odliší řetězec od proměnné.
IV
VzorecStejné slovo, jiný zápis.
SUPPOSITIO V DNEŠNÍM ZÁPISU
Člověk běží: ∃x (člověk(x) ∧ běží(x))
Člověk je druh: druh(člověk)
Na čem záleží, není slovo, ale to, co ve větě zastupuje.
III
ZASTAVENÍ III · 1879 · JENA
Gottlob Frege: pojmopis místo řeči
I
OtázkaNikdo, nebo někdo?
„Každý student neumí Python.“ Znamená to, že ho neumí nikdo, nebo že ho někdo neumí?
K zamyšlení
Věta se dá číst oběma způsoby a čeština sama nerozhodne. Přesně takové víceznačnosti chtěl Frege ze své logiky vyhnat.
II
ČlověkMatematik, který se bál jazyka.
Gottlob Frege (1848–1925), profesor matematiky v Jeně, se jazyka bál. Přirozený jazyk považoval za nepřesný a víceznačný, a proto vytvořil umělý pojmopis (Begriffsschrift) – první formální jazyk s kvantifikátory „pro všechna“ a „existuje“. Odtud pochází dnešní predikátová logika.
BEGRIFFSSCHRIFT1879Gottlob Frege: Begriffsschrift (Pojmopis). Necelých sto stran, první formální jazyk s kvantifikátory.
Značky ∀ a ∃ nejsou Fregeho. Frege psal dvojrozměrně, čarami a háčky; obrácené E (∃) zavedl Giuseppe Peano a obrácené A (∀) se ujalo až ve 20. století.
III
MyšlenkaKvantifikátory.
„Každý“ a „některý“ nejsou jména věcí, ale návod, jak projít všechny věci: ∀x „pro každé x platí…“, ∃x „existuje x, pro které platí…“. S nimi zmizí víceznačnost z otázky:
nikdo ho neumí: ∀x (S(x) ⇒ ¬P(x)) někdo ho neumí: ¬∀x (S(x) ⇒ P(x))
PRO ZVÍDAVÉ: CO TY NA TO?
Nechť S(x) znamená „x je student“ a P(x) „x umí Python“. Který zápis znamená „Každý student umí Python“: ∀x(S(x) ∧ P(x)), nebo ∀x(S(x) ⇒ P(x))? A jak zní jeho negace?
Řešení
Druhý; první tvrdí, že každý na světě je student. Negace: ∃x(S(x) ∧ ¬P(x)), tedy některý student Python neumí. Pravidlo: ∀ se pojí s implikací, ∃ s konjunkcí.
V kódu potkáš kvantifikátory jako every() a some():
Věta „Nic samo nicuje“ je gramaticky v pořádku: podmět, přísudek. Říká ale vůbec něco?
II
ČlověkVídeňský kroužek a pražský profesor.
Vídeňský kroužek, skupina filozofů, matematiků a fyziků ve Vídni 20. a 30. let, chtěl „vyčistit“ jazyk vědy: ponechat jen věty, které jsou buď logicky pravdivé, nebo ověřitelné zkušeností. Jedním z jeho hlavních členů byl Rudolf Carnap (1891–1970), který v letech 1931–1935 učil na německé univerzitě v Praze.
Roku 1932 napsal článek Překonání metafyziky logickou analýzou jazyka. Slavný je v něm útok na větu Martina Heideggera „Nic samo nicuje“ (z přednášky Co je metafyzika?, 1929): podle Carnapa věta vypadá gramaticky správně, ale porušuje logickou syntax, protože z „nic“ dělá podstatné jméno.
LOGISCHE SYNTAX1934Rudolf Carnap: Logische Syntax der Sprache. Jazyk jako kalkul: abeceda, pravidla tvoření vět, pravidla odvozování.
III
MyšlenkaJazyk jako kalkul.
Carnapova Logická syntax jazyka zacházela s jazykem jako s kalkulem: abeceda (jaké znaky smíme psát), pravidla tvoření vět (které řetězce jsou správně utvořené) a pravidla odvozování (co z čeho plyne). Je to přesně stavba programovacího jazyka: znaky, gramatika, pravidla vyhodnocení.
Carnapův rozbor Heideggerovy věty lze ukázat na obyčejném rozhovoru. „Co je venku?“ – „Nic.“ Logicky to znamená, že venku není nic, žádné x: ¬∃x venku(x). „Nic“ tu není jméno věci, ale zápor kvantifikátoru. Kdo z něj udělá podmět, nicuje(Nic), zachází s ním jako s věcí, a věta ztratí smysl, i když gramatika je v pořádku.
Programátor to zná: kód, který projde parserem, ale neprojde typovou kontrolou. Syntakticky správně, a přesto nesmysl.
PRO ZVÍDAVÉ: ZKUS TO!
Zapiš logicky větu „Nikdo nepřišel“. Proč z ní a z věty „Nikdo je můj přítel“ nesmíš vyvodit, že „můj přítel nepřišel“?
Řešení
¬∃x přišel(x). „Nikdo“ není jméno žádného člověka, takže ho nejde dosadit jako x. Úsudek by z „nikoho“ udělal osobu, stejnou chybu, jakou Carnap vytýkal větě o Nic.
IV
VzorecNic není jméno.
LOGICKÁ SYNTAX
Venku nic není: ¬∃x venku(x)
Nic nicuje: nicuje(Nic) ✗
Gramaticky správně ještě neznamená logicky smysluplně.
V
ZASTAVENÍ V · 1956–1957 · MIT
Noam Chomsky: gramatika jako stroj
I
OtázkaKonečně mnoho pravidel, nekonečně mnoho vět.
Kolik pravidel stačí, aby z nich vyšly všechny správné české věty, a žádná nesprávná?
II
ČlověkLingvista, jehož gramatiky převzali informatici.
Noam Chomsky (nar. 1928) obrátil směr. Frege a Carnap chtěli jazyk nahradit nebo vyčistit; Chomsky v letech 1956–57 naopak pomocí formálních gramatik popsal jazyk přirozený a seřadil gramatiky podle síly (Chomského hierarchie). Informatici ji hned převzali: regulární výrazy, gramatiky programovacích jazyků a parsery v překladačích stojí přímo na ní.
SYNTACTIC STRUCTURES1957Noam Chomsky: Syntactic Structures. Formální gramatiky pro přirozený jazyk; základ teorie překladačů.
Ve stejné knize je slavná věta „Colorless green ideas sleep furiously“ – „Bezbarvé zelené ideje zuřivě spí“. Je gramaticky správná, a přesto nedává smysl: stejná hranice mezi tvarem a smyslem, jakou viděl Carnap.
III
MyšlenkaGramatika je program, který vyrábí věty.
Formální gramatika je sada přepisovacích pravidel. Pravidlo S → ( S )S | ε říká: symbol S nahraď buď dvojicí závorek s dalším S uvnitř a za ní, nebo ničím. Jediné pravidlo, a vyjdou z něj všechny správně uzávorkované výrazy.
Typ
Gramatiky
Kde je potkáš
3
regulární
regulární výrazy, lexikální analýza
2
bezkontextové
syntax programovacích jazyků, parsery, zápis BNF
1
kontextové
jazyk anbncn; kontrola, že proměnná byla deklarována
0
neomezené
vše, co spočítá Turingův stroj
Vyvážené závorky
napiš závorky
Proč to neumí regulární výraz? Regulární gramatika si pamatuje jen konečně mnoho stavů, a tak nespočítá libovolně hluboké vnoření. Proto se HTML ani kód nedají spolehlivě rozebírat regulárními výrazy a překladače potřebují bezkontextovou gramatiku.
Dá se každá česká věta přeložit do logiky tak, aby počítač poznal, co z ní plyne?
II
ČlověkLogik, který jazyk vzal za slovo.
Richard Montague (1930–1971), logik na Kalifornské univerzitě v Los Angeles, tvrdil v článcích z roku 1970 (English as a Formal Language, Universal Grammar), že mezi přirozeným a formálním jazykem není zásadní teoretický rozdíl. Angličtinu lze popsat stejně přesně jako jazyk logiky. Založil tak formální sémantiku, ze které dnes čerpá počítačové zpracování jazyka.
Kde Frege jazyk opustil a Carnap ho chtěl vyčistit, tam Montague tvrdil, že žádné čištění není potřeba: stačí najít pravidla, podle kterých se význam věty skládá z významů jejích částí.
III
MyšlenkaVýznam celku se skládá z významů částí.
Tomuto principu se říká kompozicionalita (často se připisuje Fregemu). Překlad věty do logiky je pak skládání: každé slovo dostane svůj symbol a stavba věty určí, jak je spojit. A právě stavba je místo, kde se dá chybovat: zkus to.
Přelož mě
klikej na slova
IV
VzorecNa závorkách záleží.
KOMPOZICIONALITA
(p ∧ q) ⇒ r
≠ p ∧ (q ⇒ r)
Význam celku se skládá z významů částí – a ze způsobu, jak jsou složeny.
Co jsme viděli
Logika vždy stála na otázce, co věta říká. Proto ji posouvali lidé, kteří zkoumali jazyk.
IStoici: stejní lidé vymysleli výrok i mluvnické pády.
IIStředověk: na co slovo ve větě odkazuje; předchůdce rozlišení proměnné a hodnoty.
IIIFrege: umělý pojmopis místo víceznačné řeči; kvantifikátory.
IVCarnap: jazyk jako kalkul; gramaticky správná věta ještě nemusí dávat smysl.
VChomsky: formální gramatiky a jejich hierarchie; základ překladačů.
VIMontague: přirozený jazyk jako formální; počítačové zpracování jazyka.
JAZYK A LOGIKA
„Každý student umí Python.“
∀x (S(x) ⇒ P(x))
Logika a jazykověda se rodily spolu, rozešly se a v počítači se znovu potkaly.