chiark / gitweb /
index 1e19122..6eb2e80 100644 (file)
@@ -1,5 +1,8 @@
\section{Notation}

+Throughout, any free variables are implicitly universally quantified
+at the outermost level.
+
\begin{basedescript}{
\desclabelwidth{5em}
\desclabelstyle{\nextlinelabel}
@@ -27,7 +30,12 @@ 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 of these sets are disjoint.  Hence:
+All of these sets will be disjoint by construction
+(see Invariants, below).  Hence:
+
+\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$.
@@ -49,14 +57,23 @@ $\pendsof{C}{\pn} = \{ \baseof{C} \}$ where $C \in \py$.
A partial function from commits to commits.
See Unique Base, below.

-\item[ $C \haspatch \p$ ]
-$\displaystyle \bigforall_{D \in \py} D \isin C \equiv D \le C$.
-~ Informally, $C$ has all the reachable contents of $\p$.
-
\item[ $C \nothaspatch \p$ ]
$\displaystyle \bigforall_{D \in \py} D \not\isin C$.
~ Informally, $C$ has none of the contents of $\p$.

+\item[ $C \zhaspatch \p$ ]
+$\displaystyle \bigforall_{D \in \py} D \isin C \equiv D \le C$.
+~ Informally, $C$ has all the reachable contents of $\p$.
+
+\item[ $C \haspatch \p$ ]
+$\displaystyle C \zhaspatch \p \land \exists_{F \in \py} F \le C$.
+~ Informally, $C$ nontrivially has all the reachable contents of $\p$.
+
+Note that $\zhaspatch$ and $\nothaspatch$ are neither
+mutually exclusive nor exhaustive.
+$\haspatch$ and $\nothaspatch$ are mutually exclusive but not
+necessarily exhaustive.
+
Commits on Non-Topbloke branches are $\nothaspatch \p$ for all $\p$.  This
includes commits on plain git branches made by applying a Topbloke
patch.  If a Topbloke