From a4f72d0a849f6aa1d2d68059c85aba4582b9b720 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Thu, 17 Aug 2023 21:32:05 -0600 Subject: [PATCH] Enderton. Set/logic exercises and truth table macros. --- Bookshelf/Enderton/Logic.tex | 144 +++++++++++++++++++++-- Bookshelf/Enderton/Logic/Chapter_1.lean | 64 ++++++++++ Bookshelf/Enderton/Set.tex | 33 +++++- Bookshelf/Enderton/Set/images/fig-32.png | Bin 0 -> 13450 bytes preamble.tex | 1 + 5 files changed, 230 insertions(+), 12 deletions(-) create mode 100644 Bookshelf/Enderton/Set/images/fig-32.png diff --git a/Bookshelf/Enderton/Logic.tex b/Bookshelf/Enderton/Logic.tex index 1bf97aa..8f1862c 100644 --- a/Bookshelf/Enderton/Logic.tex +++ b/Bookshelf/Enderton/Logic.tex @@ -5,6 +5,12 @@ \externaldocument[S:]{Set} +% Truth table start and final color +\definecolor{TTStart}{gray}{0.95} +\definecolor{TTEnd}{rgb}{1,1,0} +\newcolumntype{s}{>{\columncolor{TTStart}}c} +\newcolumntype{e}{>{\columncolor{TTEnd}}c} + \begin{document} \header{A Mathematical Introduction to Logic}{Herbert B. Enderton} @@ -796,32 +802,64 @@ \end{proof} -\subsection{\sorry{Exercise 1.2.1}}% +\subsection{\verified{Exercise 1.2.1}}% \hyperlabel{sub:exercise-1.2.1} Show that neither of the following two formulas tautologically implies the other: - \begin{gather*} - (A \Leftrightarrow (B \Leftrightarrow C)), \\ + \begin{gather} + (A \Leftrightarrow (B \Leftrightarrow C)), + \hyperlabel{sub:exercise-1.2.1-eq1} \\ ((A \land (B \land C)) \lor ((\neg A) \land ((\neg B) \land (\neg C)))). - \end{gather*} + \hyperlabel{sub:exercise-1.2.1-eq2} + \end{gather} \textit{Suggestion}: Only two \nameref{ref:truth-assignment}s are needed, not eight. + \code*{Enderton.Logic.Chapter\_1} + {Enderton.Logic.Chapter\_1.exercise\_1\_2\_1\_i} + + \code{Enderton.Logic.Chapter\_1} + {Enderton.Logic.Chapter\_1.exercise\_1\_2\_1\_ii} + \begin{proof} - TODO + First, suppose $A = T$, $B = F$, and $C = F$. + Then \eqref{sub:exercise-1.2.1-eq1} evaluates to $T$ but + \eqref{sub:exercise-1.2.1-eq2} evaluates to $F$. + Therefore $\eqref{sub:exercise-1.2.1-eq1} \not\vDash + \eqref{sub:exercise-1.2.1-eq2}$. + + Next, suppose $A = F$, $B = F$, and $C = F$. + Then \eqref{sub:exercise-1.2.1-eq2} evaluates to $T$ but + \eqref{sub:exercise-1.2.1-eq1} evaluates to $F$. + Therefore $\eqref{sub:exercise-1.2.1-eq2} \not\vDash + \eqref{sub:exercise-1.2.1-eq1}$. \end{proof} -\subsection{\sorry{Exercise 1.2.2a}}% +\subsection{\verified{Exercise 1.2.2a}}% \hyperlabel{sub:exercise-1.2.2a} Is $(((P \Rightarrow Q) \Rightarrow P) \Rightarrow P)$ a tautology? + \code*{Enderton.Logic.Chapter\_1} + {Enderton.Logic.Chapter\_1.exercise\_1\_2\_2a} + \begin{proof} - TODO + Yes. + To prove, consider the following truth table: + $$ + \begin{array}{s|c|s|c|s|e|s} + (((P & \Rightarrow & Q) & \Rightarrow & P) & \Rightarrow & P) \\ + \hline + T & T & T & T & T & T & T \\ + T & F & F & T & T & T & T \\ + F & T & T & F & F & T & F \\ + F & T & F & F & F & T & F + \end{array} + $$ \end{proof} -\subsection{\sorry{Exercise 1.2.2b}}% +\subsection{\pending{Exercise 1.2.2b}}% \hyperlabel{sub:exercise-1.2.2b} Define $\sigma_k$ recursively as follows: $\sigma_0 = (P \Rightarrow Q)$ and @@ -829,7 +867,95 @@ $\sigma_k$ a tautology? (Part (a) corresponds to $k = 2$.) \begin{proof} - TODO + + We prove that $\sigma_k$ is a tautology if and only if $k$ is an even + integer greater than zero. + To do so, we show (i) that $\sigma_k$ is a tautology for all even $k > 0$, + (ii) $\sigma_0$ is not a tautology, and (iii) $\sigma_k$ is not a + tautology for all odd $k$. + + \paragraph{(i)}% + \hyperlabel{par:exercise-1.2.2b-i} + + Let $P(k)$ be the predicate, "$\sigma_k$ is a tautology." + We prove $P(k)$ holds true for all even $k > 0$ via induction. + + \subparagraph{Base Case}% + + Let $k = 2$. + By definition, + $$\sigma_2 = (((P \Rightarrow Q) \Rightarrow P) \Rightarrow P).$$ + \nameref{sub:exercise-1.2.2a} indicates $\sigma_2$ is a tautology. + Hence $P(2)$ is true. + + \subparagraph{Inductive Step}% + + Suppose $P(k)$ holds for some even $k > 0$. + By definition, + $$\sigma_{k + 2} = ((\sigma_{k} \Rightarrow P) \Rightarrow P).$$ + Consider the truth table of the above: + $$ + \begin{array}{c|c|s|e|s} + ((\sigma_k & \Rightarrow & P) & \Rightarrow & P) \\ + \hline + T & T & T & T & T \\ + T & T & T & T & T \\ + T & F & F & T & F \\ + T & F & F & T & F + \end{array} + $$ + This shows $\sigma_{k+2}$ is a tautology. + Hence $P(k + 2)$ is true. + + \subparagraph{Subconclusion}% + + By induction, $P(k)$ is true for all even $k > 0$. + + \paragraph{(ii)}% + + By definition, $$\sigma_0 = (P \Rightarrow Q).$$ + This is clearly not a tautology since $\sigma_0$ evaluates to $F$ when + $P = T$ and $Q = F$. + + \paragraph{(iii)}% + + Let $k > 0$ be an odd natural number. + There are two cases to consider: + + \subparagraph{Case 1}% + + Suppose $k = 1$. + Then $\sigma_k = \sigma_1 = ((P \Rightarrow Q) \Rightarrow P)$. + The following truth table shows $\sigma_1$ is not a tautology: + $$ + \begin{array}{s|c|s|e|s} + (((P & \Rightarrow & Q) & \Rightarrow & P) \\ + \hline + T & T & T & T & T \\ + T & F & F & T & T \\ + F & T & T & F & F \\ + F & T & F & F & F + \end{array} + $$ + + \subparagraph{Case 2}% + + Suppose $k > 1$. + Then $k - 1 > 0$ is an even number. + By definition, $$\sigma_k = (\sigma_{k-1} \Rightarrow P).$$ + By \eqref{par:exercise-1.2.2b-i}, $\sigma_{k-1}$ is a tautology. + The following truth table shows $\sigma_k$ is not: + $$ + \begin{array}{c|e|s} + (\sigma_{k-1} & \Rightarrow & P) \\ + \hline + T & T & T \\ + T & T & T \\ + T & F & F \\ + T & F & F + \end{array} + $$ + \end{proof} \subsection{\sorry{Exercise 1.2.3a}}% diff --git a/Bookshelf/Enderton/Logic/Chapter_1.lean b/Bookshelf/Enderton/Logic/Chapter_1.lean index 2614e4b..92e87ed 100644 --- a/Bookshelf/Enderton/Logic/Chapter_1.lean +++ b/Bookshelf/Enderton/Logic/Chapter_1.lean @@ -390,4 +390,68 @@ theorem exercise_1_1_5_b (α : Wff) (hα : ¬α.hasNotSymbol) ] exact inv_lt_one (by norm_num) +/-! #### Exercise 1.2.1 + +Show that neither of the following two formulas tautologically implies the +other: +``` +(A ↔ (B ↔ C)) +((A ∧ (B ∧ C)) ∨ ((¬ A) ∧ ((¬ B) ∧ (¬ C)))). +``` +*Suggestion*: Only two truth assignments are needed, not eight. +-/ +section Exercise_1_2_1 + +private def f₁ (A B C : Prop) : Prop := + A ↔ (B ↔ C) + +private def f₂ (A B C : Prop) : Prop := + ((A ∧ (B ∧ C)) ∨ ((¬ A) ∧ ((¬ B) ∧ (¬ C)))) + +theorem exercise_1_2_1_i + : f₁ True False False ≠ f₂ True False False := by + unfold f₁ f₂ + simp + +theorem exercise_1_2_1_ii + : f₁ False False False ≠ f₂ False False False := by + unfold f₁ f₂ + simp + +end Exercise_1_2_1 + +section Exercise_1_2_2 + +/-- #### Exercise 1.2.2a + +Is `(((P → Q) → P) → P)` a tautology? +-/ +theorem exercise_1_2_2a (P Q : Prop) + : (((P → Q) → P) → P) := by + tauto + +/-! #### Exercise 1.2.2b + +Define `σₖ` recursively as follows: `σ₀ = (P → Q)` and `σₖ₊₁ = (σₖ → P)`. For +which values of `k` is `σₖ` a tautology? (Part (a) corresponds to `k = 2`.) +-/ + +private def σ (P Q : Prop) : ℕ → Prop + | 0 => P → Q + | n + 1 => σ P Q n → P + +theorem exercise_1_2_2b_i (k : ℕ) (h : Even k ∧ k > 0) + : σ P Q k := by + sorry + +theorem exercise_1_2_2b_ii + : ¬ σ True False 0 := by + sorry + +theorem exercise_1_2_2b_iii (n : ℕ) (h : Odd n) + : ¬ σ False Q n := by + sorry + +end Exercise_1_2_2 + end Enderton.Logic.Chapter_1 diff --git a/Bookshelf/Enderton/Set.tex b/Bookshelf/Enderton/Set.tex index e95adf8..c279881 100644 --- a/Bookshelf/Enderton/Set.tex +++ b/Bookshelf/Enderton/Set.tex @@ -6,6 +6,8 @@ \input{../../preamble} \makecode{../..} +\externaldocument[S:]{../../Common/Real/Sequence} + \newcommand{\ineq}{\,\mathop{\underline{\in}}\,} \begin{document} @@ -854,7 +856,7 @@ Therefore $V_1 = A \cup \powerset{V_0}$. This proves $P(1)$ holds true. - \paragraph{Induction Step}% + \paragraph{Inductive Step}% Suppose $P(n)$ holds true for some $n \geq 1$. Consider $V_{n+1}$. @@ -8611,7 +8613,7 @@ TODO \end{proof} -\subsection{\sorry{Exercise 6.2}}% +\subsection{\unverified{Exercise 6.2}}% \hyperlabel{sub:exercise-6-2} Show that in Fig. 32 we have: @@ -8622,7 +8624,32 @@ \end{align*} \begin{proof} - TODO + \begin{figure}[ht] + \label{sub:exercise-6-2-fig1} + \includegraphics[width=0.6\textwidth]{fig-32} + \centering + \end{figure} + Let $m, n \in \omega$. + We note the next point following $(m, n)$ that coincides with the $x$-axis + is $(m + n, 0)$. + We can then formulate the sum of points seen as + \begin{equation} + \hyperlabel{sub:exercise-5-2-eq1} + \left[ \sum_{i=0}^{m + n} (i + 1) \right] - n. + \end{equation} + All that remains is showing \eqref{sub:exercise-5-2-eq1} identifies with + the equation for $J$. + \eqref{sub:exercise-5-2-eq1} is an arithmetic series. + By \nameref{S:sub:sum-arithmetic-series}, + \begin{align*} + \left[ \sum_{i=0}^{m + n} (i + 1) \right] - n + & = \frac{[(m + n) + 1][1 + (m + n + 1)]}{2} - n \\ + & = \frac{[(m + n) + 1][(m + n) + 2]}{2} - n \\ + & = \frac{(m + n)^2 + 2(m + n) + (m + n) - 2n}{2} \\ + & = \frac{1}{2}[(m + n)^2 + 3m + n] \\ + & = J(m, n). + \end{align*} + Hence $J$ is correctly defined. \end{proof} \subsection{\sorry{Exercise 6.3}}% diff --git a/Bookshelf/Enderton/Set/images/fig-32.png b/Bookshelf/Enderton/Set/images/fig-32.png new file mode 100644 index 0000000000000000000000000000000000000000..d0724edd38dc9447711f1c36bb5a9e16f990dbb0 GIT binary patch literal 13450 zcmc(`c{tR4_%Hq$WJytJQG}vYL`7LLs7Mk@ma$XT>>-S`BB>C{z9iYVv1DHcMP<#t zFUdM~24QB-J@x#4=Q`)Q&fniI&-G}`_{_XN_kF*%yMVhY3VU}S+l?T|Ud3B-Y6yZF zh5y1C>EV$Nxpx)ee{_!571bHxj|Zd4OZfXyCwYw1eLFKJ7vsmKh`Ftujp=#EhmTE7 zZ5=J_oEB-TrQu2Es871_*wom`($1Dg-O|PsQMYjBxhTeS&Dosi(uGSRJQu|!MJ`KT z7UxlxQ`b48Ue!S`a*yAcsl7um|5Ld<6}$pubXw|yD{#&AF9>7p1ft5EIB!?Tp-~e_OTb; z|5}+H|3J%8_OAb7ch~i2EwNF?W|2pYyjCwPYF!GblM-2t^ABm2TJ`j*PN>TlRDw5? ztr;bRAU@V|2rXiSp!Og>D7p&>Lcb4>AndaLQxEoD^2yB1oUj)!blSfth91EqH0%gMYt4aINfmJ|br^p!^B6&Hy~?KP zUEHvukV%ilIgcGZdQV?J&O}+M*;sJZO+^2<$9lQ8GR#h1odJ^CBrGNgcasK@I7Xmbh zk;5gj!1VI6!yk{TQDSK5fr-hJ^TYfOv>J{jK;@v&G!}XyH*wzU2&asl$V$9 zE&6HjqKDA+l$Ig9_}iX)7)%hx#DbiV(y)mMfK2;Sh57rUC2 zv$J!5v7KSlK;w@ezaN(}8X~gw-=~q5)>f@+*RBl?Ff%iEVD=-35^oZ1NluQ+_Qqm_ zsMwLUiN=UJTkfMrnR0wPdwV0-x8OZ#++@Is9?42hPL7U`?_M5nsI%o@XKzbZir`b^ zSBbrFj|)N0e&0lL($ksN?JEs(B_$>K6z|`^Uvsf)sx?7OlN&+OzfA{-Uzdne`9mU) zmKgfiCFbW}DjixF?de32UOyWeO!W2-iKWXnxH!|yY**&vQavd8i@FC99)gKJqO|6VLMBa3 z|9xX-YJ({Kbg$(KRu~^2Pf?;pvh1~wGAE%Q(H`?HOpO{gcCv;SMCmtWoW^u6dG1{6$+l zj*t41Q}Red&EQYOXW}{{>{FVALK>eUDzb&8NtqcLd$e{TI1w80Ya!#l)ueUZuC6Z2 zM~{9uSt1C>NuRKN{qP=?B7~?7`UWn`HxEtNtNid`5|{Um!(~y?TcKs;<;2k%TH^Zp zv79}K5kDs?m8W0an0jTCefYDlIQj3WvLkQz(75iWel#_CR@acf-_-11I?(&sD&ob9 z7i&KixD`M0??Eu^s0z7QmDE@jezY+nd!2FglpOWdXRvssH*oAc`#Dj<&*d7J+$#;B zx->B~K7w+HaF|>@(>BR#FDok{$~@lK?-cUw65Z0J+bR4_+8xMSea2DK!)5U}(H^!Z zrFtvdBuTFw*QKeD9uy+Lfr_R7iLF(YArqP*4H)AG~F z#f30JA&qFLsfDJ@BFO1|c+0kd0gi53gIk`SmG$-Y;dv(!A4`v2ar7`tv@9(xYX?TE zJasd*at-QVAxO%8ctKB3>SEQlin6kDKhF5Z^^K^gsIe>y1XIH}D*C;(HKJiWq+uKe z>D03URaI3HA$COb0*!d{qeqWm7SwjL27M(EGm?^cmEWU~_5kF{ml>y7{8L&0;elei z;IihmwL$~8i9u=J7TkLLuRBSSM&mWBvX8 zX~os#ErMkZBZ7-%9NnX)shLt>-ulSG!eZElUp2lHX5=3AT?mGS&i=*Ovu8s(W;%cW z{`8}<@wuadZg_IA3^}s&Bg)8+$45jR=AVbOVK27!fTKJu{&tP}yQ4XIdH3KsCC82( z<7;j{MEc(ahGXYM4agP}eW}H(NrzwrX?jne>|rCX57>PMz^>CkA!=W>+ODW+X{ADQ z{vZ%%*Je5tN2;^3?!XB)-aU%&X#c}7zNG4ELowUIySBDD$2d5YBObnibJW(3DzX_c zD?5nD?zTPxR3wY8Xa?2V((+?!)e-=0mOuz=o$B~ImEQl{@v8oZYd{!&!`GAYx}2+= zER)gn0E&)u9>2aY9hY=EGiM%i#il(q!7Jm(kJ~piOpE@(i+RoblZCsNO>nwgra0NB=F?MI46T#s5y+{Y_4?Qcy?d( z0MB>kxoRl)jMCCRCkg6rT|VR_rCVfuPf;;o=8|=4W@aPxYF*ac_`txxn%tC-k{kXk zmK`a|8JU?P`nwU6Qv>w&FdH9PStYHDg+#)TZ{cA;Zdi*Qn%LYdiT5VE1qKB@a&l6q zEOS#5N672NKbo5_>qpzDYiTu(*;@dNDXq9ZeE2XLYII}3ubw01e5sihS$ z>^iK~`Y;mXJXSE+d4gr4~)R!&Y%!>wXA{hx}5 zu>xZa7X#DLs83<@G?-9;0Vv|^(J!2Nr$gBR$Qp&Kvtq>TQp)9cp}aafI@nxd@C=cC zeSIaUIeYQ&vWhnm-^jE+$q&kNKO~nD9n8(miM1y-phleDlUcdGqkW zgVUYq_nB>b07e1=m|*+}TcH6$Y8>hjpFh?|@u7u}x-xcczb!d!&kyL1sm1e-OJ&}wO+%}?EDEHY5+MkgxEdwJOjNe0@FTixsf(I zm)cKX5EFHjq4jYqI{w19^WugG5@}9ASk_!y6J+el-n|jKd^wqxfh7_+$1$S`G=mTETy9cMNe$v1rsj4mwt3{87e z)0-;tmeuKK#Ai>)GD=EX8u-CkXt(yWlAIBbIANFgFPHWtctmP{|&wtXk02S^xP^0G#G!0GGgjG=R=~ln_>H^WN={M z%z$0B2E5*0=(n}w;xJl*lLfx?%b%Q2-0tk^qFz`-MJ4EkzdzJVuQ#>+Up8o>=7?C0 zd-oDwy?W)lIR2!(tG)fCVwuxSC<~WV8l2a}Ift*t6cm01r-7tqR95P9du=B2rI(k- z#G8fodLy{C{F6SXsDQXNofOQcXy~!L3q8gszaRsUhZEOk!)Iz{x5NDF?Cws9jg8G( zWa1ZiOrc`ac(6?O_F}bNnJ9uw&SDxxu+gvC$|!v4)zt|k2IQ=3lN0K6VR11bfjpDo zG~IT>8Q`PlIfLNc1Ye8o#qazHodIn8cYr__g*YqVQER?O_#ab%`yGWjJa@{9R$NoH z7lxFXS-q3nQQ^lFWfhft3c|yr&4EXSpvT}Nk4D#F*tb~`wJ;(|&@b5W{p9ss0k4ZF z2Hqs+=Z8?Tle|9O*Hm2{0HI|cGmaXzu^Gf-(8l%Jw6acg_P!SAW?qFL_M9Km?B;us zfD=ARFXt?)Hiq5lGxNA7gXn$y_Tw-5u8W@f$)<7u?Tow(MuMJ}CLJ;F%Fuw?J0~n` zPC>~Yq+6nywoDPSKfnQR1un_9FFWSWG@*fX+P>S?6qw}B@jG>{dmP!daN5uV|8!XRIV#42ST6m z{bZwmJH$A8P>uu0i1*U zdCI@<1!!EE;J#!Q6x_F~`jY~*>idHQ3#9KQVsKI@LTRALhS?w$eg{-Q{$5mt?~}!0 zWmR$c@9Vyv(g_QLrD2ojP)0NRs2pbL7hgYHPFh+Uvv9=+4l&zL<#Gt-0FaeiPO(dP zypNtx#Lb&G+qDhqb<_Cgo|OMXfF6RfiyMOD10oapO?)gQWPhBrr%o$+L$9o{(RCSH zTUl9I;|)FRcyJFsocgRL@i72*E8=X|i*wC)^02ki3BuMC7^dH*R-*(CB5FXJ3NYxg zsHmg*RUQ(XtKSHbY<+*|tT4uZ;Wuey)+JIWrMq*bNN#fvpG{ zjm~X|Y6kFJUmOtzc@W4URzK98FZjnpdNP#Wh=b1l*xLH~kMZTSBs^O1GChcG>W08r;j9vzgk~kAC-R7#Ty?VAKp0efP(slp~Ibk z0#XR#{Mpv__KJ1yKIfR9KkrqpwJXIQIxY{q1nQwB9?juG$y-EB&e8OK*xB&_<~vm4 zaARU(LZ`s2xx(i3>CJ+izXf3$XL zb*9#j`C{;7Sy@@TUP$G^!-r?#0pN*h4h{~zHdmj_8Nr(pr?aQ;t8jC~6(9XR@%W-ch0c_4{_r(+-fC=iO9LJ?NOgAKu4Xf-7zW=DB`qn;dnfYaSE?lJ#8DG zPMdPY0j71-OQa~^8_^g3D#5_Y)!Ei|*Iwe*Iych6C895T3DmHLfq`w=9$w9C9V+Zi z`*VBURZ#GUi60g%fQ8!67qmJm&}0o0IkaO&9e(7sImR$l=B$*e5_fx(+*d_G1kwIq z4G-x82=!OE6%1nu=c%5L+CTdVJu0YfXxNIaLyRJAu=s+40;-om#p4+;wBIL z1Qs#9GST?Be5k+3Mt5lndU$KOftv_z@`A*Pgc`?i;p)a1%WcE*Me2dG)gC^3=G?h< z_->EpyFTb0GSQHtp_QX|54gpkt;1k*rJ5IGk3Dt!Iue*Ht@~OuBHK5ZmLgrs1q1`(> z-_2Y?df(a5u&2)~F7^Pk`^%Oe=r$eSYb3D`FVOpMa2a?KHR8k_YMmsC4oSE;ec-OJ z>^KdIGU^<&PxF4fKqver1J|)#l|Z6aHEC;WcQZ3jHCN6%NlrLPI{*H*ADVC)3Nj-r zOB8cTGb24ceRR8d#z|RnaZ*lod&(r%;Vio&)nnd$u;cB z^&)2C5e;7P^hPsRVCZ z#e8U!2MY-wKYmQxUQ+em3e(WhDVxTwtgK|Uw6x$FW9+Id=ZDIBKm~|aRe$W-_Ltc) z9wv)BPQKC5)8lmU7H%LHG)_$aObQ@x$UnPcJIL;AXxCr(eXG%s9J(~_ORl`LM&eM) zYUnF>$t417z1$b^(y;fm54W_3h0Rde<;~Z@r-wOglMSy^ZtNn{Mudm!08y(^nkF}X z|DFecnf3aJ@Qe96Yv#9YO1~KnH@-TKmynR?hQpe)p+IGDcpslBT{9i2Nw$>fpS)C9qxQiTA@_M@6SzI3}YFl1MS61P>O zxBEX=RKzAlo`Grm(W}dz#HRo#od4%OGc#$r&`+TmUO{l_W-x!A+& zz$j#UEmEahk?+ZBsq+SeCFM3QoHaz=@RgM;t*J7(tRyEZpnm$q{B%hkb>SR1E1 z%+GX2K;YrUPoNW3vA+a0-?N(+#_6*?f!||(6d_9k|M{<-E7QRa|M9vl{ zv-XZJ`|2CsQKh@34j!(7$Fe+WsgAW~L)XqOm%J)N3FBh-kOv@IU%R(r5{^{FmPG$jHc8N6SYvCXY7+3qN#@ zYF^x6*w8<@m;lgT`DZdFbTXGeHjri;6i~F#u5X<5{3u05qx@}?(`*#-_F{HTP0i>Y zA<(qC^}9v1@hVaDJ3PP%V>1AmVw(Tf_rVi4{(qH zHjC^=ga8x(of_w#bgRvDuK9*_fsh5L zx*f{GEe#GJxVO7UeW)iA`O6w45wDDlA&AY-pFf9AGx0Z$FN3SO?=%67;TR5Qd;7bg zYf~~5ZD6>uW3T2C!MibUjqiG~mtzfv1ORASQc|6hcG26Im`o5P7C-?*KT%N@Y^@iW zG)8Kg^f*zm_Y+@VADLm|Plu5X!~O$*EDbR9>s0$yO&`?n*g=pf$H8b+3unN|sfue* z1yw$O6PY$&6%5#akK8}f$0qH$<<$FN3el9N**vo5d;f;2xN{=fSaEA-wRMJxR@)b0 zxdsoxPZU(yzp2pK(_w4V6ZtE|*Lpk;T6!%ZSdNlWOo+dsp+NfBg6?-u^(2 zVYQHDPOA33dvIMQ>Q!VB;SWGK!L_HJC$AG)FCgANKl17^%pbJpu&^*{!}48J5x@2m8x7J)5B%ZdEDYPMm=lbnbcg;iMX(>A zQ=h|>h*l1801-q%39zAJeL*q&y@M*(EL87*qzR$c>CFDOCc7x#8JjkdB!#0t5>g5h2u@5>WeN;k3fR1D0xmB5tB)5caLsB{2r zjJE|7Sq+0ZlhE3Ltvx$UAUs5m$%9txWkpqd!KjK~&iZ?!P}?VbBCh?$)~>+`mBwE{ zH-DjCz#lOf$scV3uiutAGCb{#LH8;)(OX@*GQtY+J4&?Y^K%{jl~SW@cvM zCw~q;x)1J`;!tXFu}f4&UIYk2D$o5)5obW%;-(Q-KG{>P{|$U_sI=}4QQGk|nVqFN z-^Eq94Ku_ZL&N%vxf3`8=ltzp_!w){TmVOgc+eae#=ADpY0H*ANHVAnQetA_Xi2vp z?pWK%sq(+So)xTkfX3fWlBU|>)D#KS=EU#cUk2mjCu2btf1h!p@2Ng7EZh@)+3JC< z4Cv9Ja+lP++NSV1@9iB7Hl@%Rrh_c_LZ8&GxarEwyu z0o#pVp_=#q1WMiH!d`h*kuup}k;j+9knV>;!Xc!H`6(Wuk>yVa!q!jS1wa}Dkd}Qy z5dzi=!?(b>H%Uo7^Dj7fz%u^;J-Kz@?eOHHq9Png?Bc~lpvf;t41%-C)<1hFmUqj4G@Fip4zkkO$#JuTvBkVM2WrWtVwAFKl7^CLL z9B((ac235~av%N*q_*r=Y{ML)177Q~x`2(@^zJ>FYpnQR5`vBScaDU-A(OqR>bkVF z^pUl-sJ==+abtt<^@w5T^mH2E4AAaJwzewMRlK~sHEbdI*}+o4v0O$xwYWW&p7Nzb z2E4H_q%=!@+BOU&0XIH8x#i9wR}vVNRF^T7R4}&e%GbQt9W;a9i`}U0JbmN_=&24i zRjCt-=Y)j1dknpsxj)lwlDsOH>p4IMysH~)%gn9HxSy&5$e>x@&_FHT)DFwCgZOnu zBaT&UWtlS}9ITXtwso&+nJl~5goIr1HiWd?j%I@l2eBfie^Zkkt^%xCIRa(EIRH#d zVES&~=6j=jDXw5}D4rSC+-^@%j#-;YO?bQ(3zqW--evM@p|%ysv>w^nv65p+yLM{x zL%;&7ry{|r?~vyd41269D}{cBxVj_Rv=F$xl3HgYgy~shW5yk)%qju`0wTAUfS9H< zHj1-yOBWW|4n0!LhYYE9y{9GaYWB#^q*#g)-J1esL{&va$ErIkk53zd1$^4Tq_buYh;-Kna%4jeYh__^#+8Zmyu@}$l6sl;_V%=~f&TtSq_qxJ>ZP8N z4)w}B-OwMUWY&%04BY20cbL-LM280@%_ZMeSLd@_$Ql7rIof(vQd0E7g%7}Z=Z7nG zK{%(}Zo)tqmr$It1esMlcJ?fcORZwNkt^y^=r@6ZmXK%c-MhD<`oKYPrE1_7P%1TH zMb|0S^pjVF1qDShXN`i+*P|G^>tI76us?SY3W2ZNJMdKh7bf7kv8dP&ZLA&`%twNj zVVP4v)MtoT_Tz1fb=wEGk^xLsZCPVSYqpXxDv;rTF`+H?LQ?xFB{$DE{_QRk5nZ|q zMz^Q2B}qw1RCin@LArTX_VvEa`r8jGjZKQd_Me=bjC}2&6v!j0+<;Z@k9NoyiRBd!Ef*>kCe zp&u0Jj~_qoL_B1M$R)gCoTe8hLIca+im2s`QFIFCTGH@OJfJe92jJ^Fq zXHSp0a>DodC;Xz9P5)&}&MUvapE^o^z{+-1j*u4y4!*->>BZgYA<#+?3-Hk)3>v>?o7Pl|E%Z62zSW#?r%CN3@3#@WoI}40HMpL4R`Tk z@%=YZ0pK6cM~bj#7b+PT#1p}27c5b&1~RdWUnoFqwc~abCmJg{wlP`iIQ49!v3^5$ z`cydVg=AJ#NF|a;OJg^vLm@=2=*VX2FgD@|9#uAYwlQLmnkUSbu7bGfQ<(`HxLR zMH8YmjB3HZG}Tp;Zs|JBI0p7-x^@*e1G9%@>qqN*;Lu=9NQ)o!HZuFwXwPNH~TqF#W97rsDWJfAWOC{LxkY?`Y=&Al^xYq9l$+|I1$gMWG_b@<$ zf!Dq7!R1f0vyb+&umCetrGQU$hLGG+oxOBfW677@z~o`m2T&~tqc1)Df6Wb z_4Si`FFQ!a88`CwJ9zf}OGp)95||fd(YaO{P;H|!Z%P$NmbGficJ*p_-JUElP9;by zxujh2D=#qnAs6+S@4pNJPgzw}fz+z4uYX<k5u4cGuLJIb%&g)CFzIxP zRDb1>F_TkM11DXRvdw{kW`b5sD=FzcoLf@}!5I|%P_?&V`yfM(h1I=?ckcvC)K54n zJWR&PBT9~jXozSS8uaPOVe~muzkgdm6!0RmN$P2Qu4vEw%(S$ZW%~E-g@An&(b8^x z0!Qf|7|?*M+-9ICy|`Gb*mkHLn#O5;PP_Yl5HHTFcw~_^{!k^jalTWp=`}A6(BT@! zf69=@WoDnVO1C{{V6CNbh4EwF68k+PUgslF%}JtRl7z!Axnmi533xJaxCF?JpQCml zY?_6r^Y;xy&Zmwn*WIh^Dv6rC>hEN)6v(rR^R$U%<>saZPUr@R?DB4|ef{KA@qI2mtg*UsMI;T-6_ zQ5%I|E)B4D_|hT6cVC|i;RDey0}W=GB{c{J>VJ6TGHe45Ku2#crneO)tf-{qvGoEN zN7?%2nxMovFVo_VWARryhKIQhSA`aOk+6^&z?ZX=)0w3xYF7dh)yz{p^t*R?6jy^T zDEC&n7YjDFgG*QEV*Eam9!4SEa1 zXJGvaj(_*?;jQid^RV-%q}3TEbR>4a^irTmWZz6#rCIeV0)> z(7#_B+s?4VflGjU-w1Xw&>`3|!%|2aQ$qk2cUb&+=ME5-A=Z(x8^D`VsT>&#iSrU& z1{|*E%6I;Z++4$@szk6q?oX40ie=#NVVQwHp*0m&8066-BCS$v-E6@Xl~8b#^WPbF zq+vfqGuPm_V>v8y!D&#}NFF^pmp;YV$?<3SHgP!=L?GAd#(r1Q>pz|-#XKWs8PZx9 zaWckEC-i{xuDS?e#;-p;+)4!}JBnO)K`;L0p)?qMREv7Di+hWF zYmN4<2_B+#U5E%ZVR@=|QKX;22f!$0hiqkI^O;W@fGQutnsG0q&5i`J$$Rj+!OC`! zF+wRlg>=c{DMnY<3V47v#}(^a=X`i+t$=RU4Cv_UX8-+ktB^@xU=M;)Y?5nkVeyR` z`cGD-z}n1dC(1W$gs#OcxrJ&xIdG6dJz{8{Vm^g5SON*>%LEjGMq}+RIG8K5w!vLW zp;gEVAyVe;yqUL2r+y8VI^H9YfPOvC6}EQ}=hOrPc`0;uJNF+yiE^QUq8WWinGp77 zDpwudh>D0Xr&ge%3_o=t?#ew#1D;f-rJb4Mi!)E~)CB6vgjTV&wOzu({HWTR6;O0U zW2nK1J3d1rv+&7$zkJoJYUWtc|5g)5TgQphG{p?qdN=@J_`y1hYE(KEbVC}umIi~5 zt<2EN%d1y>?rT~`MmvxnQBZck>tU&Lu0^_$`x6rUu6xDIZ<6+c2B|?fU{m#KT~SVskhm=@dI~J8olrLpMvWf+>#4dx!{$s zKqWEvDIbE_PYHHrW;Y{*4Ot9=i4@uk0Z380+>`^jxvwN&zk^-bRak)iIQ(R~E%9Bv zodgvS2*lf=Qe3V1o@ZW~!cJ6;+h^X1sj1eO2+6|Xum5csb~XfS+`k0b&aaltK7Li6VthW=U)yO+U^JzEyDm83LGpz42U5wjwFE{1El2kR+@~H zp4%trGdGd%Q63cD@;2I{r{DaTz;upiBVn=FTC?We^NPdeF2W@jZpcoHx7~%#kJAdS z8@sEoKNPzD?Ez5~7@fMh`oSXm=Mb5v-%o}8H~^xpwBU#!hd9{pg?koTjQct_mjyc# zY!&gdwMU-DZ-C5(*#@Z`EZRXGCByKWg%J>RRmJrp&0@m0k?K#lsn<{3MV~rMLg;*- z+BFCIS3M`*Yk_tUTO!gt$2-GtiN%{f4ElUX2NN`0?$MSu3jUI!)cl zceS{fHscGg*k6Qv!=+$ak6<;OKboJXfO@RSi%hJOy>4h&SWuEwN%os%mNGQbBRr@d z)6twOh&@kOG-pz{Z5pZaNv{5Q0|$TXON_aME=VDnpX+v`pKbc`zaHb_QkgD=X?(3JK(znh!gUl#)R zZ0&;jM=)GraThEc{j@4Mseb{)?P)R$zO$<8`!_u&Cnk0ggwLPf%VEy7)elKoD4E26 zatX^T<3!~{ z=ZLoVr*EEiM_@aHW^o43aHerL>!3xk|L!^N)023$2NJb{odW}zuyH@*QoS7~4c5Wv z(Lxxb#{6c~=uotj;q7;7u>L6rf(x9nE_gV`H@=>jEq7q_#prPKe_mSKe*{V XeZ{>cU^81Bfj^4!Dsnm3jh_84PyYrd literal 0 HcmV?d00001 diff --git a/preamble.tex b/preamble.tex index 249ba19..18c67ac 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,5 +1,6 @@ \usepackage{amsfonts, amsmath, amssymb, amsthm} \usepackage{bigfoot} +\usepackage{colortbl} \usepackage{comment} \usepackage[shortlabels]{enumitem} \usepackage{etoolbox}