4 Commits

Author SHA1 Message Date
dde65a8a63 Snakes! 2025-10-06 18:37:21 -07:00
f88160b5f5 Quantum edits 2025-10-06 18:37:18 -07:00
e2947ea54b lib edits 2025-10-06 18:37:16 -07:00
30713a7916 Symmetric edits 2025-09-30 18:54:04 -07:00
23 changed files with 131872 additions and 123 deletions

View File

@ -5,7 +5,7 @@
#import "misc.typ": *
#import "object.typ": definition, example, generic, problem, remark, theorem
#import "solution.typ": (
if_no_solutions, if_solutions, if_solutions_else, instructornote,
if_no_solutions, if_solutions, if_solutions_else, instructornote, review_box,
sample_solution, solution,
)
@ -30,12 +30,17 @@
by: none,
subtitle: none,
short_warning: false,
page_numbers: true,
) = {
set page(
margin: 20mm,
width: 8.5in,
height: 11in,
footer: align(center, context counter(page).display()),
footer: {
if page_numbers {
align(center, context counter(page).display())
}
},
footer-descent: 5mm,
)
@ -51,6 +56,8 @@
justify: true,
)
set math.mat(delim: "[")
//
// List style
set list(

View File

@ -106,6 +106,29 @@
))
}
#let review_box(title, content) = {
align(center, stack(
block(
width: 100%,
breakable: false,
fill: oblue,
stroke: oblue + 2pt,
inset: 1.5mm,
align(left, text(fill: white, weight: "bold", title)),
),
block(
width: 100%,
height: auto,
breakable: false,
fill: oblue.lighten(80%).desaturate(10%),
stroke: oblue + 2pt,
inset: 3mm,
align(left, content),
),
))
}
#let instructornote(content) = {
if_solutions(align(center, stack(

View File

@ -27,7 +27,7 @@ We'll represent this probabilistic bit's \textit{state} as a vector:
$\left[\begin{smallmatrix}
p_0 \\ p_1
\end{smallmatrix}\right]$ \par
We do \textbf{not} assume this coin is fair, and thus $p_0$ might not equal $p_1$.
We do \textbf{not} assume this coin is fair---$p_0$ might not equal $p_1$.
\note{
This may seem a bit redundant: since $p_0 + p_1$, we can always calculate one probability given the other. \\
@ -45,15 +45,16 @@ The simplest probabilistic bit states are of course $[0]$ and $[1]$, defined as
\item $[0] = \left[\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\right]$
\item $[1] = \left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$
\end{itemize}
That is, $[0]$ represents a bit that we known to be \texttt{0}, \par
That is, $[0]$ represents a bit that we know to be \texttt{0}, \par
and $[1]$ represents a bit we know to be \texttt{1}.
\vfill
\pagebreak
\definition{}
$[0]$ and $[1]$ form a \textit{basis} for all possible probabilistic bit states: \par
Every other probabilistic bit can be written as a \textit{linear combination} of $[0]$ and $[1]$:
$[0]$ and $[1]$ form a \textit{basis} for all possible probabilistic bit states. This means that \par
every other probabilistic bit can be written as a \textit{linear combination} of $[0]$ and $[1]$:
\begin{equation*}
\begin{bmatrix} p_0 \\ p_1 \end{bmatrix}
@ -66,7 +67,6 @@ Every other probabilistic bit can be written as a \textit{linear combination} of
\vfill
\pagebreak
\problem{}
Every possible state of a probabilistic bit is a two-dimensional vector. \par
@ -118,6 +118,10 @@ Draw all possible states on the axis below.
%
% MARK: measure
%
\section{Measuring Probabilistic Bits}
@ -125,7 +129,7 @@ Draw all possible states on the axis below.
\definition{}
As we noted before, a probabilistic bit represents a coin we've tossed but haven't looked at. \par
We do not know whether the bit is \texttt{0} or \texttt{1}, but we do know the probability of both of these outcomes. \par
We do not know whether the bit is \texttt{0} or \texttt{1}, but we do know the probability of each outcome. \par
\vspace{2mm}
@ -135,7 +139,7 @@ knowledge of its state is updated to either $[0]$ or $[1]$, since we now certain
\vspace{2mm}
Since measurement changes what we know about a probabilistic bit, it changes the probabilistic bit's state.
When we measure a bit, it's state \textit{collapses} to either $[0]$ or $[1]$, and the original state of the
When we measure a bit, its state \textit{collapses} to either $[0]$ or $[1]$, and the original state of the
bit vanishes. We \textit{cannot} recover the state $[x_0, x_1]$ from a measured probabilistic bit.
@ -165,7 +169,10 @@ Say $[x] = [\nicefrac{2}{3}, \nicefrac{1}{3}]$ and $[y] = [\nicefrac{3}{4}, \nic
\item If we measure $y$ first and observe \texttt{1}, \par
what is the probability of getting each of \texttt{00}, \texttt{01}, \texttt{10}, and \texttt{11}?
\end{itemize}
\note[Note]{$[x]$ and $[y]$ are column vectors, but I've written them horizontally to save space.}
\note[Note]{
$[x]$ and $[y]$ are column vectors in the previous pages, and are still column vectors here. \par
I've written them horizontally to save space.
}
\vfill
@ -189,7 +196,9 @@ What is the probability that $x$ and $y$ produce different outcomes?
%
% MARK: tensor product
%
\section{Tensor Products}
@ -315,7 +324,7 @@ $?
\problem{}
What is the \textit{span} of the vectors we found in \ref{basistp}? \par
In other words, what is the set of vectors that can be written as linear combinations of the vectors above?
In other words, what is the set of all vectors that can be written as linear combinations of the vectors above?
\vfill
@ -387,7 +396,7 @@ Compute the following. Is the result what we'd expect?
\problem{}<fivequant>
Of course, writing $[0] \otimes [1]$ is a bit excessive. We'll shorten this notation to $[01]$. \par
Writing $[0] \otimes [1]$ is tedious. We'll shorten this notation to $[01]$. \par
\vspace{2mm}
@ -429,9 +438,9 @@ Write the three-bit states $[0]$ through $[7]$ as column vectors. \par
%
% MARK: ops
%
@ -443,25 +452,6 @@ Write the three-bit states $[0]$ through $[7]$ as column vectors. \par
Now that we can write probabilistic bits as vectors, we can represent operations on these bits
with linear transformations---in other words, as matrices.
\definition{}
Consider the NOT gate, which operates as follows: \par
\begin{itemize}
\item $\text{NOT}[0] = [1]$
\item $\text{NOT}[1] = [0]$
\end{itemize}
What should NOT do to a probabilistic bit $[x_0, x_1]$? \par
If we return to our coin analogy, we can think of the NOT operation as
flipping a coin we have already tossed, without looking at its state.
Thus,
\begin{equation*}
\text{NOT} \begin{bmatrix}
x_0 \\ x_1
\end{bmatrix} = \begin{bmatrix}
x_1 \\ x_0
\end{bmatrix}
\end{equation*}
\begin{hobox}{Review: Multiplying Vectors by Matrices}{black!10!white}{black!65!white}
\begin{equation*}
Av =
@ -482,6 +472,10 @@ Thus,
Note that each element of $Av$ is the dot product of a row in $A$ and a column in $v$.
\end{hobox}
\generic{Remark:}
Also, recall that every matrix is linear map, and that every linear map may be written as a matrix. \par
We often use the terms \textit{matrix}, \textit{transformation}, and \textit{linear map} interchangeably.
\problem{}
Compute the following product:
\begin{equation*}
@ -496,12 +490,23 @@ Compute the following product:
\vfill
\generic{Remark:}
Also, recall that every matrix is linear map, and that every linear map may be written as a matrix. \par
We often use the terms \textit{matrix}, \textit{transformation}, and \textit{linear map} interchangeably.
\pagebreak
\definition{}
Consider the NOT gate, which operates as follows: \par
\begin{itemize}
\item $\text{NOT}[0] = [1]$
\item $\text{NOT}[1] = [0]$
\end{itemize}
What should NOT do to a probabilistic bit $[x_0, x_1]$? \par
If we return to our coin analogy, we can think of the NOT operation as
flipping a coin we have already tossed, without looking at its state.
Thus,
\begin{equation*}
\text{NOT} \begin{bmatrix}
x_0 \\ x_1
\end{bmatrix} = \begin{bmatrix}
x_1 \\ x_0
\end{bmatrix}
\end{equation*}
\problem{}
Find the matrix that represents the NOT operation on one probabilistic bit.
@ -516,6 +521,8 @@ Find the matrix that represents the NOT operation on one probabilistic bit.
\vfill
\pagebreak
\problem{Extension by linearity}
Say we have an arbitrary operation $M$. \par

View File

@ -4,7 +4,8 @@ Quantum bits (or \textit{qubits}) are very similar to probabilistic bits, but ha
probabilities are replaced with \textit{amplitudes}.
\vspace{2mm}
Of course, a qubit can take the values \texttt{0} and \texttt{1}, which are denoted $\ket{0}$ and $\ket{1}$. \par
As before a qubit can take the extremal values \texttt{0} and \texttt{1}, which are denoted $\ket{0}$ and $\ket{1}$. \par
Like probabilistic bits, a quantum bit is written as a linear combination of $\ket{0}$ and $\ket{1}$:
\begin{equation*}
\ket{\psi} = \psi_0\ket{0} + \psi_1\ket{1}
@ -19,8 +20,8 @@ $\ket{0}$ is pronounced \say{ket zero,} and $\ket{1}$ is pronounced \say{ket one
\vspace{2mm}
This is very similar to the \say{box} $[~]$ notation we used for probabilistic bits. \par
As before, we will write $\ket{0} = \left[\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\right]$
and $\ket{1} = \left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$.
When we work with qubits, we will write $\left[\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\right]$ as $\ket{0}$
and $\left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$ as $\ket{1}$.
\vspace{8mm}
@ -28,7 +29,7 @@ and $\ket{1} = \left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$.
Recall that probabilistic bits are subject to the restriction that $p_0 + p_1 = 1$. \par
Quantum bits have a similar condition: $\psi_0^2 + \psi_1^2 = 1$. \par
Note that this implies that $\psi_0$ and $\psi_1$ are both in $[-1, 1]$. \par
Quantum amplitudes may be negative, but probabilistic bit probabilities cannot.
Quantum amplitudes may be negative!
\vspace{2mm}
@ -89,8 +90,8 @@ Write $\ket{\psi}$ as a linear combination of $\ket{0}$ and $\ket{1}$.
\definition{Measurement I}
Just like a probabilistic bit, we must observed $\ket{0}$ or $\ket{1}$ when we measure a qubit. \par
If we were to measure $\ket{\psi} = \psi_0\ket{0} + \psi_1\ket{1}$, we'd observe either $\ket{0}$ or $\ket{1}$, \par
Just like a probabilistic bit, we must observe $\ket{0}$ or $\ket{1}$ when we measure a qubit. \par
If we measure $\ket{\psi} = \psi_0\ket{0} + \psi_1\ket{1}$, we will see either $\ket{0}$ or $\ket{1}$,
with the following probabilities:
\begin{itemize}[itemsep = 2mm, topsep = 2mm]
\item $\mathcal{P}(\ket{1}) = \psi_1^2$
@ -117,7 +118,7 @@ leaving no trace of the previous superposition. \par
\problem{}
\begin{itemize}
\item What is the probability we observe $\ket{0}$ when we measure $\ket{\psi}$? \par
\item What is the probability that we observe $\ket{0}$ when we measure $\ket{\psi}$? \par
\item What can we observe if we measure $\ket{\psi}$ a second time? \par
\item What are these probabilities for $\ket{\varphi}$?
\end{itemize}
@ -235,6 +236,10 @@ Consider the following qubit states:
\pagebreak
%
% MARK: ops
%
\section{Operations on One Qubit}
We may apply transformations to qubits just as we apply transformations to probabilistic bits.
@ -277,7 +282,7 @@ Find the matrix $X$.
\vfill
\problem{}
What is $X\ket{+}$ and $X\ket{-}$? \par
What are $X\ket{+}$ and $X\ket{-}$? \par
\hint{Remember that all matrices are linear maps. What does this mean?}
\begin{solution}
@ -331,11 +336,21 @@ As we noted earlier, any rotation about the center is a valid quantum gate. \par
Let's derive all transformations of this form.
\begin{itemize}[itemsep = 1mm]
\item Let $U_\phi$ be the matrix that represents a counterclockwise rotation of $\phi$ degrees. \par
What is $U\ket{0}$ and $U\ket{1}$?
What are $U\ket{0}$ and $U\ket{1}$?
\item Find the matrix $U_\phi$ for an arbitrary $\phi$.
\end{itemize}
\begin{solution}
\begin{equation*}
\begin{bmatrix}
cos(\theta) & -sin(\theta) \\
sin(\theta) & cos(\theta)
\end{bmatrix}
\end{equation*}
\end{solution}
\vfill
@ -343,5 +358,10 @@ Let's derive all transformations of this form.
Say we have a qubit that is either $\ket{+}$ or $\ket{-}$. We do not know which of the two states it is in. \par
Using one operation and one measurement, how can we find out, for certain, which qubit we received? \par
\begin{solution}
Use a 45 degree ccw rotation.
\end{solution}
\vfill
\pagebreak

View File

@ -60,7 +60,7 @@ $\ket{\psi} = \frac{1}{\sqrt{2}} \ket{00} + \frac{1}{2} \ket{01} + \frac{\sqrt{3
Again, consider the two-qubit state
$\ket{\psi} = \frac{1}{\sqrt{2}} \ket{00} + \frac{1}{2} \ket{01} + \frac{\sqrt{3}}{4} \ket{10} + \frac{1}{4} \ket{11}$ \par
If we measure the first qubit of $\ket{\psi}$ and get $\ket{0}$, what is the resulting state of $\ket{\psi}$? \par
What would the state be if we'd measured $\ket{1}$ instead?
What would that state be if we'd measured $\ket{1}$ instead?
\vfill
@ -85,7 +85,7 @@ Say we measure the first two qubits and get $\ket{00}$. What is the resulting st
\definition{Entanglement}
Some product states can be factored into a tensor product of individual qubit states. For example,
Some compound states can be factored into a tensor product of individual qubit states. For example,
\begin{equation*}
\frac{1}{2} \bigl(\ket{00} + \ket{01} + \ket{10} + \ket{11}\bigr)
= \frac{1}{\sqrt{2}}\bigl( \ket{0} + \ket{1} \bigr) \otimes

View File

@ -1,40 +1,42 @@
\section{Logic Gates}
\definition{Matrices}
Throughout this handout, we've been using matrices. Again, recall that every linear map may be written as a matrix,
and that every matrix represents a linear map. For example, if $f: \mathbb{R}^2 \to \mathbb{R}^2$ is a linear
map, we can write it as follows:
\begin{equation*}
f\left(
\ket{x}
\right)
=
\begin{bmatrix}
m_1 & m_2 \\
m_3 & m_4
\end{bmatrix}
\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}
=
\left[
\begin{matrix}
m_1x_1 + m_2x_2 \\
m_3x_1 + m_4x_2
\end{matrix}
\right]
\end{equation*}
%\definition{Matrices}
%cThroughout this handout, we've been using matrices. Again, recall that every linear map may be written as a matrix,
%and that every matrix represents a linear map. For example, if $f: \mathbb{R}^2 \to \mathbb{R}^2$ is a linear
%map, we can write it as follows:
%\begin{equation*}
% f\left(
% \ket{x}
% \right)
% =
% \begin{bmatrix}
% m_1 & m_2 \\
% m_3 & m_4
% \end{bmatrix}
% \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}
% =
% \left[
% \begin{matrix}
% m_1x_1 + m_2x_2 \\
% m_3x_1 + m_4x_2
% \end{matrix}
% \right]
%\end{equation*}
%
%A classical logic gate is a linear map from $\{0,1\}^m$ to $\{0,1\}^n$
\definition{}
Before we discussing multi-qubit quantum gates, we need to review to classical logic. \par
Of course, a classical logic gate is a linear map from $\{0,1\}^m$ to $\{0,1\}^n$
Before we discussing multi-qubit quantum gates, we need to review classical logic. \par
In this section, let's return to probabilistic bits.
\problem{}<notgatex>
The \texttt{not} gate is a map defined by the following table: \par
\begin{itemize}
\item $X\ket{0} = \ket{1}$
\item $X\ket{1} = \ket{0}$
\item $X[0] = [1]$
\item $X[1] = [0]$
\end{itemize}
Write the \texttt{not} gate as a matrix that operates on single-bit vector states. \par
@ -93,11 +95,11 @@ Find a matrix $A$ so that $A\ket{\texttt{ab}}$ works as expected. \par
\vspace{2mm}
For example, if we look at the first column of $A$ (which is $[1, 0]$), we see: \par
$A\ket{00} = A[1,0,0,0] = [1,0] = \ket{0}$
$A[00] = A[1,0,0,0] = [1,0] = [0]$
\vspace{2mm}
Also with the last column (which is $[0,1]$): \par
$A\ket{00} = A[0,0,0,1] = [0,1] = \ket{1}$
$A[00] = A[0,0,0,1] = [0,1] = [1]$
\end{instructornote}
\end{solution}
@ -244,10 +246,10 @@ Say we want to invert the first bit of a two-bit state. That is, we want a trans
In other words, we want a matrix $T$ satisfying the following equalities:
\begin{itemize}
\item $T\ket{00} = \ket{10}$
\item $T\ket{01} = \ket{11}$
\item $T\ket{10} = \ket{00}$
\item $T\ket{11} = \ket{01}$
\item $T[00] = [10]$
\item $T[01] = [11]$
\item $T[10] = [00]$
\item $T[11] = [01]$
\end{itemize}
@ -256,8 +258,8 @@ In other words, we want a matrix $T$ satisfying the following equalities:
Find the matrix that corresponds to the above transformation. \par
\hint{
Remember that
$\ket{0} = \left[\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\right]$ and
$\ket{1} = \left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$ \\
$[0] = \left[\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\right]$ and
$[1] = \left[\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\right]$ \\
Also, we found earlier that $X = \left[\begin{smallmatrix} 0 && 1 \\ 1 && 0 \end{smallmatrix}\right]$,
and of course $I = \left[\begin{smallmatrix} 1 && 0 \\ 0 && 1 \end{smallmatrix}\right]$.
}
@ -279,25 +281,26 @@ Find the matrix that corresponds to the above transformation. \par
We could draw the above transformation as a combination $X$ and $I$ (identity) gate:
\begin{center}
\begin{tikzpicture}[scale=0.8]
\node[qubit] (a) at (0, 0) {$\ket{0}$};
\node[qubit] (b) at (0, -1) {$\ket{0}$};
\node[qubit] (a) at (0, 0) {$[0]$};
\node[qubit] (b) at (0, -1) {$[0]$};
\draw[wire] (a) -- ([shift={(3, 0)}] a.center) node[qubit] {$\ket{1}$};
\draw[wire] (b) -- ([shift={(3, 0)}] b.center) node[qubit] {$\ket{0}$};
\draw[wire] (a) -- ([shift={(3, 0)}] a.center) node[qubit] {$[1]$};
\draw[wire] (b) -- ([shift={(3, 0)}] b.center) node[qubit] {$[0]$};
\qubox{a}{1}{a}{2}{$X$}
\qubox{b}{1}{b}{2}{$I$}
\end{tikzpicture}
\end{center}
We can even omit the $I$ gate, since we now know that transformations affect the whole state: \par
We can even omit the $I$ gate. We know that transformations affect the whole state,
and can assume the empty space uncer $X$ implies $I$. \par
\begin{center}
\begin{tikzpicture}[scale=0.8]
\node[qubit] (a) at (0, 0) {$\ket{0}$};
\node[qubit] (b) at (0, -1) {$\ket{0}$};
\node[qubit] (a) at (0, 0) {$[0]$};
\node[qubit] (b) at (0, -1) {$[0]$};
\draw[wire] (a) -- ([shift={(3, 0)}] a.center) node[qubit] {$\ket{1}$};
\draw[wire] (b) -- ([shift={(3, 0)}] b.center) node[qubit] {$\ket{0}$};
\draw[wire] (a) -- ([shift={(3, 0)}] a.center) node[qubit] {$[1]$};
\draw[wire] (b) -- ([shift={(3, 0)}] b.center) node[qubit] {$[0]$};
\qubox{a}{1}{a}{2}{$X$}
\end{tikzpicture}

View File

@ -1,7 +1,7 @@
\section{HXH}
Let's return to the quantum circuit diagrams we discussed a few pages ago. \par
Keep in mind that we're working with quantum gates and proper half-qubits---not classical bits, as we were before.
Keep in mind that we're working with quantum gates and proper qubits---not classical bits, as we were before.
\definition{Controlled Inputs}
A \textit{control input} or \textit{inverted control input} may be attached to any gate. \par
@ -289,7 +289,7 @@ $\ket{-} = \frac{1}{\sqrt{2}}\Bigl(\ket{0} - \ket{1}\Bigr)$
\pagebreak
\generic{Remark:}
Now, consider the following circuit:
Consider the following circuit:
\begin{center}
\begin{tikzpicture}[scale=0.8]
@ -386,21 +386,21 @@ but the state $\ket{cd}$ on the right is $\ket{11} = [0,0,0,1]$. \par
\vspace{4mm}
How does this make sense? \par
Remember that a two-bit quantum state is \textit{not} equivalent to a pair of one-qubit quantum states.
We must treat a multi-qubit state as a single unit.
Remember that a two-bit quantum state is \textit{not} equivalent to a pair of disjoint one-qubit quantum states.
We cannot treat a multi-qubit state as a combination of $n$ independent bits.
Recall that a two-bit state $\ket{ab}$ comes with four probabilities:
$\mathcal{P}(\texttt{00})$, $\mathcal{P}(\texttt{01})$, $\mathcal{P}(\texttt{10})$, and $\mathcal{P}(\texttt{11})$.
\vspace{2mm}
A two-bit state $\ket{ab}$ comes with four probabilities:
$\mathcal{P}(\texttt{00})$, $\mathcal{P}(\texttt{01})$, $\mathcal{P}(\texttt{10})$, and $\mathcal{P}(\texttt{11})$. \par
If we change the probabilities of only $\ket{a}$, \textit{all four of these change!}
\vfill
Because of this fact, \say{controlled gates} may not work as you expect. They may seem
to \say{read} their controlling qubit without affecting its state, but remember---a
controlled gate still affects the \textit{entire} state. As we noted before, it is
not possible to apply a transformation to one bit of a quantum state.
Because of this fact, \say{controlled gates} behave in a somewhat counterintuitive way.
They do not simply \say{read} their controlling qubit without affecting its state---
they mutate the entire state they are applied to, and may change all its bits!
\begin{center}
\begin{tikzpicture}[scale=1]

View File

@ -12,7 +12,7 @@ Consider the following entangled two-qubit states, called the \textit{bell state
The probabilistic bits we get when measuring any of the above may be called \textit{anticorrelated bits}. \par
If we measure the first bit of any of these states and observe $1$, what is the resulting compound state? \par
What if we observe $0$ instead? \par
Do you see why we can call these bits anticorrelated?
Do you see why we call these bits \say{anticorrelated}?
\vfill

View File

@ -20,7 +20,7 @@
= Bonus problems
#problem()
Show that $x in ZZ^+$ has a multiplicative inverse mod $n$ iff $gcd(x, n) = 1$
Show that $x in ZZ^+$ has a multiplicative inverse mod $n$ if and only if $gcd(x, n) = 1$
#v(1fr)

View File

@ -45,7 +45,7 @@ How many permutations of $n$ objects are there?
#v(1fr)
#problem()
What map corresponds to the permutation that produces the array `312` from the array `123`?
What map corresponds to the permutation that produces the array `231` from the array `123`?
#v(1fr)

View File

@ -100,7 +100,7 @@ How about $[321][213][231]$? \
Rewrite these compositions as one permutation in square brackets.
#solution([
- $[1324][4321]$ is $[4321]$
- $[1324][4321]$ is $[4231]$
- $[321][213][231]$ is $[123]$
])
@ -501,7 +501,7 @@ List all other ways to write this cycle. \
#definition("Inverse")
The _inverse_ of a permitation $f$ is a permutation $g$ that "un-does" $f$. \
The _inverse_ of a permutation $f$ is a permutation $g$ that "un-does" $f$. \
This means that $g(f(x)) = x$ for all $x$.
#problem()
@ -550,7 +550,7 @@ Show that any cycle $(123...n)$ is equal to the product $(12)(23)...(n-1, n)$.
Write $(7126453)$ as a product of transpositions. \
#solution[
Move elements one at a time, and using the last position as temporary storage.
Move elements one at a time, using the last position as temporary storage.
We get $(71)(72)(76)(74)(75)(73)$.
Other solutions are possible. \
@ -589,7 +589,7 @@ Show that any permutation is a product of transpositions of the form $(1, k)$. \
#problem(label: "oneplustrans")
Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$.
Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$ whenever $a + 1 != b$.
#solution[
This is the same as @onetrans,

View File

@ -2,20 +2,16 @@
#import "@preview/cetz:0.4.2"
#import "../macros.typ": *
= Groups (review)
= Groups
#definition()
Before we continue, we must introduce a bit of notation:
- $S_n$ is the set of permutations on $n$ objects.
- $ZZ_n$ is the set of integers mod $n$.
- $ZZ_n^times$ is the set of integers mod $n$ with multiplicative inverses. \
In other words, it is the set of integers smaller than $n$ and coprime to $n$.#footnote[We proved this in another handout, but you may take it as fact here.] \
For example, $ZZ_12^times = {1, 5, 7, 11}$.
#problem()
What are the elements of $S_3$? #hint[Use cycle notation] \
How about $ZZ_17^times$?
How about $ZZ_8$?
#v(1fr)
@ -47,6 +43,16 @@ What is the group with the fewest number of elements?
Verifying that the trivial group is a group is trivial.
]
#definition()
$ZZ_n^times$ is the set of integers mod $n$ with multiplicative inverses. \
We can prove that this is the set of integers smaller than $n$ and coprime to $n$. \
For example, $ZZ_12^times = {1, 5, 7, 11}$.
#problem()
What are the elements of $ZZ^times_8$? \
How about $ZZ^times_23$? #hint[23 is prime.]
#v(1fr)
#pagebreak()
@ -66,8 +72,11 @@ Show that $S_n$ is a group under composition.
#problem()
Let $(G, *)$ be a group with finitely many elements, and let $a in G$. \
Show that there is an $n$ in $in ZZ^+$ so that $a^n = e$ \
#hint[$a^n = a * a * ... * a$ repeated $n$ times.]
Show that there is an $n$ in $in ZZ$ so that $a^n = e$ \
#hint[
$a^n = a * a * ... * a$ repeated $n$ times. \
$a^(-n) = a^(-1) * a^(-1) * ... * a^(-1)$, where $a^(-1)$ is the inverse of $a$. \
]
#v(2mm)
@ -111,7 +120,7 @@ Then, find all generators of $(ZZ_5, +)$
How many groups have only one generator?
#solution[
Only one: the trivial group. The inverse of a generator is also a generator!
Two: the trivial group and $(ZZ_2, +)$.
]
#v(1fr)

81
src/Warm-Ups/Snakes/0.svg Normal file
View File

@ -0,0 +1,81 @@
<svg class="typst-doc" viewBox="0 0 8.236633858267716 14.150551181102362" width="8.236633858267716pt" height="14.150551181102362pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 2.2237677165354333)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000007867722 9.669 L 0 0 Z "/>
</g>
<g transform="translate(-0.00000003149606268881308 2.2237676220472435)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(4.282303149606299 8.46992125984252)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(4.282303007874017 8.46992125984252)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(4.282303149606299 0)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(4.282303007874017 0)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<defs id="glyph">
<symbol id="gB0C69879DCB2DFE01E1A8092C6399B95" overflow="visible">
<path d="M 1.54 0.253 C 1.54 -0.594 1.375 -1.892 1.067 -1.892 C 0.88 -1.892 0.726 -1.551 0.429 -1.551 C 0.22 -1.551 0 -1.738 0 -1.958 C 0 -2.233 0.242 -2.431 0.594 -2.431 C 1.6719999 -2.431 2.376 -1.43 2.376 1.925 L 2.376 3.234 C 2.376 3.927 2.332 4.719 2.332 5.269 C 2.332 6.732 2.552 7.139 2.783 7.139 C 3.047 7.139 3.069 6.776 3.421 6.776 C 3.685 6.776 3.905 6.963 3.905 7.205 C 3.905 7.48 3.641 7.678 3.322 7.678 C 2.156 7.678 1.518 6.446 1.518 3.74 L 1.518 2.299 C 1.518 1.419 1.54 1.133 1.54 0.253 Z "/>
</symbol>
<symbol id="gDCE911778D5C1849302153FEF2645F85" overflow="visible">
<path d="M 1.9388977 -0.08503937 C 2.593701 -0.08503937 3.5886614 0.57826775 3.5886614 2.576693 C 3.5886614 3.4185827 3.384567 4.1414175 3.0103939 4.634646 C 2.7892914 4.9322834 2.432126 5.187402 1.9729134 5.187402 C 1.1310236 5.187402 0.33165354 4.183937 0.33165354 2.5001576 C 0.33165354 1.5902363 0.61228347 0.73984253 1.08 0.272126 C 1.3181102 0.03401575 1.6072441 -0.08503937 1.9388977 -0.08503937 Z M 1.9729134 4.889764 C 2.1174803 4.889764 2.2535434 4.8387403 2.3555906 4.745197 C 2.6192126 4.5240946 2.848819 3.8777955 2.848819 2.7382677 C 2.848819 1.9559056 2.823307 1.4201576 2.704252 0.9864567 C 2.5171654 0.28913388 2.1004725 0.21259843 1.9474016 0.21259843 C 1.1565355 0.21259843 1.0714961 1.6667717 1.0714961 2.4066143 C 1.0714961 4.498583 1.5902363 4.889764 1.9729134 4.889764 Z "/>
</symbol>
<symbol id="g642BCE8B7105B32AF084522D60B4E652" overflow="visible">
<path d="M 2.4491339 1.0374804 L 2.4491339 3.9883466 C 2.4491339 4.498583 2.4576378 5.017323 2.4746456 5.127874 C 2.4746456 5.170394 2.4576378 5.170394 2.4236221 5.170394 C 1.9559056 4.88126 1.5051969 4.6686616 0.7568504 4.32 C 0.7738583 4.2264566 0.807874 4.1414175 0.8844095 4.0903935 C 1.2755905 4.2519684 1.4626772 4.3029923 1.624252 4.3029923 C 1.768819 4.3029923 1.7943307 4.098898 1.7943307 3.809764 L 1.7943307 1.0374804 C 1.7943307 0.33165354 1.5647244 0.28913388 0.96944886 0.26362205 C 0.9184252 0.21259843 0.9184252 0.03401575 0.96944886 -0.017007874 C 1.3861418 -0.008503937 1.6922835 0 2.1514962 0 C 2.559685 0 2.7637796 -0.008503937 3.1889765 -0.017007874 C 3.24 0.03401575 3.24 0.21259843 3.1889765 0.26362205 C 2.593701 0.28913388 2.4491339 0.33165354 2.4491339 1.0374804 Z "/>
</symbol>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

161
src/Warm-Ups/Snakes/1.svg Normal file
View File

@ -0,0 +1,161 @@
<svg class="typst-doc" viewBox="0 0 16.740570866141734 31.1584251968504" width="16.740570866141734pt" height="31.1584251968504pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 10.72770472440945)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000007867722 9.669 L 0 0 Z "/>
</g>
<g transform="translate(-0.00000003149606268881308 10.72770462992126)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(8.503937007874017 19.231641732283467)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0 9.669 L 0 0 Z "/>
</g>
<g transform="translate(8.50393697637795 19.231641637795278)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 25.477795275590555)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 25.47779527559056)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 17.007874015748037)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 17.007874015748033)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(8.503937007874017 2.2237677165354355)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0 9.669 L 0 0 Z "/>
</g>
<g transform="translate(8.50393697637795 2.2237676220472453)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 8.469921259842522)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 8.46992125984252)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 0)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 0.0000000000000004475859752819529)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<defs id="glyph">
<symbol id="gB0C69879DCB2DFE01E1A8092C6399B95" overflow="visible">
<path d="M 1.54 0.253 C 1.54 -0.594 1.375 -1.892 1.067 -1.892 C 0.88 -1.892 0.726 -1.551 0.429 -1.551 C 0.22 -1.551 0 -1.738 0 -1.958 C 0 -2.233 0.242 -2.431 0.594 -2.431 C 1.6719999 -2.431 2.376 -1.43 2.376 1.925 L 2.376 3.234 C 2.376 3.927 2.332 4.719 2.332 5.269 C 2.332 6.732 2.552 7.139 2.783 7.139 C 3.047 7.139 3.069 6.776 3.421 6.776 C 3.685 6.776 3.905 6.963 3.905 7.205 C 3.905 7.48 3.641 7.678 3.322 7.678 C 2.156 7.678 1.518 6.446 1.518 3.74 L 1.518 2.299 C 1.518 1.419 1.54 1.133 1.54 0.253 Z "/>
</symbol>
<symbol id="gDCE911778D5C1849302153FEF2645F85" overflow="visible">
<path d="M 1.9388977 -0.08503937 C 2.593701 -0.08503937 3.5886614 0.57826775 3.5886614 2.576693 C 3.5886614 3.4185827 3.384567 4.1414175 3.0103939 4.634646 C 2.7892914 4.9322834 2.432126 5.187402 1.9729134 5.187402 C 1.1310236 5.187402 0.33165354 4.183937 0.33165354 2.5001576 C 0.33165354 1.5902363 0.61228347 0.73984253 1.08 0.272126 C 1.3181102 0.03401575 1.6072441 -0.08503937 1.9388977 -0.08503937 Z M 1.9729134 4.889764 C 2.1174803 4.889764 2.2535434 4.8387403 2.3555906 4.745197 C 2.6192126 4.5240946 2.848819 3.8777955 2.848819 2.7382677 C 2.848819 1.9559056 2.823307 1.4201576 2.704252 0.9864567 C 2.5171654 0.28913388 2.1004725 0.21259843 1.9474016 0.21259843 C 1.1565355 0.21259843 1.0714961 1.6667717 1.0714961 2.4066143 C 1.0714961 4.498583 1.5902363 4.889764 1.9729134 4.889764 Z "/>
</symbol>
<symbol id="g642BCE8B7105B32AF084522D60B4E652" overflow="visible">
<path d="M 2.4491339 1.0374804 L 2.4491339 3.9883466 C 2.4491339 4.498583 2.4576378 5.017323 2.4746456 5.127874 C 2.4746456 5.170394 2.4576378 5.170394 2.4236221 5.170394 C 1.9559056 4.88126 1.5051969 4.6686616 0.7568504 4.32 C 0.7738583 4.2264566 0.807874 4.1414175 0.8844095 4.0903935 C 1.2755905 4.2519684 1.4626772 4.3029923 1.624252 4.3029923 C 1.768819 4.3029923 1.7943307 4.098898 1.7943307 3.809764 L 1.7943307 1.0374804 C 1.7943307 0.33165354 1.5647244 0.28913388 0.96944886 0.26362205 C 0.9184252 0.21259843 0.9184252 0.03401575 0.96944886 -0.017007874 C 1.3861418 -0.008503937 1.6922835 0 2.1514962 0 C 2.559685 0 2.7637796 -0.008503937 3.1889765 -0.017007874 C 3.24 0.03401575 3.24 0.21259843 3.1889765 0.26362205 C 2.593701 0.28913388 2.4491339 0.33165354 2.4491339 1.0374804 Z "/>
</symbol>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

401
src/Warm-Ups/Snakes/2.svg Normal file
View File

@ -0,0 +1,401 @@
<svg class="typst-doc" viewBox="0 0 33.74844488188977 65.17417322834645" width="33.74844488188977pt" height="65.17417322834645pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 27.73557874015748)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000007867722 9.669 L 0 0 Z "/>
</g>
<g transform="translate(-0.00000003149606268881308 27.735578645669285)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(8.503937007874017 36.239515748031494)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0 9.669 L 0 0 Z "/>
</g>
<g transform="translate(8.50393697637795 36.23951565354331)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(17.007874015748033 44.743452755905516)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(17.007873984251972 44.74345266141732)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(25.511811023622048 53.24738976377953)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(25.511810992125987 53.24738966929133)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 59.493543307086625)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 59.49354330708661)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 51.023622047244096)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 51.023622047244096)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(25.511811023622048 36.239515748031494)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(25.511810992125987 36.23951565354331)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 42.48566929133859)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 42.485669291338574)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 34.01574803149607)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 34.01574803149607)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 34.01574803149607)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 34.01574803149607)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(8.503937007874017 19.231641732283467)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0 9.669 L 0 0 Z "/>
</g>
<g transform="translate(8.50393697637795 19.231641637795278)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(12.786240157480314 25.477795275590555)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(12.786240015748032 25.477795275590555)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(17.007874015748033 10.727704724409453)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(17.007873984251972 10.72770462992126)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(25.511811023622048 19.231641732283467)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(25.511810992125987 19.231641637795278)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 25.477795275590555)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 25.477795275590555)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 17.007874015748033)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 17.007874015748033)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(25.511811023622048 2.2237677165354355)">
<path class="typst-shape" fill="none" d="M 0 0 L 4.015 0 L 4.015 9.669 L 0.0000000000000031470889 9.669 L 0 0 Z "/>
</g>
<g transform="translate(25.511810992125987 2.2237676220472435)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 7.238)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gB0C69879DCB2DFE01E1A8092C6399B95" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 8.469921259842522)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6806297 L 0 5.6806297 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 8.46992125984252)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gDCE911778D5C1849302153FEF2645F85" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(29.79411417322835 0)">
<path class="typst-shape" fill="none" d="M 0 0 L 3.9543307 0 L 3.9543307 5.6125984 L 0 5.6125984 L 0 0 Z "/>
</g>
<g transform="translate(29.794114031496065 -0.0000000000000008951719505639057)">
<g class="typst-group">
<g>
<g transform="translate(0 0)">
<g class="typst-group">
<g>
<g transform="translate(0 5.595590551181102)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g642BCE8B7105B32AF084522D60B4E652" x="0" y="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<defs id="glyph">
<symbol id="gB0C69879DCB2DFE01E1A8092C6399B95" overflow="visible">
<path d="M 1.54 0.253 C 1.54 -0.594 1.375 -1.892 1.067 -1.892 C 0.88 -1.892 0.726 -1.551 0.429 -1.551 C 0.22 -1.551 0 -1.738 0 -1.958 C 0 -2.233 0.242 -2.431 0.594 -2.431 C 1.6719999 -2.431 2.376 -1.43 2.376 1.925 L 2.376 3.234 C 2.376 3.927 2.332 4.719 2.332 5.269 C 2.332 6.732 2.552 7.139 2.783 7.139 C 3.047 7.139 3.069 6.776 3.421 6.776 C 3.685 6.776 3.905 6.963 3.905 7.205 C 3.905 7.48 3.641 7.678 3.322 7.678 C 2.156 7.678 1.518 6.446 1.518 3.74 L 1.518 2.299 C 1.518 1.419 1.54 1.133 1.54 0.253 Z "/>
</symbol>
<symbol id="gDCE911778D5C1849302153FEF2645F85" overflow="visible">
<path d="M 1.9388977 -0.08503937 C 2.593701 -0.08503937 3.5886614 0.57826775 3.5886614 2.576693 C 3.5886614 3.4185827 3.384567 4.1414175 3.0103939 4.634646 C 2.7892914 4.9322834 2.432126 5.187402 1.9729134 5.187402 C 1.1310236 5.187402 0.33165354 4.183937 0.33165354 2.5001576 C 0.33165354 1.5902363 0.61228347 0.73984253 1.08 0.272126 C 1.3181102 0.03401575 1.6072441 -0.08503937 1.9388977 -0.08503937 Z M 1.9729134 4.889764 C 2.1174803 4.889764 2.2535434 4.8387403 2.3555906 4.745197 C 2.6192126 4.5240946 2.848819 3.8777955 2.848819 2.7382677 C 2.848819 1.9559056 2.823307 1.4201576 2.704252 0.9864567 C 2.5171654 0.28913388 2.1004725 0.21259843 1.9474016 0.21259843 C 1.1565355 0.21259843 1.0714961 1.6667717 1.0714961 2.4066143 C 1.0714961 4.498583 1.5902363 4.889764 1.9729134 4.889764 Z "/>
</symbol>
<symbol id="g642BCE8B7105B32AF084522D60B4E652" overflow="visible">
<path d="M 2.4491339 1.0374804 L 2.4491339 3.9883466 C 2.4491339 4.498583 2.4576378 5.017323 2.4746456 5.127874 C 2.4746456 5.170394 2.4576378 5.170394 2.4236221 5.170394 C 1.9559056 4.88126 1.5051969 4.6686616 0.7568504 4.32 C 0.7738583 4.2264566 0.807874 4.1414175 0.8844095 4.0903935 C 1.2755905 4.2519684 1.4626772 4.3029923 1.624252 4.3029923 C 1.768819 4.3029923 1.7943307 4.098898 1.7943307 3.809764 L 1.7943307 1.0374804 C 1.7943307 0.33165354 1.5647244 0.28913388 0.96944886 0.26362205 C 0.9184252 0.21259843 0.9184252 0.03401575 0.96944886 -0.017007874 C 1.3861418 -0.008503937 1.6922835 0 2.1514962 0 C 2.559685 0 2.7637796 -0.008503937 3.1889765 -0.017007874 C 3.24 0.03401575 3.24 0.21259843 3.1889765 0.26362205 C 2.593701 0.28913388 2.4491339 0.33165354 2.4491339 1.0374804 Z "/>
</symbol>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

1121
src/Warm-Ups/Snakes/3.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 68 KiB

3281
src/Warm-Ups/Snakes/4.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 196 KiB

9761
src/Warm-Ups/Snakes/5.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 579 KiB

29201
src/Warm-Ups/Snakes/6.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 1.7 MiB

87521
src/Warm-Ups/Snakes/7.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 5.1 MiB

View File

@ -0,0 +1,89 @@
#import "@local/handout:0.1.0": *
#import "@preview/cetz:0.4.2"
#show: handout.with(
title: [Warm-Up: Snakes!],
by: "Mark",
page_numbers: false,
)
#box(place(box(width: 100%, height: 8in, align(horizon, image(
"7.svg",
width: 360mm,
)))))
#problem()
Evaluate this integral. \
All integrals are of the form $integral_a^b 1 #h(1mm) d x$.
#if_solutions(pagebreak())
#solution[
This integral is drawn recursively with the following code: \
#v(2mm)
#let snake(depth, x, y) = {
if depth == 0 {
math.attach(math.integral, br: x, tr: y)
} else {
let bot = snake(depth - 1, x, "1")
let top = snake(depth - 1, "0", y)
snake(depth - 1, bot, top)
}
}
```typst
#let snake(depth, x, y) = {
if depth == 0 {
$integral_#x ^#y$
} else {
let bot = snake(depth - 1, x, "1")
let top = snake(depth - 1, "0", y)
snake(depth - 1, bot, top)
}
}
```
#v(5mm)
For example:
$ snake\(0, x, y) = #snake(0, "x", "y") $
#v(2mm)
$ snake\(1, x, y) = #snake(1, "x", "y") $
#v(2mm)
$ snake\(2, x, y) = #snake(2, "x", "y") $
In other words, we want $f_7 (0, 1)$, where...
- $f_0(x, y) := integral_x^y$
- $f_(n+1)(x, y) := f_n [f_n (x, 1), f_n (0, y)]$
#v(5mm)
Expanding a few iterations, we find:
- $f_0(x, y) = integral_x^y = y-x$
- $f_1(x, y) = f_0 [f_0 (x, 1), f_0 (0, y)] = y+x-1$
- $f_2(x, y) = f_1 [f_1 (x, 1), f_1 (0, y)] = y+x-2$
#v(5mm)
We can use induction to show that this pattern continues. \
If $g_n = y+x+c$, then $g_(n+1) = y+x+(3c+1)$.
#v(5mm)
Finally, use this recusion to find that
$f_0, f_1, ..., f_7 = 1, 0, -1, -4, -13, -40, -121, -364$
One can also find an explicit formula for $g_n$:
$
f_(n+1) = g_n & = x + y + 3^n c + 3^0 + 3^1 + ... + 3^n \
& = x + y + 3^n c + sum_(i=0)^n 3^i \
& = x + y + 3^n c + (3^(n+1) + 1)/2
$
]

View File

@ -0,0 +1,6 @@
[metadata]
title = "Snakes!"
[publish]
handout = true
solutions = true

View File

@ -0,0 +1,57 @@
#import "@preview/cetz:0.4.2"
// Compile with:
// typst compile --package-path "../../../lib/typst/" svg.typ --format svg
// You'll need to recompile typst with a higher recursion limit.
#set page(
fill: none,
width: auto,
height: auto,
margin: 0mm,
);
#let cetz_snake(depth, b, t) = {
import cetz.draw: *
if depth == 0 {
content((0, 0), math.inline(math.integral))
group({
translate(x: 0.15, y: -0.15)
b
})
group({
translate(x: 0.15, y: 0.15)
t
})
} else {
let bot = group({
translate(x: 0.15, y: -0.15)
cetz_snake(depth - 1, b, content((0, 0), text("1", size: 3mm)))
})
let top = group({
translate(x: 0.15, y: 0.15)
cetz_snake(depth - 1, content((0, 0), text("0", size: 3mm)), t)
})
cetz_snake(depth - 1, bot, top)
}
}
#{
import cetz.draw: *
// any bigger than 7 overflows the stack.
// any bigger than 5 exceeds typst's recursion limit.
// You'll have to increase those limits and recompile to
// build this document.
let depth = 7
let b = content((0, 0), text("0", size: 3mm))
let t = content((0, 0), text("1", size: 3mm))
cetz.canvas(cetz_snake(depth, b, t))
};