\documentclass[a4paper,leqno]{strayman}
\errorcontextlines=50
\let\numberwithin=\notdef
\usepackage{amsmath}
\usepackage{mathabx}
\usepackage{txfonts}
\usepackage{amsfonts}
\usepackage{mdwlist}
%\usepackage{accents}

\usepackage{fancyhdr}
\pagestyle{fancy}
\rhead[\rightmark]{}
\lhead[]{\rightmark}
\rfoot[\thepage]{\input{revid.inc}}
\lfoot[\input{revid.inc}]{\thepage}

\let\stdsection\section
\renewcommand\section{\newpage\stdsection}

\renewcommand{\ge}{\geqslant}
\renewcommand{\le}{\leqslant}
\newcommand{\nge}{\ngeqslant}
\newcommand{\nle}{\nleqslant}

\newcommand{\has}{\sqsupseteq}
\newcommand{\isin}{\sqsubseteq}

\newcommand{\nothaspatch}{\mathrel{\,\not\!\not\relax\haspatch}}
\newcommand{\notpatchisin}{\mathrel{\,\not\!\not\relax\patchisin}}
\newcommand{\haspatch}{\sqSupset}
\newcommand{\patchisin}{\sqSubset}
%\newcommand{\zhaspatch}{\mathrel{\underset{\fullmoon}\sqSupset}}
\newcommand{\zhaspatch}{\mathrel{\sqSupset_\varnothing\mkern-4mu}}

        \newif\ifhidehack\hidehackfalse
        \DeclareRobustCommand\hidefromedef[2]{%
          \hidehacktrue\ifhidehack#1\else#2\fi\hidehackfalse}
        \newcommand{\pa}[1]{\hidefromedef{\varmathbb{#1}}{#1}}

\newcommand{\set}[1]{\mathbb{#1}}
\newcommand{\pay}[1]{\pa{#1}^+}
\newcommand{\pan}[1]{\pa{#1}^-}

\newcommand{\p}{\pa{P}}
\newcommand{\py}{\pay{P}}
\newcommand{\pn}{\pan{P}}

\newcommand{\pc}{\pa{C}}
\newcommand{\pcy}{\pay{C}}
\newcommand{\pcn}{\pan{C}}

\newcommand{\pd}{\pa{D}}
\newcommand{\pdy}{\pay{D}}
\newcommand{\pdn}{\pan{D}}

\newcommand{\pl}{\pa{L}}
\newcommand{\ply}{\pay{L}}
\newcommand{\pln}{\pan{L}}

\newcommand{\pq}{\pa{Q}}
\newcommand{\pqy}{\pay{Q}}
\newcommand{\pqn}{\pan{Q}}

\newcommand{\pr}{\pa{R}}
\newcommand{\pry}{\pay{R}}
\newcommand{\prn}{\pan{R}}

%\newcommand{\hasparents}{\underaccent{1}{>}}
%\newcommand{\hasparents}{{%
%  \declareslashed{}{_{_1}}{0}{-0.8}{>}\slashed{>}}}
\newcommand{\hasparents}{>_{\mkern-7.0mu _{1:}}}
\newcommand{\areparents}{<_{\mkern-14.0mu _{1:}\mkern+5.0mu}}

\renewcommand{\implies}{\Rightarrow}
\renewcommand{\equiv}{\Leftrightarrow}
\renewcommand{\nequiv}{\nLeftrightarrow}
\renewcommand{\land}{\wedge}
\renewcommand{\lor}{\vee}

\newcommand{\pancs}{{\mathcal A}}
\newcommand{\pends}{{\mathcal E}}

\newcommand{\pancsof}[2]{\pancs ( #1 , #2 ) }
\newcommand{\pendsof}[2]{\pends ( #1 , #2 ) }

\newcommand{\commitmerge}{{\mathcal M}}
\newcommand{\commitmergeof}[4]{\commitmerge(#1,#2,#3,#4)}
%\newcommand{\merge}[4]{{#2 {{\frac{ #1 }{ #3 } #4}}}}
\newcommand{\commitmergename}{${\mathcal M}$}

\newcommand{\patch}{{\mathcal P}}
\newcommand{\base}{{\mathcal B}}
\newcommand{\depsreq}{{\mathcal G}}

\newcommand{\allsrcs}{\set U}

\newcommand{\patchof}[1]{\patch ( #1 ) }
\newcommand{\baseof}[1]{\base ( #1 ) }
\newcommand{\depsreqof}[1]{\depsreq ( #1 ) }

\newcommand{\foreign}{\pa F}
\newcommand{\isforeign}[1]{#1 \in \foreign}

\newcommand{\allpatches}{\Upsilon}
\newcommand{\assign}{\leftarrow}
\newcommand{\iassign}{\leftarrow}
%\newcommand{\assign}{' =}

\newcommand{\mergeof}[3]{\left\langle #1 \;\middle\langle #2 \middle\rangle\; #3 \right\rangle}

\newcommand{\alg}[1]{\text{\bf #1}}
\newcommand{\setmerge}{\alg{merge}}
\newcommand{\setmergeof}[3]{\setmerge\mergeof{#1}{#2}{#3}}
\newcommand{\stmtmergeof}[3]{\setmerge\mergeof{#1}{#2}{#3}}

%\newcommand{\setmergeof}[3]{\setmerge\left\lgroup #1 \;\middle\lmoustache\; #2 \;\middle\rmoustache\; #3 \right\rgroup}
%\newcommand{\setmergeof}[3]{\setmerge\left\rmoustache #1 \middle\rmoustache #2 \middle\lmoustache #3 \right\lmoustache}
%\newcommand{\setmergeof}[3]{\setmerge\left\lfloor #1 \middle\lfloor #2 \middle\rfloor #3 \right\rfloor}

\newcommand{\eqntag}[2]{ #2 \tag*{\mbox{#1}} }
\newcommand{\eqn}[2]{ #2 \tag*{\mbox{\bf #1}} }

\newcommand{\hasdirdep}{\succ_{\mkern-7.0mu _1}}
\newcommand{\hasdep}{\succ}
\newcommand{\isdep}{\prec}
\newcommand{\isdirdep}{\prec_{\mkern-18.0mu _1}{\mkern+10mu}}

\newcommand{\tip}{ T }
\newcommand{\tipa}[1]{ \tip^{#1} }
\newcommand{\tipcn}{ \tipa \pcn }
\newcommand{\tipcy}{ \tipa \pcy }
\newcommand{\tipdn}{ \tipa \pdn }
\newcommand{\tipdy}{ \tipa \pdy }

%\newcommand{\bigforall}{\mathop{\hbox{\huge$\forall$}}}
\newcommand{\bigforall}{%
  \mathop{\mathchoice%
    {\hbox{\huge$\forall$}}%
    {\hbox{\Large$\forall$}}%
    {\hbox{\normalsize$\forall$}}%
    {\hbox{\scriptsize$\forall$}}}%
}
\newcommand{\bigexists}{%
  \mathop{\mathchoice%
    {\hbox{\huge$\exists$}}%
    {\hbox{\Large$\exists$}}%
    {\hbox{\normalsize$\exists$}}%
    {\hbox{\scriptsize$\exists$}}}%
}

\newcommand{\Largeexists}{\mathop{\hbox{\Large$\exists$}}}
\newcommand{\Largenexists}{\mathop{\hbox{\Large$\nexists$}}}

\newcommand{\qed}{\square}
\newcommand{\proofstarts}{{\it Proof:}}
\newcommand{\proof}[1]{\proofstarts #1 $\qed$}

\newcommand{\statement}[2]{\[\eqn{ #1 }{ #2 }\]}

\newcommand{\gathbegin}{\begin{gather} \tag*{}}
\newcommand{\gathnext}{\\ \tag*{}}

\newcommand{\true}{t}
\newcommand{\false}{f}

\begin{document}

\chapter{Data model}

\input{notation.tex}
\input{invariants.tex}
\input{lemmas.tex}
\input{annotations.tex}

\input{simple.tex}
\input{create-base.tex}
\input{create-tip.tex}
\input{anticommit.tex}
\input{merge.tex}
\input{pseudomerge.tex}

\chapter{Update strategy}

\input{strategy.tex}
\input{ranking.tex}
\input{trav-alg.tex}
\input{trav-proofs.tex}

\end{document}
