Add concept of "verified" to statements/theorems.

finite-set-exercises
Joshua Potter 2023-05-10 10:45:42 -06:00
parent 123bdbdc20
commit 5256c4e81a
7 changed files with 171 additions and 119 deletions

View File

@ -1,9 +1,9 @@
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{mathrsfs}
\input{../../preamble}
\graphicspath{{./images/}}
\newcommand{\larea}[2]{\lean{../..}{Common/Real/Geometry/Area}{#1}{#2}}
@ -11,16 +11,18 @@
\begin{document}
\header{Exercises 1.7}{Tom M. Apostol}
The properties of area in this set of exercises are to be deduced from the
axioms for area stated in the foregoing section.
\section{Exercise 1}%
\label{sec:exercise-1}
\section*{Exercise 1}%
\hyperlabel{sec:exercise-1}%
Prove that each of the following sets is measurable and has zero area:
\subsection{Exercise 1a}%
\label{sub:exercise-1a}
\subsection*{\proceeding{Exercise 1a}}%
\hyperlabel{sub:exercise-1a}%
A set consisting of a single point.
@ -36,8 +38,8 @@ A set consisting of a single point.
\end{proof}
\subsection{Exercise 1b}%
\label{sub:exercise-1b}
\subsection*{\proceeding{Exercise 1b}}%
\hyperlabel{sub:exercise-1b}%
A set consisting of a finite number of points in a plane.
@ -50,7 +52,7 @@ A set consisting of a finite number of points in a plane.
\paragraph{Base Case}%
Consider a set $S$ consisting of a single point in a plane.
By \eqref{sub:exercise-1a}, $S$ is measurable with area $0$.
By \nameref{sub:exercise-1a}, $S$ is measurable with area $0$.
Thus $P(1)$ holds.
\paragraph{Induction Step}%
@ -62,7 +64,7 @@ A set consisting of a finite number of points in a plane.
Denote the remaining set of points as $S_k$.
By construction, $S_{k+1} = S_k \cup T$.
By the induction hypothesis, $S_k$ is measurable with area $0$.
By \eqref{sub:exercise-1a}, $T$ is measurable with area $0$.
By \nameref{sub:exercise-1a}, $T$ is measurable with area $0$.
By the \larea{Additive-Property}{Additive Property}, $S_k \cup T$ is
measurable, $S_k \cap T$ is measurable, and
\begin{align}
@ -82,7 +84,7 @@ A set consisting of a finite number of points in a plane.
$S_k \cap T \neq \emptyset$.
Since $T$ consists of a single point, $S_k \cap T = T$.
By \eqref{sub:exercise-1a}, $a(S_k \cap T) = a(T) = 0$.
By \nameref{sub:exercise-1a}, $a(S_k \cap T) = a(T) = 0$.
\vspace{8pt}
\noindent
@ -95,8 +97,8 @@ A set consisting of a finite number of points in a plane.
\end{proof}
\subsection{Exercise 1c}%
\label{sub:exercise-1c}
\subsection*{\proceeding{Exercise 1c}}%
\hyperlabel{sub:exercise-1c}%
The union of a finite collection of line segments in a plane.
@ -158,8 +160,8 @@ The union of a finite collection of line segments in a plane.
\end{proof}
\section{Exercise 2}%
\label{sec:exercise-2}
\section*{\unverified{Exercise 2}}%
\hyperlabel{sec:exercise-2}%
Every right triangular region is measurable because it can be obtained as the
intersection of two rectangles.
@ -209,8 +211,8 @@ Prove that every triangular region is measurable and that its area is one half
\end{proof}
\section{Exercise 3}%
\label{sec:exercise-3}
\section*{\unverified{Exercise 3}}%
\hyperlabel{sec:exercise-3}%
Prove that every trapezoid and every parallelogram is measurable and derive the
usual formulas for their areas.
@ -232,7 +234,7 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
Then $S$ is the union of non-overlapping rectangle $R$ of width $b_1$ and
height $h$ with right triangle $T$ of base $b_2 - b_1$ and height $h$.
By \larea{Choice-of-Scale}{Choice of Scale}, $R$ is measurable.
By \eqref{sec:exercise-2}, $T$ is measurable.
By \nameref{sec:exercise-2}, $T$ is measurable.
By the \larea{Additive-Property}{Additive Property}, $R \cup T$ and $R \cap T$
are both measurable and
\begin{align*}
@ -241,7 +243,8 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
& = a(R) + a(T) - a(R \cap T) \\
& = a(R) + a(T) & \text{by construction} \\
& = b_1h + a(T) & \text{Choice of Scale} \\
& = b_1h + \frac{1}{2}(b_2 - b_1)h & \eqref{sec:exercise-2} \\
& = b_1h + \frac{1}{2}(b_2 - b_1)h
& \text{\nameref{sec:exercise-2}} \\
& = \frac{b_1 + b_2}{2}h.
\end{align*}
@ -251,7 +254,7 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
Then $S$ is the union of non-overlapping triangle $T$ and right trapezoid $R$.
Let $c$ denote the length of base $T$.
Then $R$ has longer base edge of length $b_2 - c$.
By \eqref{sec:exercise-2}, $T$ is measurable.
By \nameref{sec:exercise-2}, $T$ is measurable.
By Case 1, $R$ is measurable.
By the \larea{Additive-Property}{Additive Property}, $R \cup T$ and $R \cap T$
are both measurable and
@ -259,7 +262,7 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
a(S)
& = a(T) + a(R) - a(R \cap T) \\
& = a(T) + a(R) & \text{by construction} \\
& = \frac{1}{2}ch + a(R) & \eqref{sec:exercise-2} \\
& = \frac{1}{2}ch + a(R) & \text{\nameref{sec:exercise-2}} \\
& = \frac{1}{2}ch + \frac{b_1 + b_2 - c}{2}h & \text{Case 1} \\
& = \frac{b_1 + b_2}{2}h.
\end{align*}
@ -291,9 +294,7 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
These cases are exhaustive and in agreement with one another.
Thus $S$ is measurable and $$a(S) = \frac{b_1 + b_2}{2}h.$$
\vspace{4pt}
\hrule
\vspace{10pt}
\divider
Let $P$ be a parallelogram with base $b$ and height $h$.
Then $P$ is the union of non-overlapping triangle $T$ and right trapezoid $R$.
@ -317,15 +318,15 @@ Prove that every trapezoid and every parallelogram is measurable and derive the
\end{proof}
\section{Exercise 4}%
\label{sec:exercise-4}
\section*{Exercise 4}%
\hyperlabel{sec:exercise-4}%
Let $P$ be a polygon whose vertices are lattice points.
The area of $P$ is $I + \frac{1}{2}B - 1$, where $I$ denotes the number of
lattice points inside the polygon and $B$ denotes the number on the boundary.
\subsection{Exercise 4a}%
\label{sub:exercise-4a}
\subsection*{\unverified{Exercise 4a}}%
\hyperlabel{sub:exercise-4a}%
Prove that the formula is valid for rectangles with sides parallel to the
coordinate axes.
@ -353,8 +354,8 @@ Prove that the formula is valid for rectangles with sides parallel to the
\end{proof}
\subsection{Exercise 4b}%
\label{sub:exercise-4b}
\subsection*{\unverified{Exercise 4b}}%
\hyperlabel{sub:exercise-4b}%
Prove that the formula is valid for right triangles and parallelograms.
@ -396,19 +397,19 @@ Prove that the formula is valid for right triangles and parallelograms.
& \eqref{sub:exercise-4b-eq1} \\
& = \frac{1}{2}\left[ I_R + \frac{1}{2}B_R - 1 \right] \\
& = \frac{1}{2}\left[ (w - 1)(h - 1) + \frac{1}{2}(2(w + h)) - 1 \right]
& \eqref{sub:exercise-4a} \\
& \text{\nameref{sub:exercise-4a}} \\
& = \frac{1}{2}\left[ (w - 1)(h - 1) + w + h - 1 \right] \\
& = \frac{1}{2}\left[ wh - w - h + 1 + w + h - 1 \right] \\
& = \frac{wh}{2}.
\end{align*}
We do not prove this formula is valid for parallelograms here.
Instead, refer to \eqref{sub:exercise-4c} below.
Instead, refer to \nameref{sub:exercise-4c} below.
\end{proof}
\subsection{Exercise 4c}%
\label{sub:exercise-4c}
\subsection*{\unverified{Exercise 4c}}%
\hyperlabel{sub:exercise-4c}%
Use induction on the number of edges to construct a proof for general polygons.
@ -421,7 +422,7 @@ Use induction on the number of edges to construct a proof for general polygons.
\paragraph{Base Case}%
A $3$-polygon is a triangle.
By \eqref{sub:exercise-4b}, the lattice point area formula holds.
By \nameref{sub:exercise-4b}, the lattice point area formula holds.
Thus $P(3)$ holds.
\paragraph{Induction Step}%
@ -473,8 +474,8 @@ Use induction on the number of edges to construct a proof for general polygons.
\end{proof}
\section{Exercise 5}%
\label{sec:exercise-5}
\section*{\unverified{Exercise 5}}%
\hyperlabel{sec:exercise-5}%
Prove that a triangle whose vertices are lattice points cannot be equilateral.
@ -487,7 +488,7 @@ ways, using Exercises 2 and 4.]
Let $T$ be an equilateral triangle whose vertices are lattice points.
Assume each side of $T$ has length $a$.
Then $T$ has height $h = (a\sqrt{3}) / 2$.
By \eqref{sec:exercise-2},
By \nameref{sec:exercise-2},
\begin{equation}
\label{sub:exercise-5-eq1}
\tag{5.1}
@ -495,7 +496,7 @@ ways, using Exercises 2 and 4.]
\end{equation}
Let $I$ and $B$ denote the number of interior and boundary lattice points of
$T$ respectively.
By \eqref{sec:exercise-4},
By \nameref{sec:exercise-4},
\begin{equation}
\label{sub:exercise-5-eq2}
\tag{5.2}
@ -509,8 +510,8 @@ ways, using Exercises 2 and 4.]
\end{proof}
\section{Exercise 6}%
\label{sec:exercise-6}
\section*{\unverified{Exercise 6}}%
\hyperlabel{sec:exercise-6}%
Let $A = \{1, 2, 3, 4, 5\}$, and let $\mathscr{M}$ denote the class of all
subsets of $A$.

View File

@ -1,25 +1,24 @@
\documentclass{article}
\usepackage{amsmath}
\usepackage[shortlabels]{enumitem}
\usepackage{soul, xcolor}
\input{../../preamble}
\newcommand{\link}[1]{\lean{../..}
{Bookshelf/Apostol/Chapter\_1\_11}
{Apostol.Chapter\_1\_11.#1}
{Chapter\_1\_11.#1}
{Bookshelf/Apostol/Chapter\_1\_11} % Location
{Apostol.Chapter\_1\_11.#1} % Namespace
{Chapter\_1\_11.#1} % Presentation
}
\begin{document}
\section{Exercise 4}%
\label{sec:exercise-4}
\header{Exercises 1.11}{Tom M. Apostol}
\section*{Exercise 4}%
\hyperlabel{sec:exercise-4}%
Prove that the greatest-integer function has the properties indicated:
\subsection{Exercise 4a}%
\label{sub:exercise-4a}
\subsection*{\proceeding{Exercise 4a}}%
\hyperlabel{sub:exercise-4a}%
$\floor{x + n} = \floor{x} + n$ for every integer $n$.
@ -29,8 +28,8 @@ $\floor{x + n} = \floor{x} + n$ for every integer $n$.
\end{proof}
\subsection{Exercise 4b}%
\label{sub:exercise-4b}
\subsection*{\proceeding{Exercise 4b}}%
\hyperlabel{sub:exercise-4b}%
$\floor{-x} =
\begin{cases}
@ -49,8 +48,8 @@ $\floor{-x} =
\end{proof}
\subsection{Exercise 4c}%
\label{sub:exercise-4c}
\subsection*{\proceeding{Exercise 4c}}%
\hyperlabel{sub:exercise-4c}%
$\floor{x + y} = \floor{x} + \floor{y}$ or $\floor{x} + \floor{y} + 1$.
@ -60,8 +59,8 @@ $\floor{x + y} = \floor{x} + \floor{y}$ or $\floor{x} + \floor{y} + 1$.
\end{proof}
\subsection{Exercise 4d}%
\label{sub:exercise-4d}
\subsection*{\proceeding{Exercise 4d}}%
\hyperlabel{sub:exercise-4d}%
$\floor{2x} = \floor{x} + \floor{x + \frac{1}{2}}.$
@ -71,8 +70,8 @@ $\floor{2x} = \floor{x} + \floor{x + \frac{1}{2}}.$
\end{proof}
\subsection{Exercise 4e}%
\label{sub:exercise-4e}
\subsection*{\proceeding{Exercise 4e}}%
\hyperlabel{sub:exercise-4e}%
$\floor{3x} = \floor{x} + \floor{x + \frac{1}{3}} + \floor{x + \frac{2}{3}}.$
@ -82,24 +81,20 @@ $\floor{3x} = \floor{x} + \floor{x + \frac{1}{3}} + \floor{x + \frac{2}{3}}.$
\end{proof}
\section{Exercise 5}%
\label{sec:exercise-5}
\section*{\proceeding{Exercise 5}}%
\hyperlabel{sec:exercise-5}%
The formulas in Exercises 4(d) and 4(e) suggest a generalization for
$\floor{nx}$.
State and prove such a generalization.
\vspace{6pt}
\noindent
\hl{Note}: The stated generalization is known as "Hermite's Identity."
\note{The stated generalization is known as "Hermite's Identity."}
\begin{proof}
\link{exercise\_5}
\vspace{10pt}
\hrule
\vspace{10pt}
\divider
We prove that for all natural numbers $n$ and real numbers $x$, the following
identity holds:
@ -132,7 +127,7 @@ State and prove such a generalization.
& = \floor{n(\floor{x} + r)} \nonumber \\
& = \floor{n\floor{x} + nr} \nonumber \\
& = \floor{n\floor{x}} + \floor{nr}. \nonumber
& \eqref{sub:exercise-4a} \\
& \text{\nameref{sub:exercise-4a}} \\
& = \floor{n\floor{x}} + j \nonumber \\
& = n\floor{x} + j. \label{sec:exercise-5-eq3}
\end{align}
@ -175,8 +170,8 @@ State and prove such a generalization.
\end{proof}
\section{Exercise 6}%
\label{sec:exercise-6}
\section*{\unverified{Exercise 6}}%
\hyperlabel{sec:exercise-6}%
Recall that a lattice point $(x, y)$ in the plane is one whose coordinates are
integers.
@ -199,15 +194,15 @@ Prove that the number of lattice points in $S$ is equal to the sum
\end{proof}
\section{Exercise 7}%
\label{sec:exercise-7}
\section*{Exercise 7}%
\hyperlabel{sec:exercise-7}%
If $a$ and $b$ are positive integers with no common factor, we have the formula
$$\sum_{n=1}^{b-1} \floor{\frac{na}{b}} = \frac{(a - 1)(b - 1)}{2}.$$
When $b = 1$, the sum on the left is understood to be $0$.
\subsection{Exercise 7a}%
\label{sub:exercise-7a}
\subsection*{\unverified{Exercise 7a}}%
\hyperlabel{sub:exercise-7a}%
Derive this result by a geometric argument, counting lattice points in a right
triangle.
@ -218,8 +213,8 @@ Derive this result by a geometric argument, counting lattice points in a right
\end{proof}
\subsection{Exercise 7b}%
\label{sub:exercise-7b}
\subsection*{\proceeding{Exercise 7b}}%
\hyperlabel{sub:exercise-7b}%
Derive the result analytically as follows:
By changing the index of summation, note that
@ -232,8 +227,8 @@ Now apply Exercises 4(a) and (b) to the bracket on the right.
\end{proof}
\section{Exercise 8}%
\label{sec:exercise-8}
\section*{\unverified{Exercise 8}}%
\hyperlabel{sec:exercise-8}%
Let $S$ be a set of points on the real line.
The \textit{characteristic function} of $S$ is, by definition, the function

View File

@ -1,5 +1,4 @@
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\input{../../preamble}
@ -11,8 +10,10 @@
\begin{document}
\section*{Theorem I.27}%
\label{sec:theorem-i.27}
\header{A Set of Axioms for the Real-Number System}{Tom M. Apostol}
\section*{\proceeding{Theorem I.27}}%
\hyperlabel{sec:theorem-i.27}%
Every nonempty set $S$ that is bounded below has a greatest lower bound; that
is, there is a real number $L$ such that $L = \inf{S}$.
@ -23,8 +24,8 @@ is, there is a real number $L$ such that $L = \inf{S}$.
\end{proof}
\section*{Theorem I.29}%
\label{sec:theorem-i.29}
\section*{\proceeding{Theorem I.29}}%
\hyperlabel{sec:theorem-i.29}
For every real $x$ there exists a positive integer $n$ such that $n > x$.
@ -34,20 +35,22 @@ For every real $x$ there exists a positive integer $n$ such that $n > x$.
\end{proof}
\section*{Theorem I.30 (Archimedean Property of the Reals)}%
\label{sec:theorem-i.30}
\section*{\proceeding{Theorem I.30}}%
\hyperlabel{sec:theorem-i.30}%
If $x > 0$ and if $y$ is an arbitrary real number, there exists a positive
integer $n$ such that $nx > y$.
\note{This is known as the "Archimedean Property of the Reals."}
\begin{proof}
\link{exists\_pnat\_mul\_self\_geq\_of\_pos}
\end{proof}
\section*{Theorem I.31}%
\label{sec:theorem-i.31}
\section*{\proceeding{Theorem I.31}}%
\hyperlabel{sec:theorem-i.31}%
If three real numbers $a$, $x$, and $y$ satisfy the inequalities
$$a \leq x \leq a + \frac{y}{n}$$
@ -59,8 +62,8 @@ for every integer $n \geq 1$, then $x = a$.
\end{proof}
\section*{Theorem I.32}%
\label{sec:theorem-i.32}
\section*{\proceeding{Theorem I.32}}%
\hyperlabel{sec:theorem-i.32}%
Let $h$ be a given positive number and let $S$ be a set of real numbers.
\begin{enumerate}[(a)]
@ -81,8 +84,8 @@ Let $h$ be a given positive number and let $S$ be a set of real numbers.
\end{proof}
\section*{Theorem I.33 (Additive Property)}%
\label{sec:theorem-i.33}
\section*{\proceeding{Theorem I.33}}%
\hyperlabel{sec:theorem-i.33}%
Given nonempty subsets $A$ and $B$ of $\mathbb{R}$, let $C$ denote the set
$$C = \{a + b : a \in A, b \in B\}.$$
@ -94,6 +97,8 @@ $$C = \{a + b : a \in A, b \in B\}.$$
$$\inf{C} = \inf{A} + \inf{B}.$$
\end{enumerate}
\note{This is known as the "Additive Property."}
\begin{proof}
\ % Force space prior to *Proof.*
@ -105,8 +110,8 @@ $$C = \{a + b : a \in A, b \in B\}.$$
\end{proof}
\section*{Theorem I.34}%
\label{sec:theorem-i.34}
\section*{\proceeding{Theorem I.34}}%
\hyperlabel{sec:theorem-i.34}%
Given two nonempty subsets $S$ and $T$ of $\mathbb{R}$ such that
$$s \leq t$$

View File

@ -3,17 +3,20 @@
\input{../../preamble}
\newcommand{\link}[1]{\lean{../..}
{Bookshelf/Enderton/Chapter0}
{Enderton.Chapter0.#1}
{Chapter0.#1}
{Bookshelf/Enderton/Chapter0} % Location
{Enderton.Chapter0.#1} % Namespace
{Chapter0.#1} % Presentation
}
\begin{document}
\section*{Lemma 0A}%
\label{sec:lemma-0a}
\header{Useful Facts About Sets}{Herbert B. Enderton}
Assume that $\langle x_1, \ldots, x_m \rangle = \langle y_1, \ldots, y_m, \ldots, y_{m+k} \rangle$.
\section{\proceeding{Lemma 0A}}%
\hyperlabel{sec:lemma-0a}%
Assume that $\langle x_1, \ldots, x_m \rangle =
\langle y_1, \ldots, y_m, \ldots, y_{m+k} \rangle$.
Then $x_1 = \langle y_1, \ldots, y_{k+1} \rangle$.
\begin{proof}

View File

@ -3,15 +3,15 @@
\input{../../../preamble}
\newcommand{\link}[1]{\lean{../../..}
{Common/Real/Sequence/Arithmetic}
{Real.Arithmetic.#1}
{Real.Arithmetic.#1}
{Common/Real/Sequence/Arithmetic} % Location
{Real.Arithmetic.#1} % Namespace
{Real.Arithmetic.#1} % Presentation
}
\begin{document}
\section*{Sum of Arithmetic Series}%
\label{sec:sum-arithmetic-series}
\section{\proceeding{Sum of Arithmetic Series}}%
\hyperlabel{sec:sum-arithmetic-series}%
Let $(a_i)_{i \geq 0}$ be an arithmetic sequence with common difference $d$.
Then for some $n \in \mathbb{N}$,

View File

@ -3,15 +3,15 @@
\input{../../../preamble}
\newcommand{\link}[1]{\lean{../../..}
{Common/Real/Sequence/Geometric}
{Real.Geometric.#1}
{Real.Geometric.#1}
{Common/Real/Sequence/Geometric} % Location
{Real.Geometric.#1} % Namespace
{Real.Geometric.#1} % Presentation
}
\begin{document}
\section*{Sum of Geometric Series}%
\label{sec:sum-geometric-series}
\section{\proceeding{Sum of Geometric Series}}%
\hyperlabel{sec:sum-geometric-series}%
Let $(a_i)_{i \geq 0}$ be a geometric sequence with common ratio $r \neq 1$.
Then for some $n \in \mathbb{N}$,

View File

@ -1,15 +1,66 @@
\usepackage{amsfonts, amsthm}
\usepackage{amsfonts, amsmath, amsthm}
\usepackage[shortlabels]{enumitem}
\usepackage{environ}
\usepackage{fancybox}
\usepackage{fontawesome5}
\usepackage{hyperref}
\usepackage{mathrsfs}
\usepackage{soul, xcolor}
\newtheorem{theorem}{Theorem}
\newtheorem{xtheoreminner}{Theorem}
\newenvironment{xtheorem}[1]{%
\renewcommand\thextheoreminner{#1}%
\xtheoreminner
}{\endxtheoreminner}
% ========================================
% Linking
% ========================================
\hypersetup{colorlinks=true, urlcolor=blue}
% The first argument refers to a relative path upward from a current file to
% the root of the workspace (i.e. where this `preamble.tex` file is located).
% #1 - Path to root
% #2 - Location
% #3 - Namespace
% #4 - Presentation
\newcommand{\lean}[4]{\href{#1/#2.html\##3}{#4}}
\newcommand{\hyperlabel}[1]{%
\label{#1}%
\hypertarget{#1}{}}
% ========================================
% Environments
% ========================================
\newcommand{\divider}{%
\vspace{10pt}
\hrule
\vspace{10pt}}
\newcommand{\header}[2]{%
\title{#1}
\author{#2}
\date{}
\maketitle}
\newcommand{\note}[1]{%
\begin{center}
\doublebox{
\begin{minipage}{0.95\textwidth}
\vspace{2pt}
\hl{Note}: #1
\vspace{2pt}
\end{minipage}}
\end{center}}
% Status of a proof. A statement/theorem is verified if both a LaTeX proof
% and a corresponding Lean proof has been written. If a Lean proof is in
% progress, it's in a "proceeding" state. Otherwise it is unverified.
\DeclareRobustCommand{\verified}[1]{%
\texorpdfstring{\color{teal}#1\ \faCheckCircle}{#1}}
\DeclareRobustCommand{\proceeding}[1]{%
\texorpdfstring{\color{magenta}#1\ \faSpinner}{#1}}
\DeclareRobustCommand{\unverified}[1]{%
\texorpdfstring{\color{red}#1\ \faExclamationCircle}{#1}}
% ========================================
% Math
% ========================================
\newcommand{\abs}[1]{\left|#1\right|}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
@ -17,6 +68,3 @@
\newcommand{\ico}[2]{\left[#1, #2\right)}
\newcommand{\ioc}[2]{\left(#1, #2\right]}
\newcommand{\ioo}[2]{\left(#1, #2\right)}
% The first argument refers to a relative path upward from a current file to
% the root of the workspace (i.e. where this `preamble.tex` file is located).
\newcommand{\lean}[4]{\href{#1/#2.html\##3}{#4}}