X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=notation.tex;h=82a2e647dbac266a769374a422727af8c92e6663;hb=45660137914fb1a7e7efe44ef84305add6468c05;hp=6eb2e80d947a8bd1cb7d960bd43738ebbd352d8c;hpb=8382189875aa969a251efc900a568a09e7b64c02;p=topbloke-formulae.git diff --git a/notation.tex b/notation.tex index 6eb2e80..82a2e64 100644 --- a/notation.tex +++ b/notation.tex @@ -1,4 +1,4 @@ -\section{Notation} +\stdsection{Notation} Throughout, any free variables are implicitly universally quantified at the outermost level. @@ -33,12 +33,16 @@ is to be taken as applying to both $\py$ and $\pn$. All of these sets will be disjoint by construction (see Invariants, below). Hence: +\item[ $\foreign$ ] +The set of all commits which are not part of a Topbloke branch. We +call these foreign commits. + \item[ $\set A$, $\set P$, $\ldots$ ] Arbitrary sets of commits. Maybe $\set P = \p$ i.e.\ some $\py$ or $\pn$, but maybe not. \item[ $ \patchof{ C } $ ] -Either $\p$ s.t. $ C \in \p $, or $\bot$. +Either $\p$ s.t. $ C \in \p $, or $\foreign$. A function from commits to patches' sets $\p$. \item[ $ \pancsof{C}{\set P} $ ] @@ -82,15 +86,41 @@ the relevant Topbloke branches, we hope that if the user still cares about the Topbloke patch, git's merge algorithm will DTRT when trying to re-apply the changes. -\item[ $\displaystyle \mergeof{C}{L}{M}{R} $ ] -The contents of a git merge result: +\item[ $\displaystyle \stmtmergeof{L}{M}{R} $ ] +The proper results of a merge. Formally, +where $L$, $M$ and $R$ are statements: +$$ + \stmtmergeof{L}{M}{R} + \equiv + \begin{cases} + (L \land R) : & \true \\ + (\neg L \land \neg R) : & \false \\ + \text{otherwise} : & \neg M + \end{cases} +$$ + +May also be used where $L$, $M$ and $R$ are sets, in which case +$$ + \setmergeof{L}{M}{R} + = + \left\{ + \; + D \; \middle| \; + \setmergeof{ D \in L }{ D \in M }{ D \in R } + \; + \right\} +$$ + +\item[ $\displaystyle \commitmergeof{C}{L}{M}{R} $ ] +$C$ has exactly the contents of a git merge result: $\displaystyle D \isin C \equiv \begin{cases} - (D \isin L \land D \isin R) \lor D = C : & \true \\ - (D \not\isin L \land D \not\isin R) \land D \neq C : & \false \\ - \text{otherwise} : & D \not\isin M + D = C : & \true \\ + D \neq C : & \stmtmergeof{ D \isin L }{ D \isin M }{ D \isin R } \end{cases} $ +We will refer to this as \commitmergename. + \end{basedescript}