From 6d6a97fe99dc7550f216309f34cea0068a24f9b9 Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Sun, 28 Sep 2025 09:26:38 +0800 Subject: [PATCH] wip --- cs3231/main.pdf | Bin 28272 -> 84049 bytes cs3231/main.typ | 254 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 253 insertions(+), 1 deletion(-) diff --git a/cs3231/main.pdf b/cs3231/main.pdf index a963bbe4f108c5bca3661e02f2a02550ec7f819c..665b448dcc4512d12966295940866363572f4135 100644 GIT binary patch delta 70008 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 delta 16294 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 diff --git a/cs3231/main.typ b/cs3231/main.typ index bd32df1..4d41769 100644 --- a/cs3231/main.typ +++ b/cs3231/main.typ @@ -1,4 +1,7 @@ #import "@preview/ilm:1.4.1": * +#import "@preview/ctheorems:1.1.3": * +#import "@preview/finite:0.5.0": automaton +#show: thmrules #show: ilm.with( @@ -10,10 +13,259 @@ // table-index: (enabled: true), // listing-index: (enabled: true), ) + +#set math.equation(numbering: none) + #set text(lang: "en", font: ("SF Pro Display")) #show raw: set text(font: "SF Mono") -== Reference +#let theorem = thmbox("theorem", "Theorem") +#let definition = thmbox("definition", "Definition", inset: (x: 1.2em, top: 1em)) +#let proof = thmproof("proof", "Proof") +#let example = thmplain("example", "Example") + +#let numeqn(eq) = math.equation(block: true, numbering: "(1)", eq) +#let dh = math.hat(math.delta) +#let es = math.epsilon.alt + += Chapter 1 +== Deductive Proofs +Sequence of statements, whose truth leads us from some initial statement, the _hypothesis_ to _conclusion_. Each step in the proof must follow by some accepted logical principle, either from facts or some of the previous statements in the deductive proof. + +#theorem[If $x >=4$ then $2^x >= x^2$] +#proof[ ] +#theorem[If $x$ is the sum of the squares of 4 positive integers, then $2^x >= x^2$] +#proof[ + + $x = a^2 + b^2 + c^2 + d^2$ (Given) + + $a >= 1, b >= 1, c >= 1, d >= 1$ (Given) + + $a^2 >= 1, b^2 >= 1, c^2 >= 1, d^2 >= 1$ ((2) and properties of arithmetic) + + $x >= 4$ ((1), (3), and properties of arithmetic + + $2^x >=x^2$ ((4) and Theorem 1.3) #qedhere +] + +== Proof by Contradiction +Another way to prove statements of the form "if H then C" is to prove "H and not C implies falsehood". + +We can start by assuming both hypothesis $H$ and negation of conclusion $C$. Complete proof by showing that something known to be false follows logically from $H$ and $"not" C$ + +== Proofs about sets +=== Equivalences +To prove the equality of to sets, $E$ and $F$, $E=F$, we need to prove the following. ++ Proof that if $x$ is in $E$, then $x$ is in $F$. ++ Proof that if $x$ is in $F$, then $x$ is in $E$. + +#theorem[$R union (S inter T) = (R union S) inter (R union T)$] + +#proof[The two set expressions involved are $E = R union (S inter T)$ and $F = (R union S) inter (R union T)$. + In the _if_ part, we assume element $x$ is in $E$ and show it is in $F$. + + + $x$ is in $R union (S inter T)$ (given) + + $x$ is in $R$ or $x$ is in $S inter T$ (defn of union) + + $x$ is in $R$ or $x$ is in both $S$ and $T$ (defn of intersection) + + $x$ is in $R union S$ (defn of union) + + $x$ is in $R union T$ (defn of union) + + $x$ is in $(R union S) inter (R union T)$ (4, 5, defn of intersection) + + In the _only if_ part, we assume element $x$ is in $F$ and show it is in $E$. + + $x$ is in $(R union S) inter (R union T)$ (Given) + + $x$ is in $(R union S)$ (defn of intersection) + + $x$ is in $(R union T)$ (defn of intersection) + + $x$ is in $R$ or $x$ is in both $S$ and $T$ (2, 3, reasoning about unions) + + $x$ is in $R$ or $x$ is in $S inter T$ (defn of intersection) + + $x$ is in $R union (S inter T)$ (defn of union) +] + +== Inductive Proofs +Suppose we are given statement $S(n)$ about an integer $n$ to prove. We need to prove 2 things. ++ The _basis_, where we show $S(i)$ for a particular integer $i$. Usually $i = 0$ or $i = 1$. ++ The _inductive_ step, where we assume $n >=i$, where $i$ is the basis integer, and we show that "if $S(n)$ then $S(n+1)$" + +These 2 parts should convince us that $S(n)$ is true for every integer $n$ that is equal to or greater than basis integer $i$. + + += Central Concept of Automata Theory +== Alphabet +Alphabet is a finite, nonempty set of symbols. We use the symbol $Sigma$ for alphabet. +Common alphabets include ++ $Sigma = {0, 1}$ the binary alphabet ++ $Sigma = {a, b, ..., z}$ the set of all lowercase letters + +== String +String is a finite sequence of symbols chosen from some alphabet. $01101$ is a string from the binary alphabet. + +*Empty String* is the string with 0 occurances of symbols, denoted by $es$. This string is a string that may be chosen from any alphabet whatsoever + +*Length of String* is denoted by $|w|$ , where $w$ is a string + +*Powers of an Alphabet* If $Sigma$ is an alphabet, we can express the set of all strings of a certain length. We define $Sigma^k$ to be the set of strings of length $k$, whose embols is in $Sigma$. Note that $Sigma^0 = { es }$ + +The set of all strings over an alphabet $Sigma$ is denoted $Sigma^*$. For instance, ${0, 1}^* = {es, 0, 1, 00, 01, 10, 11, ...}$ +The set of nonempty strings is denoted by $Sigma^+$ +The set of nonempty strings is denoted by $Sigma^+$ +- $Sigma^+ = Sigma^1 union Sigma^2 union ...$ +- $Sigma^* = Sigma^+ union {es}$ + +*Concat of Strings* +Let $x$ and $y$ be strings. $x y$ denotes concatenation of $x$ and $y$. If $x$ is a string composed of $i$ symbols $x = a_1a_2...a_i$ and $y$ is the string composed of $j$ symbols $y = b_1b_2...b_j$ then $x y$ is the string of length $i + j: x y = a_1...a_i b_1...b_j$. + +== Languages +A set of strings all of which are chosen from some $Sigma^*$, where $Sigma$ is a particular alphabet, is called a language. If $Sigma$ is an alphabet, and $L subset.eq Sigma^*$, then $L$ is a language over $Sigma$. Language over $Sigma$ need not include strings with all the symbols of $Sigma$, so once we have established than $L$ is a language over $Sigma$, we also know it is a language over any alphabet that is a superset of $Sigma$. + +Example languages: +- $Sigma^*$ is a language for any alphabet $Sigma$. +- $emptyset$,the empty language, is a language over any alphabet +- ${es}$, the language consisting of only empty string. + +Only constraint on what can be a language is that all alphabets are finite. Languages can have an infinite number of strings, but are restricted to consist of strings drawn from one fixed, finite alphabet. + += Deterministic Finite Automata +DFA consists of ++ Finite set of states, often denoted $Q$ ++ Finite set of input symbols,often denoted $Sigma$ ++ A transition function that takes as arguments a state, and an input symbol, and returns a state. Commonly denoted by $delta$ ++ A start state, one of the states in $Q$ ++ A set of final or accepting states $F$. $F subset Q$ + +In proofs we often talk about DFA in "5 tuple" notation: $ A = (Q, Sigma, delta, q_0, F) $ where $A$ is the name of the DFA. + +== DFA Processes Strings +The Language of a DFA: The set of all strings that result in a sequence of state transitions from the _start_ state to an _accepting_ state. + +We define an _extended transition function_ to describe what happens when we start in any state, and follow a _sequence_ of inputs, denoted as $hat(delta)$. The extended transition function is a function that takes state $q$ and a string $w$ and returns state $p$ - the state automaton reaches when starting in state $q$ and processing the sequence of input $w$. We define $hat(delta)$ by induction on the length of input string, as follows: + +#definition[][*Extended Transition Function* + + *Basis: * $hat(delta)(q, es) = q$. That is if we are in state $q$ and read no inputs, we are still in state q. + + * Induction: * Suppose $w$ is a string of the form $x a$, that is $a$ is the last symbol of $w$ and $x$ is the string consisting of all but the last symbol. Then $ hat(delta)(q, w) = delta(hat(delta)(q, x), a) $ +] + +== Language of DFA + +The language of a DFA $A = (Q, Sigma, delta, q_0, F)$, denoted by $L(A)$ is defined by $ L(A) = {w | hat(delta)(q_0, w) in F} $ That is, the language of $A$ is the set of strings $w$ that take the start state $q_0$ to one of the accepting states. + +If $L$ is $L(A)$ for some DFA A, then $L$ is a *regular language* + +#theorem[For any state $q$ and string $x$ and $y$, $hat(delta)(q, x y) = hat(delta)(hat(delta)(q, x), y)$] + +#proof[By inducting on $|y|$ + + Base case: $(y = es)$: + + $hat(delta)(q, x es) = hat(delta)(q, x)$ and $hat(delta)(hat(delta)(q, x), es) = hat(delta)(q, x)$ + + Inductive Step: Assume the statement holds for some $y = w in Sigma^*$, i.e. $hat(delta)(q, x w) = hat(delta)(hat(delta)(q, x), w)$ + + Let $y = w a, a in Sigma$, we have + + $hat(delta)(q, x w a) = delta(hat(delta)(q, x w) a)$ (defn of $hat(delta)$) + + $= delta(hat(delta)(hat(delta)(q, x), w), a)$ (Apply IH) + + $= hat(delta)(hat(delta)(q, x), w a)$ (defn of $hat(delta)$) + + So the statement holds true for $w a$. +] + +#theorem[For any state $q$, string $x$ and symbol $a$, $hat(delta)(q, a x) = hat(delta)(delta(q, a), x)$] + +#proof[ + + Let $x$ = $a$ and $y$ = $x$. Then, $hat(delta)(q, a x) = hat(delta)(hat(delta)(q, a), x)$. + + $= hat(delta)(delta(q, a), x)$ (by defn of $hat(delta)$) +] + += Nondeterministic Finite Automata +NFA has a set of finite states, finite input symbols, 1 start and a set of accepting states. NFA's transition function takes a state and input symbols but returns a *set* of 0, 1, or more states. + +#definition("Nondeterministic Finite Automata")[ +$ A = (Q, Sigma, delta, q_0, F) $, where + + $Q$ is a finite set of states + + $Sigma$ is a finite set of symbols + + $q_0 in Q$, is the start state + + $F subset Q$, set of final states + + $delta$, the transition function, takes in a state in $Q$ and an input symbol in $Sigma$ and returns a subset of $Q$. +] +== Extended Transition function +function $dh$ takes a state $q$, and a string of input symbols $w$, and returns the set of states that the NFA is in if it starts in state $q$ and processes string $w$. + +#definition[Extended Transition Function for NFA][ + + *Basis:* $dh(q, es) = {q}$. That is, without reading any input symbols, we are only in the state we began in. + + *Induction:* Suppose $w$ is of the form $w = x a$, where $a$ is the final symbol of $w$ and $x$ is the rest of $w$. Also suppose that $dh(q, x) = {p_1, ..., p_k}$. Let $ union.big^k_(i=1) delta(p_i, a) = {r_1, r_2, ..., r_m} $ + Then $dh(q, w) = {r_1, r_2, ..., r_m}$ +] + +== Language of NFA +NFA accepts string $w$ if it is possible to make any sequence of choices of next state, while reading characters of $w$, and go from start state to any accepting state. If $A = (Q, Sigma, delta, q_0, F)$ is an NFA, then $ L(A) = {w | dh(q_0, w) inter F != emptyset $ +That is, $L(A)$ is the set of strings $w$ in $Sigma^*$ such that $dh(q_0, w)$ contains at least 1 accepting state + +#example[ +#automaton(( + q0: (q0: "0, 1", q1: 0), + q1: (q2: 1), + q2: (), +)) +Prove formally that this NFA accepts language $L = {w | w "ends in 01" }$ +] +#proof[ +The following 3 statements characterisze the 3 states: ++ $dh(q_0, w)$ contains $q_0$ for every $w$ ++ $dh(q_0, w)$ contains $q_1$ if and only if $w$ ends in 0. ++ $dh(q_0, w)$ contains $q_2$ if and only if $w$ ends in 01. + +We prove by induction on $|w|$. + +*Basis: * If $|w| = 0, "then" w = es$. +- Statement (1) says that $dh(q_0, es)$ contains $q_0$, by defn of $dh$. +- Statement (2), we know that $es$ does not end in 0, and $dh(q_0, es)$ does not contain $q_1$ by defn of $dh$ +- Statement (3), same as statement 2. + +*Induction: * Assume $w = x a$, where $a$ is a symbol either in $0$ or $1$. We assume statements 1-3 hold for $x$, and we need to prove them for $w$, that is, we assume $|w| = n + 1, |x| = n$. + ++ $dh(q_0, x)$ contains $q_0$. Since there are transitions from 0/1 from $q_0$ to itself, it follows that $dh(q_0, w)$ also contains $q_0$, so statement 1 is proved for $w$ ++ (If) Assume $w$ ends in 0, i.e. $a = 0$. By statement (1) applied to $x$, we know that $q_0 in dh(q_0, x)$. Since there are transitions from $q_0$ to $q_1$ on input 0, we know that $q_1 in dh(q_0, w)$.\ (Only-if) Assume $q_1 in dh(q_0, w)$. Only way to get to $q_1$ is if $w = x 0$. ++ (If) Assume $w$ ends in 01. If $w = x a$, then $a = 1$ and $x$ ends in 0. By statement 2 applied to $x$, we know that $q_1 in dh(q_0, x)$. Since there is a transition from $q_1$ to $q_2$ on input 1, we conclude that $q_2 in dh(q_0, w)$ \ (Only-if) Suppose $q_2 in dh(q_0, w)$. Only way to get to $q_2$ is for $w$ to be of the form $x 1$, where $q_1 in dh(q_0, w)$. By (2) applied to $x$, we know that $x$ ends in 0. Thus, $w$ ends in $01$. +] + +== Equivalence of DFA and NFA +We prove this using subset construction. We start with NFA $N = (Q_N, Sigma, delta_N, Q_0, F_N)$. The goal is the description of a DFA $D = (Q_D, Sigma, delta_D, {q_0}, F_D)$ such that $L(D) = L(N)$. The input alphabets are the same, and the start of $D$ is the set containing only the start state of $N$. +- $Q_D$ is the set of subsets of $Q_N$, that is $Q_D$ is the power set of $Q_N$. If $Q_N$ has $n$ states, $Q_D$ has $2^n$ states. +- $F_D$ is the set of subsets $S$ of $Q_N$ such that $S inter F_N != emptyset$. $F_D$ is all sets of $N$'s states that include at least 1 accepting state of $N$. +- For each set $S subset.eq Q_N$, and for each input symbol $a$ in $Sigma$, $ delta_D (S, a) = union.big_(p in S) delta_N (p, a) $ + +#theorem[If $D = (Q_d, Sigma, delta_D, {q_0}, F_D)$ is the DFA constructed from NFA $N = (Q_N, Sigma, delta_N, q_0, F_N)$ by subset construction, then $L(D) = L(N)$.] + +#proof[ +#set math.equation(numbering: "(1)") +We prove by induction on $|w|$ that $ dh_D ({q_0}, w) = dh_N (q_0, w) $ +Notice that each of the $dh$ function returns a set of states from $Q_N$, but $dh_D$ interprets this set as one of the states of $Q_D$, while $dh_N$ interprets this set as a subset of $Q_N$. + +*Basis: *Let $|w| = 0, w = es$. By basis definition of $dh$ for DFA and NFA, both $dh_D ({q_0}, es)$ and $dh_N (q_0, es)$ are ${q_0}$ + +*Induction: * Let $w$ be of length $n+1$, assume statement for length $n$. $w = x a$, where $a$ is final symbol of $w$. By inductive hypothesis, $dh_D ({q_0}, x) = dh_N (q_0, x) = {p_1,..., p_k}$ + +@etf-nfa tells us that $ dh_N(q_0, w) = union.big^k_(i=1) delta_N (p_i, a) $ and subset construction tells us $ delta_D ({p_1, ..., p_k}, a) = union.big^k_(i=1) delta_N (p_i, a) $. We can use this to construct $ dh_D ({q_0}, w) = delta_D (dh_D ({q_0}, x), a) = delta_D ({p_1, ..., p_k}, a) = union.big^k_(i=1) delta_N (p_i, a) $ + +Thus, (2) and (4) demonstrate that $dh_D ({q_0}, w) = dh_N (q_0, w)$. When we observe that $D$ and $N$ both accept $w$ if and only if $dh_D ({q_0}, w)$ or $dh_N (q_0, w)$, respectively, contain a state $F_N$, we have a completed proof that $L(D) = L(N)$ +] + +#theorem[Language $L$ is accepted by some DFA if and only if $L$ is accepted by some NFA] +#proof[ +(If) The if part is subset construction and @subset-constr + +(Only if) Convert a DFA into an identical NFA. Let $D = (Q, Sigma, delta_D, q_0, F)$ be a DFA. Define $N = (Q, Sigma, delta_N, q_0, F)$ to be the equivalent NFA, where $delta_N$ is defined by "if $delta_D (q, a) = p$, then $delta_N (q, a) = {p}$ + +We can induct on $|w|$, that $ dh_N (q_0, w) = {dh_D (q_0, w)} $ + +*Basis: * $ (w = es)$ $ dh_N (q_0, es) = {q_0} = {dh_D (q_0, w)} $ + +*Inductive Step*: Let $w$ be of length $n+1$, $w = x a$, where $a$ is final symbol of $w$. $ dh_N (q_0, x a) &= union.big_(p in dh_N (q_0, x)) delta_N (p, a) && ("defn of" dh_N) \ +&= union.big_(p in dh_d ({q_0}, x)) {delta_D (p, a)} && ("I.H")\ +&= {dh_D (q_0, x a)} &&("def of "dh_D) +$ +] + + + += Reference - Alphabet - Finite Non empty set of symbols, denoted by $Sigma$ - Powers of Alphabet - $Sigma^2 = {00, 01, 10, 11}$