(* ::Package:: *) s0="TextCell[Style[\"1. Notes on symbolic logic \", \"Text\", FontSize -> 36, FontWeight -> \"Bold\", FontColor -> GrayLevel[0]], \"Text\", CellChangeTimes -> {3.643206986694024*^9}]"; s1="TextCell[Style[\"1.1. Statements, truth values and truth tables\", \"Text\", FontSize -> 24, FontWeight -> \"Bold\", FontColor -> GrayLevel[0]], \"Text\", CellChangeTimes -> {3.643206997640388*^9}]"; s2="TextCell[Row[{Style[\"Definition 1.1.1.\", FontWeight -> \"Bold\"], \" A \", Style[\"statement\", FontColor -> RGBColor[1, 0, 0]], \" is an assertion that can be determined to be true or false. \\n\\n\", Style[\"Definition 1.1.2. \", FontWeight -> \"Bold\"], \"The \", Style[\"truth value\", FontColor -> RGBColor[1, 0, 0]], \" of a statement is T if it is true and F if it is false. \\n\\nFor example, the statement \[OpenCurlyDoubleQuote]2 + 3 = 5\[CloseCurlyDoubleQuote] has truth value T. \\n\\n\", Style[\"Definition 1.1.3\", FontWeight -> \"Bold\"], \" Statements that involve one or more of the connectives \[OpenCurlyDoubleQuote]and\[CloseCurlyDoubleQuote], \[OpenCurlyDoubleQuote]or\[CloseCurlyDoubleQuote], \[OpenCurlyDoubleQuote]not\[CloseCurlyDoubleQuote], \[OpenCurlyDoubleQuote]if ... then\[CloseCurlyQuote]\[CloseCurlyQuote] and \[OpenCurlyDoubleQuote]... if and only if ...\[CloseCurlyDoubleQuote] are \", Style[\"compound\", FontColor -> RGBColor[1, 0, 0]], \" statements (otherwise they are simple statements). \\n\\nFor example, \[OpenCurlyDoubleQuote]It is not the case that 2 + 3 = 5\[CloseCurlyDoubleQuote] is the negation of the statement above. Of course, it is stated more simply as \[OpenCurlyDoubleQuote]2 + 3 \[NotEqual] 5\[CloseCurlyQuote]\[CloseCurlyQuote]. Other examples of compound statements are:\\n\\nIf you finish your homework then you can watch T.V.\\nThis is a question if and only if this is an answer.\\nI have read this and I understand the concept.\\n\\nIn symbolic logic, we often use letters, such as \", Style[\"p\", FontSlant -> \"Italic\"], \", \", Style[\"q\", FontSlant -> \"Italic\"], \" and \", Style[\"r\", FontSlant -> \"Italic\"], \" to represent statements and the following symbols to represent the connectives.\"}], \"Text\", CellChangeTimes -> {3.6419916584254355*^9, {3.6419917065388703*^9, 3.6419917956316304*^9}, {3.6419918513287354*^9, 3.6419919143475156*^9}, {3.6425112998243484*^9, 3.6425113205463996*^9}, {3.6425114655428343*^9, 3.6425115019766273*^9}}]"; s3="TextCell[Row[{\"Note that the connective \[OpenCurlyDoubleQuote]or\[CloseCurlyDoubleQuote] in logic is used in the \", Style[\"inclusive\", FontColor -> RGBColor[1, 0, 0]], \" sense (not the exclusive sense as in English). Thus, the logical statement \[OpenCurlyDoubleQuote]It is raining or the sun is shining\[CloseCurlyDoubleQuote] means it is raining, or the sun is shining or it is raining and the sun is shining.\\n\\nIf \", Style[\"p\", FontSlant -> \"Italic\"], \" is the statement \[OpenCurlyDoubleQuote]The wall is red\[CloseCurlyDoubleQuote] and \", Style[\"q\", FontSlant -> \"Italic\"], \" is the statement \[OpenCurlyDoubleQuote]The lamp is on\[CloseCurlyDoubleQuote], then \", Style[\"p \[Or] q\", FontSlant -> \"Italic\"], \" is the statement \[OpenCurlyDoubleQuote]The wall is red or the lamp is on (or both)\[CloseCurlyDoubleQuote] whereas \", Style[\"q \", FontSlant -> \"Italic\"], \"\[RightArrow]\", Style[\" p\", FontSlant -> \"Italic\"], \" is the statement \[OpenCurlyDoubleQuote]If the lamp is on then the wall is red\[CloseCurlyDoubleQuote]. The statement \", Style[\"\[Not] p \[And] q\", FontSlant -> \"Italic\"], \" translates to \[OpenCurlyDoubleQuote]The wall isn\[CloseCurlyQuote]t red and the lamp is on\[CloseCurlyDoubleQuote].\\n\\nStatements given symbolically have easy translations into English but it should be noted that there are several ways to write a statement in English. For example, with the examples above, the statement \", Style[\"p \", FontSlant -> \"Italic\"], \"\[RightArrow]\", Style[\" q\", FontSlant -> \"Italic\"], \" directly translates as \[OpenCurlyDoubleQuote]If the wall is red then the lamp is on\[CloseCurlyDoubleQuote]. It can also be stated as \[OpenCurlyDoubleQuote]The wall is red only if the lamp is on\[CloseCurlyDoubleQuote] or \[OpenCurlyDoubleQuote]The lamp is on if the wall is red\[CloseCurlyQuote]\[CloseCurlyQuote]. Similarly, p\", Style[\" \[And] \[Not] q\", FontSlant -> \"Italic\"], \" directly translates as \[OpenCurlyDoubleQuote]The wall is red and the lamp is not on\[CloseCurlyDoubleQuote] but it would be preferable to say \[OpenCurlyDoubleQuote]The wall is red but the the lamp is off\[CloseCurlyDoubleQuote]. Below more extensive list of English equivalents.\"}], \"Text\", CellChangeTimes -> {{3.641992627440488*^9, 3.6419926791776924*^9}, {3.641992743168706*^9, 3.6419930095369005*^9}, {3.6419931355674114*^9, 3.641993251805216*^9}, {3.6421020604180202*^9, 3.642102064107482*^9}, {3.6421597254237523*^9, 3.6421597667563343*^9}, 3.6421599019653635*^9, {3.642170671141864*^9, 3.642170679037131*^9}}]"; s4="TextCell[Style[\"1.1.a. ENGLISH TRANSLATIONS OF LOGICAL STATEMENTS\", FontSize -> 24, FontWeight -> \"Bold\", FontColor -> GrayLevel[0]], \"Text\", CellChangeTimes -> {3.643207576174531*^9}]"; s5="TextCell[\"Let p and q be statements. We give here some common ways to translate from symbolic logic into English.\", \"Text\", CellChangeTimes -> {3.6419932879027953*^9}]"; s6="TextCell[Style[\"Table 1.1.a.1.\", FontWeight -> \"Bold\"], \"Text\", CellChangeTimes -> {3.6425135307511883*^9}]"; s7="TextCell[Row[{\"Note that while a truth table involving statements\", Style[\" p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" has 4 rows to cover the possibility of each statement being true or false, if we have additional information about either statement this will reduce the number of rows in the truth table. If, for example, the statement \", Style[\"p\", FontSlant -> \"Italic\"], \" is known to be true, then in constructing the truth table of \[Not]p\[Implies]\[Not]q we will only have 2 rows. Truth tables involving \", Style[\"n\", FontSlant -> \"Italic\"], \" statements will have \", ExpressionCell[\!\(TraditionalForm\`2\^n\)], \" rows unless additional information about the truth values of some of these statements is known.\\n\\n\", Style[\"Definition 1.1.8.\", FontWeight -> \"Bold\"], \" A statement that is always true is called \", Style[\"logically true\", FontColor -> RGBColor[1, 0, 0]], \" or a \", Style[\"tautology\", FontColor -> RGBColor[1, 0, 0]], \". \\n\\n\", Style[\"Definition 1.1.9.\", FontWeight -> \"Bold\"], \" A statement that is always false is called \", Style[\"logically false\", FontColor -> RGBColor[1, 0, 0]], \" or a \", Style[\"contradiction\", FontColor -> RGBColor[1, 0, 0]], \". \\n\\nSymbolically, we denote a tautology by \", Style[\"1\", FontWeight -> \"Bold\"], \" and a contradiction by\", Style[\" 0\", FontWeight -> \"Bold\"], \".\"}], \"Text\", CellChangeTimes -> {{3.6419958223953986*^9, 3.6419958294070997*^9}, {3.6419959286657953*^9, 3.641996010599262*^9}, {3.642512383998474*^9, 3.642512447403845*^9}}]"; s8="TextCell[Row[{\"The truth value of a compound statement is determined from the truth values of its simple components under certain rules. For example, if \", Style[\"p\", FontSlant -> \"Italic\"], \" is a true statement then the truth value of \", Style[\"\[Not] p\", FontSlant -> \"Italic\"], \" is F. Similarly, if \", Style[\"p\", FontSlant -> \"Italic\"], \" has truth value F, then the statement \", Style[\"\[Not] p\", FontSlant -> \"Italic\"], \" has truth value T. These rules are summarized in the following \", Style[\"truth table\", FontColor -> RGBColor[1, 0, 0]], \".\"}], \"Text\", CellChangeTimes -> {3.6419937531093116*^9, {3.641993850645959*^9, 3.641993911788006*^9}, {3.64199497723953*^9, 3.6419949795052614*^9}}]"; s9="TextCell[Row[{\"If \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" are statements, then the truth value of the statement\", Style[\" p \[Or] q\", FontSlant -> \"Italic\"], \" is T except when both \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" have truth value F. The truth value of \", Style[\"p \[And] q\", FontSlant -> \"Italic\"], \" is F except if both \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" are true. These and the truth values for the other connectives appear in the truth tables below.\"}], \"Text\", CellChangeTimes -> {3.6419950316609926*^9, {3.641995077985383*^9, 3.6419951274436264*^9}}]"; s10="TextCell[Row[{\"From these elementary truth tables, we can determine the truth value of more complicated statments. For example, what is the truth value of \", Style[\"p \[And] \", FontSlant -> \"Italic\"], \"\[Not]\", Style[\"q\", FontSlant -> \"Italic\"], \" given that \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" are true? In this case, \[Not]\", Style[\"q\", FontSlant -> \"Italic\"], \" has truth value F and from the second line of the tables above, we see the truth value of the compound statement is F. Had it been the case that \", Style[\"p\", FontSlant -> \"Italic\"], \" was false and \", Style[\"q\", FontSlant -> \"Italic\"], \" true, then again \[Not]\", Style[\"q\", FontSlant -> \"Italic\"], \" would be false and from the fourth row of the above table we see that \", Style[\"p \[And] \", FontSlant -> \"Italic\"], \"\[Not]\", Style[\"q\", FontSlant -> \"Italic\"], \" is a false statement. To consider all the possible truth values, we construct a truth table.\"}], \"Text\", CellChangeTimes -> {{3.6419951956987743*^9, 3.641995324127452*^9}, {3.641995358030384*^9, 3.641995390174245*^9}}]"; s11="TextCell[\"The lower case t and f were used to record truth values in intermediate steps.\", \"Text\", CellChangeTimes -> {3.6419956699947577*^9}]"; s12="TextCell[Style[\"1.1.b. COMPLETING A TRUTH TABLE\", \"Text\", FontSize -> 24, FontWeight -> \"Bold\", FontColor -> GrayLevel[0]], \"Subsection\", CellChangeTimes -> {{3.6419957380195804*^9, 3.6419957522142677*^9}, {3.642098413891723*^9, 3.6420984176535234*^9}, {3.6424387484177685*^9, 3.6424387495115843*^9}, {3.642510082385045*^9, 3.642510082650684*^9}}, FontWeight -> \"Plain\"]"; s13="TextCell[Row[{\"A truth table involving n statements has \", ExpressionCell[\!\(TraditionalForm\`2\^n\)], \" rows. So a table for a statement involving \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" has 4 rows and a table involving \", Style[\"p\", FontSlant -> \"Italic\"], \", \", Style[\"q\", FontSlant -> \"Italic\"], \" and \", Style[\"r\", FontSlant -> \"Italic\"], \" has 8 rows etc. Here we give an example of completing a truth table with 8 rows. Typically, the table is set up as follows. We hold the first two statements true and consider the two cases of the last statement being true or false giving the first two rows of the table. Next we let the second statement be false and again consider both possible truth values of the last statement (giving the first 4 rows of the table). Finally, we let the first statement be false and consider the possible truth values of the last two statements, first with the second statement true and the last statement taking on both possible values and then the second statement being false and the last statement taking both values. We complete the truth table for the statement \", Style[\"(p \", FontWeight -> \"Bold\"], \"\[RightArrow]\", Style[\" q) \", FontWeight -> \"Bold\"], \"\[RightArrow]\", Style[\" (q \", FontWeight -> \"Bold\"], \"\[Or]\", Style[\" r)\", FontWeight -> \"Bold\"], \" will have eight rows.\\n\"}], \"Text\", CellChangeTimes -> {{3.6419960367560673*^9, 3.6419960642621202*^9}, {3.6420970822565193*^9, 3.6420971069470096*^9}, {3.6420982633341894*^9, 3.6420982724125447*^9}, {3.642098463867532*^9, 3.642098533185258*^9}, {3.6420986894418592*^9, 3.642098704502475*^9}, {3.642171622104613*^9, 3.642171626834792*^9}, 3.6424387620025616*^9}]"; s14="TextCell[Row[{\"As in algebra, we find the truth values of parenthesized expressions first. So to complete this example we\[CloseCurlyQuote]ll first find the truth value of \", Style[\"p \", FontWeight -> \"Bold\"], \"\[RightArrow]\", Style[\" q\", FontWeight -> \"Bold\"], \" . Second, we\[CloseCurlyQuote]ll find the truth value of \", Style[\"q \", FontWeight -> \"Bold\"], \"\[Or]\", Style[\" r\", FontWeight -> \"Bold\"], \" and finally find the truth value of the complete statement.\\n\\n We look up the truth values for the conditional involving two statements to find the truth values \", Style[\"p \", FontWeight -> \"Bold\"], \"\[RightArrow]\", Style[\" q\", FontWeight -> \"Bold\"], \" . These values are now entered in the table. Note that it is important to know the elementary truth tables. Also, it is probably better to memorize in the form \[OpenCurlyDoubleQuote]T \[RightArrow] T is T, T\", \"\[RightArrow]\", \" F is F\[CloseCurlyDoubleQuote] etc., rather than think in terms of \", Style[\"p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \".\"}], \"Text\", CellChangeTimes -> {{3.642098755482542*^9, 3.6420988312116823*^9}, {3.6420988628226156*^9, 3.6420988873475523*^9}, {3.642171648326171*^9, 3.6421716615184226*^9}}]"; s15="TextCell[\"Note that whenever p is false that p \[RightArrow] ? is true. In fact, it is only false when the first statement is true and the second is false. Next we fill in the truth values of q \[Or] r .\\n\\nWe look up the truth values for the conjunction involving two statements to find the truth values of q \[Or] r . These values are now entered in the table. Again, think of the conjunction of two statements is T except when both statements are false.\", \"Text\", CellChangeTimes -> {{3.642099093475411*^9, 3.6420991694375873*^9}, {3.6421716881039267*^9, 3.6421716900733075*^9}}]"; s16="TextCell[Style[\"Table 1.1.b.3.\", FontWeight -> \"Bold\"], \"Text\", CellChangeTimes -> {3.642513626703644*^9}]"; s17="TextCell[Row[{\"Finally, we use the truth values we have entered to fill in the truth values of the complete statement (p \[RightArrow] q) \[RightArrow] (q \[Or] r).\\n\\nWe look up the truth values for the conjunction involving two statements to find the truth values of q \[Or] r . These values are now entered in the table.\\n\\n\", Style[\"Table 1.1.b.4.\", FontWeight -> \"Bold\"]}], \"Text\", CellChangeTimes -> {{3.642099363556437*^9, 3.6420994473925076*^9}, {3.6421717176243305*^9, 3.642171720327614*^9}, {3.6425136334383607*^9, 3.6425136397984486*^9}}]"; s18="TextCell[\"Example\", \"Text\", CellChangeTimes -> {{3.642099363556437*^9, 3.6420994473925076*^9}, {3.6421717176243305*^9, 3.642171720327614*^9}, {3.6425136334383607*^9, 3.6425136397984486*^9}}]"; s19="TextCell[\"Finally, we use the truth values we have entered to fill in the truth values of the complete statement (p \[RightArrow] q) \[RightArrow] (q \[Or] r).\", \"Text\", CellChangeTimes -> {{3.642099571119606*^9, 3.6420995833067937*^9}, {3.6421717379701843*^9, 3.6421717406846285*^9}}]"; s20="TextCell[Row[{\"Note that while a truth table involving statements\", Style[\" p\", FontSlant -> \"Italic\"], \" and \", Style[\"q\", FontSlant -> \"Italic\"], \" has 4 rows to cover the possibility of each statement being true or false, if we have additional information about either statement this will reduce the number of rows in the truth table. If, for example, the statement \", Style[\"p\", FontSlant -> \"Italic\"], \" is known to be true, then in constructing the truth table of \[Not]p\[Implies]\[Not]q we will only have 2 rows. Truth tables involving \", Style[\"n\", FontSlant -> \"Italic\"], \" statements will have \", ExpressionCell[\!\(TraditionalForm\`2\^n\)], \" rows unless additional information about the truth values of some of these statements is known.\\n\\n\", Style[\"Definition 1.1.8.\", FontWeight -> \"Bold\"], \" A statement that is always true is called \", Style[\"logically true\", FontColor -> RGBColor[1, 0, 0]], \" or a \", Style[\"tautology\", FontColor -> RGBColor[1, 0, 0]], \". \\n\\n\", Style[\"Definition 1.1.9.\", FontWeight -> \"Bold\"], \" A statement that is always false is called \", Style[\"logically false\", FontColor -> RGBColor[1, 0, 0]], \" or a \", Style[\"contradiction\", FontColor -> RGBColor[1, 0, 0]], \". \\n\\nSymbolically, we denote a tautology by \", Style[\"1\", FontWeight -> \"Bold\"], \" and a contradiction by\", Style[\" 0\", FontWeight -> \"Bold\"], \".\"}], \"Text\", CellChangeTimes -> {{3.6419958223953986*^9, 3.6419958294070997*^9}, {3.6419959286657953*^9, 3.641996010599262*^9}, {3.642512383998474*^9, 3.642512447403845*^9}}]"; s21="TextCell[Style[\"1.2. Logical equivalence and implication\", FontWeight -> \"Bold\", FontColor -> GrayLevel[0]], \"Text\", CellChangeTimes -> {{3.6424388596488085*^9, 3.6424388671668797*^9}, {3.642510094941286*^9, 3.642510095189911*^9}}, FontSize -> 24, FontWeight -> \"Plain\"]"; s22="TextCell[Row[{\"We cannot construct any more than 16 truth tables involving two statements. This is because such a truth table has 4 rows and the truth value of each row is T or F. Below there is a list of 16 inequivalent truth tables.\\n\", Style[\"Table 1.2.1.\", FontWeight -> \"Bold\"]}], \"Text\", CellChangeTimes -> {3.64209998528646*^9, {3.6421037438126125*^9, 3.642103762928582*^9}, 3.6424390556300325*^9}]"; s23="TextCell[\"Practice\", \"Text\", CellChangeTimes -> {3.64209998528646*^9, {3.6421037438126125*^9, 3.642103762928582*^9}, 3.6424390556300325*^9}]"; s24="TextCell[\"Example: Decompose English Sentence into a Logic Sentence \", \"Text\", CellChangeTimes -> {3.64209998528646*^9, {3.6421037438126125*^9, 3.642103762928582*^9}, 3.6424390556300325*^9}]";