Compare commits
6 Commits
typst-quan
...
d85fbe0318
| Author | SHA1 | Date | |
|---|---|---|---|
| d85fbe0318 | |||
| b25ab0d5e0 | |||
| 0b7acaf5ae | |||
| 69d835a2d2 | |||
| 81d6518553 | |||
| e5b0053465 |
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: "Download Typstyle"
|
||||
run: |
|
||||
wget -q "https://github.com/Enter-tainer/typstyle/releases/download/v0.12.14/typstyle-x86_64-unknown-linux-musl"
|
||||
wget -q "https://github.com/Enter-tainer/typstyle/releases/download/v0.13.17/typstyle-x86_64-unknown-linux-musl"
|
||||
chmod +x typstyle-x86_64-unknown-linux-musl
|
||||
|
||||
- name: Check typst formatting
|
||||
@@ -62,7 +62,7 @@ jobs:
|
||||
# more control anyway.
|
||||
- name: "Download Typst"
|
||||
run: |
|
||||
wget -q "https://github.com/typst/typst/releases/download/v0.12.0/typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
wget -q "https://github.com/typst/typst/releases/download/v0.13.1/typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
tar -xf "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
mv "typst-x86_64-unknown-linux-musl/typst" .
|
||||
rm "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
|
||||
@@ -3,13 +3,10 @@
|
||||
// Re-exports
|
||||
// All functions that maybe used by client code are listed here
|
||||
#import "misc.typ": *
|
||||
#import "object.typ": problem, definition, theorem, example, remark, generic
|
||||
#import "object.typ": definition, example, generic, problem, remark, theorem
|
||||
#import "solution.typ": (
|
||||
if_solutions,
|
||||
if_no_solutions,
|
||||
if_solutions_else,
|
||||
solution,
|
||||
instructornote,
|
||||
if_no_solutions, if_solutions, if_solutions_else, instructornote,
|
||||
sample_solution, solution,
|
||||
)
|
||||
|
||||
|
||||
@@ -38,10 +35,7 @@
|
||||
margin: 20mm,
|
||||
width: 8.5in,
|
||||
height: 11in,
|
||||
footer: align(
|
||||
center,
|
||||
context counter(page).display(),
|
||||
),
|
||||
footer: align(center, context counter(page).display()),
|
||||
footer-descent: 5mm,
|
||||
)
|
||||
|
||||
@@ -102,8 +96,8 @@
|
||||
|
||||
// Make handout title
|
||||
{
|
||||
import "header.typ": make_header, solution_warning, short_solution_warning
|
||||
import "solution.typ": solutions_state, reset_solutions
|
||||
import "header.typ": make_header, short_solution_warning, solution_warning
|
||||
import "solution.typ": reset_solutions, solutions_state
|
||||
|
||||
reset_solutions()
|
||||
|
||||
|
||||
@@ -29,11 +29,7 @@
|
||||
}
|
||||
|
||||
// Render the object
|
||||
block(
|
||||
above: 8mm,
|
||||
below: 2mm,
|
||||
text(weight: "bold", obj_content),
|
||||
)
|
||||
block(above: 8mm, below: 2mm, text(weight: "bold", obj_content))
|
||||
|
||||
// Generate labeled metadata for this object.
|
||||
//
|
||||
@@ -57,7 +53,7 @@
|
||||
if not (
|
||||
it.element != none
|
||||
and it.element.has("value")
|
||||
and type(it.element.value) == "dictionary"
|
||||
and type(it.element.value) == dictionary
|
||||
and it.element.value.keys().contains(magic_key)
|
||||
) {
|
||||
// This label is not attached to object metadata
|
||||
@@ -100,9 +96,5 @@
|
||||
#let remark = _mkobj("Remark")
|
||||
|
||||
#let generic(obj_content) = {
|
||||
block(
|
||||
above: 8mm,
|
||||
below: 2mm,
|
||||
text(weight: "bold", obj_content),
|
||||
)
|
||||
block(above: 8mm, below: 2mm, text(weight: "bold", obj_content))
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#import "misc.typ": ored, oblue
|
||||
#import "misc.typ": oblue, ored
|
||||
|
||||
|
||||
/// If false, hide instructor info.
|
||||
@@ -61,57 +61,71 @@
|
||||
}
|
||||
|
||||
#let solution(content) = {
|
||||
if_solutions(
|
||||
align(
|
||||
center,
|
||||
stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: ored,
|
||||
stroke: ored + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Solution:])),
|
||||
),
|
||||
|
||||
block(
|
||||
width: 100%,
|
||||
height: auto,
|
||||
breakable: false,
|
||||
fill: ored.lighten(80%).desaturate(10%),
|
||||
stroke: ored + 2pt,
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
),
|
||||
if_solutions(align(center, stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: ored,
|
||||
stroke: ored + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Solution:])),
|
||||
),
|
||||
)
|
||||
|
||||
block(
|
||||
width: 100%,
|
||||
height: auto,
|
||||
breakable: false,
|
||||
fill: ored.lighten(80%).desaturate(10%),
|
||||
stroke: ored + 2pt,
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
)))
|
||||
}
|
||||
|
||||
#let sample_solution(content) = {
|
||||
align(center, stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: oblue,
|
||||
stroke: oblue + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Sample Solution:])),
|
||||
),
|
||||
|
||||
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(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: oblue,
|
||||
stroke: oblue + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Instructor note:])),
|
||||
),
|
||||
|
||||
block(
|
||||
width: 100%,
|
||||
height: auto,
|
||||
breakable: false,
|
||||
fill: oblue.lighten(80%).desaturate(10%),
|
||||
stroke: oblue + 2pt,
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
),
|
||||
if_solutions(align(center, stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: oblue,
|
||||
stroke: oblue + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Instructor note:])),
|
||||
),
|
||||
)
|
||||
|
||||
block(
|
||||
width: 100%,
|
||||
height: auto,
|
||||
breakable: false,
|
||||
fill: oblue.lighten(80%).desaturate(10%),
|
||||
stroke: oblue + 2pt,
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
)))
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Floats
|
||||
#definition()
|
||||
@@ -31,75 +31,71 @@ Rewrite the following binary decimals in base 10: \
|
||||
#definition(label: "floatbits")
|
||||
Another way we can interpret a bit string is as a _signed floating-point decimal_, or a `float` for short. \
|
||||
Floats represent a subset of the real numbers, and are interpreted as follows: \
|
||||
#note([The following only applies to floats that consist of 32 bits. We won't encounter any others today.])
|
||||
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 2mm,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let chars = (
|
||||
`0`,
|
||||
`b`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
)
|
||||
|
||||
let x = 0
|
||||
for c in chars {
|
||||
content((x, 0), c)
|
||||
x += 0.25
|
||||
}
|
||||
|
||||
let y = -0.4
|
||||
line((0.3, y), (0.65, y))
|
||||
content((0.45, y - 0.2), [s])
|
||||
|
||||
line((0.85, y), (2.9, y))
|
||||
content((1.9, y - 0.2), [exponent])
|
||||
|
||||
line((3.10, y), (9.4, y))
|
||||
content((6.3, y - 0.2), [fraction])
|
||||
}),
|
||||
),
|
||||
#note(
|
||||
[The following only applies to floats that consist of 32 bits. We won't encounter any others today.],
|
||||
)
|
||||
|
||||
#align(center, box(inset: 2mm, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let chars = (
|
||||
`0`,
|
||||
`b`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`_`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
`0`,
|
||||
)
|
||||
|
||||
let x = 0
|
||||
for c in chars {
|
||||
content((x, 0), c)
|
||||
x += 0.25
|
||||
}
|
||||
|
||||
let y = -0.4
|
||||
line((0.3, y), (0.65, y))
|
||||
content((0.45, y - 0.2), [s])
|
||||
|
||||
line((0.85, y), (2.9, y))
|
||||
content((1.9, y - 0.2), [exponent])
|
||||
|
||||
line((3.10, y), (9.4, y))
|
||||
content((6.3, y - 0.2), [fraction])
|
||||
})))
|
||||
|
||||
- The first bit denotes the sign of the float's value
|
||||
We'll label it $s$. \
|
||||
If $s = #text([`1`])$, this float is negative; if $s = #text([`0`])$, it is positive.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz-plot:0.1.0": plot, chart
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz-plot:0.1.2": chart, plot
|
||||
|
||||
= Integers and Floats
|
||||
|
||||
@@ -44,19 +44,11 @@ This allows us to improve the average error of our linear approximation:
|
||||
{
|
||||
let domain = (0, 1)
|
||||
|
||||
plot.add(
|
||||
f1,
|
||||
domain: domain,
|
||||
label: $log(1+x)$,
|
||||
style: (stroke: ogrape),
|
||||
)
|
||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
||||
stroke: ogrape,
|
||||
))
|
||||
|
||||
plot.add(
|
||||
f2,
|
||||
domain: domain,
|
||||
label: $x$,
|
||||
style: (stroke: oblue),
|
||||
)
|
||||
plot.add(f2, domain: domain, label: $x$, style: (stroke: oblue))
|
||||
},
|
||||
)
|
||||
})
|
||||
@@ -90,19 +82,11 @@ This allows us to improve the average error of our linear approximation:
|
||||
{
|
||||
let domain = (0, 1)
|
||||
|
||||
plot.add(
|
||||
f1,
|
||||
domain: domain,
|
||||
label: $log(1+x)$,
|
||||
style: (stroke: ogrape),
|
||||
)
|
||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
||||
stroke: ogrape,
|
||||
))
|
||||
|
||||
plot.add(
|
||||
f2,
|
||||
domain: domain,
|
||||
label: $x$,
|
||||
style: (stroke: oblue),
|
||||
)
|
||||
plot.add(f2, domain: domain, label: $x$, style: (stroke: oblue))
|
||||
},
|
||||
)
|
||||
})
|
||||
@@ -120,16 +104,13 @@ We won't bother with this---we'll simply leave the correction term as an opaque
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#note(
|
||||
type: "Note",
|
||||
[
|
||||
"Average error" above is simply the area of the region between the two graphs:
|
||||
$
|
||||
integral_0^1 abs( #v(1mm) log(1+x)_2 - (x+epsilon) #v(1mm))
|
||||
$
|
||||
Feel free to ignore this note, it isn't a critical part of this handout.
|
||||
],
|
||||
)
|
||||
#note(type: "Note", [
|
||||
"Average error" above is simply the area of the region between the two graphs:
|
||||
$
|
||||
integral_0^1 abs(#v(1mm) log(1+x)_2 - (x+epsilon) #v(1mm))
|
||||
$
|
||||
Feel free to ignore this note, it isn't a critical part of this handout.
|
||||
])
|
||||
|
||||
|
||||
#pagebreak()
|
||||
@@ -149,12 +130,11 @@ $
|
||||
Let $E$ and $F$ be the exponent and float bits of $x_f$. \
|
||||
We then have:
|
||||
$
|
||||
log_2(x_f)
|
||||
&= log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
||||
&= E - 127 + log_2(1 + F / (2^23)) \
|
||||
& approx E-127 + F / (2^23) + epsilon \
|
||||
&= 1 / (2^23)(2^23 E + F) - 127 + epsilon \
|
||||
&= 1 / (2^23)(x_i) - 127 + epsilon
|
||||
log_2(x_f) & = log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
||||
& = E - 127 + log_2(1 + F / (2^23)) \
|
||||
& approx E-127 + F / (2^23) + epsilon \
|
||||
& = 1 / (2^23)(2^23 E + F) - 127 + epsilon \
|
||||
& = 1 / (2^23)(x_i) - 127 + epsilon
|
||||
$
|
||||
])
|
||||
|
||||
|
||||
@@ -156,9 +156,9 @@ float Q_rsqrt( float number ) {
|
||||
Using a calculator and some basic algebra, we can find the $epsilon$ this code uses: \
|
||||
#note[Remember, #text[`0x5f3759df`] is $6240089$ in hexadecimal.]
|
||||
$
|
||||
(3 times 2^22) (127 - epsilon) &= 6240089 \
|
||||
(127 - epsilon) &= 126.955 \
|
||||
epsilon &= 0.0450466
|
||||
(3 times 2^22) (127 - epsilon) & = 6240089 \
|
||||
(127 - epsilon) & = 126.955 \
|
||||
epsilon & = 0.0450466
|
||||
$
|
||||
|
||||
So, $0.045$ is the $epsilon$ used by Quake. \
|
||||
|
||||
@@ -230,7 +230,7 @@ The \textit{tensor product} of two vectors is defined as follows:
|
||||
That is, we take our first vector, multiply the second
|
||||
vector by each of its components, and stack the result.
|
||||
You could think of this as a generalization of scalar
|
||||
mulitiplication, where scalar mulitiplication is a
|
||||
multiplication, where scalar multiplication is a
|
||||
tensor product with a vector in $\mathbb{R}^1$:
|
||||
\begin{equation*}
|
||||
a
|
||||
|
||||
@@ -251,7 +251,7 @@ What is it, and what is its color? \par
|
||||
\textbf{Part 4:}
|
||||
|
||||
The promoted black bishop on H2 must have been promoted on G1. The pawn which was promoted must have come from G7,
|
||||
since neither of the pawns from F6 or H6 could make a capture to get to the G-file (all six missing white pieces have been accouted for).
|
||||
since neither of the pawns from F6 or H6 could make a capture to get to the G-file (all six missing white pieces have been accounted for).
|
||||
The Pawn from E7 has promoted to the bishop on A2.
|
||||
|
||||
What happened was this: the white pawn from G2 made its capture on H3 while the pawn on G3 was still on H2. This allowed the black pawn
|
||||
|
||||
134
src/Advanced/Symmetric Groups/macros.typ
Normal file
134
src/Advanced/Symmetric Groups/macros.typ
Normal file
@@ -0,0 +1,134 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#let markline(s, from, to, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
let del = 0.4 // small line
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0, (del + 0.4) * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.4 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#let marklinetop(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".north",
|
||||
(v => cetz.vector.add(v, (0, del * s)), from + ".north"),
|
||||
(v => cetz.vector.add(v, (0, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#let marklinebot(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -0.4 * s)), to + ".south"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".south",
|
||||
90deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#let marklinebotswap(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
#let marklinetopswap(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".north",
|
||||
(v => cetz.vector.add(v, (0, del * s)), from + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -0.2 * s)), to + ".south"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".south",
|
||||
90deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
% use [nosolutions] flag to hide solutions.
|
||||
% use [solutions] flag to show solutions.
|
||||
\documentclass[
|
||||
solutions,
|
||||
singlenumbering
|
||||
]{../../../lib/tex/handout}
|
||||
\usepackage{../../../lib/tex/macros}
|
||||
\usetikzlibrary{calc}
|
||||
|
||||
\uptitlel{Advanced 2}
|
||||
\uptitler{\smallurl{}}
|
||||
\title{Symmetric Groups}
|
||||
\subtitle{Prepared by Mark on \today{}}
|
||||
|
||||
|
||||
|
||||
\def\line#1#2{
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(#1)
|
||||
-- ($(#1) + (0, -1)$)
|
||||
-- ($(#2) + (0,1)$)
|
||||
-- (#2);
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\input{parts/0 intro}
|
||||
\input{parts/1 cycle}
|
||||
\input{parts/2 groups}
|
||||
\input{parts/3 subgroup}
|
||||
|
||||
|
||||
\section{Bonus problems}
|
||||
|
||||
\problem{}
|
||||
Show that $x \in \mathbb{Z}^+$ has a multiplicative inverse mod $n$ iff $\text{gcd}(x, n) = 1$
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Let $\sigma = (\sigma_1 \sigma_2 ... \sigma_k)$ be a $k$-cycle in $S_n$, and let $\tau$ be an arbitrary element of $S_n$. \par
|
||||
Show that $\tau \sigma \tau^{-1}$ = $\bigl(\tau(\sigma_1), \tau(\sigma_2), ..., \tau(\sigma_k)\bigr)$ \par
|
||||
\hint{As usual, $\tau$ is a permutation. Thus, $\tau(x)$ is the value at position $x$ after applying $\tau$.}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that the set $\Bigl\{ (1, 2),~ (1,2,...,n) \Bigr\}$ generates $S_n$.
|
||||
\vfill
|
||||
|
||||
% TODO: (a second day?)
|
||||
% alternating group
|
||||
% type and sign and conjugation
|
||||
% isomorphisms & automorphisms
|
||||
% automorphism groups
|
||||
\end{document}
|
||||
35
src/Advanced/Symmetric Groups/main.typ
Normal file
35
src/Advanced/Symmetric Groups/main.typ
Normal file
@@ -0,0 +1,35 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
#show: handout.with(
|
||||
title: [Symmetric Groups],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
#include "parts/00 intro.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/01 cycle.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/02 groups.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/03 subgroup.typ"
|
||||
#pagebreak()
|
||||
|
||||
= Bonus problems
|
||||
|
||||
#problem()
|
||||
Show that $x in ZZ^+$ has a multiplicative inverse mod $n$ iff $gcd(x, n) = 1$
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Let $sigma = (sigma_1 sigma_2 ... sigma_k)$ be a $k$-cycle in $S_n$, and let $tau$ be an arbitrary element of $S_n$. \
|
||||
Show that $tau sigma tau^(-1)$ = $(tau(sigma_1), tau(sigma_2), ..., tau(sigma_k))$ \
|
||||
#hint[$tau$ is a permutation, so $tau(x)$ is the value at position $x$ after applying $tau$.]
|
||||
|
||||
#v(1fr)
|
||||
#problem()
|
||||
Show that the set ${ (1, 2), (1,2,...,n)}$ generates $S_n$.
|
||||
#v(1fr)
|
||||
@@ -1,199 +0,0 @@
|
||||
\section{Introduction}
|
||||
|
||||
|
||||
\definition{}
|
||||
Informally, a \textit{permutation} of a collection of $n$ objects is an ordering of these $n$ objects. \par
|
||||
For example, a few permutations of $\texttt{A}, \texttt{B}, \texttt{C}, \texttt{D}$ are $\texttt{ABCD}$,
|
||||
$\texttt{BCDA}$, and $\texttt{DACB}$. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
This, however, isn't the definition we'll use today. Instead of defining permutations as \say{ordered lists,}
|
||||
(as we do above), we'll define them as functions. Our first goal today is to make sense of this definition.
|
||||
|
||||
|
||||
|
||||
\definition{Permutations}
|
||||
Let $\Omega$ be an arbitrary set of $n$ objects. \par
|
||||
A \textit{permutation} on $\Omega$ is a map from $\Omega$ to itself that produces a \textit{unique} output for each input. \par
|
||||
\note{In other words, if $a$ and $b$ are different, $f(a)$ and $f(b)$ must also be different.}
|
||||
|
||||
|
||||
\footnotetext{The words \say{function} and \say{map} are equivalent.}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, consider $\{1, 2, 3\}$. \par
|
||||
One permutation on this set can be defined as follows: \par
|
||||
\begin{itemize}
|
||||
\item $f(1) = 3$
|
||||
\item $f(2) = 1$
|
||||
\item $f(3) = 2$
|
||||
\end{itemize}
|
||||
|
||||
If we take the array $123$ and apply
|
||||
|
||||
|
||||
\problem{}
|
||||
List all permutations on three objects. \par
|
||||
How many permutations of $n$ objects are there?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What map corresponds to the permutation $[321]$?
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What map corresponds to the \say{do-nothing} permutation? \par
|
||||
Write it as a function and in square-bracket notation. \par
|
||||
\note[Note]{We usually call this the \textit{trivial permutation}}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
We can visualize permutations with a \textit{string diagram}, shown below. \par
|
||||
The arrows in this diagram denote the image of $f$ for each possible input.
|
||||
Two examples are below:
|
||||
|
||||
\vspace{2mm}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (1b) at (0, -2) {1};
|
||||
\node (3b) at (1, -2) {3};
|
||||
\node (4b) at (2, -2) {4};
|
||||
\node (2b) at (3, -2) {2};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill\null
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
Note that in all our examples thus far, the objects in our set have an implicit order.
|
||||
This is only for convenience. The elements of $\Omega$ are not ordered (it is a \textit{set}, after all),
|
||||
and we may present them however we wish.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\vspace{1cm}
|
||||
|
||||
For example, consider the diagrams below. \par
|
||||
On the left, 1234 are ordered as usual. In the middle, they are ordered alphabetically. \par
|
||||
The rightmost diagram uses arbitrary, meaningless labels.
|
||||
|
||||
\vspace{2mm}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (4a) at (0, 0.5) {4};
|
||||
\node (1a) at (1, 0.5) {1};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (2a) at (3, 0.5) {2};
|
||||
|
||||
\node (1b) at (0, -2) {1};
|
||||
\node (4b) at (1, -2) {4};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (2b) at (3, -2) {2};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {$\triangle$};
|
||||
\node (2a) at (1, 0.5) {$\divideontimes$};
|
||||
\node (3a) at (2, 0.5) {$\circledcirc$};
|
||||
\node (4a) at (3, 0.5) {$\boxdot$};
|
||||
|
||||
\node (2b) at (0, -2) {$\divideontimes$};
|
||||
\node (1b) at (1, -2) {$\triangle$};
|
||||
\node (3b) at (2, -2) {$\circledcirc$};
|
||||
\node (4b) at (3, -2) {$\boxdot$};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill\null
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
It shouldn't be hard to see that despite the different \say{output} order (2134 and 1432), \par
|
||||
the same permutation is depicted in all three diagrams. This example demonstrates two things:
|
||||
\begin{itemize}[itemsep=2mm]
|
||||
\item First, the names of the items in our set do not have any meaning. \par
|
||||
$\Omega$ is just a set of $n$ arbitrary things, which we may label however we like.
|
||||
|
||||
\item Second, permutations are verbs. We do not care about the \say{output} of a certain permutation,
|
||||
we care about what it \textit{does}. We could, for example, describe the permutation above as
|
||||
\say{swap the first two of four elements.}
|
||||
\end{itemize}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
Why, then, do we order our elements when we talk about permutations? As noted before, this is for convenience.
|
||||
If we assign a natural order to the elements of $\Omega$ (say, 1234), we can identify permutations by simply listing
|
||||
their output:
|
||||
Clearly, $[1234]$ represents the trivial permutation, $[2134]$ represents \say{swap first two,}
|
||||
and $[4123]$ represents \say{cycle right.}
|
||||
|
||||
\problem{}
|
||||
Draw string diagrams for $[4123]$ and $[2341]$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
378
src/Advanced/Symmetric Groups/parts/00 intro.typ
Normal file
378
src/Advanced/Symmetric Groups/parts/00 intro.typ
Normal file
@@ -0,0 +1,378 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Introduction
|
||||
|
||||
#definition()
|
||||
Informally, a _permutation_ on a collection of $n$ objects is an ordering of these $n$ objects.
|
||||
|
||||
For example, a few permutations of `A`, `B`, `C`, and `D` are `ABCD`, `BCDA`, and `DACB`.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This, however, isn't the definition we'll use today.
|
||||
Instead of defining permutations as "ordered lists" \
|
||||
(like we do above), we'll define them as _functions_ on finite sets. \
|
||||
Our first goal today is to make sense of this definition.
|
||||
|
||||
|
||||
#definition("Permutations")
|
||||
Let $Omega$ be a set of $n$ arbitrary objects.
|
||||
|
||||
A _permutation_ $f$ on $Omega$ is a map#footnote[The words "function" and "map" are equivalent.]
|
||||
from $Omega$ to itself that produces a _unique_ output for each input.
|
||||
|
||||
#note[This means that if $a$ and $b$ are different, $f(a)$ and $f(b)$ must also be different.]
|
||||
|
||||
|
||||
|
||||
#v(2mm)
|
||||
|
||||
For example, consider ${1, 2, 3}$. \
|
||||
One permutation on this set can be defined as follows:
|
||||
- $f(1) = 3$
|
||||
- $f(2) = 1$
|
||||
- $f(3) = 2$
|
||||
|
||||
If we take the array $123$ and apply $f$, we get $312$.
|
||||
|
||||
#problem()
|
||||
List all permutations on three objects. \
|
||||
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`?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What map corresponds to the "do-nothing" permutation?
|
||||
|
||||
Write it as a function and in square-bracket notation.
|
||||
|
||||
#note([We will call this the _trivial permutation_])
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
We can visualize a permutation using a _string diagram_.
|
||||
The arrows in this diagram denote \
|
||||
the output of $f$ for each possible input.
|
||||
Two examples are below:
|
||||
|
||||
#table(
|
||||
columns: (1fr, 1fr),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.5 // scale
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, 0 * s), $1$, name: "1b")
|
||||
content((1 * s, 0 * s), $3$, name: "3b")
|
||||
content((2 * s, 0 * s), $4$, name: "4b")
|
||||
content((3 * s, 0 * s), $2$, name: "2b")
|
||||
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "2b")
|
||||
markline(s, "3a", "3b")
|
||||
markline(s, "4a", "4b")
|
||||
})),
|
||||
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.5 // scale
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, 0 * s), $2$, name: "2b")
|
||||
content((1 * s, 0 * s), $1$, name: "1b")
|
||||
content((2 * s, 0 * s), $3$, name: "3b")
|
||||
content((3 * s, 0 * s), $4$, name: "4b")
|
||||
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "2b")
|
||||
markline(s, "3a", "3b")
|
||||
markline(s, "4a", "4b")
|
||||
})),
|
||||
)
|
||||
|
||||
Note that the elements of the set we are permuting are not ordered. (it is a _set_, after all!) \
|
||||
For example, consider the diagrams below.
|
||||
On the left, 1234 are ordered as usual. \
|
||||
In the middle, they are ordered alphabetically. \
|
||||
The rightmost diagram uses arbitrary, meaningless labels.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#table(
|
||||
columns: (1fr, 1fr, 1fr),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.5 // scale
|
||||
let del = 0.2 // small line
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, 0 * s), $2$, name: "2b")
|
||||
content((1 * s, 0 * s), $1$, name: "1b")
|
||||
content((2 * s, 0 * s), $3$, name: "3b")
|
||||
content((3 * s, 0 * s), $4$, name: "4b")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.5 // scale
|
||||
let del = 0.2 // small line
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $4$, name: "4a")
|
||||
content((1 * s, 3 * s), $1$, name: "1a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $2$, name: "2a")
|
||||
|
||||
content((0 * s, 0 * s), $1$, name: "1b")
|
||||
content((1 * s, 0 * s), $4$, name: "4b")
|
||||
content((2 * s, 0 * s), $3$, name: "3b")
|
||||
content((3 * s, 0 * s), $2$, name: "2b")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.5 // scale
|
||||
let del = 0.2 // small line
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $ast.circle$, name: "4a")
|
||||
content((1 * s, 3 * s), $hexa.stroked$, name: "1a")
|
||||
content((2 * s, 3 * s), $triangle.stroked.b$, name: "3a")
|
||||
content((3 * s, 3 * s), $\#$, name: "2a")
|
||||
|
||||
content((0 * s, 0 * s), $hexa.stroked$, name: "1b")
|
||||
content((1 * s, 0 * s), $ast.circle$, name: "4b")
|
||||
content((2 * s, 0 * s), $triangle.stroked.b$, name: "3b")
|
||||
content((3 * s, 0 * s), $\#$, name: "2b")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
)
|
||||
|
||||
#v(2mm)
|
||||
|
||||
It shouldn't be hard to see that despite the different "output" each diagram displays \
|
||||
($2134$, $1432$, and $hexa.stroked ast.circle triangle.stroked.b \#$), the same permutation ("swap first two") is shown in each.
|
||||
|
||||
Observe the following:
|
||||
- The "names" of the items in our set do not have any meaning. \
|
||||
We are interested in sets of $n$ arbitrary things, which we may label however we like.
|
||||
- Permutations are _verbs_. \
|
||||
We do not care about the "output" of a certain permutation. Rather, we care about what it _does_. \
|
||||
We could, for example, describe the permutation in the above three diagrams as "swap the first two elements."
|
||||
|
||||
|
||||
#definition("Square Brackets")
|
||||
However, elements with an implicit order (1, 2, 3, ...) are convenient. \
|
||||
Such sets let us denote a permutation by writing the array it produces \
|
||||
after transforming the "reference order" $123...n$.
|
||||
|
||||
We will call this _square-bracket notation_. \
|
||||
$[312]$ denotes the permutation that produces $312$ when applied to $123$.
|
||||
|
||||
#problem()
|
||||
Draw string diagrams for $[4123]$ and $[2341]$.
|
||||
|
||||
#v(1fr)
|
||||
635
src/Advanced/Symmetric Groups/parts/01 cycle.typ
Executable file
635
src/Advanced/Symmetric Groups/parts/01 cycle.typ
Executable file
@@ -0,0 +1,635 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Cycle Notation
|
||||
|
||||
#definition("Order")
|
||||
The _order_ of a permutation $f$ is the smallest positive $n$ where $f^n (x) = x$ for all $x$. \
|
||||
In other words, if we repeatedly apply a permutation with order $n$, \
|
||||
we will get back to where we started after $n$ steps. \
|
||||
|
||||
#v(2mm)
|
||||
|
||||
For example, consider $[2134]$. This permutation has order $2$, as we can see below:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.5 // scale
|
||||
let del = 0.2 // small line
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, 0 * s), $2$, name: "2b")
|
||||
content((1 * s, 0 * s), $1$, name: "1b")
|
||||
content((2 * s, 0 * s), $3$, name: "3b")
|
||||
content((3 * s, 0 * s), $4$, name: "4b")
|
||||
|
||||
content((0 * s, -3 * s), $1$, name: "1c")
|
||||
content((1 * s, -3 * s), $2$, name: "2c")
|
||||
content((2 * s, -3 * s), $3$, name: "3c")
|
||||
content((3 * s, -3 * s), $4$, name: "4c")
|
||||
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "2b")
|
||||
markline(s, "3a", "3b")
|
||||
markline(s, "4a", "4b")
|
||||
|
||||
markline(s, "1b", "1c")
|
||||
markline(s, "2b", "2c")
|
||||
markline(s, "3b", "3c")
|
||||
markline(s, "4b", "4c")
|
||||
})),
|
||||
)
|
||||
|
||||
Swapping the first two elements of a list twice changes nothing. \
|
||||
Thus, $[2134]$ has an order of two.
|
||||
|
||||
|
||||
#problem()
|
||||
What is the order of $[2314]$? \
|
||||
How about $[4321]$? \
|
||||
#note(type: "Note")[Try to solve this problem without drawing any strings!]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Find a permutation on five elements with order 4.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem(label: "finiteorder")
|
||||
Show that all permutations on a finite set have a well-defined order. \
|
||||
In other words, show that there must always be an integer $n$ where $f^n (x) = x$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
#definition("Composition", label: "compdef")
|
||||
The _composition_ of two permutations $f$ and $g$ is the permutation $h(x) = f(g(x))$. \
|
||||
We'll denote this by simply writing the permutations we're composing next to each other, like $f g$. \
|
||||
Note that $g$ is applied _before_ $f$ in $f g$.
|
||||
|
||||
#problem()
|
||||
Show that function composition is associative. \
|
||||
That is, show that $f(g h) = (f g)h$.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is $[1324][4321]$? \
|
||||
How about $[321][213][231]$? \
|
||||
Rewrite these compositions as one permutation in square brackets.
|
||||
|
||||
#solution([
|
||||
- $[1324][4321]$ is $[4321]$
|
||||
- $[321][213][231]$ is $[123]$
|
||||
])
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
As you may have noticed, the square-bracket notation we've been using thus far is a bit unwieldy.
|
||||
Permutations are verbs---but we've been referring to them using a noun (i.e, their output).
|
||||
|
||||
Square-bracket notation fails to capture the structure of the permutation it identifies.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Is the permutation $[1234]$ different than the permutation $[12345]$? \
|
||||
These permutations operate on different sets---but they are both the identity! \
|
||||
Are $[5342761]$ and $[1342567][5234761]$ similar? What are their orders?
|
||||
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Good notation should help us understand the objects we are studying. \
|
||||
We need something better than square brackets.
|
||||
|
||||
|
||||
#pagebreak()
|
||||
|
||||
|
||||
#remark("Cycles")
|
||||
Any permutation is composed of a number of _cycles_. \
|
||||
Reread @finiteorder to convince yourself of this fact.
|
||||
|
||||
|
||||
#example()
|
||||
Consider the permutation $[2134]$. \
|
||||
It consists of one two-cycle: $1 arrow.r 2 arrow.r 1$, which we can see in the diagram below. \
|
||||
#note(
|
||||
type: "Note",
|
||||
)[
|
||||
$3 arrow.r 3$ and $4 arrow.r 4$ are also cycles, but we'll ignore them.
|
||||
One-cycles aren't interesting.
|
||||
]
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let del = 0.4 // small line
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
marklinetop(s, "1a", "2a")
|
||||
marklinebot(s, "2a", "1a")
|
||||
})),
|
||||
)
|
||||
|
||||
#v(4mm)
|
||||
|
||||
The permutation $[431265]$ is a bit more interesting---it contains two cycles: \
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
content((4 * s, 3 * s), $5$, name: "5a")
|
||||
content((5 * s, 3 * s), $6$, name: "6a")
|
||||
|
||||
|
||||
marklinetop(s, "3a", "2a", del: 0.8)
|
||||
marklinebot(s, "2a", "4a", del: 1.3)
|
||||
marklinetop(s, "4a", "1a", del: 1.3)
|
||||
marklinebot(s, "1a", "3a", del: 0.8)
|
||||
marklinebot(s, "5a", "6a", del: 0.8, c: ogreen)
|
||||
marklinetop(s, "6a", "5a", del: 0.8, c: ogreen)
|
||||
})),
|
||||
)
|
||||
|
||||
#remark()
|
||||
Two-cycles may also be called _transpositions_. \
|
||||
Any permutation that swaps two elements is a transposition.
|
||||
|
||||
#problem()
|
||||
Find all cycles in $[5342761]$.
|
||||
|
||||
#solution[
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.5 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
padding: .1,
|
||||
))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
content((4 * s, 3 * s), $5$, name: "5a")
|
||||
content((5 * s, 3 * s), $6$, name: "6a")
|
||||
content((6 * s, 3 * s), $7$, name: "7a")
|
||||
|
||||
|
||||
marklinetop(s, "1a", "7a", del: 1.6)
|
||||
marklinebot(s, "7a", "5a", del: 1.2)
|
||||
marklinetopswap(s, "5a", "1a", del: 1.2)
|
||||
|
||||
|
||||
marklinebot(s, "2a", "4a", del: 1.2, c: ogreen)
|
||||
marklinetop(s, "4a", "3a", del: 0.8, c: ogreen)
|
||||
marklinebotswap(s, "3a", "2a", del: 0.8, c: ogreen)
|
||||
})),
|
||||
)
|
||||
|
||||
There are two non-trivial cycles:
|
||||
- $4 arrow.r 3 arrow.r 2 arrow.r 4$
|
||||
- $1 arrow.r 7 arrow.r 5 arrow.r 1$
|
||||
]
|
||||
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
What permutation on five objects is formed by the cycles $3 arrow.r 5 arrow.r 3$ and $1 arrow.r 2 arrow.r 4 arrow.r 1$? \
|
||||
Write it in square-bracket notation.
|
||||
|
||||
#solution[
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
padding: .1,
|
||||
))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
content((4 * s, 3 * s), $5$, name: "5a")
|
||||
|
||||
marklinetop(s, "3a", "5a", del: 0.8, c: ogreen)
|
||||
marklinebot(s, "5a", "3a", del: 0.8, c: ogreen)
|
||||
|
||||
marklinebot(s, "1a", "2a", del: 0.8)
|
||||
marklinetop(s, "2a", "4a", del: 1.2)
|
||||
|
||||
marklinebotswap(s, "4a", "1a", del: 1.2)
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
This is $[41523]$.
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
#definition("Cycle Notation")
|
||||
We can use cycles to develop better notation: \
|
||||
Instead of identifying permutations using their output, we'll identify them using their _cycles_.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
For example, we'll write $[2134]$ is $(12)$ in cycle notation, \
|
||||
since it consists only of the cycle $1 arrow.r 2 arrow.r 1$:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
padding: .1,
|
||||
))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
marklinebot(s, "1a", "2a", del: 0.8)
|
||||
marklinetop(s, "2a", "1a", del: 0.8)
|
||||
})),
|
||||
)
|
||||
|
||||
#v(2mm)
|
||||
|
||||
|
||||
Permutations that consist of more than one cycle are written as a composition. \
|
||||
$[2143]$ is written as $(12)(34)$. Applying the permutation $[2143]$ has the same effect as applying $(34)$, then applying $(12)$.
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
padding: .1,
|
||||
))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
|
||||
marklinetop(s, "1a", "2a", del: 0.8)
|
||||
marklinebot(s, "2a", "1a", del: 0.8)
|
||||
marklinetop(s, "3a", "4a", del: 0.8, c: ogreen)
|
||||
marklinebot(s, "4a", "3a", del: 0.8, c: ogreen)
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
|
||||
#remark()
|
||||
According to @finiteorder, any permutation may be written as a composition of disjoint cycles. \
|
||||
Convince yourself of this fact.
|
||||
|
||||
#problem()
|
||||
Rewrite $[431265]$ in cycle notation.
|
||||
|
||||
#solution[
|
||||
$[431265]$ is $(1324)(56)$:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.6 // scale
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: oblue,
|
||||
stroke: oblue,
|
||||
)
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
padding: .1,
|
||||
))
|
||||
content((0 * s, 3 * s), $1$, name: "1a")
|
||||
content((1 * s, 3 * s), $2$, name: "2a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $4$, name: "4a")
|
||||
content((4 * s, 3 * s), $5$, name: "5a")
|
||||
content((5 * s, 3 * s), $6$, name: "6a")
|
||||
|
||||
marklinetop(s, "1a", "3a", del: 0.8, c: ogreen)
|
||||
marklinebot(s, "4a", "1a", del: 1.3, c: ogreen)
|
||||
marklinebot(s, "3a", "2a", del: 0.8, c: ogreen)
|
||||
marklinetop(s, "2a", "4a", del: 1.3, c: ogreen)
|
||||
|
||||
marklinetop(s, "5a", "6a", del: 0.8)
|
||||
marklinebot(s, "6a", "5a", del: 0.8)
|
||||
})),
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
#remark()
|
||||
The identity permutation $f(x) = x$ is written as $()$ in cycle notation.
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Convince yourself that disjoint cycles commute. \
|
||||
That is, that $(1324)(56) = (56)(1324) = [431265]$ since $(1324)$ and $(56)$ do not overlap. \
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem(label: "insquare")
|
||||
Write the following in square-bracket notation.
|
||||
|
||||
- $(12)$ on a set of 2 elements
|
||||
- $(12)(435)$ on a set of 5 elements
|
||||
#v(2mm)
|
||||
- $(321)$ on a set of 3 elements
|
||||
- $(321)$ on a set of 6 elements
|
||||
#v(2mm)
|
||||
- $(1234)$ on a set of 4 elements
|
||||
- $(3412)$ on a set of 4 elements
|
||||
|
||||
#note[
|
||||
Note that $(12)$ refers the "swap first two" permutation on a set of _any_ size. \
|
||||
We can use consistent notation for the same action on two different sets! \
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Write the following in square-bracket notation.
|
||||
Pay attention!
|
||||
- $(13)(243)$ on a set of 4 elements
|
||||
- $(243)(13)$ on a set of 4 elements
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Consider the last two permutations in @insquare, $(1234)$ and $(3412)$. \
|
||||
These are _identical_---they are the same cycle written in two different ways. \
|
||||
List all other ways to write this cycle. \
|
||||
#hint[There are two more.]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
#definition("Inverse")
|
||||
The _inverse_ of a permitation $f$ is a permutation $g$ that "un-does" $f$. \
|
||||
This means that $g(f(x)) = x$ for all $x$.
|
||||
|
||||
#problem()
|
||||
What is the inverse of $(12)$? \
|
||||
How about $(123)$? And $(4231)$? \
|
||||
#note[
|
||||
Note we do not need to know the size of the set we are operating on. \
|
||||
The inverse of $(12)$ is the same in sets of all sizes!
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
Let $sigma$ be a permutation composed of disjoint cycles $sigma_1sigma_2...sigma_k$. \
|
||||
Say we know the order of all $sigma_i$. What is the order of $sigma$?
|
||||
|
||||
#solution[
|
||||
$
|
||||
#text[lcm]\(#text[ord]\(sigma_1),#h(0.5em) #text[ord]\(sigma_2),#h(0.5em) ...,#h(0.5em) #text[ord]\(sigma_k))
|
||||
$
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem(label: "cycletrans")
|
||||
Show that any cycle $(123...n)$ is equal to the product $(12)(23)...(n-1, n)$.
|
||||
|
||||
#solution[
|
||||
*Intuition:*\
|
||||
$(123...n)$ is a right-shift. Swapping all pairs from right to left achieves the same effect.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
*Complete solution:* \
|
||||
Consider $n-1$. After applying $(123...n)$, it takes the position of $n$.
|
||||
|
||||
After applying $(n-1, n)$, $n-1$ moves to the same position _and is never moved again!_ \
|
||||
Repeat this argument for all other $n$.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Write $(7126453)$ as a product of transpositions. \
|
||||
|
||||
#solution[
|
||||
Move elements one at a time, and using the last position as temporary storage.
|
||||
|
||||
We get $(71)(72)(76)(74)(75)(73)$.
|
||||
Other solutions are possible. \
|
||||
|
||||
#v(2mm)
|
||||
|
||||
*Bonus:* How can we do this in the fewest number of transpositions?
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem(label: "simpletrans")
|
||||
Show that any permutation is a product of transpositions.
|
||||
|
||||
#solution[
|
||||
Re-use the argument in @cycletrans. \
|
||||
Pick an arbitrary "working slot," and re-build all cycles. \
|
||||
Use the "not touched again" argument for a proper proof.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem(label: "onetrans")
|
||||
Show that any permutation is a product of transpositions of the form $(1, k)$. \
|
||||
|
||||
#solution[
|
||||
Use @simpletrans to rewrite each $(a, b)$ as $(1, a)(1, b)(1, a)$. \
|
||||
Showing that $(a, b) = (1, a)(1, b)(1, a)$ is fairly easy.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
#problem(label: "oneplustrans")
|
||||
Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
#solution[
|
||||
This is the same as @onetrans,
|
||||
but we use $a + 1$ as a "working slot" instead of $1$.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Show that any permutation is a product of adjacent transpositions. \
|
||||
An _adjacent transposition_ swaps two adjacent elements, and thus looks like $(n, n+1)$.
|
||||
|
||||
#solution[
|
||||
As before, we will use @simpletrans and rewrite the transpositions it produces in a convenient fashion.
|
||||
To do this, we must show that every transposition $(a, b)$ is a product of adjacent transpositions.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
In the proof below, assume that $a < b$ and perform induction on $b - a$. \
|
||||
|
||||
#v(4mm)
|
||||
|
||||
|
||||
*Base Case:*\
|
||||
If $b - a = 1$, $(a, b)$ is a product of adjacent transpositions. \
|
||||
In fact, it _is_ an adjacent transposition.
|
||||
|
||||
#v(4mm)
|
||||
|
||||
*Induction:*\
|
||||
Now, say $b - a = n + 1$. \
|
||||
Assume that all $(a, b)$ where $b - a <= n$ are products of adjacent transpositions.\
|
||||
By @oneplustrans, $(a, b) = (a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
$(a, a+1)$ is an adjacent transposition, and $b - (a+1) = n$. \
|
||||
Thus, $(a, b)$ is a product of adjacent transpositions.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
139
src/Advanced/Symmetric Groups/parts/02 groups.typ
Executable file
139
src/Advanced/Symmetric Groups/parts/02 groups.typ
Executable file
@@ -0,0 +1,139 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Groups (review)
|
||||
|
||||
#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$?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
A _group_ $(G, *)$ consists of a set $G$ and an operator $*$. \
|
||||
Groups always have the following properties:
|
||||
|
||||
+ $G$ is closed under $*$. In other words, $a, b in G => a * b in G$.
|
||||
+ $*$ is _associative_: $(a * b) * c = a * (b * c)$ for all $a,b,c in G$
|
||||
+ There is an _identity_ $e in G$, so that $a * e = e * a = a$ for all $a in G$.
|
||||
+ For any $a in G$, there exists a $b in G$ so that $a * b = b * a = e$. $b$ is called the _inverse_ of $a$. \
|
||||
This element is written as $-a$ if our operator is addition and $a^(-1)$ otherwise.
|
||||
|
||||
Any pair $(G, *)$ that satisfies these properties is a group.
|
||||
|
||||
#problem()
|
||||
Is $(ZZ_5, +)$ a group? \
|
||||
Is $(ZZ_5, -)$ a group? \
|
||||
#note[$+$ and $-$ refer to the usual operations in modular arithmetic.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is the group with the fewest number of elements?
|
||||
|
||||
#solution[
|
||||
Let $(G, star)$ be our group, where $G = {x}$ and $star$ is defined by $x star x = x$
|
||||
|
||||
Verifying that the trivial group is a group is trivial.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Show that function composition is associative
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that $S_n$ is a group under composition.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#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.]
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The smallest such $n$ defines the _order_ of $g$.
|
||||
|
||||
#hint[
|
||||
We've already done a special case of this problem! \
|
||||
Find it in this handout, then rewrite your proof for an arbitrary (finite) group.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is the order of 5 in $(ZZ_25, +)$? \
|
||||
What is the order of 2 in $(ZZ_17^times, times)$? \
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
|
||||
#definition("Generator", label: "gendef")
|
||||
Let $G$ be a group, and let $g$ be an element of $G$. \
|
||||
We say $g$ is a _generator_ if every other element of $G$ may be written as a power of $g$. \
|
||||
|
||||
#problem()
|
||||
Let $G$ be a group of $n$ elements. \
|
||||
If $g$ is a generator, what is its order? \
|
||||
Provide a proof.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Find the two generators in $(ZZ, +)$ \
|
||||
Then, find all generators of $(ZZ_5, +)$
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
How many groups have only one generator?
|
||||
|
||||
#solution[
|
||||
Only one: the trivial group. The inverse of a generator is also a generator!
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
Let $S$ be a subset of the elements in $G$. \
|
||||
We say that $S$ _generates_ $G$ if every element of $G$ may be written as a product of elements in $S$. \
|
||||
#note(type: "Note")[This is an extension of @gendef.]
|
||||
|
||||
#problem()
|
||||
We've already found a few generating sets of $S_n$. What are they?
|
||||
|
||||
#solution[
|
||||
The following sets generate $S_n$:
|
||||
- All transpositions
|
||||
- All transpositions of the form $(1, k)$
|
||||
- All adjacent transpositions
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The smallest generating set of $S_n$ consists of the transposition $(12)$ and the $n$-cycle $(1,2,...,n)$. \
|
||||
The proof of this is a bonus problem later in the handout.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
172
src/Advanced/Symmetric Groups/parts/03 subgroup.typ
Normal file
172
src/Advanced/Symmetric Groups/parts/03 subgroup.typ
Normal file
@@ -0,0 +1,172 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Subgroups
|
||||
|
||||
#problem(label: "s2s3share")
|
||||
What elements do $S_2$ and $S_3$ share?
|
||||
|
||||
#v(2cm)
|
||||
|
||||
|
||||
Consider the sets $\{1, 2\}$ and $\{1,2,3\}$. Clearly, $\{1, 2\} subset \{1, 2, 3\}$. \
|
||||
Can we say something similar about $S_2$ and $S_3$?
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Looking at @s2s3share, we may want to say that $S_2 subset S_3$ since every element of $S_2$ is in $S_3$. \
|
||||
This however, isn't as interesting as it could be. Remember that $S_2$ and $S_3$ are _groups_, not _sets_: \
|
||||
their elements come with structure, which the "subset" relation does not capture.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
To account for this, we'll define a similar relation: subgroups.
|
||||
|
||||
#definition("Subgroup")
|
||||
Let $G$ and $G'$ be groups. We say $G'$ is a _subgroup_ of $G$ (and write $G' subset G$) if the following are true:\
|
||||
(Note that $x, y$ are elements of $G$, and $x y$ is multiplication in $G$)
|
||||
- the set of elements in $G'$ is a subset of the set of elements in $G$.
|
||||
- the identity of $G$ is in $G'$
|
||||
- $x,y in G' => x y in G'$
|
||||
- $x in G' => x^(-1) in G'$
|
||||
|
||||
The above definition may look fairly scary, but the idea behind a subgroup is simple. \
|
||||
Consider $S_3$ and $S_4$, the groups of permutations of $3$ and $4$ elements. \
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Say we have a set of four elements and only look at the first three. \
|
||||
$S_3$ fully describes all the ways we can arrange those three elements:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.7
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 0.5 * s), $1$, name: "1a")
|
||||
content((1 * s, 0.5 * s), $2$, name: "2a")
|
||||
content((2 * s, 0.5 * s), $3$, name: "3a")
|
||||
content((3 * s, 0.5 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, -2 * s), $2$, name: "2b")
|
||||
content((1 * s, -2 * s), $3$, name: "3b")
|
||||
content((2 * s, -2 * s), $1$, name: "1b")
|
||||
content((3 * s, -2 * s), $4$, name: "4b")
|
||||
|
||||
|
||||
// These arrows are wrong,
|
||||
// but create a symmetric picture
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "3b")
|
||||
markline(s, "3a", "2b")
|
||||
markline(s, "4a", "4b", c: ogreen)
|
||||
|
||||
content(
|
||||
(1 * s, -0.55 * s),
|
||||
$S_3$,
|
||||
fill: white,
|
||||
stroke: oblue + 0.6mm,
|
||||
padding: 1.3mm,
|
||||
)
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $S_3$ is a subgroup of $S_4$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
#definition("Isomorphism")
|
||||
Let $G$ and $H$ be groups. We say that $G$ and $H$ are _isomorphic_ (and write $G tilde.equiv H$) \
|
||||
if there is a bijection $f: G -> H$ with the following properties:
|
||||
- $f(e_G) = e_H$, where $e_G$ is the identity in $G$
|
||||
- $f(x^(-1)) = f(x)^(-1)$ for all $x$ in $G$
|
||||
- $f(x y) = f(x) f(y)$ for all $x, y$ in $G$
|
||||
|
||||
Intuitively, you can think of isomorphism as a form of equivalence. \
|
||||
If two groups are isomorphic, they only differ by the names of their elements. \
|
||||
The function $f$ above tells us how to map one set of labels to the other.
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $ZZ_7^times$ and $ZZ_9^times$ are isomorphic.
|
||||
#hint[
|
||||
Build a bijection with the above properties. \
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
]
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $ZZ_10^times$, $ZZ_5^times$, and $ZZ_4$ are isomorphic.
|
||||
#hint[
|
||||
Build a bijection with the above properties. \
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that isomorphism is transitive. \
|
||||
That is, if $A tilde.equiv B$ and $B tilde.equiv C$, then $A tilde.equiv C$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
#problem(label: "firstindex")
|
||||
How many subgroups of $S_4$ are isomorphic to $S_3$? \
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
What are the orders of $S_3$ and $S_4$? \
|
||||
How is this related to @firstindex?
|
||||
|
||||
#solution[
|
||||
$|S_4| = |S_3| times [S_4 : S_3]$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This solution is written using index notation, \
|
||||
but the class doesn't need to know what it means yet.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
$S_4$ also has $S_2$ and the trivial group as subgroups. \
|
||||
How many instances of each does $S_4$ contain?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
$(ZZ_4, +)$ is also a subgroup of $S_4$. Find it! \
|
||||
How many subgroups of $ZZ_4$ are isomorphic to $S_4$?
|
||||
|
||||
#solution[
|
||||
A good hint is "look at generators."
|
||||
|
||||
#v(4mm)
|
||||
|
||||
There are four instances of $ZZ_4$ in $S_4$, each of which is generated by a 4-cycle of $S_n$. \
|
||||
(i.e, the group generated by $(1234)$ is isomorphic to $ZZ_4$)
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
@@ -1,536 +0,0 @@
|
||||
|
||||
\section{Cycle Notation}
|
||||
|
||||
\definition{Order}
|
||||
The \textit{order} of a permutation $f$ is the \textbf{smallest} positive $n$ so that $f^n(x) = x$ for all $x$. \par
|
||||
If we repeatedly apply a permutation with order $n$, we will get back to where we started after $n$ steps. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, consider $[2134]$. This permutation has order $2$, as we clearly see below:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\node (1c) at (0, -4.5) {1};
|
||||
\node (2c) at (1, -4.5) {2};
|
||||
\node (3c) at (2, -4.5) {3};
|
||||
\node (4c) at (3, -4.5) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\line{1b}{1c}
|
||||
\line{2b}{2c}
|
||||
\line{3b}{3c}
|
||||
\line{4b}{4c}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
Swapping the first two elements of a list twice changes nothing. \par
|
||||
Thus, $[2134]$ has an order of two.
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the order of $[2314]$? \par
|
||||
How about $[4321]$? \par
|
||||
\note[Note]{You shouldn't need to draw any strings to solve this problem.}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that all permutations (on a finite set) have a well-defined order. \par
|
||||
In other words, show that there is always an integer $n$ so that $f^n(x) = x$.
|
||||
|
||||
\vfill
|
||||
|
||||
\definition{Composition}<compdef>
|
||||
The \textit{composition} of two permutations $f$ and $g$ is the permutation $h(x) = f(g(x))$. \par
|
||||
We'll denote this as $fg$---that is, by simply writing the permutations we're composing next to each other.
|
||||
|
||||
\problem{}
|
||||
Show that function composition is associative. \par
|
||||
That is, show that $f(gh) = (fg)h$.
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What is $[1324][4321]$? \par
|
||||
How about $[321][213][231]$? \par
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
As you may have noticed, the square-bracket notation we've been using thus far is a bit unwieldy.
|
||||
Permutations are verbs---but we've been referring to them using a noun (namely, their output when
|
||||
applied to an ordered sequence of numbers). Our notation fails to capture the meaning of the
|
||||
underlying object.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Think about it: is the permutation $[1234]$ different than the permutation $[12345]$? \par
|
||||
Indeed, these permutations operate on different sets---but they are both the identity! \par
|
||||
What should we do if we want to talk about the identity on $\{1, 2, ..., 10\}$?
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
We need something better.
|
||||
|
||||
|
||||
|
||||
|
||||
\definition{Cycles}
|
||||
Any permutation is composed of a number of \textit{cycles}. \par
|
||||
|
||||
For example, consider the permutation $[2134]$, which consists of one two-cycle: $1 \to 2 \to 1$ \par
|
||||
\note[Note]{$3 \to 3$ and $4 \to 4$ are also cycles, but we'll ignore them. One-cycles aren't aren't interesting.}
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0, 1)$)
|
||||
-- ($(1) + (0, 1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
The permutation $[431265]$ is a bit more interesting---it contains two cycles: \par
|
||||
($1 \to 3 \to 2 \to 4 \to 1$ and $5 \to 6 \to 5$)
|
||||
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0,-1.5)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(6) + (0,-1)$)
|
||||
-- (6);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(6)
|
||||
-- ($(6) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
Another name we'll often use for two-cycles is \textit{transposition}. \par
|
||||
Any permutation that swaps two adjacent elements is called a transposition. \par
|
||||
|
||||
|
||||
\problem{}
|
||||
Find all cycles in $[5342761]$.
|
||||
|
||||
\begin{solution}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
\node (7) at (6, 0) {7};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,2)$)
|
||||
-- ($(7) + (0,2)$)
|
||||
-- (7);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(7)
|
||||
-- ($(7) + (0,-1.5)$)
|
||||
-- ($(5) + (0,-1.5)$)
|
||||
-- (5);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(5)
|
||||
-- ($(5) + (0,1.5)$)
|
||||
-- ($(1) + (0.5,1.5)$)
|
||||
-- ($(1) + (0.5,-1)$)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(2)
|
||||
-- ($(2) + (0,-1.5)$)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4)
|
||||
-- ($(4) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0.5,-1)$)
|
||||
-- ($(2) + (0.5,1)$)
|
||||
-- ($(2) + (0,1)$)
|
||||
-- (2);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What permutation (on five objects) is formed by the cycles $3 \to 5 \to 3$ and $1 \to 2 \to 4 \to 1$?
|
||||
|
||||
|
||||
\begin{solution}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0.5,-1.5)$)
|
||||
-- ($(1) + (0.5,1)$)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
|
||||
This is $[41523]$
|
||||
\end{center}
|
||||
\end{solution}
|
||||
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
\definition{Cycle Notation}
|
||||
We now have a solution to our problem of notation.
|
||||
Instead of referring to permutations using their output, we will refer to them using their \textit{cycles}.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, we'll write $[2134]$ as $(12)$, which denotes the cycle $1 \to 2 \to 1$:
|
||||
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0, 1)$)
|
||||
-- ($(1) + (0, 1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
|
||||
As another example, $[431265]$ is $(1324)(56)$ in cycle notation. \par
|
||||
Note that we write $[431265]$ as a \textit{composition} of two cycles: \par
|
||||
applying the permutation $[431265]$ is the same as applying $(1324)$, then applying $(56)$.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0,-1.5)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(6) + (0,-1)$)
|
||||
-- (6);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(6)
|
||||
-- ($(6) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
Any permutation $\sigma$ may be written as a product (i.e, composition) of disjoint cycles $\sigma_1\sigma_2...\sigma_k$. \par
|
||||
Make sure you believe this fact. If you don't, ask an instructor. \par
|
||||
Also, the identity $f(x) = x$ is written as $()$ in cycle notation.
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Convince yourself that disjoint cycles commute. \par
|
||||
That is, that $(1324)(56) = (56)(1324) = [431265]$ since $(1324)$ and $(56)$ do not overlap. \par
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}<insquare>
|
||||
Write the following in square-bracket notation.
|
||||
\begin{itemize}
|
||||
\item $(12)$ \tab~\tab on a set of 2 elements
|
||||
\item $(12)(435)$ \tab on a set of 5 elements
|
||||
\vspace{2mm}
|
||||
\item $(321)$ \tab~\tab on a set of 3 elements
|
||||
\item $(321)$ \tab~\tab on a set of 6 elements
|
||||
\vspace{2mm}
|
||||
\item $(1234)$ \tab on a set of 4 elements
|
||||
\item $(3412)$ \tab on a set of 4 elements
|
||||
\end{itemize}
|
||||
\note{
|
||||
Note that $(12)$ refers the \say{swap first two} permutation on a set of \textit{any} size. \\
|
||||
We can now use the same name for the same permutation on two different sets! \\
|
||||
}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Write the following in square-bracket notation.
|
||||
Be careful.
|
||||
\begin{itemize}
|
||||
\item $(13)(243)$ \tab on a set of 4 elements
|
||||
\item $(243)(13)$ \tab on a set of 4 elements
|
||||
\end{itemize}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Look at the last two permutations in \ref{insquare}, $(1234)$ and $(3412)$. \par
|
||||
These are \textit{identical}---they are the same cycle written in two different ways. \par
|
||||
List all other ways to write this cycle. \hint{There are two more.} \par
|
||||
\note{Also, note that the last two permutations in \ref{insquare} are the same.}
|
||||
|
||||
\pagebreak
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the inverse of $(12)$? \par
|
||||
How about $(123)$? And $(4231)$? \par
|
||||
\note{
|
||||
Note that again, we don't need to know how big our set is. \\
|
||||
The inverse of $(12)$ is the same in all sets.
|
||||
}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Say $\sigma$ is a permutation composed of disjoint cycles $\sigma_1\sigma_2...\sigma_k$. \par
|
||||
Say we know the order of all $\sigma_i$. What is the order of $\sigma$?
|
||||
|
||||
\begin{solution}
|
||||
$\text{lcm}\Bigl(\text{ord}(\sigma_1),~ \text{ord}(\sigma_2),~ ..., ~ \text{ord}(\sigma_k)\Bigr)$
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}<cycletrans>
|
||||
Show that any cycle $(123...n)$ is equal to the product $(12)(23)...(n-1, n)$.
|
||||
|
||||
\begin{solution}
|
||||
TODO
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Write $(7126453)$ as a product of transpositions. \par
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
\problem{}<simpletrans>
|
||||
Show that any permutation is a product of transpositions.
|
||||
|
||||
\begin{solution}
|
||||
Use \ref{cycletrans}.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any permutation is a product of transpositions of the form $(1, k)$. \par
|
||||
|
||||
\begin{solution}
|
||||
Use \ref{simpletrans} and rewrite each $(a, b)$ as $(1, a)(1, b)(1, a)$. \par
|
||||
Showing that $(a, b) = (1, a)(1, b)(1, a)$ is fairly easy.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
\begin{solution}
|
||||
This is the same as the $(1, a)(1, b)(1, a)$ case above, but we use $a + 1$
|
||||
as a \say{working slot} instead of $1$.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any permutation is a product of adjacent transpositions. \par
|
||||
(An \textit{adjacent transposition} swaps two adjacent elements, and thus looks like $(n, n+1)$)
|
||||
|
||||
\begin{solution}
|
||||
As before, we will use \ref{simpletrans} and rewrite the transpositions it produces in a form that fits the problem.
|
||||
We thus need to show that every transposition $(a, b)$ is a product of adjacent transpositions.
|
||||
|
||||
\vspace{8mm}
|
||||
|
||||
In the proof below, assume that $a < b$ and perform induction on $b - a$. \par
|
||||
|
||||
\textbf{Base Case:}\par
|
||||
If $b - a = 1$, we clearly see that $(a, b)$ is a product of adjacent. \par
|
||||
In fact, it \textit{is} an adjacent transposition.
|
||||
|
||||
\vspace{4mm}
|
||||
|
||||
\textbf{Induction:}\par
|
||||
Now, say $b - a = n + 1$. \par
|
||||
Assume that all $(a, b)$ where $b - a \leq n$ are products of adjacent transpositions.\par
|
||||
Note that $(a, b) = (a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
$(a, a+1)$ is an adjacent transposition, and $b - (a+1) = n$. \par
|
||||
Thus, $(a, b)$ is a product of adjacent transpositions.
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
@@ -1,165 +0,0 @@
|
||||
\section{Groups (review)}
|
||||
|
||||
\definition{}
|
||||
Before we continue, we must introduce a bit of notation:
|
||||
\begin{itemize}
|
||||
\item $S_n$ is the set of permutations on $n$ objects.
|
||||
\item $\mathbb{Z}_n$ is the set of integers mod $n$.
|
||||
|
||||
\item $\mathbb{Z}_n^\times$ is the set of integers mod $n$ with multiplicative inverses. \par
|
||||
In other words, it is the set of integers smaller than $n$ and coprime to $n$.\footnotemark{} \par
|
||||
For example, $\mathbb{Z}_{12}^\times = \{1, 5, 7, 11\}$.
|
||||
|
||||
\footnotetext{We proved this in another handout, but you may take it as fact here.}
|
||||
\end{itemize}
|
||||
|
||||
\problem{}
|
||||
What are the elements of $S_3$? \tab\hint{Use cycle notation}\par
|
||||
How about $\mathbb{Z}_{17}^\times$?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\definition{}
|
||||
A \textit{group} $(G, \ast)$ consists of a set $G$ and an operator $\ast$. \par
|
||||
Groups always have the following properties:
|
||||
|
||||
\begin{enumerate}
|
||||
\item $G$ is closed under $\ast$. In other words, $a, b \in G \implies a \ast b \in G$.
|
||||
\item $\ast$ is \textit{associative}: $(a \ast b) \ast c = a \ast (b \ast c)$ for all $a,b,c \in G$
|
||||
\item There is an \textit{identity} $e \in G$, so that $a \ast e = a \ast e = a$ for all $a \in G$.
|
||||
\item For any $a \in G$, there exists a $b \in G$ so that $a \ast b = b \ast a = e$. $b$ is called the \textit{inverse} of $a$. \par
|
||||
This element is written as $-a$ if our operator is addition and $a^{-1}$ otherwise.
|
||||
\end{enumerate}
|
||||
|
||||
Any pair $(G, \ast)$ that satisfies these properties is a group.
|
||||
|
||||
\problem{}
|
||||
Is $(\mathbb{Z}_5, +)$ a group? \par
|
||||
Is $(\mathbb{Z}_5, -)$ a group? \par
|
||||
\note[Note]{$+$ and $-$ refer to the usual operations in modular arithmetic.}
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the group with the fewest elements?
|
||||
|
||||
\begin{solution}
|
||||
Let $(G, \star)$ be our group, where $G = \{x\}$ and $\star$ is defined by $x \star x = x$
|
||||
|
||||
Verifying that the trivial group is a group is trivial.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that function composition is associative
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $S_n$ is a group under composition.
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Let $(G, \ast)$ be a group with finitely many elements, and let $a \in G$. \par
|
||||
Show that $\exists n \in \mathbb{Z}^+$ so that $a^n = e$ \par
|
||||
\hint{$a^n = a \ast a \ast ... \ast a$ repeated $n$ times.}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
The smallest such $n$ defines the \textit{order} of $g$.
|
||||
|
||||
\begin{examplesolution}
|
||||
We've already done a special case of this problem! \par
|
||||
Find it in this handout, then rewrite your proof for an arbitrary (finite) group.
|
||||
\end{examplesolution}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What is the order of 5 in $(\mathbb{Z}_{25}, +)$? \par
|
||||
What is the order of 2 in $(\mathbb{Z}_{17}^\times, \times)$? \par
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\definition{}<gendef>
|
||||
Let $G$ be a group, and let $g$ be an element of $G$. \par
|
||||
We say $g$ is a \textit{generator} if every other element of $G$ may be written as a power of $g$. \par
|
||||
|
||||
\problem{}
|
||||
Say the size of a group $G$ is $n$. \par
|
||||
If $g$ is a generator, what is its order? \par
|
||||
Provide a proof.
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Find the two generators in $(\mathbb{Z}, +)$ \par
|
||||
Then, find all generators of $(\mathbb{Z}_5, +)$
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
How many groups have only one generator?
|
||||
|
||||
\begin{solution}
|
||||
Only one: the trivial group. The inverse of a generator is also a generator!
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\definition{}
|
||||
Let $S$ be a subset of the elements in $G$. \par
|
||||
We say that $S$ \textit{generates} $G$ if every element of $G$ may be written as a product of elements in $S$. \par
|
||||
\note{Note that this is an extension of \ref{gendef}.}
|
||||
|
||||
\problem{}
|
||||
We've already found a few generating sets of $S_n$. What are they?
|
||||
|
||||
\begin{solution}
|
||||
The following sets generate $S_n$:
|
||||
\begin{itemize}
|
||||
\item All transpositions
|
||||
\item All transpositions of the form $(1, k)$
|
||||
\item All adjacent transpositions
|
||||
\end{itemize}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
The smallest generating set of $S_n$ consists of the transposition $(12)$ and the $n$-cycle $(1,2,...,n)$. \par
|
||||
The proof of this is a bonus problem later in the handout.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
@@ -1,163 +0,0 @@
|
||||
\section{Subgroups}
|
||||
|
||||
\problem{}<s2s3share>
|
||||
What elements do $S_2$ and $S_3$ share?
|
||||
\vspace{2cm}
|
||||
|
||||
|
||||
|
||||
Consider the sets $\{1, 2\}$ and $\{1,2,3\}$. Clearly, $\{1, 2\} \subset \{1, 2, 3\}$. \par
|
||||
Can we say something similar about $S_2$ and $S_3$?
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Looking at \ref{s2s3share}, we may want to say that $S_2 \subset S_3$ since every element of $S_2$ is in $S_3$. \par
|
||||
This however, isn't as interesting as it could be. Remember that $S_2$ and $S_3$ are \textit{groups}, not \textit{sets}: \par
|
||||
their elements come with structure, which the \say{subset} relation does not capture.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
To account for this, we'll define a similar relation: subgroups.
|
||||
|
||||
\definition{}
|
||||
Let $G$ and $G'$ be groups. We say $G'$ is a \textit{subgroup} of $G$ (and write $G' \subset G$) if the following are true:\par
|
||||
(Note that $x, y$ are elements of $G$, and $xy$ is multiplication in $G$)
|
||||
\begin{itemize}
|
||||
\item the set of elements in $G'$ is a subset of the set of elements in $G$.
|
||||
\item the identity of $G$ is in $G'$
|
||||
\item $x,y \in G' \implies xy \in G'$
|
||||
\item $x \in G' \implies x^{-1} \in G'$
|
||||
\end{itemize}
|
||||
|
||||
The above definition may look faily scary, but the idea behind a subgroup is simple. \par
|
||||
Consider $S_3$ and $S_4$, the groups of permutations of $3$ and $4$ elements. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Say we have a set of four elements and only look at the first three. \par
|
||||
$S_3$ fully describes all the ways we can arrange those three elements:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (3b) at (1, -2) {3};
|
||||
\node (1b) at (2, -2) {1};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4a)
|
||||
-- ($(4a) + (0, -1)$)
|
||||
-- ($(4b) + (0,1)$)
|
||||
-- (4b);
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
|
||||
\node[fill=white,draw=oblue,line width=0.3mm] at (1, -0.75) {$S_3$};
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $S_3$ is a subgroup of $S_4$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
\definition{}
|
||||
Let $G$ and $H$ be groups. We say that $G$ and $H$ are \textit{isomorphic} (and write $A \simeq B$) \par
|
||||
if there is a bijection $f: G \to H$ with the following properties:
|
||||
\begin{itemize}
|
||||
\item $f(e_G) = e_H$, where $e_G$ is the identity in $G$
|
||||
\item $f(x^{-1}) = f(x)^{-1}$ for all $x$ in $G$
|
||||
\item $f(xy) = f(x)f(y)$ for all $x, y$ in $G$
|
||||
\end{itemize}
|
||||
|
||||
Intuitively, you can think of isomorphism as a form of equivalence. \par
|
||||
If two groups are isomorphic, they only differ by the names of their elements. \par
|
||||
The function $f$ above tells us how to map one set of labels to the other.
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $\mathbb{Z}_7^\times$ and $\mathbb{Z}_9^\times$ are isomorphic.
|
||||
\hint{
|
||||
Build a bijection with the above properties. \\
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
}
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $\mathbb{Z}_{10}^\times$ and $\mathbb{Z}_5^\times$, and $\mathbb{Z}_4$ are isomorphic.
|
||||
\hint{
|
||||
Build a bijection with the above properties. \\
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that isomorphism is transitive. \par
|
||||
That is, if $A \simeq B$ and $B \simeq C$, then $A \simeq C$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
\problem{}<firstindex>
|
||||
How many subgroups of $S_4$ are isomorphic to $S_3$? \par
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
What are the orders of $S_3$ and $S_4$? \par
|
||||
How is this related to \ref{firstindex}?
|
||||
|
||||
\begin{solution}
|
||||
$|S_4| = |S_3| \times [S_4 : S_3]$
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
This solution is written using index notation, \par
|
||||
but the class doesn't need to know what it means yet.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
$S_4$ also has $S_2$ and the trivial group as subgroups. \par
|
||||
How many instances of each does $S_4$ contain?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
$(\mathbb{Z}_4, +)$ is also a subgroup of $S_4$. Find it! \par
|
||||
How many subgroups of $\mathbb{Z}_4$ are isomorphic to $S_4$?.
|
||||
|
||||
\begin{solution}
|
||||
A good hint is \say{look at generators.}
|
||||
|
||||
\vspace{4mm}
|
||||
|
||||
There are four instances of $\mathbb{Z}_4$ in $S_4$, each of which is generated by a 4-cycle of $S_n$. \par
|
||||
(i.e, the group generated by $(1234)$ is isomorphic to $\mathbb{Z}_4$)
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
|
||||
// Shorthand, we'll be using these a lot.
|
||||
@@ -7,35 +7,31 @@
|
||||
#let tm = sym.times.circle
|
||||
|
||||
#let graphgrid(inner_content) = {
|
||||
align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let x = 5.25
|
||||
align(center, box(inset: 3mm, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let x = 5.25
|
||||
|
||||
grid(
|
||||
(0, 0), (x, x), step: 0.75,
|
||||
stroke: luma(100) + 0.3mm
|
||||
)
|
||||
grid(
|
||||
(0, 0),
|
||||
(x, x),
|
||||
step: 0.75,
|
||||
stroke: luma(100) + 0.3mm,
|
||||
)
|
||||
|
||||
if (inner_content != none) {
|
||||
inner_content
|
||||
}
|
||||
if (inner_content != none) {
|
||||
inner_content
|
||||
}
|
||||
|
||||
mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
|
||||
mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)
|
||||
mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
|
||||
mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)
|
||||
|
||||
line(
|
||||
(0, x + 0.25),
|
||||
(0, 0),
|
||||
(x + 0.25, 0),
|
||||
stroke: 0.75mm + black,
|
||||
)
|
||||
}),
|
||||
),
|
||||
)
|
||||
line(
|
||||
(0, x + 0.25),
|
||||
(0, 0),
|
||||
(x + 0.25, 0),
|
||||
stroke: 0.75mm + black,
|
||||
)
|
||||
})))
|
||||
}
|
||||
|
||||
/// Adds extra padding to an equation.
|
||||
@@ -48,23 +44,16 @@
|
||||
/// Note that there are newlines between the $ and content,
|
||||
/// this gives us display math (which is what we want when using this macro)
|
||||
#let eqnbox(eqn) = {
|
||||
align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
eqn,
|
||||
),
|
||||
)
|
||||
align(center, box(
|
||||
inset: 3mm,
|
||||
eqn,
|
||||
))
|
||||
}
|
||||
|
||||
#let dotline(a, b) = {
|
||||
cetz.draw.line(
|
||||
a,
|
||||
b,
|
||||
stroke: (
|
||||
dash: "dashed",
|
||||
thickness: 0.5mm,
|
||||
paint: ored,
|
||||
),
|
||||
)
|
||||
cetz.draw.line(a, b, stroke: (
|
||||
dash: "dashed",
|
||||
thickness: 0.5mm,
|
||||
paint: ored,
|
||||
))
|
||||
}
|
||||
|
||||
@@ -26,9 +26,9 @@ $
|
||||
|
||||
#solution([
|
||||
- Is tropical addition commutative?\
|
||||
Yes, $min(min(x,y),z) = min(x,y,z) = min(x,min(y,z))$
|
||||
Yes, $min(min(x, y), z) = min(x, y, z) = min(x, min(y, z))$
|
||||
- Is tropical addition associative? \
|
||||
Yes, $min(x,y) = min(y,x)$
|
||||
Yes, $min(x, y) = min(y, x)$
|
||||
- Is there a tropical additive identity? \
|
||||
No. There is no $n$ where $x <= n$ for all real $x$
|
||||
])
|
||||
@@ -117,7 +117,7 @@ Do tropical multiplicative inverses always exist? \
|
||||
Is tropical multiplication distributive over addition? \
|
||||
#note([Does $x #tm (y #tp z) = x #tm y #tp x #tm z$?])
|
||||
|
||||
#solution([Yes, $x + min(y,z) = min(x+y, x+z)$])
|
||||
#solution([Yes, $x + min(y, z) = min(x+y, x+z)$])
|
||||
|
||||
#v(1fr)
|
||||
|
||||
@@ -134,14 +134,7 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header(
|
||||
[$#tp$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
[$#sym.infinity$],
|
||||
),
|
||||
table.header([$#tp$], [$1$], [$2$], [$3$], [$4$], [$#sym.infinity$]),
|
||||
|
||||
box(inset: 3pt, $1$), [], [], [], [], [],
|
||||
box(inset: 3pt, $2$), [], [], [], [], [],
|
||||
@@ -152,14 +145,7 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header(
|
||||
[$#tm$],
|
||||
[$0$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
),
|
||||
table.header([$#tm$], [$0$], [$1$], [$2$], [$3$], [$4$]),
|
||||
|
||||
box(inset: 3pt, $0$), [], [], [], [], [],
|
||||
box(inset: 3pt, $1$), [], [], [], [], [],
|
||||
@@ -178,14 +164,7 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header(
|
||||
[$#tp$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
[$#sym.infinity$],
|
||||
),
|
||||
table.header([$#tp$], [$1$], [$2$], [$3$], [$4$], [$#sym.infinity$]),
|
||||
|
||||
box(inset: 3pt, $1$),
|
||||
box(inset: 3pt, $1$),
|
||||
@@ -225,14 +204,7 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header(
|
||||
[$#tm$],
|
||||
[$0$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
),
|
||||
table.header([$#tm$], [$0$], [$1$], [$2$], [$3$], [$4$]),
|
||||
|
||||
box(inset: 3pt, $0$),
|
||||
box(inset: 3pt, $0$),
|
||||
@@ -281,10 +253,9 @@ Adjacent parenthesis imply tropical multiplication
|
||||
|
||||
#solution([
|
||||
$
|
||||
(x #tp 2)(x #tp 3)
|
||||
&= x^2 #tp 2x #tp 3x #tp (2 #tm 3) \
|
||||
&= x^2 #tp (2 #tp 3)x #tp (2 #tm 3) \
|
||||
&= x^2 #tp 2x #tp 5
|
||||
(x #tp 2)(x #tp 3) & = x^2 #tp 2x #tp 3x #tp (2 #tm 3) \
|
||||
& = x^2 #tp (2 #tp 3)x #tp (2 #tm 3) \
|
||||
& = x^2 #tp 2x #tp 5
|
||||
$
|
||||
|
||||
Also, $f(1) = 2$ and $f(4) = 5$.
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "../macros.typ": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Tropical Polynomials
|
||||
|
||||
#definition()
|
||||
A _polynomial_ is an expression formed by adding and multiplying numbers and a variable $x$. \
|
||||
Every polynomial can be written as
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 + c_1 x + c_2 x^2 + ... + c_n x^n
|
||||
$,
|
||||
),
|
||||
)
|
||||
#align(center, box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 + c_1 x + c_2 x^2 + ... + c_n x^n
|
||||
$,
|
||||
))
|
||||
for some nonnegative integer $n$ and coefficients $c_0, c_1, ..., c_n$. \
|
||||
The _degree_ of a polynomial is the largest $n$ for which $c_n$ is nonzero.
|
||||
|
||||
@@ -43,15 +40,12 @@ In this section, we will analyze tropical polynomials:
|
||||
#definition()
|
||||
A _tropical_ polynomial is a polynomial that uses tropical addition and multiplication. \
|
||||
In other words, it is an expression of the form
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 #tp (c_1 #tm x) #tp (c_2 #tm x^2) #tp ... #tp (c_n #tm x^n)
|
||||
$,
|
||||
),
|
||||
)
|
||||
#align(center, box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 #tp (c_1 #tm x) #tp (c_2 #tm x^2) #tp ... #tp (c_n #tm x^n)
|
||||
$,
|
||||
))
|
||||
where all exponents represent repeated tropical multiplication.
|
||||
|
||||
#pagebreak() // MARK: page
|
||||
@@ -66,7 +60,7 @@ Draw a graph of the tropical polynomial $f(x) = x^2 #tp 1x #tp 4$. \
|
||||
#if_no_solutions(graphgrid(none))
|
||||
|
||||
#solution([
|
||||
$f(x) = min(2x , 1+x, 4)$, which looks like:
|
||||
$f(x) = min(2x, 1+x, 4)$, which looks like:
|
||||
|
||||
#graphgrid({
|
||||
import cetz.draw: *
|
||||
@@ -90,15 +84,12 @@ Draw a graph of the tropical polynomial $f(x) = x^2 #tp 1x #tp 4$. \
|
||||
#problem()
|
||||
Now, factor $f(x) = x^2 #tp 1x #tp 4$ into two polynomials with degree 1. \
|
||||
In other words, find $r$ and $s$ so that
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
x^2 #tp 1x #tp 4 = (x #tp r)(x #tp s)
|
||||
$,
|
||||
),
|
||||
)
|
||||
#align(center, box(
|
||||
inset: 3mm,
|
||||
$
|
||||
x^2 #tp 1x #tp 4 = (x #tp r)(x #tp s)
|
||||
$,
|
||||
))
|
||||
|
||||
we will call $r$ and $s$ the _roots_ of $f$.
|
||||
|
||||
@@ -159,15 +150,19 @@ Find a factorization of $f$ in the form $a(x #tp r)(x#tp s)$.
|
||||
#solution([
|
||||
We (tropically) factor out $-2$ to get
|
||||
|
||||
#eqnbox($
|
||||
f(x) = -2(x^2 #tp 2x #tp 10)
|
||||
$)
|
||||
#eqnbox(
|
||||
$
|
||||
f(x) = -2(x^2 #tp 2x #tp 10)
|
||||
$,
|
||||
)
|
||||
|
||||
|
||||
by the same process as the previous problem, we get
|
||||
#eqnbox($
|
||||
f(x) = -2(x #tp 2)(x #tp 8)
|
||||
$)
|
||||
#eqnbox(
|
||||
$
|
||||
f(x) = -2(x #tp 2)(x #tp 8)
|
||||
$,
|
||||
)
|
||||
])
|
||||
|
||||
#v(1fr)
|
||||
@@ -236,11 +231,11 @@ Graph $f(x) = 1x^2 #tp 3x #tp 5$.
|
||||
#problem()
|
||||
Find a factorization of $f$ in the form $a(x #tp r)(x#tp s)$.
|
||||
|
||||
#solution(
|
||||
eqnbox($
|
||||
#solution(eqnbox(
|
||||
$
|
||||
f(x) = 1x^2 #tp 3 x #tp 5 = 1(x #tp 2)^2
|
||||
$),
|
||||
)
|
||||
$,
|
||||
))
|
||||
|
||||
#v(1fr)
|
||||
|
||||
@@ -263,23 +258,21 @@ Graph $f(x) = 2x^2 #tp 4x #tp 4$.
|
||||
|
||||
#if_no_solutions(graphgrid(none))
|
||||
|
||||
#solution(
|
||||
graphgrid({
|
||||
import cetz.draw: *
|
||||
let step = 0.75
|
||||
#solution(graphgrid({
|
||||
import cetz.draw: *
|
||||
let step = 0.75
|
||||
|
||||
dotline((0, 2 * step), (3 * step, 8 * step))
|
||||
dotline((0, 4 * step), (5 * step, 8 * step))
|
||||
dotline((0, 4 * step), (8 * step, 4 * step))
|
||||
dotline((0, 2 * step), (3 * step, 8 * step))
|
||||
dotline((0, 4 * step), (5 * step, 8 * step))
|
||||
dotline((0, 4 * step), (8 * step, 4 * step))
|
||||
|
||||
line(
|
||||
(0, 2 * step),
|
||||
(1 * step, 4 * step),
|
||||
(7.5 * step, 4 * step),
|
||||
stroke: 1mm + oblue,
|
||||
)
|
||||
}),
|
||||
)
|
||||
line(
|
||||
(0, 2 * step),
|
||||
(1 * step, 4 * step),
|
||||
(7.5 * step, 4 * step),
|
||||
stroke: 1mm + oblue,
|
||||
)
|
||||
}))
|
||||
|
||||
|
||||
#problem()
|
||||
@@ -325,7 +318,7 @@ Find a formula for $B$ in terms of $a$, $b$, and $c$. \
|
||||
|
||||
#solution([
|
||||
If we want to factor $a(x^2 #tp (b-a)x #tp (c-a))$, we need to find $r$ and $s$ so that
|
||||
- $min(r,s) = b-a$, and
|
||||
- $min(r, s) = b-a$, and
|
||||
- $r + s = c - a$
|
||||
|
||||
#v(2mm)
|
||||
@@ -341,9 +334,8 @@ Find a formula for $B$ in terms of $a$, $b$, and $c$. \
|
||||
|
||||
*Case 2:* If $b > (a + c #sym.div) 2$, then
|
||||
$
|
||||
accent(f, macron)(x)
|
||||
&= a x^2 #tp ((a+c)/2)x #tp c \
|
||||
&= a(x #tp (c-a)/2)^2
|
||||
accent(f, macron)(x) & = a x^2 #tp ((a+c)/2)x #tp c \
|
||||
& = a(x #tp (c-a)/2)^2
|
||||
$
|
||||
has the same graph as $f$, and thus $B = (a+c) #sym.div 2$
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "../macros.typ": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Tropical Cubic Polynomials
|
||||
|
||||
@@ -131,15 +131,12 @@ Using the last three problems, find formulas for $B$ and $C$ in terms of $a$, $b
|
||||
#problem()
|
||||
What are the roots of the following polynomial?
|
||||
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
3 x^6 #tp 4 x^5 #tp 2 x^4 #tp x^3 #tp x^2 #tp 4 x #tp 5
|
||||
$,
|
||||
),
|
||||
)
|
||||
#align(center, box(
|
||||
inset: 3mm,
|
||||
$
|
||||
3 x^6 #tp 4 x^5 #tp 2 x^4 #tp x^3 #tp x^2 #tp 4 x #tp 5
|
||||
$,
|
||||
))
|
||||
|
||||
#solution([
|
||||
We have
|
||||
@@ -169,9 +166,8 @@ Find a formula for each $C_i$ in terms of $c_0, c_1, ..., c_n$.
|
||||
|
||||
#solution([
|
||||
$
|
||||
A_j
|
||||
&= min_(l<=j<k)( (a_l - a_k) / (k-l) (k-j) + a_k ) \
|
||||
&= min_(l<=j<k)( a_l (k-j) / (k-l) + a_k (j-l) / (k-l) )
|
||||
A_j & = min_(l<=j<k)( (a_l - a_k) / (k-l) (k-j) + a_k ) \
|
||||
& = min_(l<=j<k)( a_l (k-j) / (k-l) + a_k (j-l) / (k-l) )
|
||||
$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Wallpaper Symmetries
|
||||
|
||||
@@ -12,7 +12,9 @@ There are four classes of Euclidean isometries:
|
||||
- reflections
|
||||
- rotations
|
||||
- glide reflections
|
||||
#note([We can prove there are no others, but this is beyond the scope of this handout.]) \
|
||||
#note(
|
||||
[We can prove there are no others, but this is beyond the scope of this handout.],
|
||||
) \
|
||||
A simple example of each isometry is shown below:
|
||||
|
||||
#let demo(c) = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Mirror Symmetry
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Rotational Symmetry
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#let pat(img, sol) = {
|
||||
problem()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= The Signature-Cost Theorem
|
||||
|
||||
@@ -7,23 +7,20 @@
|
||||
First, we'll associate a _cost_ to each type of symmetry in orbifold notation:
|
||||
|
||||
#v(4mm)
|
||||
#align(
|
||||
center,
|
||||
table(
|
||||
stroke: (1pt, 1pt),
|
||||
align: center,
|
||||
columns: (auto, auto, auto, auto),
|
||||
[*Symbol*], [*Cost*], [*Symbol*], [*Cost*],
|
||||
[#sym.circle.small], [2], [#sym.times or #sym.convolve], [1],
|
||||
[#sym.diamond.stroked.small`2`], [1/2], [#sym.convolve`2`], [1/4],
|
||||
[#sym.diamond.stroked.small`3`], [2/3], [#sym.convolve`3`], [1/3],
|
||||
[#sym.dots], [#sym.dots], [#sym.dots], [#sym.dots],
|
||||
[#sym.diamond.stroked.small`n`],
|
||||
[$(n-1) / n$],
|
||||
[#sym.convolve`n`],
|
||||
[$(n-1) / (2n)$],
|
||||
),
|
||||
)
|
||||
#align(center, table(
|
||||
stroke: (1pt, 1pt),
|
||||
align: center,
|
||||
columns: (auto, auto, auto, auto),
|
||||
[*Symbol*], [*Cost*], [*Symbol*], [*Cost*],
|
||||
[#sym.circle.small], [2], [#sym.times or #sym.convolve], [1],
|
||||
[#sym.diamond.stroked.small`2`], [1/2], [#sym.convolve`2`], [1/4],
|
||||
[#sym.diamond.stroked.small`3`], [2/3], [#sym.convolve`3`], [1/3],
|
||||
[#sym.dots], [#sym.dots], [#sym.dots], [#sym.dots],
|
||||
[#sym.diamond.stroked.small`n`],
|
||||
[$(n-1) / n$],
|
||||
[#sym.convolve`n`],
|
||||
[$(n-1) / (2n)$],
|
||||
))
|
||||
|
||||
|
||||
We then calculate the total "cost" of a signature by adding up the costs of each component.
|
||||
|
||||
@@ -331,7 +331,7 @@
|
||||
representing all four cubes. \\
|
||||
|
||||
\begin{center} \begin{small}
|
||||
\begin{tikzpicture} \label{pic:II_comfiguration}
|
||||
\begin{tikzpicture} \label{pic:II_configuration}
|
||||
\filldraw [blue] (0,5) -- (1,5) -- (1,6) --
|
||||
(0,6) -- (0,5);
|
||||
\draw [line width = 1.5pt] (0,5) --
|
||||
|
||||
@@ -46,10 +46,10 @@ Use two half adders to construct a full adder.
|
||||
|
||||
#solution([
|
||||
$
|
||||
s_1, c_1 &= "HA"(a, b) \
|
||||
s_2, c_2 &= "HA"(s_1, c_"in") \
|
||||
s_"out" &= s_2 \
|
||||
c_"out" &= "OR"(c_1, c_2)
|
||||
s_1, c_1 & = "HA"(a, b) \
|
||||
s_2, c_2 & = "HA"(s_1, c_"in") \
|
||||
s_"out" & = s_2 \
|
||||
c_"out" & = "OR"(c_1, c_2)
|
||||
$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Big-Tac-Toe],
|
||||
@@ -75,16 +75,13 @@ How does your strategy change? \
|
||||
#if extra_boards {
|
||||
pagebreak()
|
||||
|
||||
align(
|
||||
center,
|
||||
grid(
|
||||
stroke: none,
|
||||
align: center,
|
||||
columns: (1fr, 1fr),
|
||||
rows: (1fr, 1fr, 1fr),
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
),
|
||||
)
|
||||
align(center, grid(
|
||||
stroke: none,
|
||||
align: center,
|
||||
columns: (1fr, 1fr),
|
||||
rows: (1fr, 1fr, 1fr),
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
))
|
||||
}
|
||||
|
||||
50
src/Warm-Ups/Cosa Nostra/main.typ
Normal file
50
src/Warm-Ups/Cosa Nostra/main.typ
Normal file
@@ -0,0 +1,50 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Cosa Nostra],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
There are 36 gangsters in a certain district of Chicago.
|
||||
Some pairs of gangsters have feuds.
|
||||
|
||||
- Each gangster is part of at least one outfit, and no two outfits share the same members.
|
||||
- If two gangsters are both in one outfit, there is no feud between them.
|
||||
- A gangster that is not in a certain outfit must have a feud with at least one if its members.
|
||||
|
||||
What is the maximum number of outfits that can exist in this district?
|
||||
|
||||
|
||||
|
||||
#solution[
|
||||
*Definition:* Let the _authority_ of a gangster be the number of oufits they are a part of.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Lemma:* Say two gangsters have a feud. Label them $x$ and $y$ so that $#text(`authority`) (x) > #text(`authority`) (y)$. \
|
||||
Then, replacing $y$ with a clone of $x$ will strictly increase the number of outfits. \
|
||||
If $#text(`authority`) (x) = #text(`authority`) (y)$, replacing $y$ with $x$ will not change the number of outfits.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Proof:*
|
||||
Let $A$ be the set of outfits that $y$ is a part of, and $B$ its complement (that is, all outfits that $a$ is _not_ a part of). If we delete $y$...
|
||||
- all outfits in $B$ remain outfits.
|
||||
- some outfits in $A$ cease to be outfits (as they are no longer maximal)
|
||||
|
||||
Also, no new outfits are formed. If a new outfit $o$ contains any enemies of $y$, it existed previously and is a member of $B$. If $o$ contains no enemies of $y$, it must have contained $y$ prior to deletion, and is thus a member of $A$. Therefore, the number of outfits is reduced by at most `authority(y)` when $y$ is deleted.
|
||||
|
||||
If we add a clone of $x$ after deleting $y$ (this clone has a feud with $x$), All previous outfits remain outfits, and `authority(x)` new outfits are created.
|
||||
Therefore, replacing $y$ with a clone of $x$ strictly increases the number of outfits that exist.
|
||||
We thus conclude that in the maximal case, all pairs of feuding gangsters have equal authority.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Solution:* Consider an arbitrary gangster $g$. By the previous lemma, we can replace all gangsters $g$ has a feud with clones of itself. Repeat this for all gangsters, and we are left with groups of feuding gangsters who are friends with everyone outside their group. The total number of outfits is the product of the sizes of these groups.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
This problem is now equivalent to the "Partition Products" warm-up. We want the list of numbers whose sum is 36 and whose product is maximal. The solution is to form 12 groups of three gangsters for a total of $3^12$ outfits.
|
||||
]
|
||||
6
src/Warm-Ups/Cosa Nostra/meta.toml
Normal file
6
src/Warm-Ups/Cosa Nostra/meta.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
[metadata]
|
||||
title = "Cosa Nostra"
|
||||
|
||||
[publish]
|
||||
handout = true
|
||||
solutions = true
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
|
||||
#show: handout.with(
|
||||
@@ -43,61 +43,56 @@ Now, consider the set of six-sided dice below:
|
||||
- Die $E$: $0, 5, 5, 5, 5, 5$
|
||||
On average, which die beats each of the others? Draw a diagram.
|
||||
|
||||
#solution(
|
||||
align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
#solution(align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.8 // Scale
|
||||
let t = 13pt * s // text size
|
||||
let radius = 0.3 * s
|
||||
let s = 0.8 // Scale
|
||||
let t = 13pt * s // text size
|
||||
let radius = 0.3 * s
|
||||
|
||||
// Points
|
||||
let a = (-2 * s, 0.2 * s)
|
||||
let b = (0 * s, 2 * s)
|
||||
let c = (2 * s, 0.2 * s)
|
||||
let d = (1.2 * s, -2.1 * s)
|
||||
let e = (-1.2 * s, -2.1 * s)
|
||||
// Points
|
||||
let a = (-2 * s, 0.2 * s)
|
||||
let b = (0 * s, 2 * s)
|
||||
let c = (2 * s, 0.2 * s)
|
||||
let d = (1.2 * s, -2.1 * s)
|
||||
let e = (-1.2 * s, -2.1 * s)
|
||||
|
||||
set-style(
|
||||
stroke: (thickness: 0.6mm * s),
|
||||
mark: (
|
||||
end: (
|
||||
symbol: ">",
|
||||
fill: black,
|
||||
offset: radius + (0.025 * s),
|
||||
width: 1.2mm * s,
|
||||
length: 1.2mm * s,
|
||||
),
|
||||
),
|
||||
)
|
||||
set-style(
|
||||
stroke: (thickness: 0.6mm * s),
|
||||
mark: (
|
||||
end: (
|
||||
symbol: ">",
|
||||
fill: black,
|
||||
offset: radius + (0.025 * s),
|
||||
width: 1.2mm * s,
|
||||
length: 1.2mm * s,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
line(a, b)
|
||||
line(b, c)
|
||||
line(c, d)
|
||||
line(d, e)
|
||||
line(e, a)
|
||||
line(a, c)
|
||||
line(b, d)
|
||||
line(c, e)
|
||||
line(d, a)
|
||||
line(e, b)
|
||||
line(a, b)
|
||||
line(b, c)
|
||||
line(c, d)
|
||||
line(d, e)
|
||||
line(e, a)
|
||||
line(a, c)
|
||||
line(b, d)
|
||||
line(c, e)
|
||||
line(d, a)
|
||||
line(e, b)
|
||||
|
||||
circle(a, radius: radius, fill: oblue, stroke: none)
|
||||
circle(b, radius: radius, fill: oblue, stroke: none)
|
||||
circle(c, radius: radius, fill: oblue, stroke: none)
|
||||
circle(d, radius: radius, fill: oblue, stroke: none)
|
||||
circle(e, radius: radius, fill: oblue, stroke: none)
|
||||
circle(a, radius: radius, fill: oblue, stroke: none)
|
||||
circle(b, radius: radius, fill: oblue, stroke: none)
|
||||
circle(c, radius: radius, fill: oblue, stroke: none)
|
||||
circle(d, radius: radius, fill: oblue, stroke: none)
|
||||
circle(e, radius: radius, fill: oblue, stroke: none)
|
||||
|
||||
content(a, text(fill: white, size: t, [*A*]))
|
||||
content(b, text(fill: white, size: t, [*B*]))
|
||||
content(c, text(fill: white, size: t, [*C*]))
|
||||
content(d, text(fill: white, size: t, [*D*]))
|
||||
content(e, text(fill: white, size: t, [*E*]))
|
||||
}),
|
||||
),
|
||||
)
|
||||
content(a, text(fill: white, size: t, [*A*]))
|
||||
content(b, text(fill: white, size: t, [*B*]))
|
||||
content(c, text(fill: white, size: t, [*C*]))
|
||||
content(d, text(fill: white, size: t, [*D*]))
|
||||
content(e, text(fill: white, size: t, [*E*]))
|
||||
})))
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: What's an AST?],
|
||||
@@ -18,59 +18,56 @@ You may detach the string as you hang the painting, but it must be re-attached o
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 2.5
|
||||
#align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 2.5
|
||||
|
||||
|
||||
line(
|
||||
(0 * s, 1 * s),
|
||||
(2 * s, 1 * s),
|
||||
(2 * s, 0 * s),
|
||||
(0 * s, 0 * s),
|
||||
close: true,
|
||||
stroke: (thickness: 0.8mm),
|
||||
)
|
||||
line(
|
||||
(0 * s, 1 * s),
|
||||
(2 * s, 1 * s),
|
||||
(2 * s, 0 * s),
|
||||
(0 * s, 0 * s),
|
||||
close: true,
|
||||
stroke: (thickness: 0.8mm),
|
||||
)
|
||||
|
||||
line(
|
||||
(0.1 * s, 1 * s),
|
||||
(0.5 * s, 1.5 * s),
|
||||
(1.5 * s, 1.5 * s),
|
||||
(1.9 * s, 1 * s),
|
||||
stroke: (thickness: 0.5mm, dash: "dotted"),
|
||||
)
|
||||
line(
|
||||
(0.1 * s, 1 * s),
|
||||
(0.5 * s, 1.5 * s),
|
||||
(1.5 * s, 1.5 * s),
|
||||
(1.9 * s, 1 * s),
|
||||
stroke: (thickness: 0.5mm, dash: "dotted"),
|
||||
)
|
||||
|
||||
circle((0.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||
circle((1.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||
circle((0.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||
circle((1.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||
|
||||
line(
|
||||
(0.66 * s, 0.66 * s),
|
||||
(0.66 * s, 0.35 * s),
|
||||
(0.60 * s, 0.1 * s),
|
||||
)
|
||||
line(
|
||||
(0.66 * s, 0.66 * s),
|
||||
(0.66 * s, 0.35 * s),
|
||||
(0.60 * s, 0.1 * s),
|
||||
)
|
||||
|
||||
line(
|
||||
(0.72 * s, 0.1 * s),
|
||||
(0.66 * s, 0.35 * s),
|
||||
)
|
||||
line(
|
||||
(0.72 * s, 0.1 * s),
|
||||
(0.66 * s, 0.35 * s),
|
||||
)
|
||||
|
||||
line(
|
||||
(0.66 * s, 0.575 * s),
|
||||
(0.6 * s, 0.475 * s),
|
||||
(0.525 * s, 0.575 * s),
|
||||
)
|
||||
line(
|
||||
(0.66 * s, 0.575 * s),
|
||||
(0.6 * s, 0.475 * s),
|
||||
(0.525 * s, 0.575 * s),
|
||||
)
|
||||
|
||||
line(
|
||||
(0.66 * s, 0.575 * s),
|
||||
(0.72 * s, 0.475 * s),
|
||||
(0.795 * s, 0.575 * s),
|
||||
)
|
||||
line(
|
||||
(0.66 * s, 0.575 * s),
|
||||
(0.72 * s, 0.475 * s),
|
||||
(0.795 * s, 0.575 * s),
|
||||
)
|
||||
|
||||
circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white)
|
||||
}),
|
||||
)
|
||||
circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white)
|
||||
}))
|
||||
|
||||
#solution([
|
||||
Say we have a left nail and a right nail. The path of the string is as follows:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#problem()
|
||||
Take any positive integer $n$. \
|
||||
Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... a_k$ \
|
||||
Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... a_k$ \
|
||||
Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$
|
||||
|
||||
|
||||
@@ -17,7 +17,9 @@ Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$
|
||||
Of course, all $a_i$ should be greater than $1$. \
|
||||
Also, all $a_i$ should be smaller than four, since $x <= x(x-2)$ if $x >= 4$. \
|
||||
Thus, we're left with sequences that only contain 2 and 3. \
|
||||
#note([Note that two twos are the same as one four, but we exclude fours for simplicity.])
|
||||
#note(
|
||||
[Note that two twos are the same as one four, but we exclude fours for simplicity.],
|
||||
)
|
||||
|
||||
#v(2mm)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Passing Balls],
|
||||
@@ -78,32 +78,25 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
|
||||
let i = 1
|
||||
for p in pts {
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if i == 1 {
|
||||
ored
|
||||
} else if i == 2 {
|
||||
ogreen
|
||||
} else if i == 3 {
|
||||
oorange
|
||||
} else if i == 4 {
|
||||
oblue
|
||||
} else { white },
|
||||
)
|
||||
circle(p, radius: radius * s, fill: if i == 1 {
|
||||
ored
|
||||
} else if i == 2 {
|
||||
ogreen
|
||||
} else if i == 3 {
|
||||
oorange
|
||||
} else if i == 4 {
|
||||
oblue
|
||||
} else { white })
|
||||
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if i <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#i*],
|
||||
),
|
||||
)
|
||||
content(p, text(
|
||||
fill: if i <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#i*],
|
||||
))
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
@@ -118,32 +111,25 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||
|
||||
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if l == 1 {
|
||||
ored
|
||||
} else if l == 2 {
|
||||
ogreen
|
||||
} else if l == 3 {
|
||||
oorange
|
||||
} else if l == 4 {
|
||||
oblue
|
||||
} else { white },
|
||||
)
|
||||
circle(p, radius: radius * s, fill: if l == 1 {
|
||||
ored
|
||||
} else if l == 2 {
|
||||
ogreen
|
||||
} else if l == 3 {
|
||||
oorange
|
||||
} else if l == 4 {
|
||||
oblue
|
||||
} else { white })
|
||||
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
),
|
||||
)
|
||||
content(p, text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
))
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
@@ -158,32 +144,25 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||
|
||||
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if l == 1 {
|
||||
oblue
|
||||
} else if l == 2 {
|
||||
oorange
|
||||
} else if l == 3 {
|
||||
ored
|
||||
} else if l == 4 {
|
||||
ogreen
|
||||
} else { white },
|
||||
)
|
||||
circle(p, radius: radius * s, fill: if l == 1 {
|
||||
oblue
|
||||
} else if l == 2 {
|
||||
oorange
|
||||
} else if l == 3 {
|
||||
ored
|
||||
} else if l == 4 {
|
||||
ogreen
|
||||
} else { white })
|
||||
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
),
|
||||
)
|
||||
content(p, text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
black
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
))
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: What's an AST?],
|
||||
@@ -24,51 +24,48 @@ respecting the order of operations $[and, times, div, +, -]$.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
#align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
// spell:off
|
||||
content((0, 0), $+$, name: "r")
|
||||
content((-0.5, -1), $3$, name: "a")
|
||||
content((0.5, -1), $div$, name: "b")
|
||||
content((-0.3, -2), $times$, name: "ba")
|
||||
content((1.3, -2), $and$, name: "bb")
|
||||
content((-0.8, -3), $9$, name: "baa")
|
||||
content((0.2, -3), $8$, name: "bab")
|
||||
content((0.8, -3), $5$, name: "bba")
|
||||
content((1.8, -3), $6$, name: "bbb")
|
||||
// spell:on
|
||||
// spell:off
|
||||
content((0, 0), $+$, name: "r")
|
||||
content((-0.5, -1), $3$, name: "a")
|
||||
content((0.5, -1), $div$, name: "b")
|
||||
content((-0.3, -2), $times$, name: "ba")
|
||||
content((1.3, -2), $and$, name: "bb")
|
||||
content((-0.8, -3), $9$, name: "baa")
|
||||
content((0.2, -3), $8$, name: "bab")
|
||||
content((0.8, -3), $5$, name: "bba")
|
||||
content((1.8, -3), $6$, name: "bbb")
|
||||
// spell:on
|
||||
|
||||
// Zero-sized arrows are a hack for offset.
|
||||
set-style(
|
||||
stroke: (thickness: 0.3mm),
|
||||
mark: (
|
||||
start: (
|
||||
symbol: "|",
|
||||
offset: 0.25,
|
||||
width: 0mm,
|
||||
length: 0mm,
|
||||
),
|
||||
end: (
|
||||
symbol: "|",
|
||||
offset: 0.25,
|
||||
width: 0mm,
|
||||
length: 0mm,
|
||||
),
|
||||
// Zero-sized arrows are a hack for offset.
|
||||
set-style(
|
||||
stroke: (thickness: 0.3mm),
|
||||
mark: (
|
||||
start: (
|
||||
symbol: "|",
|
||||
offset: 0.25,
|
||||
width: 0mm,
|
||||
length: 0mm,
|
||||
),
|
||||
)
|
||||
end: (
|
||||
symbol: "|",
|
||||
offset: 0.25,
|
||||
width: 0mm,
|
||||
length: 0mm,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
// spell:off
|
||||
line("r", "a")
|
||||
line("r", "b")
|
||||
line("b", "ba")
|
||||
line("b", "bb")
|
||||
line("ba", "baa")
|
||||
line("ba", "bab")
|
||||
line("bb", "bba")
|
||||
line("bb", "bbb")
|
||||
// spell:on
|
||||
}),
|
||||
)
|
||||
// spell:off
|
||||
line("r", "a")
|
||||
line("r", "b")
|
||||
line("b", "ba")
|
||||
line("b", "bb")
|
||||
line("ba", "baa")
|
||||
line("ba", "bab")
|
||||
line("bb", "bba")
|
||||
line("bb", "bbb")
|
||||
// spell:on
|
||||
}))
|
||||
|
||||
@@ -1,24 +1,21 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Wild Tic-Tac-Toe],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
#let ttt = align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.7 // scale
|
||||
#let ttt = align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.7 // scale
|
||||
|
||||
set-style(stroke: (thickness: 0.5mm * s))
|
||||
line((-1 * s, 3 * s), (-1 * s, -3 * s))
|
||||
line((1 * s, 3 * s), (1 * s, -3 * s))
|
||||
line((3 * s, -1 * s), (-3 * s, -1 * s))
|
||||
line((3 * s, 1 * s), (-3 * s, 1 * s))
|
||||
}),
|
||||
)
|
||||
set-style(stroke: (thickness: 0.5mm * s))
|
||||
line((-1 * s, 3 * s), (-1 * s, -3 * s))
|
||||
line((1 * s, 3 * s), (1 * s, -3 * s))
|
||||
line((3 * s, -1 * s), (-3 * s, -1 * s))
|
||||
line((3 * s, 1 * s), (-3 * s, 1 * s))
|
||||
}))
|
||||
|
||||
|
||||
#problem()
|
||||
|
||||
Reference in New Issue
Block a user