From d8434b9bb461ad950f303ca07f47838ca5673a38 Mon Sep 17 00:00:00 2001 From: Michael Leuschel <leuschel@uni-duesseldorf.de> Date: Mon, 20 Apr 2020 17:20:15 +0200 Subject: [PATCH] fix typos --- info4/kapitel-0/Logik.ipynb | 411 +++++++++++++++++++++++++++++------- 1 file changed, 337 insertions(+), 74 deletions(-) diff --git a/info4/kapitel-0/Logik.ipynb b/info4/kapitel-0/Logik.ipynb index 705e863..db02662 100644 --- a/info4/kapitel-0/Logik.ipynb +++ b/info4/kapitel-0/Logik.ipynb @@ -28,7 +28,6 @@ "* Code kann interaktiv ausgeführt werden\n", "* Ergebnisse erscheinen im Notebook unter dem jeweiligem Code\n", "* Ähnlich wie eine REPL (read-eval-print-loop), mit einigen Unterschieden:\n", - " * Code-Abschnitte können \"außer der Reihe\" bearbeitet und ausgeführt werden\n", " * Ausgaben können formatierten Text und Grafiken enthalten\n", " * Speicherbar als Datei\n", " * Code kann später neu ausgeführt werden\n", @@ -46,12 +45,8 @@ "* Open Source und plattformübergreifend\n", "* Stammt aus der Python-Community, in Python implementiert\n", "* ACM System Software Award 2017\n", - "* Jupyter-Notebooks können aber verschiedene Programmiersprachen verwenden\n", - "* Dazu trennt Jupyter strikt zwischen Frontend und Kernel:\n", - " * Das allgemeine **Frontend** implementiert z. B. Benutzeroberfläche und Dateiformat\n", - " * Ein sprachspezifischer **Kernel** stellt die Sprache dem Frontend zur Verfügung\n", - "* Schnittstellen zwischen Frontend und Kernel sind sprachneutral\n", - " * Kernel können in (fast) jeder Sprache implementiert werden, kein Python-Code nötig\n", + "* Jupyter-Notebooks verschiedene Programmiersprachen verwenden\n", + " * Ein sprachspezifischer **Kernel** stellt die Sprache dem Jupyter Frontend zur Verfügung\n", " " ] }, @@ -149,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -161,7 +156,7 @@ "TRUE" ] }, - "execution_count": 30, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -172,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -184,7 +179,7 @@ "TRUE" ] }, - "execution_count": 31, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -195,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -207,7 +202,7 @@ "FALSE" ] }, - "execution_count": 32, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -230,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -242,7 +237,7 @@ "TRUE" ] }, - "execution_count": 33, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -251,6 +246,29 @@ "¬(2<1)" ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{FALSE}$" + ], + "text/plain": [ + "FALSE" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "¬(1+1=2)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -267,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -279,7 +297,7 @@ "TRUE" ] }, - "execution_count": 34, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -290,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -302,7 +320,7 @@ "FALSE" ] }, - "execution_count": 35, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -320,30 +338,30 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ - "$\\mathit{TRUE}$" + "$\\mathit{FALSE}$" ], "text/plain": [ - "TRUE" + "FALSE" ] }, - "execution_count": 36, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "2>1 ∨ 1>2" + "1>1 ∨ 1>2" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -355,7 +373,7 @@ "TRUE" ] }, - "execution_count": 37, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -373,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -385,7 +403,7 @@ "TRUE" ] }, - "execution_count": 38, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -396,7 +414,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -408,7 +426,7 @@ "TRUE" ] }, - "execution_count": 39, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -419,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -431,7 +449,7 @@ "FALSE" ] }, - "execution_count": 40, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -449,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -461,7 +479,7 @@ "TRUE" ] }, - "execution_count": 41, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -472,7 +490,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -484,7 +502,7 @@ "TRUE" ] }, - "execution_count": 42, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -495,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -507,7 +525,7 @@ "FALSE" ] }, - "execution_count": 43, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -524,14 +542,14 @@ "\n", "Anmerkung: Wir nehmen an, dass $\\neg$ am stärksten bindet, dann kommen $\\wedge$, $\\vee$, $\\Rightarrow$ und schließlich ⇔.\n", "\n", - "Die Formel $(p \\vee (\\neg p \\wedge q)$ steht also für $(p \\vee (\\neg(p) \\wedge q)$.\n", + "Die Formel $(p \\vee (\\neg p \\wedge q))$ steht also für $(p \\vee (\\neg(p) \\wedge q)$.\n", "\n", "Eine Formel kann man immer als einen Baum sehen" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -540,7 +558,7 @@ "Preference changed: OPTIMIZE_AST = FALSE\n" ] }, - "execution_count": 44, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -551,7 +569,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -773,7 +791,7 @@ "<Dot visualization: formula_tree [(2>3 => 4>1) <=> not(5<1)]>" ] }, - "execution_count": 45, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -792,7 +810,7 @@ "\n", "<img src=\"./img/wahrheitstabelle.png\" width=\"600\">\n", "\n", - "Wie berechnet man damit den Wahrheitswert einer Formel wie $(p \\vee (\\neg p \\wedge q)$?\n", + "Wie berechnet man damit den Wahrheitswert einer Formel wie $(p \\vee (\\neg p \\wedge q))$?\n", "\n", "\n", "\n" @@ -816,8 +834,8 @@ "Sei $i$ = $\\{p\\mapsto TRUE,q\\mapsto FALSE\\}$ eine Interpretation für die Formel $(p \\vee (\\neg p \\wedge q)$.\n", "\n", "* Schritt 1: alle Aussagen berechnen: $(TRUE \\vee (\\neg TRUE \\wedge FALSE)$\n", - "* Schritt 2: $\\neg TRUE = FALSE$: $(TRUE \\vee (FALSE \\wedge FALSE)$\n", - "* Schritt 3: $FALSE \\wedge FALSE = FALSE$: $(TRUE \\vee FALSE)$\n", + "* Schritt 2: $\\neg TRUE = FALSE$: $(TRUE \\vee (FALSE \\wedge FALSE)$\n", + "* Schritt 3: $FALSE \\wedge FALSE = FALSE$: $(TRUE \\vee FALSE)$\n", "* Schritt 3: $TRUE \\vee FALSE = TRUE$: $TRUE$\n", "\n", "Unter der Interpretation $i$ ist die Formel $(p \\vee (\\neg p \\wedge q)$ wahr." @@ -854,13 +872,13 @@ "\n", "Zwei Formeln sind <b>äquivalent</b> gdw sie die selben Modelle haben.\n", "\n", - "$(p \\vee (\\neg p \\wedge q)$ ist zum Beispiel äquivalent zu $p \\vee q$.\n", + "$(p \\vee (\\neg p \\wedge q))$ ist zum Beispiel äquivalent zu $p \\vee q$.\n", "Hier stellen wir die Interpretationen und Modelle tabellarisch dar:" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -881,7 +899,7 @@ "TRUE\tTRUE\tTRUE\tTRUE\n" ] }, - "execution_count": 47, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -897,7 +915,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir schreiben diesen Tatbestand als $(p \\vee (\\neg p \\wedge q) \\equiv p \\vee q$.\n", + "Wir schreiben diesen Tatbestand als $(p \\vee (\\neg p \\wedge q)) \\equiv p \\vee q$.\n", "\n", "Kleine Anmerkung: das Werkzeug im Jupyter Notebook akzeptiert keine aussagenlogische Variablen sondern nur Bool'sche Datenvariablen. Anstatt $p$ muss man ```p=TRUE``` schreiben und anstatt $p \\vee q$ muss man ```p=TRUE ∨ q=TRUE``` schreiben. Mit ```bool(P)``` konvertiert man den Wahrheitswert einer Formel in einen Bool'schen Datenwert um.\n", "\n", @@ -928,9 +946,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|p|q|ODER|NODER|NUND|np|nq|\n", + "|---|---|---|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n" + ], + "text/plain": [ + "p\tq\tODER\tNODER\tNUND\tnp\tnq\n", + "FALSE\tFALSE\tFALSE\tTRUE\tTRUE\tTRUE\tTRUE\n", + "FALSE\tTRUE\tTRUE\tFALSE\tFALSE\tTRUE\tFALSE\n", + "TRUE\tFALSE\tTRUE\tFALSE\tFALSE\tFALSE\tTRUE\n", + "TRUE\tTRUE\tTRUE\tFALSE\tFALSE\tFALSE\tFALSE\n" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {p,q,ODER,NODER,NUND,np,nq| p:BOOL & q:BOOL & np = bool(¬(p=TRUE)) & nq = bool(¬(q=TRUE)) &\n", " ODER=bool(p=TRUE ∨ q=TRUE) &\n", @@ -952,9 +993,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|p|q|IMPL|KONT|np|nq|\n", + "|---|---|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n" + ], + "text/plain": [ + "p\tq\tIMPL\tKONT\tnp\tnq\n", + "FALSE\tFALSE\tTRUE\tTRUE\tTRUE\tTRUE\n", + "FALSE\tTRUE\tTRUE\tTRUE\tTRUE\tFALSE\n", + "TRUE\tFALSE\tFALSE\tFALSE\tFALSE\tTRUE\n", + "TRUE\tTRUE\tTRUE\tTRUE\tFALSE\tFALSE\n" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {p,q,IMPL,KONT,np,nq| p:BOOL & q:BOOL & np = bool(¬(p=TRUE)) & nq = bool(¬(q=TRUE)) &\n", " IMPL=bool(p=TRUE => q=TRUE) &\n", @@ -976,7 +1040,7 @@ "# Logisches Schließen\n", "Wenn $p \\wedge q$ gilt, dann ist $p$ eine logische Konsequenz (Schlussfolgerung) von $p\\wedge q$.\n", "* Wir schreiben dies als $p \\wedge q \\models p$\n", - "* Formal bedeutet dies, dass alle Modelle von $q \\wedge p$ auch Modelle von $p$ sind.\n", + "* Formal bedeutet dies, dass alle Modelle von $p \\wedge q$ auch Modelle von $p$ sind.\n", "\n", "Die Tabelle zeigt, dass $p \\Leftrightarrow q \\models p \\Rightarrow q$.\n", "Die beiden Formeln sind nicht äquivalent." @@ -984,9 +1048,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|p|q|F1|F2|\n", + "|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n" + ], + "text/plain": [ + "p\tq\tF1\tF2\n", + "FALSE\tFALSE\tTRUE\tTRUE\n", + "FALSE\tTRUE\tFALSE\tTRUE\n", + "TRUE\tFALSE\tFALSE\tFALSE\n", + "TRUE\tTRUE\tTRUE\tTRUE\n" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {p,q,F1,F2| p:BOOL & q:BOOL & F1=bool(p=TRUE ⇔ q=TRUE) & F2=bool(p=TRUE ⇒ q=TRUE)}" ] @@ -1054,9 +1141,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|x|y|S1|S2|Puzzle|\n", + "|---|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n" + ], + "text/plain": [ + "x\ty\tS1\tS2\tPuzzle\n", + "FALSE\tFALSE\tTRUE\tTRUE\tTRUE\n", + "FALSE\tTRUE\tFALSE\tTRUE\tFALSE\n", + "TRUE\tFALSE\tFALSE\tFALSE\tFALSE\n", + "TRUE\tTRUE\tTRUE\tFALSE\tFALSE\n" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {x,y,S1,S2,Puzzle | x:BOOL & y:BOOL & \n", " S1=bool(x=TRUE ⇔ y=TRUE) &\n", @@ -1081,9 +1191,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|x|y|S1|S2|Puzzle|\n", + "|---|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n" + ], + "text/plain": [ + "x\ty\tS1\tS2\tPuzzle\n", + "FALSE\tFALSE\tTRUE\tTRUE\tTRUE\n", + "FALSE\tTRUE\tTRUE\tTRUE\tTRUE\n", + "TRUE\tFALSE\tFALSE\tTRUE\tFALSE\n", + "TRUE\tTRUE\tTRUE\tFALSE\tFALSE\n" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {x,y,S1,S2,Puzzle | x:BOOL & y:BOOL & \n", " S1=bool(x=TRUE ⇒ y=TRUE) &\n", @@ -1131,9 +1264,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|x|y|S1|S2|Puzzle|WS|\n", + "|---|---|---|---|---|---|\n", + "|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n", + "|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{TRUE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|$\\mathit{FALSE}$|\n" + ], + "text/plain": [ + "x\ty\tS1\tS2\tPuzzle\tWS\n", + "FALSE\tFALSE\tTRUE\tTRUE\tTRUE\tFALSE\n", + "FALSE\tTRUE\tFALSE\tTRUE\tFALSE\tFALSE\n", + "TRUE\tFALSE\tFALSE\tFALSE\tFALSE\tFALSE\n", + "TRUE\tTRUE\tTRUE\tFALSE\tFALSE\tFALSE\n" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {x,y,S1,S2,Puzzle,WS | x:BOOL & y:BOOL & \n", " S1=bool(x=TRUE ⇔ y=TRUE) &\n", @@ -1195,7 +1351,7 @@ "wobei immer gilt $\\phi_1 \\wedge ...\\phi_i \\models \\phi_{i+1}$.\n", " \n", "Wir haben per Transitiviät von $\\models$, dass $\\phi_1 \\models \\phi_k$.\n", - "Aber im Gegensatz zum Äquivalenzbeweis gilt hier generell nicht $\\phi_k \\models phi_1$!\n", + "Aber im Gegensatz zum Äquivalenzbeweis gilt hier generell nicht $\\phi_k \\models \\phi_1$!\n", "Dieser Beweis kann nicht umgekehrt werden.\n", "\n" ] @@ -1267,9 +1423,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "|x|y|res|\n", + "|---|---|---|\n", + "|$1$|$1$|$\\mathit{FALSE}$|\n", + "|$1$|$2$|$\\mathit{TRUE}$|\n", + "|$1$|$3$|$\\mathit{TRUE}$|\n", + "|$2$|$1$|$\\mathit{FALSE}$|\n", + "|$2$|$2$|$\\mathit{FALSE}$|\n", + "|$2$|$3$|$\\mathit{TRUE}$|\n" + ], + "text/plain": [ + "x\ty\tres\n", + "1\t1\tFALSE\n", + "1\t2\tTRUE\n", + "1\t3\tTRUE\n", + "2\t1\tFALSE\n", + "2\t2\tFALSE\n", + "2\t3\tTRUE\n" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":table {x,y,res | x:1..2 & y:1..3 & res=bool(x<y)}" ] @@ -1313,9 +1496,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{TRUE}$\n", + "\n", + "**Solution:**\n", + "* $\\mathit{x} = 0$" + ], + "text/plain": [ + "TRUE\n", + "\n", + "Solution:\n", + "\tx = 0" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "∃x.(x<5)" ] @@ -1329,27 +1532,87 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{TRUE}$\n", + "\n", + "**Solution:**\n", + "* $\\mathit{x} = 0$" + ], + "text/plain": [ + "TRUE\n", + "\n", + "Solution:\n", + "\tx = 0" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "x<5" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{TRUE}$\n", + "\n", + "**Solution:**\n", + "* $\\mathit{x} = 10$" + ], + "text/plain": [ + "TRUE\n", + "\n", + "Solution:\n", + "\tx = 10" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "x+20 = 30" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{TRUE}$\n", + "\n", + "**Solution:**\n", + "* $\\mathit{x} = -100$" + ], + "text/plain": [ + "TRUE\n", + "\n", + "Solution:\n", + "\tx = −100" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "x*x = 10000" ] -- GitLab