chiark / gitweb /
fix some headings
[topbloke-formulae.git] / article.tex
index 0428df707a2978eae6c336b40447f29b5b820385..f69420fc071f170952b9e5a60ca9a60916658ec5 100644 (file)
@@ -196,6 +196,10 @@ We maintain these each time we construct a new commit. \\
 \[\eqn{Foreign Inclusion:}{
   \bigforall_{D \text{ s.t. } \patchof{D} = \bot} D \isin C \equiv D \leq C
 }\]
+\[\eqn{Foreign Contents:}{
+  \bigforall_{C \text{ s.t. } \patchof{C} = \bot}
+    D \le C \implies \patchof{D} = \bot
+}\]
 
 \section{Some lemmas}
 
@@ -289,6 +293,21 @@ by the LHS.  And $A \le A''$.
 }\]
 xxx proof tbd
 
+\[ \eqn{Totally Foreign Contents:}{
+  \bigforall_{C \hasparents \set A}
+   \left[
+    \patchof{C} = \bot \land
+      \bigforall_{A \in \set A} \patchof{A} = \bot
+   \right]
+  \implies
+   \left[
+    D \isin C
+   \implies
+    \patchof{D} = \bot
+   \right]
+}\]
+xxx proof tbd
+
 \subsection{No Replay for Merge Results}
 
 If we are constructing $C$, with,
@@ -440,6 +459,13 @@ $\qed$
 If $D = C$, trivial.  For $D \neq C$:
 $D \isin C \equiv D \isin A \equiv D \le A \equiv D \le C$.  $\qed$
 
+\subsection{Foreign Contents:}
+
+Only relevant if $\patchof{C} = \bot$.  Trivial by Foreign Contents of
+$A$.  $\qed$
+
+xxx fixme not trivial use Totally Foreign Contents
+
 \section{Create Base}
 
 Given $L$, create a Topbloke base branch initial commit $B$.
@@ -484,7 +510,7 @@ xxx unfinished
 
 \section{Create Tip}
 
-xxx tbd\
+xxx tbd
 
 \section{Anticommit}
 
@@ -598,7 +624,7 @@ so $L \haspatch \p \implies C \haspatch \p$.
 
 $\qed$
 
-\section{Foreign Inclusion}
+\subsection{Foreign Inclusion}
 
 Consider some $D$ s.t. $\patchof{D} = \bot$.  $D \neq C$.
 So by Desired Contents $D \isin C \equiv D \isin L$.
@@ -609,6 +635,10 @@ Thus $D \isin C \equiv D \le C$.
 
 $\qed$
 
+\subsection{Foreign Contents}
+
+Not applicable. $\qed$
+
 \section{Merge}
 
 Merge commits $L$ and $R$ using merge base $M$:
@@ -654,17 +684,24 @@ We will occasionally use $X,Y$ s.t. $\{X,Y\} = \{L,R\}$.
     \bigforall_{E \in \pendsof{X}{\py}} E \le Y
    \right]
 }\]
+\[ \eqn{ Foreign Merges }{
+    \patchof{L} = \bot \equiv \patchof{R} = \bot
+}\]
 
 \subsection{Non-Topbloke merges}
 
-We require both $\patchof{L} = \bot$ and $\patchof{R} = \bot$.
+We require both $\patchof{L} = \bot$ and $\patchof{R} = \bot$
+(Foreign Merges, above).
 I.e. not only is it forbidden to merge into a Topbloke-controlled
 branch without Topbloke's assistance, it is also forbidden to
 merge any Topbloke-controlled branch into any plain git branch.
 
 Given those conditions, Tip Merge and Merge Acyclic do not apply.
 And $Y \not\in \py$ so $\neg [ Y \haspatch \p ]$ so neither
-Merge Ends condition applies.  Good.
+Merge Ends condition applies.
+
+So a plain git merge of non-Topbloke branches meets the conditions and
+is therefore consistent with our scheme.
 
 \subsection{No Replay}
 
@@ -869,4 +906,11 @@ OK
 
 $\qed$
 
+\subsection{Foreign Contents}
+
+xxx use Totally Foreign Contents
+
+If $\patchof{C} = \bot$, by Foreign Merges
+$\patchof{L} = \patchof{R} = \bot$.
+
 \end{document}