Příklady na výrokovou logiku

Zobrazit kapitoly článku
  1. Výroková logika
  2. Pravdivost formulí
  3. Příklady na výrokovou logiku

V článku si ukážeme několik formulí a jejich možná ohodnocení za pomocí tabulkové metody.

První příklad #

Zkusíme zjistit, kdy je tato formule pravdivá: \(\phi=(p \wedge q) \vee \neg q\). Zapíšeme si do tabulky výrokové symboly p a q:

\[\begin{array}{cc}p&q\\1&1\\1&0\\0&1\\0&0\end{array}\]

Dále si do tabulky dopíšeme první část formule: \((p \vee q)\), negaci \(\neg q\) a pak celou formuli:

\[\begin{array}{ccccc}p&q&p \wedge q&\neg q&\phi\\1&1\\1&0\\0&1\\0&0\end{array}\]

Nyní dopočítáme hodnoty pro třetí sloupec, to je jednoduchá konjunkce a zároveň i pro negaci – tam jen dosadíme obrácené hodnoty, než jaké jsou ve druhém sloupečku:

\[\begin{array}{ccccc}p&q&p \wedge q&\neg q&\phi\\1&1&1&0\\1&0&0&1\\0&1&0&0\\0&0&0&1\end{array}\]

Nakonec dopočítáme hodnoty v posledním sloupci. To je celá formule. Vzhledem k naší tabulce tak počítáme disjunkci „mezi třetím a čtvrtým sloupcem“. Výsledek:

\[\begin{array}{ccccc}p&q&p \wedge q&\neg q&\phi\\1&1&1&0&1\\1&0&0&1&1\\0&1&0&0&0\\0&0&0&1&1\end{array}\]

Druhý příklad #

Stejné zadání, jiná formule: \((p \wedge \neg q) \Leftrightarrow (\neg p \Rightarrow q)\). Vidíme, že ve formuli jsou výrokové symboly p a q a jejich negace. Jako první si tak vytvoříme tabulku se dvěma symboly a jejich negacemi:

\[\begin{array}{cccc}p&q&\neg p&\neg q\\1&1&0&0\\1&0&0&1\\0&1&1&0\\0&0&1&1\end{array}\]

Dále přidáme formule \(\phi=p \wedge \neg q\) a \(\neg p \Rightarrow q\), které už umíme snadno vyhodnotit, protože máme v tabulce jak ohodnocení jednotlivých výroků, tak i jejich negací. Tabulka vypadá takto:

\[\begin{array}{cccccc}p&q&\neg p&\neg q&(p\wedge \neg q)&(\neg p\Rightarrow q)\\1&1&0&0&0&1\\1&0&0&1&1&1\\0&1&1&0&0&1\\0&0&1&1&0&0\end{array}\]

Jako poslední nám zbývá vyhodnotit celou formuli, což je ekvivalence mezi dvěma posledními sloupci:

\[\begin{array}{ccccccc}p&q&\neg p&\neg q&(p\wedge \neg q)&(\neg p\Rightarrow q)&\phi\\1&1&0&0&0&1&0\\1&0&0&1&1&1&1\\0&1&1&0&0&1&0\\0&0&1&1&0&0&1\end{array}\]

Třetí příklad #

Třetí příklad už bude trochu složitější, zkusíme tři výrokové symboly, čímž se výpočet tabulky zesložití. Formule bude vypadat takto: \(\phi=(\neg(p\Rightarrow q)) \wedge (r\Leftrightarrow(\neg p \vee q))\).

Protože tam máme tři výrokové symboly, bude celkový počet variací ohodnocení rovný osmi:

\[\begin{array}{ccc}p&q&r\\1&1&1\\1&1&0\\1&0&1\\1&0&0\\0&1&1\\0&1&0\\0&0&1\\0&0&0\end{array}\]

Dále už budeme postupovat stejně jako v předchozím případě, každý sloupeček ohodnotíme ve všech osmi řádcích. Celá tabulka bude vypadat takto:

\[\begin{array}{ccccccccc}p&q&r&\neg p&(p\Rightarrow q)&(\neg p\vee q)&\neg (p\Rightarrow q)&(r\Leftrightarrow (\neg p\vee q))&\phi\\1&1&1&0&1&1&0&1&0\\1&1&0&0&1&1&0&0&0\\1&0&1&0&0&0&1&0&0\\1&0&0&0&0&0&1&1&1\\0&1&1&1&1&1&0&1&0\\0&1&0&1&1&1&0&0&0\\0&0&1&1&1&1&0&1&0\\0&0&0&1&1&1&0&0&0\end{array}\]

Čtvrtý příklad #

Tento příklad už nezadáme jako obyčejnou formuli, ale jako slovní úlohu. Tři kamarádi, kteří chtějí jít na divokou párty, kde budou modelky nahoře bez rozdávat občerstvení, se nemají tak úplně rádi a kladou si podmínky, za kterých na párty půjdou. Jejich jména jsou Martin, Jakub a Petr. Pravidla jsou následující:

  1. Pokud půjde Martin, tak půjde i Jakub.
  2. Na párty přijde Petr nebo, pokud tam přijde Martin, tak tam nepřijde Jakub.
  3. Petr přijde právě tehdy, když nepřijde Martin nebo nepřijde Jakub.

Otázka zní, jestli můžou na párty přijít všichni? Pokud ne, kdo se na párty může podívat a neporušit žádná pravidla?

Jako první si musíme předchozí slovní výroky přepsat do výrokových symbolů a formulí. Takže označme si výrokové symboly M, J a P (Martin, Jakub, Petr) a bude to vždy značit výrok typu „Martin půjde na párty“. První pravidlo bychom mohli přepsat takto: \(M \Rightarrow J\) – „jestliže M, pak J“, neboli „jestliže Martin půjde na párty, pak Jakub půjde na párty“.

Druhé pravidlo bychom přepsali takto. Pravidlo začíná větou „Na párty přijde Petr nebo…“, takže evidentně budeme potřebovat disjunkci. Zatím zapíšeme toto: \(P\vee\ldots\) Další část věty říká: „pokud tam přijde Martin, tak tam nepřijde Jakub“. To je implikace, přičemž na pravé straně ještě musíme použít negaci. „nepřijde Jakub“ = \(\neg J\). Celá implikace by vypadala takto: \(M \Rightarrow \neg J\). To připojíme k předchozí disjunkci: \(P \vee M \Rightarrow \neg J\).

Třetí pravidlo přepíšeme takto: začneme s „Petr přijde právě tehdy“. To znamená ekvivalenci: \(P \Leftrightarrow \ldots\) Dále máme „nepřijde Martin nebo nepřijde Jakub“, což přepíšeme takto: \(\neg M \vee \neg J\). Složíme dohromady: \((P\Leftrightarrow (\neg M\vee \neg J))\).

Nyní všechny formule vložíme do tabulky a dopočítáme hodnoty:

\[\begin{array}{cccccc}M&J&P&(M\Rightarrow J)&(P\vee (M\Rightarrow \neg J))&(P\Leftrightarrow (\neg M\vee \neg J))\\1&1&1&1&1&0\\1&1&0&1&0&1\\1&0&1&0&1&1\\1&0&0&0&1&0\\0&1&1&1&1&1\\0&1&0&1&1&0\\0&0&1&1&1&1\\0&0&0&1&1&0\end{array}\]

Otázka zněla, jestli mohou jít všichni tři chlapci na divoký mejdan. Odpověď nalezneme v prvním řádku. Ten nám odpovídá na případ, kdy všichni chlapci půjdou – to je signalizována třemi jedničkami v prvních třech sloupcích. Jsou splněny všechny podmínky? První ano (čtvrtý sloupec), druhá také (pátý sloupec), ale poslední ne (poslední sloupec), tam je nula. Znamená to, že pokud půjdou všichni tři, tak nebude splněna třetí podmínka.

Hledáme tak ty řádky, ve kterých jsou na pozicích symbolizující podmínky (tj. poslední tři sloupce) samé jedničky. Jednička znamená, že je podmínka splněna. Vidíme, že to nastane ve dvou případech. Když půjde Jakub a Petr, ale Martin ne a pak když půjde jen Petr.

Můžete to také vypočítat tak, že do tabulky přidáte formuli \(\phi\), která bude konjunkcí všech tří podmínek. Takže bude vypadat takto: \(\phi = ((M\Rightarrow J)\wedge (P\vee (M\Rightarrow \neg J))\wedge (P\Leftrightarrow (\neg M\vee \neg J)))\). To znázorňuje to, co chceme – aby byly všechny formule (všechny podmínky) splněné. Tabulka by pak vypadala takto:

\[\begin{array}{ccccccc}M&J&P&(M\Rightarrow J)&(P\vee (M\Rightarrow \neg J))&(P\Leftrightarrow (\neg M\vee \neg J))&\phi\\1&1&1&1&1&0&0\\1&1&0&1&0&1&0\\1&0&1&0&1&1&0\\1&0&0&0&1&0&0\\0&1&1&1&1&1&1\\0&1&0&1&1&0&0\\0&0&1&1&1&1&1\\0&0&0&1&1&0&0\end{array}\]

Pár příkladů na tabulkovou metodu #

Protože jsem si napsal program, který umí z dané formule automaticky sestavit celou tabulku, tak ho musím řádně využít a proto následuje ještě pár vyřešených formulí:

Formule: \(((a\wedge \neg b)\vee (b\wedge (b\Rightarrow a)))\). Tabulka:

\[\begin{array}{ccccc}a&b&(a\wedge \neg b)&(b\wedge (b\Rightarrow a))&((a\wedge \neg b)\vee (b\wedge (b\Rightarrow a)))\\1&1&0&1&1\\1&0&1&0&1\\0&1&0&0&0\\0&0&0&0&0\end{array}\]

Formule: \((a\vee \neg a)\Leftrightarrow (b\wedge \neg b)\). Tabulka:

\[\begin{array}{ccccc}a&b&(a\vee \neg a)&(b\wedge \neg b)&((a\vee \neg a)\Leftrightarrow (b\wedge \neg b))\\1&1&1&0&0\\1&0&1&0&0\\0&1&1&0&0\\0&0&1&0&0\end{array}\]

Formule: \(\neg (a\vee b)\Leftrightarrow (\neg b\wedge \neg a)\). Tabulka:

\[\begin{array}{ccccc}a&b&\neg (a\vee b)&(\neg b\wedge \neg a)&(\neg (a\vee b)\Leftrightarrow (\neg b\wedge \neg a))\\1&1&0&0&1\\1&0&0&0&1\\0&1&0&0&1\\0&0&1&1&1\end{array}\]

Formule: \((\neg p \Leftrightarrow (q \wedge r)) \Rightarrow (p \vee \neg (p \wedge q))\). Tabulka:

\[\begin{array}{cccccccc}p&q&r&(q\wedge r)&\neg (p\wedge q)&(\neg p\Leftrightarrow (q\wedge r))&(p\vee \neg (p\wedge q))&\phi\\1&1&1&1&0&0&1&1\\1&1&0&0&0&1&1&1\\1&0&1&0&1&1&1&1\\1&0&0&0&1&1&1&1\\0&1&1&1&1&1&1&1\\0&1&0&0&1&0&1&1\\0&0&1&0&1&0&1&1\\0&0&0&0&1&0&1&1\end{array}\]

Formule: \(\neg(p\Leftrightarrow \neg q) \wedge (r \Rightarrow \neg p) \wedge (p \vee r)\). Tabulka:

\[\begin{array}{ccccccc}p&q&r&\neg (p\Leftrightarrow \neg q)&(r\Rightarrow \neg p)&(p\vee r)&\phi\\1&1&1&1&0&1&0\\1&1&0&1&1&1&1\\1&0&1&0&0&1&0\\1&0&0&0&1&1&0\\0&1&1&0&1&1&0\\0&1&0&0&1&0&0\\0&0&1&1&1&1&1\\0&0&0&1&1&0&0\end{array}\]