\section{Введение}
Закон больших чисел (далее ЗБЧ) является одной из основополагающих теорем теории вероятностей и математической статистики. Интерес к любым его новым вариантам обусловлен тем, что на этой теореме основано большинство методов обоснования состоятельности оценок параметров и проверки гипотез, притом, что в последнее время появляются все новые более сложные модели, регулярно требующие пересмотра прежних методов; кроме того, дальнейшие уточнения скорости сходимости часто бывают основаны на определенных улучшениях алгоритмов, не обладающих оптимальными асимптотическими свойствами, а лишь имеющих указанное свойство состоятельности.
История ЗБЧ началась с работы Якоба Бернулли  1713 года, см. \cite{Bernoulli}; она была затем продолжена Де Муавром, Лапласом, Чебышевым \cite{Chebyshev} и рядом других. Казалось, эта история завершилась открытиями Хинчина \cite{Khintchin} и Колмогорова  \cite[Теорема 6.3]{Kolmogorov}, нашедшими, что как для слабого (в \cite{Khintchin}), так и для усиленного законов больших чисел (в \cite{Kolmogorov}, в дальнейшем УЗБЧ) достаточно,
помимо независимости в совокупности и одинаковой распределенности слагаемых, лишь конечности математического ожидания каждого из них. Отметим, что УЗБЧ, как усиленная версия ЗБЧ, появился лишь в начале 20го века в работах \cite[chapter II, section 11]{Borel1909} и \cite[Lemma 2 \& formulae (28)-(29)]{Cantelli}. Об исторической роли этих двух работ, написанных в ``доколмогоровскую эпоху'' и потому не основанных на современных аксиомах теории вероятностей \cite{Kolmogorov}, и в то же время, максимально близких к ним, см. \cite{Seneta92}.
Есть и третья, менее известная работа по УЗБЧ \cite{Mazurkiewicz}, вышедшая в то же время, что и статья Кантелли.
Еще одна ранняя версия УЗБЧ для лишь попарно независимых, одинаково распределенных  слагаемых, хотя и с конечной дисперсией появилась в \cite{Rajchman32} всего за год до ``Основных понятий теории вероятностей'' Колмогорова.
Тем не менее, история ЗБЧ и УЗБЧ продолжилась вплоть до самого недавнего времени: не касаясь всех ответвлений, упомянем одну из важнейших как для данной работы, так и для всей данной области статью
\cite{Etemadi81}, в которой был предложен новый способ доказательства УЗБЧ, подходящий не только для независимых в совокупности, как у Колмогорова (см. \cite[теорема 6.III]{Kolmogorov}), но также и для лишь попарно  независимых слагаемых, и к тому же использующий только неравенство Чебышева вместо более ``обычных'' для данной области мартингальных неравенств, предложенных и введенных в практику Колмогоровым \cite{Kolmogorov}. Это направление было далее распространено на случай неодинаково распределенных слагаемых в работе \cite{Hungarians} при определенных условиях.
Затем последовали статьи \cite{Rogger, Chandra, Rogger2}, где условия на разнораспредленные слагаемые были ослаблены до равномерной интегрируемости (РИ) и далее до РИ по Чезаро (Чезаро-РИ); в \cite{Rogger2} слагаемые предполагаются лишь некоррелированными\footnote{Отметим, что при конечных дисперсиях вариант УЗБЧ для некоррелированных слагаемых можно найти в современных задачниках, см. \cite[Задача 4.24]{ZSCh} (конечно, это задача ``со звездочкой'').}.
При этом для ``слабого'' ЗБЧ и для УЗБЧ были предложены  различные типы условий РИ. Одного из них в статье \cite{Chandra} оказалось достаточно для нового варианта УЗБЧ, обобщающего результат Колмогорова, причем для лишь попарно независимых слагаемых, в то время, как
некоторые иные новые варианты УЗБЧ были доказаны при усиленных условиях типа РИ, которые однако, не позволяли включить классический УЗБЧ Колмогорова.
Отметим еще, что работа  \cite{Rajchman32} кратко изложена и обобщена в недавней статье \cite{Chandra3}.
Другие предложенные условия позволили установить новые варианты {\em слабого} ЗБЧ, который в данной заметке не будет обсуждаться. Также иные обобщения УЗБЧ можно найти в \cite{bingham86}. Наконец, в недавней работе \cite{Janisch} также  можно найти некоторые варианты достаточных условий для УЗБЧ, близкие к условиям в \cite{Chandra2}; при этом в \cite{Janisch} имеются лишь две ссылки: а именно, на статьи \cite{Etemadi81} и \cite{Hungarians}. Добавим, что в большинстве недавних работ на тему ЗБЧ и УЗБЧ можно найти дополнительную библиографию: в настоящей заметке перечислена лишь небольшая часть имеющейся в этой области литературы.

Цель настоящей заметки --  предложить некоторое дальнейшее элементарное обобщение, также для случая попарно независимых величин, и {\em включающее колмогоровский УЗБЧ  \cite[теорема 6.5.3]{Kolmogorov}.} Суть нового обобщения в том, что некоторой определенной -- не обязательно конечной -- части слагаемых  может быть разрешено иметь бесконечное математическое ожидание. Формально это не допускается ни в одной из процитированных выше работ. Предлагаемый метод использует одну из теорем в \cite{Chandra}, а также вариацию некоторого вспомогательного  результата из статьи \cite{Sawyer69},  упомянутого вкратце в работе \cite{Petrov}, посвященной иному аспекту ЗБЧ. Как уже было сказано, ссылки на другие результаты и другие направления в области УЗБЧ можно найти в обзорных частях упомянутых работ в списке литературы.

Настоящая заметка  состоит из четырех разделов: данное Введение, Постановка задачи, УЗБЧ для попарно независимых случайных величин (теорема \ref{thm1}), Доказательство теоремы \ref{thm1}.

\section{Постановка задачи}
Вначале предположим, что последовательность $(X_n, n\ge 1)$ состоит из попарно независимых случайных величин с конечными математическими ожиданиями, для которых без ограничения общности выполнены равенства
\begin{equation}\label{eq2-1}
\mathbb E X_i = 0, \qquad i\ge 1.
\end{equation}
В дальнейшем, по крайней мере, в части результатов это предположение будет несколько ослаблено. Сразу скажем, что не будем здесь касаться обобщений, связанных с вычитанием ``урезанных'' математических ожиданий, как и сходимости лишь по некоторым  подпоследовательностям индексов.

Если не считать этих последних указанных вариантов, по-видимому, большинство недавних обобщений классического ЗБЧ для лишь {\em попарно независимых} с.в. $X_n$ предполагают ту, или иную форму условия РИ, либо в виде
\begin{equation}\label{eq2-2}
\sup_n \mathbb E|X_n| 1(|X_n|>N) \to 0, \quad N\to \infty,
\end{equation}
либо с использованием средних по Чезаро
\begin{equation}\label{eq2-3}
\sup_n \frac1{n} \sum_{k=1}^n \mathbb E|X_k| 1(|X_k|>N) \to 0, \quad N\to \infty.
\end{equation}
Иное условие, также типа РИ, хотя и чуть более ограничительное, имеет вид (см. \cite{BoseChandra94})
\begin{equation}\label{eq2-4}
\int_0^\infty \sup_n \mathbb P(|X_n|>x)dx < \infty.
\end{equation}
Этот вариант интересен и важен тем, что включает в себя и классический результат Колмогорова, в отличие от иных версий подобных обобщений  УЗБЧ на попарно независимые случайные величины. Условия же (\ref{eq2-2}) и (\ref{eq2-3}) в отсутствие дополнительных предположений достаточны лишь для слабого ЗБЧ
\cite{Chandra, Rogger}.

Можно отметить, что если один, или несколько -- но обязательно конечное число --  первых членов последовательности $(X_n)$ имеют бесконечные ожидания, то, разумеется, это не повлияет на конечный асимптотический результат.
В свою очередь, условие (\ref{eq2-4}) можно ослабить до следующего варианта: существует $n_0$ такое, что
\begin{equation}\label{eq2-7}
\int_0^\infty \underbrace{\sup_{n\ge n_0} \mathbb P(|X_n|>x)}_{=: \hat G^X(x)}dx < \infty,
\end{equation}
либо до аналога (\ref{eq2-7}) по Чезаро,
\begin{equation}\label{eq2-8}
C(n_0):=  \int_0^\infty  \sup_{n\ge n_0} \frac1{n} \sum_{k=n_0}^n \mathbb P(|X_k|>x)dx < \infty.
\end{equation}
Здесь от первых $n_0$ слагаемых не требуется вообще ничего, даже конечности каких-либо моментов, меньших единицы.
Вместе с тем, такое тривиальное обобщение
допускает еще одно, немного более интересное, хотя также элементарное усиление, когда не иметь конечное математическое ожидание разрешено бесконечному числу слагаемых, и, более того, эти не имеющие конечное среднее слагаемые могут быть  как угодно зависимы. Это и является целью настоящей заметки.

\section{УЗБЧ для попарно независимых с.в.}
Допустим, что имеется последовательность попарно независимых случайных величин $X_n$, удовлетворяющих условию типа Чезаро-РИ (\ref{eq2-8}) с некоторым $n_0\ge 0$, а также \begin{equation}\label{E0}
\mathbb EX_n=0, \quad n\ge n_0,
\end{equation}
{\em и} другая последовательность случайных величин $(Y_n)$ со свойством
\begin{equation}\label{3-A1}
\sup_n \mathbb E|Y_n|^a <\infty, \quad \text{для некоторого $a\in (0,1)$},
\end{equation}
причем
\begin{equation}\label{3-A2b}
\int_0^\infty \sup_{n\ge 1} \frac1{n}\sum_{k=1}^n \mathbb P(|Y_k|^a>x)dx <\infty.
\end{equation}
(Отметим, что и в (\ref{3-A2b}) можно было бы допустить суммирование, начиная не с единицы, а с $n_0$, подобно формуле (\ref{eq2-8}); однако, проще конечное число ``совсем плохих'' слагаемых, не удовлетворяющих даже условию (\ref{3-A1}), отнести к последовательности $(X_n)$, что уже было предположено, см. замечание после формулы (\ref{eq2-8}).)
}

Наконец, предполагается, что последовательность $(Z_n)$ построена как ``смесь'', состоящая из членов обеих последовательностей $(X_i)$ и  $(Y_j)$. А именно, она (последовательность $Z_n$) содержит элементы $Y$ (как и элементы $X$) на определенных неслучайных местах, причем последовательность индексов для $(Y_j)$ является ``редкой'' в следующем смысле. Пусть
$$
\kappa(n) = \sum_{j=1}^n 1_Y(j),
$$
где   $1_Y(j) = 1$, если индекс $j$ соответствует одной из случайных величин из последовательности $Y_n$, и $1_Y(j) = 0$ в противном случае. Условием ``разреженности'' является конечность верхнего предела
\begin{equation}\label{3-A3}
\limsup_{n\to\infty}  \frac{\kappa(n)}{n^a} <\infty,
\end{equation}
где $a$ -- это та же самая постоянная из условия (\ref{3-A1}). Отметим, что никаких условий независимости на последовательность $Y_n$ не налагается; ее элементы могут быть как взаимно зависимы, так и зависимы с некоторыми, или даже со всеми членами последовательности  $(X_n)$. Основным результатом заметки является следующий вариант УЗБЧ.
\begin{Theorem}\label{thm1}
При одновременном выполнении условий (\ref{eq2-1}) и
(\ref{eq2-8})  -- (\ref{3-A3}), имеет место следующий усиленный закон больших чисел:
$$
\frac1{n} \sum_{k=1}^n Z_k \stackrel{\text{п.н.}}\to 0.
$$
\end{Theorem}
Отметим, что ни условие РИ, ни РИ по Чезаро {\em для всех} $Z_n$, вообще говоря, может не быть выполнено. Также, по сравнению со многими из  предыдущих работ ослаблено условие попарной независимости, которое не требуется от разреженной ``плохой''  последовательности $(Y_n)$, а также от некоторого конечного числа ($n_0-1$) ``совсем плохих'' слагаемых из $(X_n)$.

\section{Доказательство теоремы \ref{thm1}}
Для доказательства понадобятся две леммы. Одна из них, фактически, установлена в \cite{BoseChandra94} и \cite{Korchevsky} и является аналогом теоремы Этемади из \cite{Etemadi81}, а другая является также аналогом  следствия  к лемме 3 в работе \cite{Sawyer69} для неодинаково распределенных случайных величин.

\begin{Lemma}[для $(X_n)$]\label{lem1}
Пусть справедливы условия (\ref{eq2-1}) и
(\ref{eq2-8}) -- (\ref{E0}). Тогда
\begin{equation}\label{eqlem2-1}
\frac1{n} \sum_{k=1}^{n-\kappa(n)} X_k \stackrel{\text{п.н.}}\to 0, \quad n\to \infty.
\end{equation}
\end{Lemma}

\begin{proof}
Поскольку свойства первых $n_0-1$ слагаемых никак не влияют на предел в (\ref{eqlem2-1}), так что
\[
\frac1{n}\sum_{k=1}^{n_0-1} X_k \stackrel{\text{п.н.}} \to 0, \quad n\to\infty,
\]
то достаточно проверить лишь, что
\[
\frac1{n} \sum_{k=n_0}^{n-\kappa(n)} X_k \stackrel{\text{п.н.}}\to 0, \quad n\to \infty.
\]
Указанное свойство, а стало быть, и
утверждение леммы следуют из теоремы 2 в \cite{Korchevsky}; см. также \cite{BoseChandra94}.
\end{proof}

\begin{Lemma}[для $(Y_n)$]\label{lem2}
Пусть выполнено условие (\ref{3-A3}) и при некотором $a\in (0,1)$ имеет место условие
\begin{equation}\label{lem3-1}
\sup_{n\ge 1} \frac1{n}\sum_{k=1}^n \mathbb P(|Y_k|^a >x) =:\bar G^Y(x), \quad \& \quad \int_0^\infty \bar G^Y(x)dx<\infty.
\end{equation}
Тогда
\begin{equation}\label{eqYn0}
\frac1{n} \sum_{k=1}^{\kappa(n)} Y_k \stackrel{\text{п.н.}}\to 0, \quad n\to \infty.
\end{equation}
\end{Lemma}

\begin{proof}
Положим
$V_n:= |Y_n|^a$ и $\mathbb P(|Y_n|^a >x) =:\bar G_n^Y(x)$; отметим, что в силу условия (\ref{lem3-1}) все случайные величины $V_n$ имеют конечные математические ожидания, хотя, возможно, и не равномерно ограниченные:
$$
\mathbb EV_n \le n^{}\int_0^\infty \bar G^Y(x)dx < \infty,
$$
причем равномерно ограничены суммы
$$
\frac1{n}\sum_{k=1}^{n}\mathbb EV_k \le \int_0^\infty \bar G^Y(x)dx < \infty.
$$
Положим
$\tilde{V}_n:=\min (V_n, n) $. Тогда при любом $p>1$
имеем, следуя работе \cite[доказательство леммы 3]{Sawyer69} и некоторым приемам из более ранних работ, в частности, \cite{MZ}, см. также \cite{Korchevsky},
\begin{align*}
&\mathbb E\sum_{n=3}^{\infty}\frac{\tilde{V}^p_n}{n^p}=\sum_{n=3}^{\infty}\mathbb E\frac{\tilde{V}^p_n}{n^p} =\sum_{n=3}^{\infty}\frac1{n^p}\mathbb E({V^p_n}1(V_n\leq n)+n^p1(V_n> n))
 \\\\
&= \sum_{n=3}^\infty \frac1{n^p}
\int_0^n p t^{p-1} \bar G^Y_n(t)dt
= c_p\sum_{n\ge 2}
\sum_{j=n}^\infty \frac1{j^{p+1}}
\sum_{\ell =1}^n \int_{\ell-1}^\ell p t^{p-1} \bar G^Y_n(t)dt
 \\\\
&\le  c_p\sum_{n\ge 3}
\sum_{j=n}^\infty \frac1{j^{p+1}}
\sum_{\ell =1}^j \int_{\ell-1}^\ell p t^{p-1} \bar G^Y_n(t)dt

= c_p \sum_{j\ge 3} \frac1{j^p} \sum_{\ell =1}^j  \int_{\ell-1}^\ell p t^{p-1} \underbrace{\frac1{j} \sum_{n=3}^j \bar G^Y_n(t)}_{\le \bar G^Y(t)}dt
 \\\\
& \le c_p \sum_{j\ge 3} \frac1{j^p} \sum_{\ell =1}^j  \int_{\ell-1}^\ell p t^{p-1} \bar G^Y(t)dt = c_p \sum_{\ell = 1}^\infty \int_{\ell-1}^\ell p t^{p-1} \bar G^Y(t)dt
\underbrace{\sum_{j=3\vee \ell} ^\infty \frac1{j^p}}_{\displaystyle\le \frac{c_p}{\ell^{p-1}}}
 \\\\
&\le  c_p \int_0^\infty \bar G^Y(t)dt <\infty.
\end{align*}
В данной выкладке все постоянные $c_p$ конечны и могут быть равны, или не равны друг другу.
Заметим еще, что первые два члена ряда
$
\mathbb E\sum_{n=1}^{\infty}n^{-p}\tilde{V}^p_n
$
конечны. Стало быть, почти наверное сходится ряд
$$
\sum_{n=1}^{\infty}\frac{\tilde{V}^p_n}{n^p}<\infty,
$$
а вместе с ним и
$$
\sum_{n=1}^{\infty}\frac{V^p_n}{n^p}
=\sum_{n=1}^{\infty}\frac{|Y_n|^{ap}}{n^p}<\infty \quad (\text{п.н.}).
$$
Выбирая $p=1/a$, получаем
\[
\sum_{n=1}^{\infty}\frac{|Y_n|}{n^{1/a}}<\infty \quad (\text{п.н.}).
\]
В силу леммы Кронекера (см., например, \cite[Lemma IV.3.2]{Shiryaev2}), отсюда вытекает, что
\[
\frac1{n^{1/a}} \sum_{k=1}^{n} Y_k \stackrel{\text{п.н.}}\to 0, \quad n\to \infty,
\]
что влечет за собой  (\ref{eqYn0}) в силу условия (\ref{3-A3}).
Утверждение леммы следует.
\end{proof}

\medskip

\noindent
{\em Доказательство теоремы.}
Наша цель -- установить сходимость
\begin{equation*}\label{eq4-1}
\mathbb P\left(\frac1{n} \sum_{k=1}^n Z_k
\to 0, \quad n\to \infty\right) = 1.
\end{equation*}
Искомое равенство является прямым следствием (\ref{eqlem2-1}) и (\ref{eqYn0}). Теорема доказана. \hfill
$\square$

\section{Благодарности}
Для первого автора данное исследование было поддержано Российским Фондом Фундаментальных Исследований, грант 20-01-00575а.
Для второго автора данная работа
была поддержана грантом Фонда развития теоретической физики и математики «БАЗИС». Теорема \ref{thm1} и лемма \ref{lem1} установлены первым автором, лемма \ref{lem2} -- вторым.

Abstract: A remark, likely a new one, about a version of a Strong Law of Large Numbers
is proposed in this note for pairwise independent random variables. The main
goal is to relax the assumption on a finite expectation for each term.


\section*{Internal} #1}}
\newcommand{\Draftsection}[1]{\drafttext{\clearpage \section*{Internal} #1}}
\newcommand{\draftauthor} [4][red]{
  \newcommand{#2}[1]{\drafttext  {\color{#1}\Unless{\Empty{#4}}{#4: }##1}}
  \newcommand{#3}[1]{\draftmargin{\color{#1}\Unless{\Empty{#4}}{#4: }##1}}}
\newcommand{\draftnewpage}   {\Ifdraft{\newpage}}
\newcommand{\draftclearpage} {\Ifdraft{\clearpage}}

\newlength{\posLength}
\newcommand{\pos}[3][c]{\settowidth{\posLength}{#3}\makebox[\posLength][#1]{#2}}
\newcommand{\raisetext}[2][1.3ex]{\raisebox{#1}[-#1]{#2}}
\newcommand{\mc}{\multicolumn}
\newlengthsettowidth{\tabLength}{\ \ \ }
\newcommand{\tab}{\hspace*{\tabLength}}

\newcommand{\wbox}[2][\tabLength]{\hspace*{#1}\mbox{#2}\hspace*{#1}}

\renewcommand{\iff}[1][!]{\Ifthenelse{\equal{#1}{!}}{\wbox{iff}}{\wbox[#1]{iff}}}

\newcommand{\Paragraph}[1][\baselineskip]{\vspace{#1}}
\newcommand{\End}{\end{document}}
\newcommand{}                                  % Mark commands for final formatting: \format\vspace{2mm}{}
\newcommand{\drawline}[1][\textwidth]{\rule{#1}{1pt}}
\newcommand{\normalitem}[1][]{\item[\normalfont #1]}
\newcommand{\emphasize}[1]{\textbf{#1}}
\newcommand{\emphdef}[1]{\emphasize{#1}}
\newcommand{\Quote}[3][]{
  \Ifthenelse{\Empty{#1}}{%
    \begin{quote} ``#2'' \\ \mbox{} \hfill \textnormal{#3} \end{quote}}{%
    \Doublebox[#1]{\emph{``#2''} \\ \mbox{} \hfill #3}}}

\newtheorem{DEF}{Definition
\crefname  {DEF}{Definition}{Definitions}
\Crefname  {DEF}{Definition}{Definitions}
\newtheorem{THE}[DEF]{Theorem}
\crefname  {THE}{Theorem}{Theorems}
\Crefname  {THE}{Theorem}{Theorems}
\newtheorem{LEM}[DEF]{Lemma}
\crefname  {LEM}{Lemma}{Lemmata}
\Crefname  {LEM}{Lemma}{Lemmata}
\newtheorem{COR}[DEF]{Corollary}
\crefname  {COR}{Corollary}{Corollaries}
\Crefname  {COR}{Corollary}{Corollaries}
\newtheorem{EXA}[DEF]{Example}
\crefname  {EXA}{Example}{Examples}
\Crefname  {EXA}{Example}{Examples}
\newtheorem{PRO}[DEF]{Property}
\crefname  {PRO}{Property}{Properties}
\Crefname  {PRO}{Property}{Properties}

\crefname  {figure}{Figure}{Figures}
\Crefname  {figure}{Figure}{Figures}

\crefname  {algorithm}{Algorithm}{Algorithms}
\Crefname  {algorithm}{Algorithm}{Algorithms}

\crefname  {table}{Table}{Tables}
\Crefname  {table}{Table}{Tables}

\crefname  {section}{Section}{Sections}
\crefname  {subsection}{Section}{Sections}

\crefname  {appendix}{Appendix}{Appendices}

\newcommand{\Proof}{\textbf{Proof}\xspace}
\newcommand{\explain}[1]{\tab \angles{\mbox{#1}}}
\newcommand{\eop}[1][3mm]{\eopBox \vspace{#1}}
\newcommand{\eopBox}{~\hfill$\Box$}

\providecommand{\Showmacros}{\False}

\usepackage{listings}
\lstset{
         columns=fullflexible,
         language=C,
         basicstyle=\footnotesize,
         numbers=none,
         numberstyle=\tiny,
         numbersep=5pt,
         tabsize=2,
         extendedchars=true,
         mathescape=true,
         breaklines=true,
         stringstyle=\color{black}\ttfamily,
         showspaces=false,
         showtabs=false,
         belowskip=0pt,
         aboveskip=0pt,
         showstringspaces=false,
         morekeywords={exit,assert,bool,boolean,shared,local,natural,assume,atomic_begin,atomic_end,_Thread_local,_Bool,constrain,thread_local},
 }

\@ifundefined{showcaptionsetup}{}{%
 \PassOptionsToPackage{caption=false}{subfig}}
\usepackage{subfig}
\makeatother

\global\long\def\monabsrel/ticketproof/tree{\monabsrel/ticketproof/tree}
\global\long\def\monabsrel/ticketproof{\monabsrel/ticketproof}

\newcommand{\boldsymbol{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}}$\\$\boldsymbol{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}}}{\boldsymbol{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}}$\\$\boldsymbol{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}}}
\newcommand{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}\HLGM{\wedge}\HLGM{\programctr_{\pasindex}}=\HLGM{\labelformat{\somelabel{3}}}}{\HLGM{\programctr}=\HLGM{\labelformat{\somelabel{3}}}\HLGM{\wedge}\HLGM{\programctr_{\pasindex}}=\HLGM{\labelformat{\somelabel{3}}}}
\tikzstyle{bwnode}=[]
\tikzstyle{minstate}=[]
\tikzstyle{fwnode}=[]
\tikzstyle{maxstate}=[]

\ExplSyntaxOn
\newcommand{\SHAREDSTATE}[1]{}
\newcommand{\LOCALSTATEXXX}[1]{[#1]}
\newcommand{\LOCALSTATE}[1]
\int_to_symbols:nnn {#1} {18202224}%
{%
{0}{\astate{0}{0}{0}{\HLGM{\labelformat{\somelabel{1}}}}}%
{1}{\astate{0}{0}{1}{\HLGM{\labelformat{\somelabel{1}}}}}%
{2}{\astate{0}{1}{0}{\HLGM{\labelformat{\somelabel{1}}}}}%
{3}{\astate{0}{1}{1}{\HLGM{\labelformat{\somelabel{1}}}}}%
{4}{\astate{1}{0}{0}{\HLGM{\labelformat{\somelabel{1}}}}}%
{5}{\astate{1}{0}{1}{\HLGM{\labelformat{\somelabel{1}}}}}%
{6}{\astate{1}{1}{0}{\HLGM{\labelformat{\somelabel{1}}}}}%
{7}{\astate{1}{1}{1}{\HLGM{\labelformat{\somelabel{1}}}}}%
{8}{\astate{0}{0}{0}{\HLGM{\labelformat{\somelabel{2}}}}}%
{9}{\astate{0}{0}{1}{\HLGM{\labelformat{\somelabel{2}}}}}%
{10}{\astate{0}{1}{0}{\HLGM{\labelformat{\somelabel{2}}}}}%
{11}{\astate{0}{1}{1}{\HLGM{\labelformat{\somelabel{2}}}}}%
{12}{\astate{1}{0}{0}{\HLGM{\labelformat{\somelabel{2}}}}}%
{13}{\astate{1}{0}{1}{\HLGM{\labelformat{\somelabel{2}}}}}%
{14}{\astate{1}{1}{0}{\HLGM{\labelformat{\somelabel{2}}}}}%
{15}{\astate{1}{1}{1}{\HLGM{\labelformat{\somelabel{2}}}}}%
{16}{\astate{0}{0}{0}{\HLGM{\labelformat{\somelabel{3}}}}}%
{17}{\astate{0}{0}{1}{\HLGM{\labelformat{\somelabel{3}}}}}%
{18}{\astate{0}{1}{0}{\HLGM{\labelformat{\somelabel{3}}}}}%
{19}{\astate{0}{1}{1}{\HLGM{\labelformat{\somelabel{3}}}}}%
{20}{\astate{1}{0}{0}{\HLGM{\labelformat{\somelabel{3}}}}}%
{21}{\astate{1}{0}{1}{\HLGM{\labelformat{\somelabel{3}}}}}%
{22}{\astate{1}{1}{0}{\HLGM{\labelformat{\somelabel{3}}}}}%
{23}{\astate{1}{1}{1}{\HLGM{\labelformat{\somelabel{3}}}}}%
{146}{\HLGM{\labelformat{\somelabel{1}}}/(\HLGM{\bpred 1}\ne\HLGM{\bpred 3})\HLGM{\wedge}(\HLGM{\bpred 3}\HLGM{\Rightarrow}\negop\HLGM{\bpred 2})
{172022}{\HLGM{\labelformat{\somelabel{3}}}/(\HLGM{\bpred 1}\ne\HLGM{\bpred 3})\HLGM{\wedge}(\HLGM{\bpred 3}\HLGM{\Rightarrow}\negop\HLGM{\bpred 2})
{18202223}{\HLGM{\labelformat{\somelabel{3}}}/(\negop\HLGM{\bpred 3}\HLGM{\wedge}(\HLGM{\bpred 2}\HLGM{\vee}\HLGM{\bpred 1})) \HLGM{\vee} (\HLGM{\bpred 1} \HLGM{\wedge} \HLGM{\bpred 2})
{182022}{\HLGM{\labelformat{\somelabel{3}}}/\negop\HLGM{\bpred 3}\HLGM{\wedge}(\HLGM{\bpred 1}\HLGM{\vee}\HLGM{\bpred 2})
{2022}{\HLGM{\labelformat{\somelabel{3}}}/\HLGM{\bpred 1}\HLGM{\wedge}\negop\HLGM{\bpred 3}
{2456}{\HLGM{\labelformat{\somelabel{1}}}/(\HLGM{\bpred 1}\HLGM{\wedge}\negop\HLGM{\bpred 2})\HLGM{\vee}(\HLGM{\bpred 2}\HLGM{\wedge}\negop\HLGM{\bpred 3})
}%
}
\ExplSyntaxOff

\renewcommand{\eopBox}{}

\tikzstyle{minsky}=[node distance=3.3cm,auto,font=\small]

\global\long\defS{S}
\global\long\defL{L}

\newcommand{\#_{\mathit{IT}}}{\#_{\mathit{IT}}}

\newcommand{\threadstate}[2]{({#1},{#2})}
\newcommand{\rightsquigarrow}{\rightsquigarrow}

\global\long\def\tabletitle#1{\textbf{#1}}
\global\long\def\columnheadfont#1{{\itshape{#1}}}

\tikzstyle{trans}=[->,decorate, decoration={snake,amplitude=.3mm,segment length=2mm,post length=1mm},shorten >=1pt]
\tikzstyle{inhib}=[-o,shorten >=1pt]

\tikzstyle{query}=[rectangle,rounded corners=2.2pt,draw=black,thin]
\tikzstyle{nonblocked}=[]
\tikzstyle{nonquery}=[rectangle,rounded corners=2.2pt,draw=black,thin]
\tikzstyle{processed}=[very thick]
\tikzstyle{pruned}=[]
\tikzstyle{pending}=[]
\tikzstyle{tononblocked}=[]

\tikzstyle{tikztransrel}=[to reversed->]

\tikzset{petri net/.style={scale=1.0,bend angle=45,every transition/.style={fill,minimum width=1mm,minimum height=3.5mm},every place/.style={draw,thick,minimum size=4mm}}}

\global\long\def\returncovtext#1{#1\textrm{ coverable}}
\global\long\def\returnuncovtext#1{#1\textrm{ uncoverable}}

\global\long\def\rangeseq#1#2{#1,\ldots,#2}
\global\long\def\mathobjectpair#1#2{(#1,#2)}

\tikzstyle{placea}=[place,label=above:{$p_1$}]
\tikzstyle{placeb}=[place,label=above:{$p_2$}]
\tikzstyle{placec}=[place,label=above:{$p_3$}]
\tikzstyle{placed}=[place,label=above:{$p_4$}]
\tikzstyle{thread_trans}=[|->]

\pgfplotstableset{col sep=comma,x=Row,}
\pgfplotsset{ccomp/.style= {

	footnotesize,
	xmin=1,xmax=\totalbenchmarksnum,ymin=0.1,ymax=1800,
	width=\ccompwidth,height=\ccompheight,

	minor xtick={0,1,2,...,\totalbenchmarksnum},

	xtick={0,5,...,\totalbenchmarksnum},
	xticklabels={0,5,...,\totalbenchmarksnum},
	yticklabels={,,1$s$,10$s$,100$s$,1000$s$},
	legend style={draw=none},
}}

\tikzstyle{momark}=[mark=*]
\tikzstyle{ormark}=[mark=diamond*]
\tikzstyle{rgmark}=[mark=square*]
\tikzstyle{samark}=[mark=asterisk]
\tikzstyle{btcmark}=[mark=*]
\tikzstyle{btcmarkopt}=[mark=10-pointed star]
\tikzstyle{dcdmark}=[mark=diamond*]
\tikzstyle{petmark}=[mark=square*]
\tikzstyle{mbrmark}=[mark=asterisk]

\newcommand{\HLGM}[1]{#1}
\global\long\def\ie{\HLGM{i.e.}}
\global\long\def\eg{\HLGM{e.g.}}
\global\long\def\etal{\HLGM{et al}}
\global\long\def\Eg{\HLGM{E.g.}}
\global\long\def\wrt{\HLGM{with respect to}}
\global\long\def\respective{\HLGM{respective}}
\global\long\def\respectively{\HLGM{respectively}}
\global\long\def\respectivelyend{\HLGM{respectively}}
\global\long\def\finaland{\HLGM{ and}}
\global\long\def\HLGM{Well quasi-ordering}{\HLGM{Well quasi-ordering}}
\global\long\def\HLGM{well quasi-ordering}{\HLGM{well quasi-ordering}}
\global\long\def\HLGM{quasi-ordering}{\HLGM{quasi-ordering}}
\global\long\def\HLGM{partial ordering}{\HLGM{partial ordering}}
\global\long\defwell quasi-orderedness{well quasi-orderedness}
\global\long\defWell quasi-orderedness{Well quasi-orderedness}

\newcommand{\HLGM{dual-ref\-er\-ence}}{\HLGM{dual-ref\-er\-ence}}
\newcommand{\HLGM{Dual-Ref\-er\-ence}}{\HLGM{Dual-Ref\-er\-ence}}
\newcommand{\HLGM{Dual-ref\-er\-ence}}{\HLGM{Dual-ref\-er\-ence}}
\newcommand{\HLGM{DR}}{\HLGM{DR}}

\newcommand{a\-syn\-chro\-nous}{a\-syn\-chro\-nous}
\newcommand{A\-syn\-chro\-nous}{A\-syn\-chro\-nous}
\newcommand{strictly \asynchronous}{strictly a\-syn\-chro\-nous}
\newcommand{Strictly \asynchronous}{Strictly a\-syn\-chro\-nous}
\newcommand{Strictly \Asynchronous}{Strictly A\-syn\-chro\-nous}
\newcommand{\mtp}{strictly \asynchronous}

\newcommand{\HLGM{explicit monotone \dr}}{\HLGM{explicit monotone \HLGM{dual-ref\-er\-ence}}}
\newcommand{\HLGM{Explicit Monotone \DR}}{\HLGM{Explicit Monotone \HLGM{Dual-Ref\-er\-ence}}}
\newcommand{\HLGM{Explicit monotone \dr}}{\HLGM{Explicit monotone \HLGM{dual-ref\-er\-ence}}}
\newcommand{\HLGM{EM\drabb}}{\HLGM{EM\HLGM{DR}}}

\newcommand{execution}{execution}

\newcommand{monotone transition system}{monotone transition system}

\newcommand{complete in exponential space}{complete in exponential space}

\newcommand{\Ackermanncomplete}{Acker\-mann-complete
\newcommand{Acker\-mann-hard}{Acker\-mann-hard}

\newcommand{\tablesizeb}[1]{\footnotesize{#1}}

\newcommand{\concretetranshead}[1]{Concrete transition ($n=#1$)}
\newcommand{\abstracttranshead}[1]{Abstract transition #1}

\tdplotsetmaincoords{60}{134}
\tikzstyle{quader}=[scale=1.2]
\tikzstyle{plainst}=[fill, pattern=north east lines, draw=black,line width=1pt]
\newcommand\mytikzcontents{
	\draw[->] (0,0,0) -- (2.2,0,0) node[at end,below]{$\HLGM{\localvars[\pasindex]}$};
	\draw[->] (0,0,0) -- (0,2.2,0) node[at end,left]{$\localvars$};
	\draw[->] (0,0,0) -- (0,0,2.2) node[at end,left]{$\HLGM{S}$};}

\global\long\def\text{safe}{\text{safe}}
\global\long\def\HLGM{\text{unsafe}}{\HLGM{\text{unsafe}}}
\global\long\def\HLGM{\text{C}}{\HLGM{\text{C}}}
\global\long\def\HLGM{\text{Pthread}}{\HLGM{\text{Pthread}}}
\global\long\def\HLGM{\text{C++}}{\HLGM{\text{C++}}}
\global\long\def\HLGM{\text{C++11}}{\HLGM{\text{C++11}}}
\global\long\def\HLGM{\text{C\#}}{\HLGM{\text{C\#}}}
\global\long\def\HLGM{\text{Java}}{\HLGM{\text{Java}}}
\global\long\def\HLGM{\text{Occam}}{\HLGM{\text{Occam}}}
\global\long\def\HLGM{\,\text{.}}{\HLGM{\,\text{.}}}
\global\long\def\HLGM{\,\text{, and}}{\HLGM{\,\text{, and}}}
\global\long\def\HLGM{\,\text{,}}{\HLGM{\,\text{,}}}
\global\long\def\HLGM{\,\text{,~respectively.}}{\HLGM{\,\text{,~respectively.}}}
\global\long\def\mathprogram#1{\HLGM{\mathtt{#1}}}
\global\long\def\HLGM{=}{\HLGM{=}}
\global\long\def\HLGM{\ne}{\HLGM{\ne}}
\global\long\def\HLGM{\colonequals}{\HLGM{\colonequals}}
\global\long\def\HLGM{+}{\HLGM{+}}
\global\long\def\HLGM{\bmod}{\HLGM{\bmod}}
\global\long\def\HLGM{{\ : \ }}{\HLGM{{\ : \ }}}
\global\long\def\HLGM{\operatorname:}{\HLGM{\operatorname:}}
\global\long\def\HLGM{i}{\HLGM{i}}
\global\long\def\HLGM{j}{\HLGM{j}}
\global\long\def\HLGM{\Rightarrow}{\HLGM{\Rightarrow}}
\global\long\def\HLGM{\Leftarrow}{\HLGM{\Leftarrow}}
\global\long\def\HLGM{\nRightarrow}{\HLGM{\nRightarrow}}
\global\long\def\HLGM{\nLeftarrow}{\HLGM{\nLeftarrow}}
\global\long\def\HLGM{\mathit{false}}{\HLGM{\mathit{false}}}
\global\long\def\HLGM{\mathit{true}}{\HLGM{\mathit{true}}}
\global\long\def\booleantext F{\booleantext F}
\global\long\def\booleantext T{\booleantext T}

\newcommand{\booleantext}[1]{\mathtt{#1}}

\global\long\def\booleantext T{\booleantext T}
\global\long\def\booleantext F{\booleantext F}

\global\long\def\star{\star}

\global\long\def\HLGM{\wedge}{\HLGM{\wedge}}
\global\long\def\text{ and }{\text{ and }}
\global\long\def\HLGM{\bigwedge}{\HLGM{\bigwedge}}
\global\long\def\HLGM{\vee}{\HLGM{\vee}}
\global\long\def\HLGM{\bigvee}{\HLGM{\bigvee}}
\global\long\def\HLGM{\Leftrightarrow}{\HLGM{\Leftrightarrow}}
\global\long\def\HLGM{\nLeftrightarrow}{\HLGM{\nLeftrightarrow}}
\global\long\def\negop#1{\HLGM{\neg#1}}
\global\long\def\negoP#1{\HLGM{\phantom{\neg}#1}}
\global\long\def\HLGM{\oplus}{\HLGM{\oplus}}
\global\long\def\HLGM{\cup}{\HLGM{\cup}}
\global\long\def\HLGM{\bigcup}{\HLGM{\bigcup}}
\global\long\def\HLGM{\cap}{\HLGM{\cap}}
\global\long\def\HLGM{\mathcal{P}}{\HLGM{\mathcal{P}}}
\global\long\def\HLGM{\mathcal{A}}{\HLGM{\mathcal{A}}}

\global\long\def\HLGM{\mathsf{b}}{\HLGM{\mathsf{b}}}

\global\long\defn{n}

\global\long\def\threadcounter{\HLGM{\mathsf{b}}}
\global\long\defn'{n'}

\global\long\def\HLGM{S}{\HLGM{S}}
\global\long\def\HLGM{\absof\sharedvars}{\HLGM{\absof\HLGM{S}}}
\global\long\def\HLGM{\sharedvars'}{\HLGM{\HLGM{S}'}}
\global\long\defL{L}
\newcommandx\localvars[1][usedefault, addprefix=\global, 1=]{\HLGM{L_{#1}}}
\newcommandx\abslocalvars[1][usedefault, addprefix=\global, 1=]{\HLGM{\absof{L}_{#1}}}
\newcommandx\exabslocalvars[1][usedefault, addprefix=\global, 1=]{\HLGM{\exabsof{L}_{#1}}}
\newcommandx\localvarsp[1][usedefault, addprefix=\global, 1=a]{\HLGM{\localvars[#1]'}}

\newcommand{\mathit{lock}}{\mathit{lock}}

\global\long\def\abslocalvars[\HLGM{P}]{\abslocalvars[\HLGM{P}]}
\global\long\def\abslocalvars[\HLGM{P}]'{\abslocalvars[\HLGM{P}]'}

\global\long\defV{V}
\newcommandx\programvars[1][usedefault, addprefix=\global, 1=]{\HLGM{V_{#1}}}
\newcommandx\absprogramvars[1][usedefault, addprefix=\global, 1=]{\HLGM{\absof{V}_{#1}}}

\newcommandx\exabsprogramvars[1][usedefault, addprefix=\global, 1=]{\HLGM{\exabsof{V}_{#1}}}

\global\long\def\HLGM{\programvars'}{\HLGM{\programvars'}}
\global\long\def\HLGM{\ell}{\HLGM{\ell}}
\global\long\def\HLGM{\mathtt{pc}}{\HLGM{\mathtt{pc}}}
\global\long\def\HLGM{\mathcal{L}}{\HLGM{\mathcal{L}}}
\global\long\def\HLGM{\mathtt{v}}{\HLGM{\mathtt{v}}}
\global\long\def\HLGM{\absof\programvar}{\HLGM{\absof\HLGM{\mathtt{v}}}}
\global\long\def\HLGM{\mathtt{v}'}{\HLGM{\mathtt{v}'}}

\global\long\def\HLGM{b}{\HLGM{b}}
\global\long\def\HLGM{\mathtt{\localboolvartext}}{\HLGM{\mathtt{\HLGM{b}}}}
\global\long\def\HLGM{\localboolvar'}{\HLGM{\HLGM{\mathtt{\localboolvartext}}'}}
\global\long\def\HLGM{\localboolvar_{\HLGM{P}}}{\HLGM{\HLGM{\mathtt{\localboolvartext}}_{\HLGM{P}}}}
\global\long\def\HLGM{\localboolvarpas'}{\HLGM{\HLGM{\localboolvar_{\HLGM{P}}}'}}

\global\long\def\HLGM{l}{\HLGM{m}}
\global\long\def\HLGM{m_{\HLGM{P}}}{\HLGM{m_{\HLGM{P}}}}
\global\long\def\HLGM{\mathtt{\localvartext}}{\HLGM{\mathtt{\HLGM{l}}}}
\global\long\def\HLGM{\absof\localvar}{\HLGM{\absof\HLGM{\mathtt{\localvartext}}}}
\global\long\def\HLGM{m}{\HLGM{l}}
\global\long\def\HLGM{\mathtt{\localvarothertext}}{\HLGM{\mathtt{\HLGM{m}}}}
\global\long\def\HLGM{\localvar'}{\HLGM{\HLGM{\mathtt{\localvartext}}'}}
\global\long\def\HLGM{\localvarother'}{\HLGM{\HLGM{\mathtt{\localvarothertext}}'}}
\global\long\def\HLGM{\localvarother_{\HLGM{P}}'}{\HLGM{\HLGM{\mathtt{\localvarothertext}}_{\HLGM{P}}'}}
\global\long\def\HLGM{\localvarother_{\HLGM{P}}}{\HLGM{\HLGM{\mathtt{\localvarothertext}}_{\HLGM{P}}}}
\global\long\def\plocalvar#1{\HLGM{\mathtt{l}_{\mathrm{#1}}}}
\global\long\def\plocalvarp#1{\HLGM{\HLGM{\localvar'}_{\mathrm{#1}}}}

\global\long\def\HLGM{s}{\HLGM{s}}
\global\long\def\HLGM{\mathtt{\sharedvartext}}{\HLGM{\mathtt{\HLGM{s}}}}
\global\long\def\HLGM{\sharedvar'}{\HLGM{\HLGM{\mathtt{\sharedvartext}}'}}
\global\long\def\sharedvar_{\HLGM{P}}{\HLGM{\mathtt{\sharedvartext}}_{\HLGM{P}}}
\global\long\def\sharedvar_{\HLGM{P}}'{\HLGM{\mathtt{\sharedvartext}}_{\HLGM{P}}'}

\global\long\def\HLGM{t}{\HLGM{t}}
\global\long\def\HLGM{\mathtt{\sharedvarothertext}}{\HLGM{\mathtt{\HLGM{t}}}}

\global\long\def\HLGM{\mathtt{w}}{\HLGM{\mathtt{w}}}
\global\long\def\HLGM{s}{\HLGM{s}}
\global\long\def\HLGM{t}{\HLGM{t}}
\global\long\def\HLGM{t}{\HLGM{t}}
\global\long\def\HLGM{c}{\HLGM{c}}
\global\long\def\HLGM{m}{\HLGM{m}}
\global\long\def\HLGM{h}{\HLGM{h}}
\global\long\def\HLGM{h'}{\HLGM{h'}}
\global\long\def\HLGM{j}{\HLGM{j}}
\global\long\def\HLGM{t}{\HLGM{t}}
\global\long\def\HLGM{t'}{\HLGM{t'}}
\global\long\def\HLGM{n}{\HLGM{n}}
\global\long\def\HLGM{\threadindex'}{\HLGM{\HLGM{n}'}}
\global\long\def\HLGM{m}{\HLGM{m}}
\global\long\def\HLGM{\threadindexother{\color{red}'}}{\HLGM{\HLGM{m}{\color{red}'}}}
\global\long\def\HLGM{e}{\HLGM{e}}
\global\long\def\HLGM{\somethreadcount{\color{red}'}}{\HLGM{\HLGM{e}{\color{red}'}}}
\global\long\def\HLGM{f}{\HLGM{f}}
\global\long\def\HLGM{\somethreadcountother{\color{red}'}}{\HLGM{\HLGM{f}{\color{red}'}}}

\global\long\def\HLGM{X}{\HLGM{X}}
\global\long\def\HLGM{Y}{\HLGM{Y}}

\global\long\def\HLGM{v}{\HLGM{v}}
\global\long\def\HLGM{v'}{\HLGM{v'}}
\global\long\def\HLGM{{\color{red}v''}}{\HLGM{{\color{red}v''}}}
\global\long\def\HLGM{r}{\HLGM{r}}
\global\long\def\HLGM{\somestateother'}{\HLGM{\HLGM{r}'}}
\global\long\def\HLGM{t}{\HLGM{t}}
\global\long\def\HLGM{\somestateotherother'}{\HLGM{\HLGM{t}'}}
\global\long\def\HLGM{\mathcal{R}}{\HLGM{\mathcal{R}}}
\global\long\def\HLGM{\absof\rel}{\HLGM{\absof\HLGM{\mathcal{R}}}}
\global\long\def\HLGM{\exabsof\rel}{\HLGM{\exabsof\HLGM{\mathcal{R}}}}

\global\long\def\HLGM{TODO}{\HLGM{TODO}}
\global\long\def\succeq{\HLGM{\ge}}
\global\long\def\preceq{\HLGM{\le}}
\global\long\def\not\coveredby{\HLGM{\not\preceq}}
\global\long\def\not\covers{\HLGM{\not\succeq}}
\global\long\def\succ{\HLGM{>}}
\global\long\def\prec{\HLGM{<}}
\global\long\def\HLGM{\equiv}{\HLGM{\equiv}}

\global\long\def\tool#1{\mathsf{#1}}

\global\long\def\benchmark#1{\HLGM{\textsc{#1}}}
\global\long\def\HLGM{\textrm{safe}}{\HLGM{\textrm{safe}}}
\global\long\def\HLGM{\textrm{unsafe}}{\HLGM{\textrm{unsafe}}}
\global\long\def\HLGM{\tool{breach}}{\HLGM{\tool{breach}}}
\global\long\defbreach{breach}
\global\long\def\HLGM{\tool{owicki}}{\HLGM{\tool{owicki}}}
\global\long\def\HLGM{\tool{CProver}}{\HLGM{\tool{CProver}}}
\global\long\def\HLGM{\tool{slab}}{\HLGM{\tool{slab}}}
\global\long\def\HLGM{\tool{rely}}{\HLGM{\tool{rely}}}
\global\long\def\HLGM{\tool{mono}}{\HLGM{\tool{mono}}}
\global\long\def\HLGM{\tool{sa}}{\HLGM{\tool{sa}}}
\global\long\defsymmpa{symmpa}
\global\long\def\HLGM{\mbox{\ensuremath{\tool{\symmpatext}}}}{\HLGM{\mbox{\ensuremath{\tool{symmpa}}}}}
\global\long\def\HLGM{\mbox{\ensuremath{\tool{duet}}}}{\HLGM{\mbox{\ensuremath{\tool{duet}}}}}
\global\long\def\HLGM{\mbox{\ensuremath{\tool{getafix}}}}{\HLGM{\mbox{\ensuremath{\tool{getafix}}}}}
\global\long\def\HLGM{\tool{satabs}}{\HLGM{\tool{satabs}}}
\global\long\defmonabs{monabs}
\global\long\def\HLGM{\tool{\newsatabstext}}{\HLGM{\tool{monabs}}}
\global\long\def\HLGM{\tool{ddv/satabs}}{\HLGM{\tool{ddv/satabs}}}
\global\long\def\HLGM{\tool{boppo/satabs}}{\HLGM{\tool{boppo/satabs}}}
\global\long\def\HLGM{\tool{boom}}{\HLGM{\tool{boom}}}
\global\long\def\HLGM{\tool{b\!-\!boom}}{\HLGM{\tool{b\!-\!boom}}}
\global\long\defcream{cream}
\global\long\def\HLGM{\tool{\threadertext}}{\HLGM{\tool{cream}}}
\global\long\def\HLGM{\tool{slam}}{\HLGM{\tool{slam}}}
\global\long\def\HLGM{\tool{slam/sdv}}{\HLGM{\tool{slam/sdv}}}
\global\long\def\HLGM{\tool{magic}}{\HLGM{\tool{magic}}}
\global\long\def\HLGM{\tool{blast}}{\HLGM{\tool{blast}}}
\global\long\def\HLGM{\tool{spin}}{\HLGM{\tool{spin}}}
\global\long\def\HLGM{\tool{soter}}{\HLGM{\tool{soter}}}
\global\long\def\HLGM{\tool{mcerlang}}{\HLGM{\tool{mcerlang}}}

\global\long\def$\pi$-calculus{$\pi$-calculus}

\global\long\def\absof#1{\HLGM{\tilde{#1}}}
\global\long\def\exabsof#1{\HLGM{\hat{#1}}

\global\long\def\preddef{\HLGM{\mathrel{::}}
\global\long\def\HLGM{\coloncolon}{\HLGM{\coloncolon}}
\global\long\def\HLGM{Q}{\HLGM{Q}}
\global\long\def\HLGM{c}{\HLGM{c}}
\global\long\def\HLGM{m}{\HLGM{m}}
\global\long\def\HLGM{e}{\HLGM{e}}
\global\long\def\HLGM{*}{\HLGM{*}}
\global\long\def\HLGM{\absof{\program}}{\HLGM{\absof{\HLGM{\mathcal{P}}}}}
\global\long\def\HLGM{\exabsof{\program}}{\HLGM{\exabsof{\HLGM{\mathcal{P}}}}}
\global\long\def\HLGM{\absof{\programapprox}}{\HLGM{\absof{\HLGM{\mathcal{A}}}}}
\global\long\def\HLGM{---}{\HLGM{---}}
\global\long\def\HLGM{---}{\HLGM{---}}
\global\long\def\HLGM{\Gamma}{\HLGM{\Gamma}}

\global\long\def\arel#1{\HLGM{\alpha[#1]}}

\global\long\def\HLGM{\pi}{\HLGM{\pi}}
\global\long\def\mathbb{N}{\HLGM{\mathbb{N}}}
\global\long\def\HLGM{\mathbb{Z}}{\HLGM{\mathbb{Z}}}
\global\long\def\HLGM{\mathbb{B}}{\HLGM{\mathbb{B}}}
\global\long\def\parallelinst#1#2{\HLGM{#1^{#2}}}
\global\long\def\HLGM{\localvars}{\HLGM{\localvars}}
\global\long\def\HLGM{\absof\pvarsact}{\HLGM{\absof\HLGM{\localvars}}}
\global\long\def\HLGM{\pvarsact'}{\HLGM{\HLGM{\localvars}'}}
\global\long\def\HLGM{P}{\HLGM{P}}
\global\long\def\HLGM{T}{\HLGM{T}}
\global\long\def\HLGM{\localvars[\pasindex]}{\HLGM{\localvars[\HLGM{P}]}}
\global\long\def\HLGM{\abslocalvars[\pasindex]}{\HLGM{\abslocalvars[\HLGM{P}]}}
\global\long\def\HLGM{\pvarspas'}{\HLGM{\HLGM{\localvars[\pasindex]}'}}
\global\long\def\HLGM{\absof\pvarspasp}{\HLGM{\absof\HLGM{\pvarspas'}}}
\global\long\def\HLGM{\localvars[\pasindexp]}{\HLGM{\localvars[\HLGM{T}]}}
\global\long\def\HLGM{\pvarspaspas'}{\HLGM{\HLGM{\localvars[\pasindexp]}'}}
\global\long\def\HLGM{\mathcal{I}}{\HLGM{\mathcal{I}}}
\global\long\def\HLGM{\absof\initialrel}{\HLGM{\absof\HLGM{\mathcal{I}}}}
\global\long\def\HLGM{\exabsof\initialrel}{\HLGM{\exabsof\HLGM{\mathcal{I}}}}
\global\long\def\HLGM{\mathcal{E}}{\HLGM{\mathcal{E}}}
\global\long\def\HLGM{\absof\errorrel}{\HLGM{\absof\HLGM{\mathcal{E}}}}
\global\long\def\HLGM{\exabsof\errorrel}{\HLGM{\exabsof\HLGM{\mathcal{E}}}}
\global\long\def\HLGM{R}{\HLGM{R}}
\global\long\def\labelformat#1{\HLGM{#1}}
\global\long\def\labelp#1{\HLGM{\ell_{#1}}}
\global\long\def\somelabel#1{\HLGM{\labelformat{\ell_{#1}}}}
\global\long\def\HLGM{\labelformat{\somelabel{1}}}{\HLGM{\labelformat{\somelabel{1}}}}
\global\long\def\HLGM{\labelformat{\somelabel{2}}}{\HLGM{\labelformat{\somelabel{2}}}}
\global\long\def\HLGM{\labelformat{\somelabel{3}}}{\HLGM{\labelformat{\somelabel{3}}}}
\global\long\def\HLGM{\somelabel{4}}{\HLGM{\somelabel{4}}}
\global\long\def\pcvar#1{\somelabel{#1}\mathprogram :}
\global\long\def\HLGM{\labela\mathprogram :}{\HLGM{\HLGM{\labelformat{\somelabel{1}}}\mathprogram :}}
\global\long\def\HLGM{\labelb\mathprogram :}{\HLGM{\HLGM{\labelformat{\somelabel{2}}}\mathprogram :}}
\global\long\def\HLGM{\labelc\mathprogram :}{\HLGM{\HLGM{\labelformat{\somelabel{3}}}\mathprogram :}}
\global\long\def\HLGM{\labeld\mathprogram :}{\HLGM{\HLGM{\somelabel{4}}\mathprogram :}}
\global\long\def\HLGM{\HLGM{\somelabel{e}}\mathprogram :}{\HLGM{\HLGM{\somelabel{e}}\mathprogram :}}
\global\long\def\HLGM{\phantom{\labeld\mathprogram :}}{\HLGM{\phantom{\HLGM{\somelabel{4}}\mathprogram :}}}
\global\long\def\HLGM{\text{14}}{\HLGM{\text{14}}}
\global\long\def\HLGM{\localvar_{\pasindex}}{\HLGM{\HLGM{\mathtt{\localvartext}}_{\HLGM{P}}}}
\global\long\def\HLGM{\localvarpas'}{\HLGM{\HLGM{\localvar_{\pasindex}}'}}
\global\long\def\HLGM{\localvar_{\pasindexp}}{\HLGM{\HLGM{\mathtt{\localvartext}}_{\HLGM{T}}}}
\global\long\def\HLGM{\localvarpaspas'}{\HLGM{\HLGM{\localvar_{\pasindexp}}'}}
\global\long\def\HLGM{\localvarother_{\HLGM{P}}}{\HLGM{\HLGM{\mathtt{\localvarothertext}}_{\HLGM{P}}}}
\global\long\def\HLGM{\programctr_{\pasindex}}{\HLGM{\HLGM{\mathtt{pc}}_{\HLGM{P}}}}
\global\long\def\HLGM{\somelabel{e}}{\HLGM{\somelabel{e}}}
\global\long\def\HLGM{\somelabel{b}}{\HLGM{\somelabel{b}}}
\global\long\def\HLGM{\mathcal{C}}{\HLGM{\mathcal{C}}}
\global\long\def\relreset{\HLGM{\mathcal{F}}}
\global\long\def\pred#1{\HLGM{\HLGM{Q}[#1]}}

\global\long\def\mirrorpred#1{\substrepl{\HLGM{Q}[#1]}{\localvars}{\HLGM{\localvars[\pasindex]}}}

\global\long\def\HLGM{\mathtt{b}}} %\global\long\def\bpred#1{\HLGM{b[#1]}{\HLGM{\mathtt{b}}}
\global\long\def\bpredo_{\pasindex}} %\global\long\def\bpred#1{\HLGM{b[#1]}{\HLGM{\mathtt{b}}} %\global\long\def\bpred#1{\HLGM{b[#1]}_{\HLGM{P}}}
\global\long\def\bpredo'} %\global\long\def\bpred#1{\HLGM{b[#1]}{\HLGM{\mathtt{b}}} %\global\long\def\bpred#1{\HLGM{b[#1]}'}
\global\long\def\bpredopas'} %\global\long\def\bpred#1{\HLGM{b[#1]}{\bpredo_{\pasindex}} %\global\long\def\bpred#1{\HLGM{b[#1]}'}

\global\long\def\bpred#1{\HLGM{\mathtt{b}[#1]}}
\global\long\def\bpredtext#1{\HLGM{{b}[#1]}}
\global\long\def\bpredp#1{\HLGM{\bpred{#1}'}}
\global\long\def\bpredpas#1{\HLGM{\bpred{#1}_{\HLGM{P}}}}
\global\long\def\bpredtextpas#1{\HLGM{\bpredtext{#1}_{\HLGM{P}}}}
\global\long\def\bpredpasp#1{\HLGM{\bpredpas{#1}'}}
\global\long\def\bpredpaspas#1{\HLGM{\bpred{#1}_{\HLGM{T}}}}
\global\long\def\bpredpaspasp#1{\HLGM{\bpredpaspas{#1}'}}
\global\long\def\sequence#1{\HLGM{(#1)}}
\global\long\def\HLGM{\bpredpas 3}{\HLGM{\bpredpas 3}}
\global\long\def\HLGM{\cp'}{\HLGM{\HLGM{\bpredpas 3}'}}
\global\long\def\HLGM{\bpredpas 1}{\HLGM{\bpredpas 1}}
\global\long\def\HLGM{\ap'}{\HLGM{\HLGM{\bpredpas 1}'}}
\global\long\def\HLGM{\bpred 1'}{\HLGM{\bpred 1'}}
\global\long\def\HLGM{\bpredpas 2'}{\HLGM{\bpredpas 2'}}
\global\long\def\HLGM{\programctr}{\HLGM{\HLGM{\mathtt{pc}}}}
\global\long\def\HLGM{\programctr_{\phantom{\pasindex}}}{\HLGM{\HLGM{\mathtt{pc}}_{\phantom{\HLGM{P}}}}}
\global\long\def\HLGM{\programctr_{\pasindex}}{\HLGM{\HLGM{\mathtt{pc}}_{\HLGM{P}}}}
\global\long\def\HLGM{\bpred 1}{\HLGM{\bpred 1}}
\global\long\def\HLGM{\bpred 2}{\HLGM{\bpred 2}}
\global\long\def\HLGM{\bpred 3}{\HLGM{\bpred 3}}
\global\long\def\HLGM{\PREDb_{\pasindex}}{\HLGM{\HLGM{\bpred 2}_{\HLGM{P}}}}
\global\long\def\HLGM{\PREDb'}{\HLGM{\HLGM{\bpred 2}'}}
\global\long\def\HLGM{\PREDc'}{\HLGM{\HLGM{\bpred 3}'}}
\global\long\def\HLGM{\program_{m}}{\HLGM{\HLGM{\mathcal{P}}_{m}}}
\global\long\def\HLGM{\absprogram_{m}}{\HLGM{\HLGM{\absof{\program}}_{m}}}
\global\long\def\HLGM{\absprogramapprox_{m}}{\HLGM{\HLGM{\absof{\programapprox}}_{m}}}
\global\long\def\HLGM{\rel_{m}}{\HLGM{\HLGM{\mathcal{R}}_{m}}}
\global\long\def\HLGM{\absof{\rel}_{m}}{\HLGM{\absof{\HLGM{\mathcal{R}}}_{m}}}
\global\long\def\HLGM{f}{\HLGM{f}}
\global\long\def\HLGM{g}{\HLGM{g}}
\global\long\def\HLGM{\mathsf{Pre}}{\HLGM{\mathsf{Pre}}}
\global\long\def\Pre#1{\HLGM{\operatorname{\HLGM{\mathsf{Pre}}}(#1)}}
\global\long\def\Prestar#1{\HLGM{\operatorname{\HLGM{\mathsf{Pre}}}^*(#1)}}
\global\long\def\HLGM{\mathsf{Suc}}{\HLGM{\mathsf{Suc}}}
\global\long\def\Suc#1{\HLGM{\operatorname{\HLGM{\mathsf{Suc}}}(#1)}}
\global\long\def\bid#1#2{\HLGM{\text{#2}{/}\benchmark{#1}}}
\global\long\def\HLGM{a}{\HLGM{a}}
\global\long\def\HLGM{p}{\HLGM{p}}

\global\long\def\subst#1#2#3{\HLGM{{{#1}\{{#3}\!\triangleright\!{#2}\}}}}
\global\long\def\substp#1#2#3{\HLGM{{{#1}\{{#3}\!\triangleright\mkern-13.0mu\raisebox{1.5pt}{$\triangleright$}{#2}\}}}}
\global\long\def\substrepl#1#2#3{\HLGM{{{#1}\{{#3}\!\triangleleft \mkern-5.5mu \triangleright{#2}\}}}}

\global\long\def\exists\mkern-10.0mu\raisebox{1.2pt}{$\exists$}{\exists\mkern-10.0mu\raisebox{1.2pt}{$\exists$}}

\global\long\def\HLGM{\programvars_{\pasindex}}{\HLGM{\programvars_{\HLGM{P}}}}
\global\long\def\MInc#1{\HLGM{#1{\texttt{++}}}}
\global\long\def\MDec#1{\HLGM{#1{\texttt{{-}-}}}}
\global\long\def\HLGM{{\mathrel{\stackrel{\scriptscriptstyle ?}{=}}}}{\HLGM{{\mathrel{\stackrel{\scriptscriptstyle ?}{=}}}}}
\global\long\def\MTZ#1{\HLGM{#1 \HLGM{{\mathrel{\stackrel{\scriptscriptstyle ?}{=}}}} 0}}
\global\long\def\MTrans#1#2{\HLGM{#1\rightrightarrows#2}}

\global\long\def\HLGM{\localstate_{1}}{\HLGM{\HLGM{c}_{1}}}
\global\long\def\HLGM{\localstate_{2}}{\HLGM{\HLGM{c}_{2}}}
\global\long\def\HLGM{\localstate_{3}}{\HLGM{\HLGM{c}_{3}}}
\global\long\def\HLGM{\localstate_{e}}{\HLGM{\HLGM{c}_{e}}}
\global\long\def\HLGM{{0}}{\HLGM{s_{0}}}
\global\long\def\HLGM{{1}}{\HLGM{s_{1}}}
\global\long\def\HLGM{{2}}{\HLGM{s_{2}}}
\global\long\def\HLGM{{3}}{\HLGM{s_{3}}}
\global\long\def\HLGM{{4}}{\HLGM{s_{4}}}
\global\long\def\captionheadperiod#1{\HLGM{.}}

\global\long\def\HLGM{\cite{DBLP:conf/cav/TorreMP10,DBLP:conf/tacas/DragerKFW10,FarzanK12}}{\HLGM{\cite{DBLP:conf/cav/TorreMP10,DBLP:conf/tacas/DragerKFW10,FarzanK12}}}
\global\long\def\HLGM{\cite{HJM04,WBKW07,CMNR10,GPR11,DonaldsonFMSD12,FarzanK13}}{\HLGM{\cite{HJM04,WBKW07,CMNR10,GPR11,DonaldsonFMSD12,FarzanK13}}}

\newcommand{\astate}[4]{\HLGM{(#4/{#1}{}{#2}{}{#3})}}
\newcommand{\astatepas}[4]{\HLGM{\astate{#1}{#2}{#3}{#4}_\HLGM{P}}}

\newcommand{\astateformula}[4]{\HLGM{%
\HLGM{\programctr}=#4\HLGM{\wedge}
\ifthenelse{1=#1}{\HLGM{\bpred 1}}{\negop\HLGM{\bpred 1}}\HLGM{\wedge}
\ifthenelse{1=#2}{\HLGM{\bpred 2}}{\negop\HLGM{\bpred 2}}\HLGM{\wedge}
\ifthenelse{1=#3}{\HLGM{\bpred 3}}{\negop\HLGM{\bpred 3}}}}
\newcommand{\astateformulapas}[4]{\HLGM{%
\HLGM{\programctr_{\pasindex}}=#4\HLGM{\wedge}
\ifthenelse{1=#1}{\HLGM{\bpredpas 1}}{\negop\HLGM{\bpredpas 1}}\HLGM{\wedge}
\ifthenelse{1=#2}{\HLGM{\PREDb_{\pasindex}}}{\negop\HLGM{\PREDb_{\pasindex}}}\HLGM{\wedge}
\ifthenelse{1=#3}{\HLGM{\bpredpas 3}}{\negop\HLGM{\bpredpas 3}}}}

\newcommandx\preda[2][usedefault, addprefix=\global, 1=, 2=\HLGM{P}]{\HLGM{\mathtt{\localvartext}}_{#1}\ne\HLGM{\mathtt{\localvartext}}_{#2}}
\newcommandx\predaneg[2][usedefault, addprefix=\global, 1=, 2=\HLGM{P}]{\HLGM{\mathtt{\localvartext}}_{#1}=\HLGM{\mathtt{\localvartext}}_{#2}}
\newcommandx\predb[1][usedefault, addprefix=\global, 1=]{\HLGM{\mathtt{\sharedvarothertext}}>\HLGM{\mathtt{\localvartext}}_{#1}}
\newcommandx\predc[1][usedefault, addprefix=\global, 1=]{\HLGM{\mathtt{\sharedvartext}}=\HLGM{\mathtt{\localvartext}}_{#1}}

\newcommand{\stackrel{\circ}=}{\stackrel{\circ}=}

\global\long\def\mathbb{N}{\mathbb{N}}

\tikzstyle{covprereledge}=[<-,latex-left hook]
\tikzstyle{covprereledgewid}=[draw=none]
\tikzstyle{covprereledgewidviz}=[covprereledge,dashed]

\tikzstyle{notpruned}=[text=black]
\tikzstyle{coversedge}=[densely dotted]
\tikzstyle{bck}=[opacity=0.3]\pgfplotsset{my personal style/.style= {grid=major,font=\large}}

\pgfplotsset{run time profile/.style= {every non boxed x axis/.style={xtick align=center,enlarge x limits=false,x axis line style={-|}},width=10.0cm,height=6.0cm,axis y line=middle,axis x line=middle,ytick=\empty,scaled ticks=false,}}
\pgfplotsset{run time profile back/.style= {scaled ticks=false,hide x axis,xtick=\empty,xticklabels=\empty,}}

\newcommand{I}{I}
\newcommand{V}{V}
\newcommand{\upperset}[1]{\operatorname{\uparrow}#1}
\newcommand{\lowerset}[1]{\operatorname{\downarrow}#1}

\newcommand{\operatorname{\mathsf{C-Pre}}}{\operatorname{\mathsf{C-Pre}}}
\newcommand{\CovPre}[1]{\operatorname{\mathsf{C-Pre}}(#1)}
\newcommand{p}{p}
\newcommand{\rightarrowtail}{\rightarrowtail}
\newcommand{\not\rightarrowtail}{\not\rightarrowtail}

\newcommand{\conf}[2]{({#1} \operatorname | {#2})}
\newcommand{q}{q}

\newcommand{W}{W}
\newcommand{D}{D}
\newcommand{E}{E}
\newcommand{U}{U}
\newcommand{J}{J}
\newcommand{P}{P}

\def\lhook \joinrel \dashrightarrow {\lhook \joinrel \dashrightarrow }

\newcommand{\lhook \joinrel \dashrightarrow }{\lhook \joinrel \dashrightarrow }
\newcommand{\hookrightarrow}{\hookrightarrow}
\newcommand{\covprerel_{\scriptscriptstyle\edgeset}}{\hookrightarrow_{\scriptscriptstyleE}}

\newcommand{w}{w}

\newcommand{\operatorname{\mathsf{Cover}}}{\operatorname{\mathsf{Cover}}}
\newcommand{\operatorname{\mathsf{Reach}}}{\operatorname{\mathsf{Reach}}}
\newcommand{(V \setminus \Coverset)}{(V \setminus \operatorname{\mathsf{Cover}})}

\newcommand{\operatorname\zeta}{\operatorname\zeta}
\newcommand{\queryof}[1]{\operatorname\zeta(#1)}

\newcommand{\code}[1]{\texttt{#1}}

\newcommand{\operatorname{\mathsf{Brs}}}{\operatorname{\mathsf{Brs}}}
\newcommand{\mathit{UCP}}%\Brs^\sharp}{\mathit{UCP}

\newcommand{t_1}{t_1}
\newcommand{t_2}{t_2}
\newcommand{t_3}{t_3}
\newcommand{t_4}{t_4}
\newcommand{t_5}{t_5}

\newcommand{u}{u}
\newcommand{r}{r}
\newcommand{s}{s}
\newcommand{t}{t}

\newcommand{\Candidates}[1]{\mathcal{C}({#1})}
\newcommand{\lminimal}[1]{#1\textrm{-min\-i\-mal}}
\newcommand{\lminimality}[1]{#1\textrm{-min\-i\-mal\-ity}}

\newcommand{\operatorname\Lambda}{\operatorname\Lambda}
\newcommand{\partsubtree}[1]{\operatorname\Lambda(#1)}
\newcommand{p}{p}
\newcommand{\operatorname\downharpoonright}{\operatorname\downharpoonright}

\newcommand{\plkeyword{select}\xspace}{\plkeyword{select}\xspace}
\newcommand{\plkeyword{break}\xspace}{\plkeyword{break}\xspace}
\newcommand{\plkeyword{while}\xspace}{\plkeyword{while}\xspace}
\newcommand{\plkeyword{if}\xspace}{\plkeyword{if}\xspace}
\newcommand{\plkeyword{else}\xspace}{\plkeyword{else}\xspace}

\newcommand{\cardinality}[1]{|#1|}

\global\long\def\benchmarkid#1#2{#1/\benchmark{#2}}

\newcommand{\ws}{well-quasi ordered}
\newcommand{Well Quasi-ordered System}{Well Quasi-ordered System}
\newcommand{Well quasi-ordered system}{Well quasi-ordered system}
\newcommand{{\Wsts}s}{{Well quasi-ordered system}s}
\newcommand{well quasi-ordered system}{well quasi-ordered system}
\newcommand{{\wsts}s}{{well quasi-ordered system}s}
\newcommand{{\WSTS}s}{{Well Quasi-ordered System}s}
\newcommand{(Well) quasi-ordered systems}{(Well) quasi-ordered systems}
\newcommand{(well) quasi-ordered systems}{(well) quasi-ordered systems}
\newcommand{well-ordered infinite-state transition systems}{well-ordered infinite-state transition systems}
\newcommand{\wstsabb}{well quasi-ordered system
\newcommand{\wstssabb}{{\wstsabb}s
\newcommand{\wst}{well quasi-ordered system}

\renewcommand{V}{\Sigma}

\tikzstyle{minsky}=[node distance=4.1cm,auto,font=\small]
\tikzstyle{reachtrees}=[yscale=0.5,rotate=0,font=\scriptsize,scale=\tikzscale]

\tikzstyle{proof construction}=[xscale=2.2,yscale=1.6,font=\small]

\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

\newcommand{\columnhead}[2]{\multicolumn{#1}{l}{#2}}

\usepackage{alltt}
\usepackage{marginnote}
\usepackage{setspace}

\newcommand{\mnotebb}[1]{{\marginpar{\raggedright\sffamily\tiny\setstretch{1.025}#1}}}

\newcommand{\inlinedef}[1]{\emph{#1}}
\newcommand{\inlinedefopt}[2]{\emph{#1}}
\newcommand{\inlinedefup}[1]{#1}
\newcommand{\inlinedefoptup}[2]{#1}
\newcommand{\margin}[1]{}

\global\long\def\absrel_{4}{\HLGM{\absof\rel}_{4}}
\global\long\def\absrel_{5}{\HLGM{\absof\rel}_{5}}

\usepackage{mathtools}

\usepackage{xparse}

\RenewDocumentCommand\parallelinst{mmo}{%
  \IfNoValueTF{#3}
  {#1^{#2}}
  {#1(#3)^{#2}}%
}

\NewDocumentCommand\subsc{mmo}{%
  \IfNoValueTF{#3}%
  {{#1}_{\mathrlap{#2}}}%
  {{#1}_{\mathrlap{#2:#3}}}%
}

\NewDocumentCommand\Afunc{ooo}{%
  \mathcal{C}
  \IfNoValueTF{#2}%
  {}%
  {_{#2}}%
  \IfNoValueTF{#3}
  {}%
  {(#3)}%
  }

\NewDocumentCommand\Arel{ooo}{%
  \mathcal{D}%
  \IfNoValueTF{#1}
  {}%
  {^{#1}}%
  \IfNoValueTF{#2}
  {}%
  {_{#2}}%
  \IfNoValueTF{#3}
  {}%
  {(#3)}%
  }

\NewDocumentCommand\absfunc{oo}{%
  \alpha
  \IfNoValueTF{#2}%
  {}%
  {(#2)}%
}

\ExplSyntaxOn
\renewcommand{\LOCALSTATE}[1]
\int_to_symbols:nnn {#1} {18202224}%
{%
{0}{\astate{\booleantext F}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{1}}}}}%
{1}{\astate{\booleantext F}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{1}}}}}%
{2}{\astate{\booleantext F}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{1}}}}}%
{3}{\astate{\booleantext F}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{1}}}}}%
{4}{\astate{\booleantext T}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{1}}}}}%
{5}{\astate{\booleantext T}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{1}}}}}%
{6}{\astate{\booleantext T}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{1}}}}}%
{7}{\astate{\booleantext T}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{1}}}}}%
{8}{\astate{\booleantext F}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{2}}}}}%
{9}{\astate{\booleantext F}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{2}}}}}%
{10}{\astate{\booleantext F}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{2}}}}}%
{11}{\astate{\booleantext F}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{2}}}}}%
{12}{\astate{\booleantext T}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{2}}}}}%
{13}{\astate{\booleantext T}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{2}}}}}%
{14}{\astate{\booleantext T}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{2}}}}}%
{15}{\astate{\booleantext T}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{2}}}}}%
{16}{\astate{\booleantext F}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{3}}}}}%
{17}{\astate{\booleantext F}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{3}}}}}%
{18}{\astate{\booleantext F}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{3}}}}}%
{19}{\astate{\booleantext F}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{3}}}}}%
{20}{\astate{\booleantext T}{\booleantext F}{\booleantext F}{\HLGM{\labelformat{\somelabel{3}}}}}%
{21}{\astate{\booleantext T}{\booleantext F}{\booleantext T}{\HLGM{\labelformat{\somelabel{3}}}}}%
{22}{\astate{\booleantext T}{\booleantext T}{\booleantext F}{\HLGM{\labelformat{\somelabel{3}}}}}%
{23}{\astate{\booleantext T}{\booleantext T}{\booleantext T}{\HLGM{\labelformat{\somelabel{3}}}}}%
{25}{\astate{\star}{\star}{\star}{\HLGM{\labelformat{\somelabel{3}}}}}%
{26}{end}%
{146}{\HLGM{\labelformat{\somelabel{1}}}/(\HLGM{\bpred 1}\ne\HLGM{\bpred 3})\HLGM{\wedge}(\HLGM{\bpred 3}\HLGM{\Rightarrow}\negop\HLGM{\bpred 2})
{172022}{\HLGM{\labelformat{\somelabel{3}}}/(\HLGM{\bpred 1}\ne\HLGM{\bpred 3})\HLGM{\wedge}(\HLGM{\bpred 3}\HLGM{\Rightarrow}\negop\HLGM{\bpred 2})
{18202223}{\HLGM{\labelformat{\somelabel{3}}}/(\negop\HLGM{\bpred 3}\HLGM{\wedge}(\HLGM{\bpred 2}\HLGM{\vee}\HLGM{\bpred 1})) \HLGM{\vee} (\HLGM{\bpred 1} \HLGM{\wedge} \HLGM{\bpred 2})
{182022}{\HLGM{\labelformat{\somelabel{3}}}/\negop\HLGM{\bpred 3}\HLGM{\wedge}(\HLGM{\bpred 1}\HLGM{\vee}\HLGM{\bpred 2})
{2022}{\HLGM{\labelformat{\somelabel{3}}}/\HLGM{\bpred 1}\HLGM{\wedge}\negop\HLGM{\bpred 3}
{2456}{\HLGM{\labelformat{\somelabel{1}}}/(\HLGM{\bpred 1}\HLGM{\wedge}\negop\HLGM{\bpred 2})\HLGM{\vee}(\HLGM{\bpred 2}\HLGM{\wedge}\negop\HLGM{\bpred 3})
}%
}
\ExplSyntaxOff

\RenewDocumentCommand\astateformula{mmmmo}{%
  \IfNoValueTF{#5}{
    \HLGM{\programctr}=#4\HLGM{\wedge}
    \ifthenelse{1=#1}{\bpred1}{\negop {\bpred1}}\HLGM{\wedge}
    \ifthenelse{1=#2}{\bpred2}{\negop {\bpred2}}\HLGM{\wedge}
    \ifthenelse{1=#3}{\bpred3}{\negop {\bpred3}}
  }{
    \HLGM{\programctr}_{#5}=#4\HLGM{\wedge}
    \ifthenelse{1=#1}{{\bpred1}_{#5}}{\negop {{\bpred1}_{#5}}}\HLGM{\wedge}
    \ifthenelse{1=#2}{{\bpred2}_{#5}}{\negop {{\bpred2}_{#5}}}\HLGM{\wedge}
    \ifthenelse{1=#3}{{\bpred3}_{#5}}{\negop {{\bpred3}_{#5}}}
  }%
}

\newcommand{\concref}{HJM04,CCKRT06,CKS07,WBKW07,%
GPR11,DonaldsonFMSD12,FarzanK12,FarzanK13}

\newcommand{\itembdesc}[2]{\item[\textmd{\em #1: #2:}]}
\newcommand{\itembdescref}[3]{\item[\textmd{\em #1: #2 (#3):}]}
\NewDocumentCommand\itembtooldescref{mo}{%
  \IfNoValueTF{#2}
  {\item[\textmd{\em #1:}]}
  {\item[\textmd{\em #1 (#2):}]}%
}

\lstdefinestyle{defcode}
{
tabsize=8,
breaklines=true,
language=C,
morekeywords={fork,wait,signal,broadcast,atomic,cv_broadcast,cv_signal,cv_wait,mtx_unlock,mtx_lock,cv_wait_sig,shared,local,cond},
alsoletter={_},
}

\newcommand{\incode}[1]{\lstinline[style=defcode,basicstyle=\ttfamily]{#1}}

\newcommand{\refcapital}[3]{#1#3}

\newcommand{\reffull}[2]{#1}
\renewcommand{\reffull}[2]{#2}

\newcommand{

Abstract: Monotonicity in concurrent systems stipulates that, in any global state,
extant system actions remain executable when new processes are added to the
state. This concept is not only natural and common in multi-threaded software,
but also useful: if every thread's memory is finite, monotonicity often
guarantees the decidability of safety property verification even when the
number of running threads is unknown. In this paper, we show that the act of
obtaining finite-data thread abstractions for model checking can be at odds
with monotonicity: Predicate-abstracting certain widely used monotone software
results in non-monotone multi-threaded Boolean programs - the monotonicity is
lost in the abstraction. As a result, well-established sound and complete
safety checking algorithms become inapplicable; in fact, safety checking turns
out to be undecidable for the obtained class of unbounded-thread Boolean
programs. We demonstrate how the abstract programs can be modified into
monotone ones, without affecting safety properties of the non-monotone
abstraction. This significantly improves earlier approaches of enforcing
monotonicity via overapproximations.