Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian@jauslin.org>2020-02-12 22:58:32 -0500
committerIan Jauslin <ian@jauslin.org>2020-02-12 22:59:40 -0500
commit9c9f888bb4839dee7b34d18181d2cec50dd4b743 (patch)
tree1b3c4b9c1d88b43b45af21d8733c397f30de2e93
Initial commitv0.0
-rw-r--r--Carlen_Jauslin_Lieb_Loss_2020.tex294
-rw-r--r--Makefile34
-rw-r--r--README31
-rw-r--r--libs/ian.cls673
-rw-r--r--libs/iantheo.sty162
-rw-r--r--libs/point.sty107
6 files changed, 1301 insertions, 0 deletions
diff --git a/Carlen_Jauslin_Lieb_Loss_2020.tex b/Carlen_Jauslin_Lieb_Loss_2020.tex
new file mode 100644
index 0000000..34fe424
--- /dev/null
+++ b/Carlen_Jauslin_Lieb_Loss_2020.tex
@@ -0,0 +1,294 @@
+\documentclass[no_section_in_all]{ian}
+
+\begin{document}
+
+\hbox{}
+\hfil{\bf\LARGE
+On the convolution inequality $f\geqslant f\star f$\par
+}
+\vfill
+
+\hfil{\bf\large Eric Carlen}\par
+\hfil{\it Department of Mathematics, Rutgers University}\par
+\hfil{\color{blue}\tt\href{mailto:carlen@rutgers.edu}{carlen@rutgers.edu}}\par
+\vskip20pt
+
+\hfil{\bf\large Ian Jauslin}\par
+\hfil{\it Department of Physics, Princeton University}\par
+\hfil{\color{blue}\tt\href{mailto:ijauslin@princeton.edu}{ijauslin@princeton.edu}}\par
+\vskip20pt
+
+\hfil{\bf\large Elliott H. Lieb}\par
+\hfil{\it Departments of Mathematics and Physics, Princeton University}\par
+\hfil{\color{blue}\tt\href{mailto:lieb@princeton.edu}{lieb@princeton.edu}}\par
+\vskip20pt
+
+\hfil{\bf\large Michael Loss}\par
+\hfil{\it School of Mathematics, Georgia Institute of Technology}\par
+\hfil{\color{blue}\tt\href{mailto:loss@math.gatech.edu}{loss@math.gatech.edu}}\par
+
+\vfill
+
+
+\hfil {\bf Abstract}\par
+\medskip
+
+We consider the inequality $f \geqslant f\star f$ for real functions in $L^1(\mathbb R^d)$ where $f\star f$ denotes the convolution of $f$ with itself. We show that all such functions $f$ are non-negative,
+which is not the case for the same inequality in $L^p$ for any $1 < p \leqslant 2$, for which the convolution is defined. We also show that all solutions in $L^1(\mathbb R^d)$ satisfy $\int_{\mathbb R^d}f(x){\rm d}x \leqslant \textstyle\frac12$. Moreover, if
+$\int_{\mathbb R^d}f(x){\rm d}x = \textstyle\frac12$, then $f$ must decay fairly slowly: $\int_{\mathbb R^d}|x| f(x){\rm d}x = \infty$, and this is sharp since for all
+$r< 1$, there are solutions with $\int_{\mathbb R^d}f(x){\rm d}x = \textstyle\frac12$ and $\int_{\mathbb R^d}|x|^r f(x){\rm d}x <\infty$. However, if
+$\int_{\mathbb R^d}f(x){\rm d}x = : a < \textstyle\frac12$, the decay at infinity can be much more rapid: we show that for all $a<\textstyle\frac12$, there are solutions such that for some $\epsilon>0$,
+$\int_{\mathbb R^d}e^{\epsilon|x|}f(x){\rm d}x < \infty$.
+\vfill
+
+\hfil{\footnotesize\copyright\, 2020 by the authors. This paper may be reproduced, in its entirety, for non-commercial purposes.}
+
+\eject
+
+\setcounter{page}1
+\pagestyle{plain}
+
+
+\indent Our subject is the set of real, integrable solutions of the inequality
+\begin{equation}
+ f(x)\geqslant f\star f(x)
+ ,\quad\forall x\in\mathbb R^d\ ,
+ \label{ineq}
+\end{equation}
+where $f\star f(x)$ denotes the convolution $f\star f(x) = \int_{\mathbb R^d} f(x-y) f(y){\rm d}y$, which by Young's inequality \cite[Theorem 4.2]{LL96} is well defined as an element of
+$L^{p/(2-p)}(\mathbb R^d)$ for all $1 \leqslant p\leqslant 2$. Thus, one may consider this inequality in $L^p(\mathbb R^d)$ for all $1 \leqslant p \leqslant 2$, but the case $p=1$ is special:
+the solution set of (\ref{ineq}) is restricted in a number of surprising ways. Integrating both sides of (\ref{ineq}), one sees immediately that $\int_{\mathbb R^d} f(x){\rm d}x \leqslant 1$.
+We prove that, in fact, all integrable solutions satisfy $\int_{\mathbb R^d} f(x){\rm d}x \leqslant \textstyle\frac12$, and this upper bound is sharp.
+
+
+Perhaps even more surprising, we prove that all integrable solutions of (\ref{ineq}) are non-negative. This is {\em not true} for solutions in $L^p(\mathbb R^d)$, $ 1 < p \leqslant 2$.
+For $f\in L^p(\mathbb R^d)$, $1\leqslant p \leqslant 2$, the Fourier transform $\widehat{f}(k) = \int_{\mathbb R^d}e^{-i2\pi k\cdot x} f(x){\rm d}x$ is well defined as an element of $L^{p/(p-1)}(\mathbb R^d)$. If $f$ solves the equation $f = f\star f$,
+then $\widehat{f} = \widehat{f}^2$, and hence $\widehat{f}$ is the indicator function of a measurable set. By the Riemann-Lebesgue Theorem, if $f\in L^1(\mathbb R^d)$, then
+$\widehat{f}$ is continuous and vanishes at infinity, and the only such indicator function is the indicator function of the empty set. Hence the only integrable solution of
+$f = f*f$ is the trivial solution $f= 0$. However, for $1 < p \leqslant 2$, solutions abound: take $d=1$ and define $g$ to be the indicator function of the interval $[-a,a]$. Define
+\begin{equation}\label{exam}
+f(x) = \int_{\mathbb R} e^{-i2\pi k x} g(k){\rm d}k = \frac{ \sin 2\pi xa}{\pi x}\ ,
+ \end{equation}
+which is not integrable, but which belongs to $L^p(\mathbb R)$ for all $p> 1$. By the Fourier Inversion Theorem $\widehat{f} = g$. Taking products, one gets examples in any dimension.
+
+
+To construct a family of solutions to (\ref{ineq}), fix $a,t> 0$, and define $g_{a,t}(k) = a e^{-2\pi |k| t}$. By \cite[Theorem 1.14]{SW71},
+$$
+f_{a,t}(x) = \int_{\mathbb R^d} e^{-i2\pi k x} g_{a,t}(k){\rm d}k = a\Gamma((d+1)/2) \pi^{-(d+1)/2} \frac{t}{(t^2 + x^2)^{(d+1)/2}}\ .
+$$
+Since $g_{a,t}^2(k) = g_{a^2,2t}$, $f_{a,t}\star f_{a,t} = f_{a^2,2t}$, Thus, $f_{a,t} \geqslant f_{a,t}\star f_{a,t}$ reduces to
+$$
+\frac{t}{(t^2 + x^2)^{(d+1)/2}} \geqslant \frac{2at}{(4t^2 + x^2)^{(d+1)/2}}
+$$
+which is satisfied for all $a \leqslant 1/2$. Since $\int_{\mathbb R^d}f_{a,t}(x){\rm d}x =a$, this provides a class of solutions of (\ref{ineq}) that are non-negative and satisfy
+\begin{equation}\label{half}
+\int_{\mathbb R^d}f(x){\rm d}x \leqslant \frac12\ ,
+\end{equation}
+ all of which have fairly slow decay at infinity, so that in every case,
+\begin{equation}\label{tail}
+ \int_{\mathbb R^d}|x|f(x){\rm d}x =\infty \ .
+ \end{equation}
+
+Our results show that this class of examples of integrable solutions of (\ref{ineq}) is surprisingly typical of {\em all} integrable solutions: every real integrable solution
+$f$ of (\ref{ineq}) is positive, satisfies (\ref{half}),
+and if there is equality in (\ref{half}), $f$ also satisfies (\ref{tail}). The positivity of all real solutions of (\ref{ineq}) in $L^1(\mathbb R^d)$ may be considered surprising since it is
+false in $L^p(\mathbb R^d)$ for all $p > 1$, as the example (\ref{exam}) shows. We also show that when strict inequality holds in (\ref{half}) for a solution $f$ of (\ref{ineq}), it is possible for
+$f$ to have rather fast decay; we construct examples such that $\int_{\mathbb R^d}e^{\epsilon|x|}f(x){\rm d}x < \infty$ for some $\epsilon> 0$. The conjecture that integrable solutions of (\ref{ineq})
+are necessarily positive was motivated by recent work \cite{CJL19} on a partial differential equation involving a quadratic nonlinearity of $f\star f$ type, and the result proved here is the key to
+the proof of positivity for solutions of this partial differential equations; see \cite{CJL19}.
+
+
+\theo{Theorem}\label{theo:positivity}
+If $f$ is a real valued function in $L^1(\mathbb R^d)$ such that
+\begin{equation}\label{uineq}
+ f(x) - f\star f(x) =: u(x) \geqslant 0
+\end{equation}
+for all $x$. Then $\int_{\mathbb R^d} f(x)\ dx\leqslant\frac12$,
+and $f$ is given by the convergent series
+\begin{equation}
+f(x) = \frac{1}{2} \sum_{n=1}^\infty c_n 4^n (\star^n u)(x)
+\label{fun}
+\end{equation}
+where the $c_n\geqslant0$ are the Taylor coefficients in the expansion of $\sqrt{1-x}$
+\begin{equation}\label{3half}
+ \sqrt{1-x}=1-\sum_{n=1}^\infty c_n x^n
+ ,\quad
+ c_n=\frac{(2n-3)!!}{2^nn!} \sim n^{-3/2}
+\end{equation}
+In particular, $f$ is positive. Moreover, if $u\geqslant 0$ is any integrable function with $\int_{\mathbb R^d}u(x){\rm d}x \leqslant \textstyle\frac14$, then the sum on the right in (\ref{fun}) defines an integrable function $f$ that satisfies (\ref{uineq}).
+\endtheo
+\bigskip
+
+\indent\underline{Proof}: Note that $u$ is integrable. Let $a := \int_{\mathbb R^d}f(x){\rm d}x$ and $b := \int_{\mathbb R^d}u(x){\rm d}x \geqslant 0$. Fourier transforming,
+(\ref{uineq}) becomes
+\begin{equation} \label{ft}
+\widehat f(k) = \widehat f(k)^2 +\widehat u(k)\ .
+\end{equation}
+At $k=0$, $a^2 - a = -b$, so that $\left(a - \textstyle\frac12\right)^2 = \textstyle\frac14 - b$. Thus $0 \leqslant b \leqslant\textstyle\frac14$. Furthermore, since $u \geqslant 0$,
+\begin{equation}
+ |\widehat u(k)|\leqslant\widehat u(0) \leqslant \textstyle\frac14
+\end{equation}
+and the first inequality is strict for $k\neq 0$. Hence for $k\neq 0$, $\sqrt{1-4\widehat u(k)} \neq 0$. By the Riemann-Lebesgue Theorem, $\widehat{f}(k)$ and $\widehat{u}(k)$ are both
+continuous and vanish at infinity, and hence we must have that
+\begin{equation}
+ \widehat f(k)=\textstyle\frac12-\textstyle\frac12\sqrt{1-4\widehat u(k)}
+ \label{hatf}
+\end{equation}
+for all sufficiently large $k$, and in any case $\widehat f(k)= \frac12\pm\frac12\sqrt{1-4\widehat u(k)}$. But by continuity and the fact that $\sqrt{1-4\widehat u(k)} \neq 0$ for any $k\neq 0$, the sign cannot switch.
+Hence (\ref{hatf}) is valid for all $k$, including $k=0$, again by continuity. At $k=0$, $a = \textstyle\frac12 - \sqrt{1-4b}$, which proves (\ref{half}).
+The fact that $c_n$ as specified in (\ref{3half}) satisfies $c_n \sim n^{-3/2}$ is a simple application of Stirling's formula, and it shows that the power series for $\sqrt{1-z}$ converges absolutely and
+uniformly everywhere on the closed unit disc. Since $|4 \widehat u(k)| \leqslant 1$,
+${\displaystyle
+ \sqrt{1-4 \widehat u(k)} = 1 -\sum_{n=1}^\infty c_n (4 \widehat u(k))^n}$. Inverting the Fourier transform, yields (\ref{fun}),and since $\int_{\mathbb R^d} 4^n\star^n u(x){\rm d}x \leqslant 1$,
+ the convergence of the sum in $L^1(\mathbb R^d)$ follows from the convergence of $\sum_{n=1}^\infty c_n$. The final statement follows from the fact that if $f$ is defined in terms of $u$ in this manner, (\ref{hatf}) is
+ valid, and then (\ref{ft}) and (\ref{uineq}) are satisfied.
+\qed
+\bigskip
+
+\theo{Theorem}\label{theo:decay}
+Let $f\in L^1(\mathbb R^d)$ satisfy (\ref{ineq}) and $\int_{\mathbb R^d} f(x)\ dx=\textstyle\frac12$. Then
+$\int_{\mathbb R^d}|x| f(x)\ dx=\infty$.
+\endtheo
+\bigskip
+
+
+\indent\underline{Proof}: If $\int_{\mathbb R^d} f(x)\ dx=\textstyle\frac12$, $\int_{\mathbb R^d} 4u(x)\ dx=1$, then $w(x) = 4u(x)$ is a probability density, and we can write $f(x) = \sum_{n=0}^\infty \star^n w$. Suppose that $|x|f(x)$ is integrable. Then $|x|w(x)$ is integrable. Let $m:= \int_{\mathbb R^d}xw(x){\rm d} x$. Since first moments add under convolution, the trivial inequality $|m||x| \geqslant m\cdot x$ yields
+$$|m|\int_{\mathbb R^d} |x| \star^nw(x){\rm d}x \geqslant \int_{\mathbb R^d} m\cdot x \star^nw(x){\rm d}x = n|m|^2\ .$$
+ It follows that $\int_{\mathbb R^d} |x| f(x){\rm d}x \geqslant |m|\sum_{n=1}^\infty nc_n = \infty$. Hence $m=0$.
+
+
+Suppose temporarily that in addition, $|x|^2w(x)$ is integrable. Let $\sigma^2$ be the variance of $w$; i.e., $\sigma^2 = \int_{\mathbb R^d}|x|^2w(x){\rm d}x\ .$
+Define the function $\varphi(x) = \min\{1,|x|\}$. Then
+$$
+\int_{\mathbb R^d}|x| \star^n w(x){\rm d}x = \int_{\mathbb R^d}|n^{1/2}x| \star^n w(n^{1/2}x)n^{d/2}{\rm d}x \geqslant n^{1/2} \int_{\mathbb R^d}\varphi(x)\star^n w(n^{1/2}x)n^{d/2}{\rm d}x.
+$$
+By the Central Limit Theorem, since $\varphi$ is bounded and continuous,
+\begin{equation}\label{CLT}
+\lim_{n\to\infty} \int_{\mathbb R^d}\varphi(x)\star^n w(n^{1/2}x)n^{d/2}{\rm d}x = \int_{\mathbb R^d}\varphi(x) \gamma(x){\rm d}x =: C > 0
+\end{equation}
+where $\gamma(x)$ is a centered Gaussian probability density with variance $\sigma^2$.
+
+This shows that there is a $\delta> 0$ for all sufficiently large $n$, $\int_{\mathbb R^d}|x| \star^n w(x){\rm d}x \geqslant \sqrt{n}\delta$, and then since $c_n\sim n^{3/2}$, $\sum_{n=1}^\infty c_n \int_{\mathbb R^d}|x| \star^n w(x){\rm d}x= \infty$.
+
+ To remove the hypothesis that $w$ has finite variance, note that if $w$ is a probability density with zero mean and infinite variance, $\star^n w(n^{1/2}x)n^{d/2}$ is ``trying'' to converge to a Gaussian of infinite variance. In particular, one would expect that for all $R>0$,
+\begin{equation}\label{CLT2}
+\lim_{n\to\infty} \int_{|x| \leqslant R}\star^n w(n^{1/2}x)n^{d/2}{\rm d}x = 0\ ,
+\end{equation} so that the limit in (\ref{CLT}) has the value $1$. The proof then proceeds as above. The fact that (\ref{CLT2}) is valid is proved in \cite[Corollary 1]{CGR08}.
+\qed
+\bigskip
+
+\delimtitle{\bf Remark}
+For the convenience of the reader, we sketch, at the end of this paper, the part of of the argument in \cite{CGR08} that proves (\ref{CLT2}), since we know of no reference for this simple statement, and the proof in \cite{CGR08} deals with a more complicated variant of this problem.
+\endtheo
+\bigskip
+
+\theo{Theorem}
+ If $f$ satisfies\-~(\ref{ineq}), and
+$\int |x|^2[f(x)-f\star f(x)]\ dx<\infty$, then, for all $0\leqslant p<1$,
+ \begin{equation}
+ \int |x|^pf(x)\ dx<\infty.
+ \end{equation}
+\endtheo
+\bigskip
+
+\indent\underline{Proof}: We may suppose that $f$ is not identically $0$. Let $u = f - f\star f$ as above. Let $t := 4\int_{\mathbb R^d}u(x){\rm d}x \leqslant 1$. Then $t> 0$. Define $w := t^{-1}4u$; $w$ is a probability density and
+$$
+f(x) = \sum_{n=1}^\infty c_n t^n \star^n w(x)\ .
+$$
+By hypothesis, $w$ has a mean $m := \int_{\mathbb R^d} x w(x){\rm d}x$ and variance $\sigma^2 = \int_{\mathbb R^d} |x-m|^2 w(x){\rm d}x < \infty$. Since variance is additive under convolution,
+$$
+\int_{\mathbb R^d} |x-m|^2 \star^n w(x){\rm d}x = n\sigma^2\ .
+$$
+By H\"older's inequality, for all $0 < p < 2$,
+$\int_{\mathbb R^d} |x-m|^p \star^n w(x){\rm d}x \leqslant (n\sigma^2)^{p/2}$.
+It follows that for $0 < p < 1$,
+$$
+\int_{\mathbb R^d} |x-m|^p f(x){\rm d}x \leqslant (\sigma^2)^{p/2} \sum_{n=1}^\infty n^{p/2} c_n < \infty\ ,
+$$
+again using the fact that $c_n\sim n^{-3/2}$.
+\qed
+
+
+
+
+Theorem \ref{theo:decay} implies that when $\int f=\frac12$, $f$ cannot decay faster than $|x|^{-(d+1)}$. However, integrable solutions $f$ of (\ref{ineq}) such that $\int_{\mathbb R^d}f(x){\rm d}x < \textstyle\frac12$
+can decay quite rapidly, even having finite exponential moments, as we now show.
+
+
+Consider a non-negative, integrable function $u$, which integrates to $r<\frac14$, and satisfies
+\begin{equation}
+ \int_{\mathbb R^d} u(x)e^{\lambda|x|}{\rm d}x < \infty
+\end{equation}
+for some $\lambda>0$.
+The Laplace transform of $u$ is
+$ \widetilde u(p):=\int e^{-px}u(x)\ {\rm d} x$ which is analytic for $|p|<\lambda$, and $\widetilde u(0) < \textstyle\frac14$.
+Therefore, there exists $0<\lambda_0\leqslant \lambda$ such that, for all $|p|\leqslant\lambda_0$,
+ $\widetilde u(p)<\textstyle\frac14$.
+By Theorem \ref{theo:positivity},
+${\displaystyle
+ f(x):=\frac12\sum_{n=1}^\infty 4^nc_n(\star^n u)(x)}$
+is an integrable solution of (\ref{ineq}). For
+ $|p|\leqslant\lambda_0$, it has a well-defined Laplace transform $ \widetilde f(p)$ given by
+\begin{equation}
+ \widetilde f(p)=\int e^{-px}f(x)\ dx=\frac12(1-\sqrt{1-4\widetilde u(p)})
+\end{equation}
+which is analytic for $|p|\leqslant \lambda_0$.
+Note that
+${\displaystyle e^{s|x|} \leqslant \prod_{j=1}^d e^{|sx_j|} \leqslant \frac{1}{d}\sum_{j=1}^d e^{d|sx_j|} \leqslant \frac{2}{d}\sum_{j=1}^d \cosh(dsx_j)}$.
+What has just been shown, yields a $\delta>0$ so that for $|s|< \delta$, $\int_{\mathbb R^d} \cosh(dsx_j)f(x){\rm d}x < \infty$ for each $j$. It follows that for
+$0 < s < \delta$, $\int_{\mathbb R^d} e^{s|x|}f(x){\rm d}x < \infty$.
+\bigskip
+
+
+\delimtitle{\bf Remark}
+One might also consider the inequality $f \leqslant f \star f$ in $L^1(\mathbb R^d)$, but it is simple to construct solutions that have both signs. Consider any radial Gaussian probability density $g$,
+Then $g\star g(x) \geqslant g(x)$ for all sufficiently large $|x|$, and taking $f:= ag$ for $a$ sufficiently large, we obtain $f< f\star f$ everywhere. Now on a small neighborhood of the origin, replace the value of
+$f$ by $-1$. If the region is taken small enough, the new function $f$ will still satisfy $f < f\star f$ everywhere.
+\endtheo
+\bigskip
+
+We close by sketching a proof of (\ref{CLT2}) using the construction in \cite{CGR08}. Let $w$ be a mean zero, infinite variance probability density on $\mathbb R^d$.
+Pick $\epsilon>0$, and choose a large value $\sigma$ such that $(2\pi \sigma^2)^{-d/2}R^d|B| < \epsilon/2$, where $|B|$ denotes the volume of the ball. The point of this is that if
+$G$ is a centered Gaussian random variable with variance $\sigma^2$, the probability is no more than $\epsilon/2$ that $G$ lies in {\em any} particular translate $B_R+y$ of the ball of radius $R$.
+
+Let $A \subset \mathbb R^d$ be a bounded set so that $\int_{A}xw(x){\rm d}x = 0$ and $\int_{A}|x|^2w(x){\rm d}x = \sigma^2$. It is then easy to find mutually independent random variables $X$, $Y$ and $\alpha$ such that
+$X$ takes values in $A$ and, has zero mean and variance greater than $\sigma^2$, $\alpha$ is a Bernoulli variable with success probability $\int_{A}w(x){\rm d}x$, which we can take arbitrarily close to $1$ by
+increasing the size of $A$, and finally such that $\alpha X + (1-\alpha)Y $ has the probability density $w$. Taking independent i.i.d. sequences of such random variables, $w(n^{1/2}x)n^{d/2}$ is the probability density of
+${\displaystyle W_n := \frac{1}{\sqrt{n}}\sum_{j=1}^n \alpha_j X_j + \frac{1}{\sqrt{n}} \sum_{j=1}^n(1-\alpha_j)Y_j}$.
+We are interested in estimating the expectation of $1_{B_R}(W_n)$. We first take the conditional expectation, given the values of the $\alpha$'s and the $Y$'s. These conditional expectations have the form
+${\mathbb E}\left[ 1_{B_R + y}\left( \frac{1}{\sqrt{n}}\sum_{j=1}^n \alpha_j X_j \right)\right]$
+for some translate $B_R +y$ of the unit Ball. Since $A$ is bounded, the $X_j$'s all have the same finite third moment, and now the Berry-Esseen Theorem \cite{B41,E42}, a version of the Central Limit Theorem
+with rate information, allows us to control the error in approximating this expectation by
+$\mathbb{E}(1_{B_R +y}(G))$ where $G$ is centered Gaussian with variance $\sigma^2$. By the choice of $\sigma$, this is no greater than $\epsilon/2$, independent of $y$. For $n$ large enough,
+the remaining errors -- coming from the small probability that $\sum_{n=1}^n \alpha_j$ is significantly less $n$, and the error bound provided by the Berry-Esseen Theorem, are readily absorbed into the remaining
+$\epsilon/2$ for large $n$. Thus for all sufficiently large $n$, the integral in (\ref{CLT2}) is no more than $\epsilon$.
+
+
+\vfill
+\eject
+{\bf Acknowledgements}:
+
+U.S.~National Science Foundation grants DMS-1764254 (E.A.C.), DMS-1802170 (I.J.) and NSF grant DMS-1856645 (M.P.L) are gratefully acknowledged.
+\vskip20pt
+
+\begin{thebibliography}{WWW99}
+
+\bibitem[B41]{B41} A. Berry, {\em The Accuracy of the Gaussian Approximation to the Sum of Independent Variates}. Trans. of the A.M.S. {\bf 49} (1941),122-136.
+
+\bibitem[CGR08]{CGR08} E.A. Carlen, E. Gabetta and E. Regazzini, {\it Probabilistic investigation on explosion of solutions of the Kac equation with infintte initial energy}, J. Appl. Prob. {\bf 45} (2008), 95-106
+
+\bibitem[CJL19]{CJL19} E.A. Carlen, I. Jauslin and E.H. Lieb, {Analysis of a simple equation for the ground state energy of the Bose gas}, arXiv preprint arXiv:1912.04987.
+
+\bibitem[E42]{E42} C.-G. Esseen, {\em A moment inequality with an application to the central limit theorem}. Skand. Aktuarietidskr. {\bf 39} 160-170.
+
+\bibitem[LL96]{LL96} E.H. Lieb and M. Loss, {\em Analysis}, Graduate Studies in Mathematics {\bf 14}, A.M.S., Providence RI, 1996.
+
+\bibitem[SW71]{SW71} E. Stein and G. Weiss, {\em Introduction to Fourier analysis on Euclidean spaces}, Princeton University Press, Princeton NJ, 1971.
+
+
+
+
+
+\end{thebibliography}
+
+\end{document}
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..dba0d1f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,34 @@
+PROJECTNAME=$(basename $(wildcard *.tex))
+LIBS=$(notdir $(wildcard libs/*))
+
+PDFS=$(addsuffix .pdf, $(PROJECTNAME))
+SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME))
+
+all: $(PROJECTNAME)
+
+$(PROJECTNAME): $(LIBS)
+ pdflatex -file-line-error $@.tex
+ pdflatex -file-line-error $@.tex
+ pdflatex -synctex=1 $@.tex
+
+$(SYNCTEXS): $(LIBS)
+ pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@)
+
+libs: $(LIBS)
+
+$(LIBS):
+ ln -fs libs/$@ ./
+
+clean-aux:
+ rm -f $(addsuffix .aux, $(PROJECTNAME))
+ rm -f $(addsuffix .log, $(PROJECTNAME))
+ rm -f $(addsuffix .out, $(PROJECTNAME))
+ rm -f $(addsuffix .toc, $(PROJECTNAME))
+
+clean-libs:
+ rm -f $(LIBS)
+
+clean-tex:
+ rm -f $(PDFS) $(SYNCTEXS)
+
+clean: clean-aux clean-tex clean-libs
diff --git a/README b/README
new file mode 100644
index 0000000..e134967
--- /dev/null
+++ b/README
@@ -0,0 +1,31 @@
+This directory contains the source files to typeset the article. This can be
+accomplished by running
+ make
+
+This document uses a custom class file, located in the 'libs' directory, which
+defines a number of commands. Most of these are drop-in replacements for those
+defined in the 'article' class.
+
+Some extra functionality is provided in custom style files, located in the
+'libs' directory.
+
+
+* Dependencies:
+
+ pdflatex
+ TeXlive packages:
+ amsfonts
+ color
+ hyperref
+ latex
+ marginnote
+ GNU make
+
+* Files:
+
+ Carlen_Jauslin_Lieb_Loss_2020.tex:
+ main LaTeX file
+
+ libs:
+ custom LaTeX class file
+
diff --git a/libs/ian.cls b/libs/ian.cls
new file mode 100644
index 0000000..aec99ad
--- /dev/null
+++ b/libs/ian.cls
@@ -0,0 +1,673 @@
+%%
+%% Ian's class file
+%%
+
+%% TeX format
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+%% class name
+\ProvidesClass{ian}[2017/09/29]
+
+%% boolean to signal that this class is being used
+\newif\ifianclass
+
+%% options
+% no section numbering in equations
+\DeclareOption{section_in_eq}{\sectionsineqtrue}
+\DeclareOption{section_in_fig}{\sectionsinfigtrue}
+\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
+\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}}
+\DeclareOption{subsection_in_eq}{\subsectionsineqtrue}
+\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue}
+\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
+\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}}
+\DeclareOption{no_section_in_eq}{\sectionsineqfalse}
+\DeclareOption{no_section_in_fig}{\sectionsinfigfalse}
+\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
+\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}}
+\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse}
+\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse}
+\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
+\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}}
+% reset point
+\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}}
+\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}}
+\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}}
+\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}}
+
+\def\ian@defaultoptions{
+ \ExecuteOptions{section_in_all, no_subsection_in_all}
+ \ProcessOptions
+
+ %% required packages
+ \RequirePackage{iantheo}
+ \RequirePackage{point}
+ \RequirePackage{color}
+ \RequirePackage{marginnote}
+ \RequirePackage{amssymb}
+ \PassOptionsToPackage{hidelinks}{hyperref}
+ \RequirePackage{hyperref}
+}
+
+%% paper dimensions
+\setlength\paperheight{297mm}
+\setlength\paperwidth{210mm}
+
+%% fonts
+\input{size11.clo}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+
+%% text dimensions
+\hoffset=-50pt
+\voffset=-72pt
+\textwidth=460pt
+\textheight=704pt
+
+
+%% remove default indentation
+\parindent=0pt
+%% indent command
+\def\indent{\hskip20pt}
+
+%% something is wrong with \thepage, redefine it
+\gdef\thepage{\the\c@page}
+
+%% array lines (to use the array environment)
+\setlength\arraycolsep{5\p@}
+\setlength\arrayrulewidth{.4\p@}
+
+
+%% correct vertical alignment at the end of a document
+\AtEndDocument{
+ \vfill
+ \eject
+}
+
+
+%% hyperlinks
+% hyperlinkcounter
+\newcounter{lncount}
+% hyperref anchor
+\def\hrefanchor{%
+\stepcounter{lncount}%
+\hypertarget{ln.\thelncount}{}%
+}
+
+%% define a command and write it to aux file
+\def\outdef#1#2{%
+ % define command%
+ \expandafter\xdef\csname #1\endcsname{#2}%
+ % hyperlink number%
+ \expandafter\xdef\csname #1@hl\endcsname{\thelncount}%
+ % write command to aux%
+ \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}%
+ \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}%
+}
+
+%% can call commands even when they are not defined
+\def\safe#1{%
+ \ifdefined#1%
+ #1%
+ \else%
+ {\color{red}\bf?}%
+ \fi%
+}
+
+%% define a label for the latest tag
+%% label defines a command containing the string stored in \tag
+\def\deflabel{
+ \def\label##1{\expandafter\outdef{label@##1}{\safe\tag}}
+
+ \def\ref##1{%
+ % check whether the label is defined (hyperlink runs into errors if this check is omitted)
+ \ifcsname label@##1@hl\endcsname%
+ \hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}%
+ \else%
+ \ifcsname label@##1\endcsname%
+ {\color{blue}\csname ##1\endcsname}%
+ \else%
+ {\bf ??}%
+ \fi%
+ \fi%
+ }
+}
+
+
+%% make a custom link at any given location in the document
+\def\makelink#1#2{%
+ \hrefanchor%
+ \outdef{label@#1}{#2}%
+}
+
+
+%% section command
+% counter
+\newcounter{sectioncount}
+% space before section
+\newlength\secskip
+\setlength\secskip{40pt}
+% a prefix to put before the section number, e.g. A for appendices
+\def\sectionprefix{}
+% define some lengths
+\newlength\secnumwidth
+\newlength\sectitlewidth
+\def\section#1{
+ % reset counters
+ \stepcounter{sectioncount}
+ \setcounter{subsectioncount}{0}
+ \ifsectionsineq
+ \setcounter{seqcount}0
+ \fi
+ \ifsectionsinfig
+ \setcounter{figcount}0
+ \fi
+
+ % space before section (if not first)
+ \ifnum\thesectioncount>1
+ \vskip\secskip
+ \penalty-1000
+ \fi
+
+ % hyperref anchor
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\sectionprefix\thesectioncount}
+
+ % get widths
+ \def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}}
+ \settowidth\secnumwidth{\@secnum}
+ \setlength\sectitlewidth\textwidth
+ \addtolength\sectitlewidth{-\secnumwidth}
+
+ % print name
+ \parbox{\textwidth}{
+ \@secnum
+ \parbox[t]{\sectitlewidth}{\Large\bf #1}}
+
+ % write to table of contents
+ \iftoc
+ % save lncount in aux variable which is written to toc
+ \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}}
+ \write\tocoutput{\noexpand\tocsection{#1}{\thepage}}
+ \fi
+
+ %space
+ \par\penalty10000
+ \bigskip\penalty10000
+}
+
+%% subsection
+% counter
+\newcounter{subsectioncount}
+% space before subsection
+\newlength\subsecskip
+\setlength\subsecskip{30pt}
+\def\subsection#1{
+ % counters
+ \stepcounter{subsectioncount}
+ \setcounter{subsubsectioncount}{0}
+ \ifsubsectionsineq
+ \setcounter{seqcount}0
+ \fi
+ \ifsubsectionsinfig
+ \setcounter{figcount}0
+ \fi
+
+ % space before subsection (if not first)
+ \ifnum\thesubsectioncount>1
+ \vskip\subsecskip
+ \penalty-500
+ \fi
+
+ % hyperref anchor
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount}
+
+ % get widths
+ \def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}}
+ \settowidth\secnumwidth{\@secnum}
+ \setlength\sectitlewidth\textwidth
+ \addtolength\sectitlewidth{-\secnumwidth}
+ % print name
+ \parbox{\textwidth}{
+ \@secnum
+ \parbox[t]{\sectitlewidth}{\large\bf #1}}
+
+ % write to table of contents
+ \iftoc
+ % save lncount in aux variable which is written to toc
+ \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}}
+ \write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}}
+ \fi
+
+ % space
+ \par\penalty10000
+ \medskip\penalty10000
+}
+
+%% subsubsection
+% counter
+\newcounter{subsubsectioncount}
+% space before subsubsection
+\newlength\subsubsecskip
+\setlength\subsubsecskip{20pt}
+\def\subsubsection#1{
+ % counters
+ \stepcounter{subsubsectioncount}
+
+ % space before subsubsection (if not first)
+ \ifnum\thesubsubsectioncount>1
+ \vskip\subsubsecskip
+ \penalty-500
+ \fi
+
+ % hyperref anchor
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount}
+
+ % get widths
+ \def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}}
+ \settowidth\secnumwidth{\@secnum}
+ \setlength\sectitlewidth\textwidth
+ \addtolength\sectitlewidth{-\secnumwidth}
+ % print name
+ \parbox{\textwidth}{
+ \@secnum
+ \parbox[t]{\sectitlewidth}{\large\bf #1}}
+
+ % write to table of contents
+ \iftoc
+ % save lncount in aux variable which is written to toc
+ \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}}
+ \write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}}
+ \fi
+
+ % space
+ \par\penalty10000
+ \medskip\penalty10000
+}
+
+%% itemize
+\newlength\itemizeskip
+% left margin for items
+\setlength\itemizeskip{20pt}
+\newlength\itemizeseparator
+% space between the item symbol and the text
+\setlength\itemizeseparator{5pt}
+% penalty preceding an itemize
+\newcount\itemizepenalty
+\itemizepenalty=0
+% counter counting the itemize level
+\newcounter{itemizecount}
+
+% item symbol
+\def\itemizept#1{
+ \ifnum#1=1
+ \textbullet
+ \else
+ $\scriptstyle\blacktriangleright$
+ \fi
+}
+
+
+\newlength\current@itemizeskip
+\setlength\current@itemizeskip{0pt}
+\def\itemize{%
+ \par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty%
+ \addtocounter{itemizecount}{1}%
+ \addtolength\current@itemizeskip{\itemizeskip}%
+ \leftskip\current@itemizeskip%
+}
+\def\enditemize{%
+ \addtocounter{itemizecount}{-1}%
+ \addtolength\current@itemizeskip{-\itemizeskip}%
+ \par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip%
+ \medskip\expandafter\penalty\the\itemizepenalty%
+}
+
+% item, with optional argument to specify the item point
+% @itemarg is set to true when there is an optional argument
+\newif\if@itemarg
+\def\item{%
+ % check whether there is an optional argument (if there is none, add on empty '[]')
+ \@ifnextchar [{\@itemargtrue\@itemx}{\@itemargfalse\@itemx[]}%
+}
+\newlength\itempt@total
+\def\@itemx[#1]{
+ \if@itemarg
+ \settowidth\itempt@total{#1}
+ \else
+ \settowidth\itempt@total{\itemizept\theitemizecount}
+ \fi
+ \addtolength\itempt@total{\itemizeseparator}
+ \par
+ \medskip
+ \if@itemarg
+ \hskip-\itempt@total#1\hskip\itemizeseparator
+ \else
+ \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator
+ \fi
+}
+
+%% prevent page breaks after itemize
+\newcount\previtemizepenalty
+\def\nopagebreakafteritemize{
+ \previtemizepenalty=\itemizepenalty
+ \itemizepenalty=10000
+}
+%% back to previous value
+\def\restorepagebreakafteritemize{
+ \itemizepenalty=\previtemizepenalty
+}
+
+%% enumerate
+\newcounter{enumerate@count}
+\def\enumerate{
+ \setcounter{enumerate@count}0
+ \let\olditem\item
+ \let\olditemizept\itemizept
+ \def\item{
+ % counter
+ \stepcounter{enumerate@count}
+ % set header
+ \def\itemizept{\theenumerate@count.}
+ % hyperref anchor
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\theenumerate@count}
+ \olditem
+ }
+ \itemize
+}
+\def\endenumerate{
+ \enditemize
+ \let\item\olditem
+ \let\itemizept\olditemizept
+}
+
+
+%% equation numbering
+% counter
+\newcounter{seqcount}
+% booleans (write section or subsection in equation number)
+\newif\ifsectionsineq
+\newif\ifsubsectionsineq
+\def\seqcount{
+ \stepcounter{seqcount}
+ % the output
+ \edef\seqformat{\theseqcount}
+ % add subsection number
+ \ifsubsectionsineq
+ \let\tmp\seqformat
+ \edef\seqformat{\thesubsectioncount.\tmp}
+ \fi
+ % add section number
+ \ifsectionsineq
+ \let\tmp\seqformat
+ \edef\seqformat{\sectionprefix\thesectioncount.\tmp}
+ \fi
+ % define tag (for \label)
+ \xdef\tag{\seqformat}
+ % write number
+ \marginnote{\hfill(\seqformat)}
+}
+%% equation environment compatibility
+\def\equation{\hrefanchor$$\seqcount}
+\def\endequation{$$\@ignoretrue}
+
+
+%% figures
+% counter
+\newcounter{figcount}
+% booleans (write section or subsection in equation number)
+\newif\ifsectionsinfig
+\newif\ifsubsectionsinfig
+% width of figures
+\newlength\figwidth
+\setlength\figwidth\textwidth
+\addtolength\figwidth{-2.5cm}
+% caption
+\def\defcaption{
+ \long\def\caption##1{
+ \stepcounter{figcount}
+
+ % hyperref anchor
+ \hrefanchor
+
+ % the number of the figure
+ \edef\figformat{\thefigcount}
+ % add subsection number
+ \ifsubsectionsinfig
+ \let\tmp\figformat
+ \edef\figformat{\thesubsectioncount.\tmp}
+ \fi
+ % add section number
+ \ifsectionsinfig
+ \let\tmp\figformat
+ \edef\figformat{\sectionprefix\thesectioncount.\tmp}
+ \fi
+
+ % define tag (for \label)
+ \xdef\tag{\figformat}
+
+ % write
+ \hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1}
+
+ % space
+ \par\bigskip
+ }
+}
+%% short caption: centered
+\def\captionshort#1{
+ \stepcounter{figcount}
+
+ % hyperref anchor
+ \hrefanchor
+
+ % the number of the figure
+ \edef\figformat{\thefigcount}
+ % add section number
+ \ifsectionsinfig
+ \let\tmp\figformat
+ \edef\figformat{\sectionprefix\thesectioncount.\tmp}
+ \fi
+
+ % define tag (for \label)
+ \xdef\tag{\figformat}
+
+ % write
+ \hfil fig \figformat: {\small#1}
+
+ %space
+ \par\bigskip
+}
+
+%% environment
+\def\figure{
+ \par
+ \vfil\penalty100\vfilneg
+ \bigskip
+}
+\def\endfigure{
+ \par
+ \bigskip
+}
+
+
+%% start appendices
+\def\appendix{
+ \vfill
+ \pagebreak
+
+ % counter
+ \setcounter{sectioncount}0
+
+ % prefix
+ \def\sectionprefix{A}
+
+ % write
+ {\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000
+
+ % add a mention in the table of contents
+ \iftoc
+ \immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000
+ \fi
+
+ %% uncomment for new page for each appendix
+ %\def\seqskip{\vfill\pagebreak}
+}
+
+
+%% bibliography
+% size of header
+\newlength\bibheader
+\def\thebibliography#1{
+ \hrefanchor
+
+ % add a mention in the table of contents
+ \iftoc
+ % save lncount in aux variable which is written to toc
+ \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}}
+ \write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000
+ \fi
+
+ % write
+ {\bf \LARGE References}\par\penalty10000\bigskip\penalty10000
+ % width of header
+ \settowidth\bibheader{[#1]}
+ \leftskip\bibheader
+}
+% end environment
+\def\endthebibliography{
+ \par\leftskip0pt
+}
+
+%% bibitem command
+\def\bibitem[#1]#2{%
+ \hrefanchor%
+ \outdef{label@cite#2}{#1}%
+ \hskip-\bibheader%
+ \makebox[\bibheader]{\cite{#2}\hfill}%
+}
+
+%% cite command (adapted from latex.ltx)
+% @tempswa is set to true when there is an optional argument
+\newif\@tempswa
+\def\cite{%
+ % check whether there is an optional argument (if there is none, add on empty '[]')
+ \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}%
+}
+% command with optional argument
+\def\@citex[#1]#2{\leavevmode%
+ % initialize loop
+ \let\@citea\@empty%
+ % format
+ \@cite{%
+ % loop over ',' separated list
+ \@for\@citeb:=#2\do{%
+ % text to add at each iteration of the loop (separator between citations)
+ \@citea\def\@citea{,\ }%
+ % add entry to citelist
+ \@writecitation{\@citeb}%
+ \ref{cite\@citeb}%
+ }%
+ }%
+ % add optional argument text (as an argument to '\@cite')
+ {#1}%
+}
+\def\@cite#1#2{%
+ [#1\if@tempswa , #2\fi]%
+}
+%% add entry to citelist after checking it has not already been added
+\def\@writecitation#1{%
+ \ifcsname if#1cited\endcsname%
+ \else%
+ \expandafter\newif\csname if#1cited\endcsname%
+ \immediate\write\@auxout{\string\citation{#1}}%
+ \fi%
+}
+
+%% table of contents
+% boolean
+\newif\iftoc
+\def\tableofcontents{
+ {\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000
+
+ % copy content from file
+ \IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}}
+
+ % open new toc
+ \newwrite\tocoutput
+ \immediate\openout\tocoutput=\jobname.toc
+
+ \toctrue
+}
+%% close file
+\AtEndDocument{
+ % close toc
+ \iftoc
+ \immediate\closeout\tocoutput
+ \fi
+}
+
+
+%% fill line with dots
+\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill}
+
+%% same as sectionprefix
+\def\tocsectionprefix{}
+
+%% toc formats
+\newcounter{tocsectioncount}
+\def\tocsection #1#2{
+ \stepcounter{tocsectioncount}
+ \setcounter{tocsubsectioncount}{0}
+ \setcounter{tocsubsubsectioncount}{0}
+ % write
+ \smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par
+}
+\newcounter{tocsubsectioncount}
+\def\tocsubsection #1#2{
+ \stepcounter{tocsubsectioncount}
+ \setcounter{tocsubsubsectioncount}{0}
+ % write
+ {\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
+}
+\newcounter{tocsubsubsectioncount}
+\def\tocsubsubsection #1#2{
+ \stepcounter{tocsubsubsectioncount}
+ % write
+ {\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
+}
+\def\tocappendices{
+ \medskip
+ \setcounter{tocsectioncount}0
+ {\bf Appendices}\par
+ \smallskip
+ \def\tocsectionprefix{A}
+}
+\def\tocreferences#1{
+ \medskip
+ {\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par
+ \smallskip
+}
+
+
+%% definitions that must be loaded at begin document
+\let\ian@olddocument\document
+\def\document{
+ \ian@olddocument
+
+ \deflabel
+ \defcaption
+}
+
+%% end
+\ian@defaultoptions
+\endinput
diff --git a/libs/iantheo.sty b/libs/iantheo.sty
new file mode 100644
index 0000000..d33a93d
--- /dev/null
+++ b/libs/iantheo.sty
@@ -0,0 +1,162 @@
+%%
+%% iantheorem package:
+%% Ian's customized theorem command
+%%
+
+%% boolean to signal that this package was loaded
+\newif\ifiantheo
+
+%% TeX format
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+%% package name
+\ProvidesPackage{iantheo}[2016/11/10]
+
+%% options
+\newif\ifsectionintheo
+\DeclareOption{section_in_theo}{\sectionintheotrue}
+\DeclareOption{no_section_in_theo}{\sectionintheofalse}
+\newif\ifsubsectionintheo
+\DeclareOption{subsection_in_theo}{\subsectionintheotrue}
+\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse}
+
+\def\iantheo@defaultoptions{
+ \ExecuteOptions{section_in_theo, no_subsection_in_theo}
+ \ProcessOptions
+
+ %%% reset at every new section
+ \ifsectionintheo
+ \let\iantheo@oldsection\section
+ \gdef\section{\setcounter{theocount}{0}\iantheo@oldsection}
+ \fi
+
+ %% reset at every new subsection
+ \ifsubsectionintheo
+ \let\iantheo@oldsubsection\subsection
+ \gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection}
+ \fi
+}
+
+
+%% delimiters
+\def\delimtitle#1{
+ \par%
+ \leavevmode%
+ \raise.3em\hbox to\hsize{%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ \hrulefill%
+ \ \lower.3em\hbox{#1}\ %
+ \hrulefill%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ }%
+ \par\penalty10000%
+}
+
+%% callable by ref
+\def\delimtitleref#1{
+ \par%
+%
+ \ifdefined\ianclass%
+ % hyperref anchor%
+ \hrefanchor%
+ % define tag (for \label)%
+ \xdef\tag{#1}%
+ \fi%
+%
+ \leavevmode%
+ \raise.3em\hbox to\hsize{%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ \hrulefill%
+ \ \lower.3em\hbox{\bf #1}\ %
+ \hrulefill%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ }%
+ \par\penalty10000%
+}
+
+%% no title
+\def\delim{
+ \par%
+ \leavevmode\raise.3em\hbox to\hsize{%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ \hrulefill%
+ \lower0.3em\hbox{\vrule height0.3em}%
+ }%
+ \par\penalty10000%
+}
+
+%% end delim
+\def\enddelim{
+ \par\penalty10000%
+ \leavevmode%
+ \raise.3em\hbox to\hsize{%
+ \vrule height0.3em\hrulefill\vrule height0.3em%
+ }%
+ \par%
+}
+
+
+%% theorem
+% counter
+\newcounter{theocount}
+% booleans (write section or subsection in equation number)
+\def\theo#1{
+ \stepcounter{theocount}
+ \ifdefined\ianclass
+ % hyperref anchor
+ \hrefanchor
+ \fi
+ % the number
+ \def\formattheo{\thetheocount}
+ % add subsection number
+ \ifsubsectionintheo
+ \let\tmp\formattheo
+ \edef\formattheo{\thesubsectioncount.\tmp}
+ \fi
+ % add section number
+ \ifsectionintheo
+ \let\tmp\formattheo
+ \edef\formattheo{\sectionprefix\thesectioncount.\tmp}
+ \fi
+ % define tag (for \label)
+ \xdef\tag{\formattheo}
+ % write
+ \delimtitle{\bf #1 \formattheo}
+}
+\let\endtheo\enddelim
+%% theorem headers with name
+\def\theoname#1#2{
+ \theo{#1}\hfil({\it #2})\par\penalty10000\medskip%
+}
+
+
+%% qed symbol
+\def\qedsymbol{$\square$}
+\def\qed{\penalty10000\hfill\penalty10000\qedsymbol}
+
+
+%% compatibility with article class
+\ifdefined\ianclasstrue
+ \relax
+\else
+ \def\thesectioncount{\thesection}
+ \def\thesubsectioncount{\thesubsection}
+ \def\sectionprefix{}
+\fi
+
+
+%% prevent page breaks after displayed equations
+\newcount\prevpostdisplaypenalty
+\def\nopagebreakaftereq{
+ \prevpostdisplaypenalty=\postdisplaypenalty
+ \postdisplaypenalty=10000
+}
+%% back to previous value
+\def\restorepagebreakaftereq{
+ \postdisplaypenalty=\prevpostdisplaypenalty
+}
+
+
+%% end
+\iantheo@defaultoptions
+\endinput
diff --git a/libs/point.sty b/libs/point.sty
new file mode 100644
index 0000000..da06361
--- /dev/null
+++ b/libs/point.sty
@@ -0,0 +1,107 @@
+%%
+%% Points package:
+%% \point commands
+%%
+
+%% TeX format
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+%% package name
+\ProvidesPackage{point}[2017/06/13]
+
+%% options
+\newif\ifresetatsection
+\DeclareOption{reset_at_section}{\resetatsectiontrue}
+\DeclareOption{no_reset_at_section}{\resetatsectionfalse}
+\newif\ifresetatsubsection
+\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue}
+\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse}
+\newif\ifresetattheo
+\DeclareOption{reset_at_theo}{\resetattheotrue}
+\DeclareOption{no_reset_at_theo}{\resetattheofalse}
+
+\def\point@defaultoptions{
+ \ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo}
+ \ProcessOptions
+
+ %% reset at every new section
+ \ifresetatsection
+ \let\point@oldsection\section
+ \gdef\section{\resetpointcounter\point@oldsection}
+ \fi
+ %% reset at every new subsection
+ \ifresetatsubsection
+ \let\point@oldsubsection\subsection
+ \gdef\subsection{\resetpointcounter\point@oldsubsection}
+ \fi
+
+ %% reset at every new theorem
+ \ifresetattheo
+ \ifdefined\iantheotrue
+ \let\point@oldtheo\theo
+ \gdef\theo{\resetpointcounter\point@oldtheo}
+ \fi
+ \fi
+}
+
+
+%% point
+% counter
+\newcounter{pointcount}
+\def\point{
+ \stepcounter{pointcount}
+ \setcounter{subpointcount}{0}
+ % hyperref anchor (only if the class is 'ian')
+ \ifdefined\ifianclass
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\arabic{pointcount}}
+ \fi
+ % header
+ \indent{\bf \arabic{pointcount}\ - }
+}
+
+%% subpoint
+% counter
+\newcounter{subpointcount}
+\def\subpoint{
+ \stepcounter{subpointcount}
+ \setcounter{subsubpointcount}0
+ % hyperref anchor (only if the class is 'ian')
+ \ifdefined\ifianclass
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\arabic{pointcount}-\arabic{subpointcount}}
+ \fi
+ % header
+ \indent\hskip.5cm{\bf \arabic{pointcount}-\arabic{subpointcount}\ - }
+}
+
+%% subsubpoint
+% counter
+\newcounter{subsubpointcount}
+\def\subsubpoint{
+ \stepcounter{subsubpointcount}
+ % hyperref anchor (only if the class is 'ian')
+ \ifdefined\ifianclass
+ \hrefanchor
+ % define tag (for \label)
+ \xdef\tag{\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}}
+ \fi
+ \indent\hskip1cm{\bf
+\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}\ - }
+}
+
+
+%% reset point counters
+\def\resetpointcounter{
+ \setcounter{pointcount}{0}
+ \setcounter{subpointcount}{0}
+ \setcounter{subsubpointcount}{0}
+}
+
+
+
+%% end
+\point@defaultoptions
+\endinput