\DeclareFontEncoding{LS1}{}{} \DeclareFontSubstitution{LS1}{stix}{m}{n} \DeclareMathAlphabet{\mathscr}{LS1}{stixscr}{m}{n} \newcommand{\cA}{\mathcal{A}} \newcommand{\cB}{\mathcal{B}} \newcommand{\cC}{\mathcal{C}} \newcommand{\cD}{\mathcal{D}} \newcommand{\cE}{\mathcal{E}} \newcommand{\cF}{\mathcal{F}} \newcommand{\cG}{\mathcal{G}} \newcommand{\cH}{\mathcal{H}} \newcommand{\cI}{\mathcal{I}} \newcommand{\cJ}{\mathcal{J}} \newcommand{\cK}{\mathcal{K}} \newcommand{\cL}{\mathcal{L}} \newcommand{\cM}{\mathcal{M}} \newcommand{\cN}{\mathcal{N}} \newcommand{\cO}{\mathcal{O}} \newcommand{\cP}{\mathcal{P}} \newcommand{\cQ}{\mathcal{Q}} \newcommand{\cR}{\mathcal{R}} \newcommand{\cS}{\mathcal{S}} \newcommand{\cT}{\mathcal{T}} \newcommand{\cU}{\mathcal{U}} \newcommand{\cV}{\mathcal{V}} \newcommand{\cW}{\mathcal{W}} \newcommand{\cX}{\mathcal{X}} \newcommand{\cY}{\mathcal{Y}} \newcommand{\cZ}{\mathcal{Z}} \newcommand{\fA}{\mathfrak{A}} \newcommand{\fB}{\mathfrak{B}} \newcommand{\fC}{\mathfrak{C}} \newcommand{\fD}{\mathfrak{D}} \newcommand{\fE}{\mathfrak{E}} \newcommand{\fF}{\mathfrak{F}} \newcommand{\fG}{\mathfrak{G}} \newcommand{\fH}{\mathfrak{H}} \newcommand{\fI}{\mathfrak{I}} \newcommand{\fJ}{{\bf\mathfrak{J}}} \newcommand{\fK}{\mathfrak{K}} \newcommand{\fL}{\mathfrak{L}} \newcommand{\fM}{\mathfrak{M} \cfadd{multi}} \newcommand{\fN}{\mathfrak{N}} \newcommand{\fO}{\mathfrak{O}} \newcommand{\fP}{\mathfrak{P}} \newcommand{\fQ}{\mathfrak{Q}} \newcommand{\fR}{\mathfrak{R}} \newcommand{\fS}{\mathfrak{S}} \newcommand{\fT}{\mathfrak{T}} \newcommand{\fU}{\mathfrak{U}} \newcommand{\fV}{\mathfrak{V}} \newcommand{\fW}{\mathfrak{W}} \newcommand{\fX}{\mathfrak{X}} \newcommand{\fY}{\mathfrak{Y}} \newcommand{\fZ}{\mathfrak{Z}} \newcommand{\fa}{\mathfrak{a}} \newcommand{\fb}{\mathfrak{b}} \newcommand{\fc}{\mathfrak{c}} \newcommand{\fd}{\mathfrak{d}} \newcommand{\fe}{\mathfrak{e}} \newcommand{\ff}{\mathfrak{f}} \newcommand{\fg}{\mathfrak{g}} \newcommand{\fh}{\mathfrak{h}} %\newcommand{\fi}{\mathfrak{i}} %\newcommand{\fj}{\mathfrak{j}} \newcommand{\fk}{\mathfrak{k}} \newcommand{\fl}{\mathfrak{l}} \newcommand{\fm}{\mathfrak{m}} \newcommand{\fn}{\mathfrak{n}} \newcommand{\fo}{\mathfrak{o}} \newcommand{\fp}{\mathfrak{p}} \newcommand{\fq}{\mathfrak{q}} \newcommand{\fr}{\mathfrak{r} \cfadd{rectifier}} \newcommand{\fs}{\mathfrak{s}} \newcommand{\ft}{\mathfrak{t}} \newcommand{\fu}{\mathfrak{u}} \newcommand{\fv}{\mathfrak{v}} \newcommand{\fw}{\mathfrak{w}} \newcommand{\fx}{\mathfrak{x}} \newcommand{\fy}{\mathfrak{y}} \newcommand{\fz}{\mathfrak{z}} \newcommand{\bfa}{\mathbf{a}} \newcommand{\bfb}{\mathbf{b}} \newcommand{\bfc}{\mathbf{c}} \newcommand{\bfd}{\mathbf{d}} \newcommand{\bfe}{\mathbf{e}} \newcommand{\bff}{\mathbf{f}} \newcommand{\bfg}{\mathbf{g}} \newcommand{\bfh}{\mathbf{h}} \newcommand{\bfi}{\mathbf{i}} \newcommand{\bfj}{\mathbf{j}} \newcommand{\bfk}{\mathbf{k}} \newcommand{\bfl}{\mathbf{l}} \newcommand{\bfm}{\mathbf{m}} \newcommand{\bfn}{\mathbf{n}} \newcommand{\bfo}{\mathbf{o}} \newcommand{\bfp}{\mathbf{p}} \newcommand{\bfq}{\mathbf{q}} \newcommand{\bfr}{\mathbf{r}} \newcommand{\bfs}{\mathbf{s}} \newcommand{\bft}{\mathbf{t}} \newcommand{\bfu}{\mathbf{u}} \newcommand{\bfv}{\mathbf{v}} \newcommand{\bfw}{\mathbf{w}} \newcommand{\bfx}{\mathbf{x}} \newcommand{\bfy}{\mathbf{y}} \newcommand{\bfz}{\mathbf{z}} \newcommand{\bfA}{\mathbf{A}} \newcommand{\bfB}{\mathbf{B}} \newcommand{\bfC}{\mathbf{C}} \newcommand{\bfD}{\mathbf{D}} \newcommand{\bfE}{\mathbf{E}} \newcommand{\bfF}{\mathbf{F}} \newcommand{\bfG}{\mathbf{G}} \newcommand{\bfH}{\mathbf{H}} \newcommand{\bfI}{\mathbf{I}} \newcommand{\bfJ}{\mathbf{J}} \newcommand{\bfK}{\mathbf{K}} \newcommand{\bfL}{\mathbf{L}} \newcommand{\bfM}{\mathbf{M}} \newcommand{\bfN}{\mathbf{N}} \newcommand{\bfO}{\mathbf{O}} \newcommand{\bfP}{\mathbf{P}} \newcommand{\bfQ}{\mathbf{Q}} \newcommand{\bfR}{\mathbf{R}} \newcommand{\bfS}{\mathbf{S}} \newcommand{\bfT}{\mathbf{T}} \newcommand{\bfU}{\mathbf{U}} \newcommand{\bfV}{\mathbf{V}} \newcommand{\bfW}{\mathbf{W}} \newcommand{\bfX}{\mathbf{X}} \newcommand{\bfY}{\mathbf{Y}} \newcommand{\bfZ}{\mathbf{Z}} \newcommand{\scrA}{\mathscr{A}} \newcommand{\scrB}{\mathscr{B}} \newcommand{\scrC}{\mathscr{C}} \newcommand{\scrD}{\mathscr{D}} \newcommand{\scrE}{\mathscr{E}} \newcommand{\scrF}{\mathscr{F}} \newcommand{\scrG}{\mathscr{G}} \newcommand{\scrH}{\mathscr{H}} \newcommand{\scrI}{\mathscr{I}} \newcommand{\scrJ}{\mathscr{J}} \newcommand{\scrK}{\mathscr{K}} \newcommand{\scrL}{\mathscr{L} \cfadd{def:lin_interp}} \newcommand{\scrM}{\mathscr{M}} \newcommand{\scrN}{\mathscr{N}} \newcommand{\scrO}{\mathscr{O}} \newcommand{\scrP}{\mathscr{P}} \newcommand{\scrQ}{\mathscr{Q}} \newcommand{\scrR}{\mathscr{R}} \newcommand{\scrS}{\mathscr{S}} \newcommand{\scrT}{\mathscr{T}} \newcommand{\scrU}{\mathscr{U}} \newcommand{\scrV}{\mathscr{V}} \newcommand{\scrW}{\mathscr{W}} \newcommand{\scrX}{\mathscr{X}} \newcommand{\scrY}{\mathscr{Y}} \newcommand{\scrZ}{\mathscr{Z}} \newcommand{\LL}{\mathbb{L}} \newcommand{\induct}{\dashrightarrow} \newcommand{\with}{\curvearrowleft} \newcommand{\lrSpace}{\ensuremath{\mkern-1.5mu}} \newcommand{\eps}{\varepsilon} \newcommand{\eg}{\unskip, e.g.,\ } \newcommand{\Eg}{\unskip e.g.,\ } \newcommand{\dpp}{\text{.}} \newcommand{\dc}{\text{,}} \newcommand{\dx}{\, {\rm d}} \newcommand{\dxx}{{\rm d}} \newcommand{\normmm}[1]{{\left\vert\kern-0.25ex\left\vert\kern-0.25ex\left\vert #1 \right\vert\kern-0.25ex\right\vert\kern-0.25ex\right\vert} \cfadd{DNN_norm}} \DeclarePairedDelimiter{\pr}{(}{)} \DeclarePairedDelimiter{\br}{[}{]} \DeclarePairedDelimiter{\cu}{\{}{\}} \DeclarePairedDelimiter{\abs}{\lvert}{\rvert} \DeclarePairedDelimiter{\norm}{\lVert}{\rVert\cfadd{DNN_norm}} \DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor} \DeclarePairedDelimiter{\ceil}{\lceil}{\rceil} \DeclarePairedDelimiter{\vt}{\langle}{\rangle} \newcommand{\N}{\ensuremath{\mathbb N}} \newcommand{\Z}{\ensuremath{\mathbb Z}} \newcommand{\Q}{\ensuremath{\mathbb Q}} \newcommand{\R}{\ensuremath{\mathbb R}} \newcommand{\C}{\ensuremath{\mathbb C}} \newcommand{\E}{\ensuremath{\mathbb E}} \renewcommand{\P}{\ensuremath{\mathbb P}} \newcommand{\parallelization}{\operatorname{P} \cfadd{def:generalParallelization}} \newcommand{\parallelizationSpecial}{\mathbf{P} \cfadd{def:simpleParallelization}} \newcommand{\pa}[1]{\left({#1}\right)} \newcommand{\Rr}{\mathcal{R}_\mathfrak{r} \cfadd{def:ANNrealization} \cfadd{rectifier}} \newcommand{\Ra}{\mathcal{R}_a \cfadd{def:ANNrealization}} \newcommand{\1}{\mathbbm{1}} \newcommand{\ii}{\mathfrak{i} \cfadd{padding}} \newcommand{\pu}{\mathfrak{u}} \newcommand{\fj}{\mathfrak{x}} \newcommand{\network}{neural network \cfadd{def:ANN2}} \newcommand{\interpolatingDNN}{\mathbf{F}} \newcommand{\AffineANN}{\cfadd{linear}\mathbf{A}} \newcommand{\bbigANNsum}{\cfadd{def:ANNsum:same}\mathop{\oplus}\limits} \newcommand{\scalarMultANN}[2]{\cfadd{def:ANNscalar}#1\circledast#2} \newcommand{\interpol}[2]{\cfadd{def:lin_interp}\mathscr{L}_{#1}^{#2}} \newcommand{\infnorm}[1]{\cfadd{def:p-norm}\norm{#1}_{\infty}} \newcommand{\MappingStructuralToVectorized}{\cfadd{def:TranslateStructuredIntoVectorizedDescription}\mathcal{T}} \newcommand{\pmat}[1]{\begin{pmatrix}#1\end{pmatrix}} \newcommand{\fwpr}{W} \newcommand{\fwprr}{W} \newcommand{\smallU}{u} \newcommand{\smallF}{f} \newcommand{\funcF}{F} \newcommand{\funcG}{g} \newcommand{\boundFG}{\mathfrak{L}} \newcommand{\LipConstF}{L} \newcommand{\mlp}[3]{U_{#1}^{#2,#3}} \newcommand{\Msymb}{\mathcal{M}} \newcommand{\littleM}{m} \newcommand{\littleMM}{m} \newcommand{\funcM}{\phi} \newcommand{\funcMrep}[1]{\max\{ k \in \N \colon k \le \exp( \abs{\ln(#1)}^{1/2} ) \}} \newcommand{\cost}[3]{{\mathfrak{C}}_{#3,#1,#2}} \newcommand{\firstConstant}[1]{\mathfrak{K}_{#1}} \renewcommand{\fR}{\mathscr{n}} \newcommand{\secondConstant}[1]{\firstConstant{#1}\sqrt{#1 -1}} \newcommand{\maxfn}{\varphi} \renewcommand{\AA}{\mathbb{A}} \newcommand{\PP}{\mathbf{P}} \newcommand{\BB}{\mathbb{B}} \newcommand{\CC}{\mathbb{C}} \newcommand{\A}{\mathbf{A} \cfadd{linear}} \newcommand{\U}{\mathbf{U}} \newcommand{\V}{\mathbf{V}} \newcommand{\F}{\mathbf{F}} \newcommand{\G}{\mathbf{G}} \newcommand{\I}{\mathbf{I} \cfadd{def:id_net}} \renewcommand{\H}{\mathbf{H}} \newcommand{\NN}{\mathbf{N}} \newcommand{\lbd}{u} \newcommand{\ubd}{v} \newcommand{\len}{n} \newcommand{\weight}{W \cfadd{linear}} \newcommand{\bias}{B \cfadd{linear}} \newcommand{\ind}[1]{\mathbbm{1}_{\smash{#1}}} \newcommand{\iind}[1]{\mathlarger{\mathbbm{1}}_{#1}} \newcommand\numberthis{\addtocounter{equation}{1}\tag{\theequation}} \newcommand{\indicator}[1]{\mathbbm{1}_{\smash{#1}}} % and in equations \newcommand{\qandqShort}{\quad\text{and}\quad} \newcommand{\andShort}{\text{ and }} \newcommand{\forallDist}{\forall\,} \newcommand{\identity}[1]{\mathrm{Id}_{#1}} \newcommand{\smallsum}{\textstyle\sum} \newcommand{\SmallSum}[2]{ {\textstyle\sum\limits_{#1}^{#2}}} \newcommand{\idRelu}{\mathfrak I} \newcommand{\Exists}{\exists\,} \newcommand{\Forall}{\forall\,} \newcommand{\mc}[1]{\mathcal{#1}} \newcommand{\mf}[1]{\mathfrak{#1}} \newcommand{\affineMap}{\mathbb{A}} \newcommand{\idMatrix}{\operatorname{I} \cfadd{def:identityMatrix}} \newcommand{\ANNs}{\mathbf{N} \cfadd{def:ANN}} \newcommand{\MatrixANN}[1]{\mf N_{#1}} \newcommand{\activation}{a} \newcommand{\activationDim}[1]{\mathfrak{M}_{\activation,#1} \cfadd{multi}} \newcommand{\functionANN}[1]{\mathcal{R}_{#1} \cfadd{def:ANNrealization}} \newcommand{\paramANN}{\mathcal{P} \cfadd{def:ANN}} \newcommand{\paramNotZeroANN}{\mathscr{P}} \newcommand{\lengthANN}{\mathcal{L} \cfadd{def:ANN}} \newcommand{\inDimANN}{\mathcal{I} \cfadd{def:ANN}} \newcommand{\compANN}[2]{{#1 \bullet \allowbreak #2} \cfadd{def:ANNcomposition}} \newcommand{\concANN}[2]{{#1 \odot #2}} \newcommand{\concPsiANN}[2]{{#1 \odot_{\Psi} #2}} \newcommand{\paraANN}[1]{\mathbf{P}_{#1}} \newcommand{\paraLANN}[2]{\mathbf{P}_{#1,#2}} \newcommand{\outDimANN}{\mathcal{O} \cfadd{def:ANN}} \newcommand{\longerANN}[1]{\mathcal{E}_{#1} \cfadd{def:ANNenlargement}} \newcommand{\idANN}[2]{\mathbb{I}_{#1,#2}} \newcommand{\idANNshort}[1]{\mathbb{I}_{#1}} \newcommand{\dims}{\mathcal{D} \cfadd{def:ANN}} \newcommand{\hiddenLength}{\mathcal{H} \cfadd{def:ANN}} \newcommand{\hiddenDimId}{\mathfrak{i}} \newcommand{\qandq}{\qquad\text{and}\qquad} \newcommand{\andq}{\text{and}\qquad} \newcommand{\rect}{\mathfrak r \cfadd{rectifier}} \newcommand{\Rect}{\mathfrak R} \newcommand{\multdim}{\mathfrak M} \DeclareMathOperator{\id}{id} \newcommand{\matrixANN}[1]{\mathfrak{W}_{#1}} \newcommand{\vectorANN}{\mathfrak{B}} \newcommand{\sumANN}{\mathfrak{S} \cfadd{def:ANN:sum}} \newcommand{\extensionANN}{\mathfrak{T} \cfadd{def:ANN:extension}} \newcommand{\dimANNlevel}{\mathbb{D} \cfadd{def:ANN}} \newcommand{\power}[2]{#1^{\bullet #2} \cfadd{def:iteratedANNcomposition}} \newcommand{\scalar}[2]{ #1 \circledast #2 \cfadd{def:ANNscalar}} \newcommand{\transpose}{* \cfadd{def:Transpose}} \newcommand{\oSum}{\oplus \cfadd{def:ANNsum:same}} \newcommand{\OSum}[2]{{\mathop\oplus\limits_{#1}^{#2} } \cfadd{def:ANNsum:same} } \newcommand{\bSum}{{\mathop\boxplus} \cfadd{def:ANN:sum_diff}} \newcommand{\BSum}[3]{{\mathop\boxplus\limits_{#1,#2}^{#3}} \cfadd{def:ANN:sum_diff}} \newcommand{\modCont}{w \cfadd{mod_cont_def}} \allowdisplaybreaks \usepackage{scalerel,stackengine} \newcommand\pig[1]{\scalerel*[5pt]{\big#1}{% \ensurestackMath{\addstackgap[1.5pt]{\big#1}}}} \newcommand\pigl[1]{\mathopen{\pig{#1}}} \newcommand\pigr[1]{\mathclose{\pig{#1}}} \newcommand\bpig[1]{\scalerel*[5pt]{\big#1}{% \ensurestackMath{\addstackgap[1.5pt]{\big#1}}}} \newcommand\bpigl[1]{\mathopen{\bpig{#1}}} \newcommand\bpigr[1]{\mathclose{\bpig{#1}}} %%%%%%%%%%%%%%%%%%%%%%%% %%% Enum %%%%%%%%%%%%%%%%%%%%%%%% \ExplSyntaxOn \NewDocumentCommand{\enum}{ O{;} m o } { \my_enum:nnn { #1 } { #2 } { #3 } } \seq_new:N \l__my_enum_seq \tl_new:N \l__my_enum_item_tl \prop_new:N \l__verbs \prop_put:Nnn \l__verbs {show} {shows} \prop_put:Nnn \l__verbs {imply} {implies} \prop_put:Nnn \l__verbs {demonstrate} {demonstrates} \prop_put:Nnn \l__verbs {prove} {proves} \prop_put:Nnn \l__verbs {establish} {establishes} \prop_put:Nnn \l__verbs {ensure} {ensures} \prop_put:Nnn \l__verbs {assure} {assures} \prop_put:Nnn \l__verbs {yield} {yields} \int_new:N \l__number_of_args \cs_new_protected:Nn \my_enum:nnn { %\seq_clear:N \l__my_enum_seq %\clist_map_variable:nNn { #1 } \l__my_enum_item_tl % { % \__my_enum_add:V \l__my_enum_item_tl % } \seq_set_split:Nnn \l__my_enum_seq { #1 } { #2 } \seq_remove_all:Nn \l__my_enum_seq {} \int_set_eq:NN \l__number_of_args { \seq_count:N \l__my_enum_seq } %triangle %\int_compare:nF { \seq_count:N \l__my_enum_seq < 2 } { s } %\nobreakspace \seq_use:Nnnn \l__my_enum_seq { ~and~ } { ,~ } { ,~and~ } \IfNoValueTF{#3}{}{ \space \int_compare:nNnTF{ \l__number_of_args } < {2}{ \prop_item:Nn \l__verbs {#3} }{ #3 } } } \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%% %%% Automatic cf-lists %%%%%%%%%%%%%%%%%%%%%%%% \ExplSyntaxOn \seq_new:N \g_cflist_loaded \seq_new:N \g_cflist_pending \NewDocumentCommand{\cfadd}{ m } { \seq_if_in:NnF \g_cflist_loaded { #1 } { \seq_if_in:NnF \g_cflist_pending { #1 } { \seq_gput_right:Nn \g_cflist_pending { #1 } } } } \NewDocumentCommand{\cfload}{ o } { \seq_if_empty:NTF \g_cflist_pending {\unskip} { (cf.\ \cref{\seq_use:Nn \g_cflist_pending {,}})\IfValueTF{#1}{#1~}{\unskip} \seq_gconcat:NNN \g_cflist_loaded \g_cflist_loaded \g_cflist_pending \seq_gclear:N \g_cflist_pending } } \NewDocumentCommand{\cfclear} {} { \seq_gclear:N \g_cflist_loaded \seq_gclear:N \g_cflist_pending } \NewDocumentCommand{\cfout}{ o } { \seq_if_empty:NTF \g_cflist_pending {\unskip} { (cf.\ \cref{\seq_use:Nn \g_cflist_pending {,}})\IfValueTF{#1}{#1~}{\unskip} \seq_gclear:N \g_cflist_pending } } \NewDocumentCommand{\ifnocf} { m } { \seq_if_empty:NT \g_cflist_pending { #1 } } \NewDocumentCommand{\cfconsiderloaded}{ m }{ \seq_gput_right:Nn \g_cflist_loaded {#1} } \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%% %%% Automatic proof headers and endings, local labels %%%%%%%%%%%%%%%%%%%%%%%% \NewDocumentEnvironment {athm} {m m} {% %\newenvironment{athm}[2]{% \begin{#1}\label{#2}\global\def\loc{#2}% }{% \end{#1}% } \NewDocumentEnvironment{aproof} {} {% \begin{proof}[Proof~of~\cref{\loc}]% }{% \finishproofthus \end{proof}% } \ExplSyntaxOff \newcommand{\eqqref}[1]{\cref{eq:\loc.#1}} \newcommand{\eqlabel}[1]{\label{eq:\loc.#1}} \newcommand{\finishproofthus}{The proof of \cref{\loc} is thus complete.} \newcommand{\finishproofthis}{This completes the proof of \cref{\loc}.} %%%%%%%%%%%%%%%%%%%%%%%% %%% Flexible math displays %%%%%%%%%%%%%%%%%%%%%%%% \ExplSyntaxOn \NewDocumentEnvironment{flexmath}{ m o }{ \str_if_eq:noTF {a} {#1} { \begin{equation} \IfValueT{#2}{\label{eq:\loc.#2}} \begin{aligned} } { \catcode`&=9 \renewcommand{\\}{} \str_if_eq:noTF {d} {#1} { \begin{equation} \IfValueT{#2}{\label{eq:\loc.#2}} } { \begin{math} } } }{ \str_if_eq:noTF {i} {#1} { \end{math} \catcode`&=4 } { \str_if_eq:noTF {d} {#1} { \end{equation} } { \end{aligned} \end{equation} } } } \ExplSyntaxOff \ExplSyntaxOn \bool_new:N \g_noteobserve \NewDocumentCommand{\setnote}{}{ \bool_gset_true:N \g_noteobserve } \NewDocumentCommand{\setobserve}{}{ \bool_gset_false:N \g_noteobserve } \NewDocumentCommand{\nobs}{ o }{ \IfValueT{#1}{ \str_if_eq:noTF {note} {#1} { \bool_gset_true:N \g_noteobserve } { \str_if_eq:noTF {Note} {#1} { \bool_gset_true:N \g_noteobserve } { \bool_gset_false:N \g_noteobserve } } } \bool_if:nTF { \g_noteobserve } { \bool_gset_false:N \g_noteobserve note } { \bool_gset_true:N \g_noteobserve observe } \IfValueF{#1}{~} } \NewDocumentCommand{\Nobs}{ o }{ \IfValueT{#1}{ \str_if_eq:noTF {note} {#1} { \bool_gset_true:N \g_noteobserve } { \str_if_eq:noTF {Note} {#1} { \bool_gset_true:N \g_noteobserve } { \bool_gset_false:N \g_noteobserve } } } \bool_if:nTF { \g_noteobserve } { \bool_gset_false:N \g_noteobserve Note } { \bool_gset_true:N \g_noteobserve Observe } \IfValueF{#1}{~} } \bool_new:N \g_hencetherefore \NewDocumentCommand{\hence}{ o }{ \IfValueT{#1}{ \str_if_eq:noTF {hence} {#1} { \bool_gset_true:N \g_hencetherefore } { \str_if_eq:noTF {Hence} {#1} { \bool_gset_true:N \g_hencetherefore } { \bool_gset_false:N \g_hencetherefore } } } \bool_if:nTF { \g_hencetherefore } { \bool_gset_false:N \g_hencetherefore hence } { \bool_gset_true:N \g_hencetherefore therefore } \IfValueF{#1}{~} } \NewDocumentCommand{\Hence}{ o }{ \IfValueT{#1}{ \str_if_eq:noTF {hence} {#1} { \bool_gset_true:N \g_hencetherefore } { \str_if_eq:noTF {Hence} {#1} { \bool_gset_true:N \g_hencetherefore } { \bool_gset_false:N \g_hencetherefore } } } \bool_if:nTF { \g_hencetherefore } { \bool_gset_false:N \g_hencetherefore Hence } { \bool_gset_true:N \g_hencetherefore Therefore } \IfValueF{#1}{~} } \int_new:N \g_furthermore \NewDocumentCommand{\Moreover}{ o o }{ \IfValueT{#1}{ \str_case:nn {#1} { {Next} {\int_gset:Nn {\g_furthermore} {0}} {Furthermore} {\int_gset:Nn {\g_furthermore} {1}} {Moreover} {\int_gset:Nn {\g_furthermore} {2}} {In~addition} {\int_gset:Nn {\g_furthermore} {3}} {note} {\bool_gset_true:N \g_noteobserve} {observe} {\bool_gset_false:N \g_noteobserve} } \IfValueT{#2}{ \str_case:nn {#2} { {Next} {\int_gset:Nn {\g_furthermore} {0}} {Furthermore} {\int_gset:Nn {\g_furthermore} {1}} {Moreover} {\int_gset:Nn {\g_furthermore} {2}} {In~addition} {\int_gset:Nn {\g_furthermore} {3}} {note} {\bool_gset_true:N \g_noteobserve} {observe} {\bool_gset_false:N \g_noteobserve} } } } \int_case:nn { \int_mod:nn {\g_furthermore} {4} } { { 0 } { Next,~\nobs that} { 1 } { Furthermore,~\nobs that} { 2 } { Moreover,~\nobs that} { 3 } { In~addition,~\nobs that} } \int_gincr:N \g_furthermore \IfValueF{#1}{~} } \ExplSyntaxOff \ExplSyntaxOn \int_new:N \g_enumit \NewDocumentCommand{\Enum}{ m o }{ \IfValueT{#2}{ \str_case:nn {#2} { {ensure} {\int_gset:Nn {\g_enumit} {0}} {ensures} {\int_gset:Nn {\g_enumit} {0}} {assure} {\int_gset:Nn {\g_enumit} {1}} {assures} {\int_gset:Nn {\g_enumit} {1}} {prove} {\int_gset:Nn {\g_enumit} {2}} {proves} {\int_gset:Nn {\g_enumit} {2}} {show} {\int_gset:Nn {\g_enumit} {3}} {shows} {\int_gset:Nn {\g_enumit} {3}} {demonstrate} {\int_gset:Nn {\g_enumit} {4}} {demonstrates} {\int_gset:Nn {\g_enumit} {4}} {yield} {\int_gset:Nn {\g_enumit} {5}} {yields} {\int_gset:Nn {\g_enumit} {5}} {establish} {\int_gset:Nn {\g_enumit} {6}} {establishes} {\int_gset:Nn {\g_enumit} {6}} {imply} {\int_gset:Nn {\g_enumit} {7}} {implies} {\int_gset:Nn {\g_enumit} {7}} } } \int_case:nn { \int_mod:nn {\g_enumit} {8} } { { 0 } { \enum{ #1 }[ensure]{ } } { 1 } { \enum{ #1 }[assure] } { 2 } { \enum{ #1 }[prove] } { 3 } { \enum{ #1 }[show] } { 4 } { \enum{ #1 }[demonstrate] } { 5 } { \enum{ #1 }[yield] } { 6 } { \enum{ #1 }[establish] } { 7 } { \enum{ #1 }[imply] } } \int_gincr:N \g_enumit } \ExplSyntaxOff