\[\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}
}\]
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,
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}
-xxx tbd
+Given $L$, create a Topbloke base branch initial commit $B$.
+\gathbegin
+ B \hasparents \{ L \}
+\gathnext
+ \patchof{B} = \pa{B}
+\gathnext
+ D \isin B \equiv D \isin L \lor D = B
+\end{gather}
+
+\subsection{Conditions}
+
+\[ \eqn{ Ingredients }{
+ \patchof{L} = \pa{L} \lor \patchof{L} = \bot
+}\]
+\[ \eqn{ Non-recursion }{
+ L \not\in \pa{B}
+}\]
+
+\subsection{No Replay}
+
+If $\patchof{L} = \pa{L}$, trivial by Base Acyclic for $L$.
+
+If $\patchof{L} = \bot$, xxx
+
+Trivial from Base Acyclic for $L$. $\qed$
+
+\subsection{Unique Base}
+
+Not applicable. $\qed$
+
+\subsection{Tip Contents}
+
+Not applicable. $\qed$
+
+\subsection{Base Acyclic}
+
+xxx
+
+xxx unfinished
\section{Create Tip}
-xxx tbd\
+xxx tbd
\section{Anticommit}
$\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$.
$\qed$
+\subsection{Foreign Contents}
+
+Not applicable. $\qed$
+
\section{Merge}
-Merge commits $L$ and $R$ using merge base $M$ ($M < L, M < R$):
+Merge commits $L$ and $R$ using merge base $M$:
\gathbegin
C \hasparents \{ L, R \}
\gathnext
We will occasionally use $X,Y$ s.t. $\{X,Y\} = \{L,R\}$.
\subsection{Conditions}
-
+\[ \eqn{ Ingredients }{
+ M \le L, M \le R
+}\]
\[ \eqn{ Tip Merge }{
L \in \py \implies
\begin{cases}
\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}
$\qed$
+\subsection{Foreign Contents}
+
+xxx use Totally Foreign Contents
+
+If $\patchof{C} = \bot$, by Foreign Merges
+$\patchof{L} = \patchof{R} = \bot$.
+
\end{document}