X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=article.tex;h=28bc7143c0aee4db8a4ccbc9bb29ebbb402ead5e;hb=9651f9e883566446133380e0fe39ef695a86c72d;hp=d903a67b71eee8d477a3cc9206eea4fc7df2b239;hpb=6ac7fa898d70cd061d6f8037b95e3a30310e4255;p=topbloke-formulae.git diff --git a/article.tex b/article.tex index d903a67..28bc714 100644 --- a/article.tex +++ b/article.tex @@ -1,10 +1,10 @@ -\documentclass[a4paper]{strayman} +\documentclass[a4paper,leqno]{strayman} \let\numberwithin=\notdef -\usepackage{MnSymbol} -\usepackage{stmaryrd} -\usepackage{slashed} +\usepackage{amsmath} +\usepackage{mathabx} \usepackage{txfonts} \usepackage{amsfonts} +\usepackage{mdwlist} %\usepackage{accents} \renewcommand{\ge}{\geqslant} @@ -13,12 +13,10 @@ \newcommand{\has}{\sqsupseteq} \newcommand{\isin}{\sqsubseteq} -\newcommand{\nothaspatch}{{% - \declareslashed{}{\sslash}{-0.04}{0}{\Sqsupset}\slashed{\Sqsupset}}} -\newcommand{\notpatchisin}{{% - \declareslashed{}{\sslash}{-0.04}{0}{\Sqsubset}\slashed{\Sqsubset}}} -\newcommand{\haspatch}{\Sqsupset} -\newcommand{\patchisin}{\Sqsubset} +\newcommand{\nothaspatch}{\mathrel{\,\not\!\not\relax\haspatch}} +\newcommand{\notpatchisin}{\mathrel{\,\not\!\not\relax\patchisin}} +\newcommand{\haspatch}{\sqSupset} +\newcommand{\patchisin}{\sqSubset} \newcommand{\set}[1]{\mathbb #1} \newcommand{\pa}[1]{\varmathbb #1} @@ -40,18 +38,27 @@ \newcommand{\pancs}[2]{{\mathcal A} ( #1 , #2 ) } \newcommand{\pends}[2]{{\mathcal E} ( #1 , #2 ) } +\renewcommand{\land}{\wedge} + \begin{document} \section{Notation} -$ C \hasparents \set X $ The parents of commit $C$ are exactly the set +\begin{basedescript}{ +\desclabelwidth{5em} +\desclabelstyle{\nextlinelabel} +} +\item[ $ C \hasparents \set X $ ] +The parents of commit $C$ are exactly the set $\set X$. -$ C \ge D $ $C$ is a descendant of $D$ in the git commit +\item[ $ C \ge D $ ] +$C$ is a descendant of $D$ in the git commit graph. This is a partial order, namely the transitive closure of $ D \in \set X $ where $ C \hasparents \set X $. -$ C \has D $ Informally, the tree at commit $C$ contains the change +\item[ $ C \has D $ ] +Informally, the tree at commit $C$ contains the change made in commit $D$. Does not take account of deliberate reversions by the user or in non-Topbloke-controlled branches; these are considered normal, forward, commits. For merges and Topbloke-generated @@ -59,11 +66,31 @@ anticommits, the ``change made'' is only to be thought of as any conflict resolution. This is not a partial order because it is not transitive. +\item[ $ \p, \py, \pn $ ] +A patch $\p$ consists of two sets of commits $\pn$ and $\py$, which +are respectively the base and tip git branches. $\p$ may be used +where the context requires a set, in which case the statement +is to be taken as applying to both $\py$ and $\pn$. +All these sets are distinct. + +\item[ $ \pancs{C}{\set P} $ ] +$ \{ A \; | \; A \le C \land A \in \set P \} $ +i.e. all the ancestors of $C$ +which are in $\set P$. + +\item[ $ \pends{C}{\set P} $ ] +$ \{ E \; | \; E \in \pancs{C}{\set P} + \land \mathop{\not\exists}_{A \in \pancs{C}{\set P}} + A \neq E \land E \le A \} $ +i.e. all $\le$-maximal commits in $\pancs{C}{\set P}$. + +\end{basedescript} + \section{Invariants} -No replay: $ C \has D \implies C \ge D $ +\[ C \has D \implies C \ge D \tag*{\mbox{No replay:}} \] -Unique base: $ \mathop{\forall}\limits_{C \in \py} \pends{C}{\pn} = \{ B \} $ +Unique base: \[ \mathop{\forall}_{C \in \py} \pends{C}{\pn} = \{ B \} \] \section{Test more symbols} @@ -71,6 +98,10 @@ $ C \haspatch \p $ $ C \nothaspatch \p $ +$ \p \patchisin C $ + +$ \p \notpatchisin C $ + $ \{ B \} \areparents C $ \end{document}