X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=article.tex;h=0c10bcf095b02696681a91a33539695b10371f9a;hb=0c3db5a204f508f8a8a59c74ea8a9bf56d3ab59e;hp=714fbd167e00d67c850ccf69d0942e9a8b3b116a;hpb=cc1fe9b52fdc03805d305fe1e0b74063661d5e2a;p=topbloke-formulae.git diff --git a/article.tex b/article.tex index 714fbd1..0c10bcf 100644 --- a/article.tex +++ b/article.tex @@ -1,21 +1,174 @@ -\documentclass[a4paper]{article} -\usepackage{MnSymbol} -\usepackage{stmaryrd} -\usepackage{slashed} +\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{\merge}{{\mathcal M}} +\newcommand{\mergeof}[4]{\merge(#1,#2,#3,#4)} +%\newcommand{\merge}[4]{{#2 {{\frac{ #1 }{ #3 } #4}}}} + +\newcommand{\patch}{{\mathcal P}} +\newcommand{\base}{{\mathcal B}} +\newcommand{\depsreq}{{\mathcal D}} + +\newcommand{\patchof}[1]{\patch ( #1 ) } +\newcommand{\baseof}[1]{\base ( #1 ) } +\newcommand{\depsreqof}[1]{\depsreq ( #1 ) } + +\newcommand{\allpatches}{\Upsilon} +\newcommand{\assign}{\leftarrow} +\newcommand{\iassign}{\leftarrow} +%\newcommand{\assign}{' =} + +\newcommand{\alg}[1]{\text{\bf #1}} +\newcommand{\setmerge}{\alg{merge}} +\newcommand{\setmergeof}[3]{\setmerge\left\langle #1 \;\middle\langle #2 \middle\rangle\; #3 \right\rangle} +%\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{\gathbegin}{\begin{gather} \tag*{}} +\newcommand{\gathnext}{\\ \tag*{}} + +\newcommand{\true}{t} +\newcommand{\false}{f} + \begin{document} -\def\iwjtest{{/\mkern-9mu\Sqsupset}} -\newcommand{\iwjtestx}{\mathrel{\ooalign{$\Sqsubset$ $\sslash$}}} -\newcommand{\iwjtesty}{{% - \declareslashed{}{\sslash}{-0.04}{0}{\Sqsubset}\slashed{\Sqsubset}}} -sponge -$ A \sqsubseteq B $ -$ A \not \sqsubseteq B $ -$ A \nsqsubseteq B $ -$ A \Sqsubset B $ -$ A \Sqsupset B $ -$ \sslash $ -$ \iwjtest $ -$ \iwjtestx $ -$ \iwjtesty $ -$ A \iwjtesty B $ + +\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} + +\chapter{Update strategy} + +\input{strategy.tex} + \end{document}