2025-01-14 20:03:27 +00:00
|
|
|
#import "@preview/ctheorems:1.1.3": *
|
|
|
|
|
|
|
|
#let template(title: "", content) = {
|
|
|
|
set text(
|
|
|
|
font: "New Computer Modern Math",
|
|
|
|
size: 12pt,
|
|
|
|
)
|
|
|
|
set page(
|
|
|
|
"us-letter",
|
|
|
|
margin: 1in,
|
|
|
|
)
|
|
|
|
set par(
|
|
|
|
// leading: 1.3em,
|
2025-01-14 20:41:33 +00:00
|
|
|
// spacing: 2.4em,
|
|
|
|
// first-line-indent: 1.8em,
|
2025-01-14 20:03:27 +00:00
|
|
|
justify: true,
|
|
|
|
)
|
|
|
|
set heading(
|
|
|
|
numbering: "1.1",
|
|
|
|
)
|
|
|
|
|
|
|
|
show: thmrules
|
|
|
|
show link: body => underline(text(fill: olive, body))
|
|
|
|
|
|
|
|
// show heading: set block(above: 1.4em, below: 1em)
|
|
|
|
|
|
|
|
heading(outlined: false, numbering: none)[#title]
|
|
|
|
|
|
|
|
outline(indent: true, depth: 2)
|
|
|
|
|
|
|
|
page(
|
|
|
|
numbering: "1", // TODO: Remove
|
|
|
|
content,
|
|
|
|
)
|
|
|
|
|
|
|
|
heading(outlined: false, numbering: none)[References]
|
|
|
|
bibliography("main.bib", title: none)
|
|
|
|
}
|
|
|
|
|
2025-01-14 20:41:33 +00:00
|
|
|
#let TODO(c) = [#text(fill: red)[*TODO:* #c]]
|
2025-01-14 20:03:27 +00:00
|
|
|
#let agdaCubicalLink(s) = link("https://github.com/agda/cubical/blob/2f085f5675066c0e1708752587ae788c036ade87/" + s.split(".").join("/") + ".agda", raw(s))
|
|
|
|
|
|
|
|
// ctheorems
|
|
|
|
#let theorem = thmbox("theorem", "Theorem", fill: rgb("#eeffee"))
|
|
|
|
#let corollary = thmplain(
|
|
|
|
"corollary",
|
|
|
|
"Corollary",
|
|
|
|
base: "theorem",
|
|
|
|
titlefmt: strong
|
|
|
|
)
|
|
|
|
#let definition = thmbox("definition", "Definition")
|
|
|
|
#let axiom = thmplain("axiom", "Axiom")
|
|
|
|
#let example = thmplain("example", "Example").with(numbering: none)
|
|
|
|
#let proof = thmproof("proof", "Proof")
|
|
|
|
|
|
|
|
// Notation
|
|
|
|
#let emptyType = $bot$
|
2025-01-14 20:41:33 +00:00
|
|
|
#let arro(..a) = $#a.pos().join($op(arrow)$)$
|
2025-01-14 20:03:27 +00:00
|
|
|
#let judgCtx(a) = $#a sans("ctx")$
|
|
|
|
#let isTyp(a, b) = $#a op(:) #b$
|
|
|
|
#let judgTyp(G, a, A) = $#G tack.r isTyp(#a, #A)$
|
|
|
|
#let propEqSym = $equiv$
|
|
|
|
#let propEq(a, b) = $#a #propEqSym #b$
|
|
|
|
#let eqv(a, b) = $#a tilde.eq #b$
|
|
|
|
#let defEq(a, b) = $#a := #b$
|
|
|
|
#let judgEqTyp(G, a, b, A) = $#G tack.r isTyp(#a equiv #b, #A)$
|
|
|
|
#let imOf(f) = $sans("Im")(#f)$
|
2025-01-14 20:41:33 +00:00
|
|
|
#let kerOf(f) = $sans("Ker")(#f)$
|
2025-01-14 20:03:27 +00:00
|
|
|
#let ind = $sans("ind")$
|
2025-01-14 20:41:33 +00:00
|
|
|
#let ap = $sans("ap")$
|
2025-01-14 20:03:27 +00:00
|
|
|
#let ua = $sans("ua")$
|
|
|
|
#let uaEqv = $sans("uaEqv")$
|
|
|
|
#let isEquiv = $sans("isEquiv")$
|
|
|
|
#let typ = $sans("Type")$
|
|
|
|
#let abst(n, b) = $(#n) arrow.r.double #b$
|
|
|
|
#let typ0 = $typ_0$
|
|
|
|
|
|
|
|
#let unitType = link(<unitType>)[$bb(1)$]
|
|
|
|
#let tt = $sans("tt")$
|
|
|
|
|
2025-01-14 20:41:33 +00:00
|
|
|
#let boolType = link(<boolType>)[$bb(2)$]
|
|
|
|
#let bTrue = $sans("true")$
|
|
|
|
#let bFalse = $sans("false")$
|
2025-01-14 20:03:27 +00:00
|
|
|
|
2025-01-14 20:41:33 +00:00
|
|
|
#let S1 = link(<circle>)[$S^1$]
|
2025-01-14 20:03:27 +00:00
|
|
|
#let base = $sans("base")$
|
|
|
|
#let loop = $sans("loop")$
|
|
|
|
|
|
|
|
#let AbGroup = $sans("AbGroup")$
|
|
|
|
#let hom(a, b) = $#a arrow.r.double #b$
|
|
|
|
#let homComp(a, b) = $#a op(circle.small) #b$
|