chiark / gitweb /
new foreign contents restriction
[topbloke-formulae.git] / article.tex
index 5b86fbc1ea74b068429236d2889686eac7e2b055..7630745d41eaf60ca7369bd99e7ec29ea03cbe98 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,
@@ -442,16 +461,53 @@ $D \isin C \equiv D \isin A \equiv D \le A \equiv D \le C$.  $\qed$
 
 \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}
 
-Given $L, R^+, R^-$ where
-$R^+ \in \pry, R^- = \baseof{R^+}$.  
+Given $L$ and $\pr$ as represented by $R^+, R^-$.
 Construct $C$ which has $\pr$ removed.
 Used for removing a branch dependency.
 \gathbegin
@@ -464,6 +520,9 @@ Used for removing a branch dependency.
 
 \subsection{Conditions}
 
+\[ \eqn{ Ingredients }{
+R^+ \in \pry \land R^- = \baseof{R^+}
+}\]
 \[ \eqn{ Into Base }{
  L \in \pn
 }\]
@@ -480,8 +539,8 @@ By Unique Tip, $R^+ \le L$.  By definition of $\base$, $R^- \le R^+$
 so $R^- \le L$.  So $R^+ \le C$ and $R^- \le C$.
 $\qed$
 
-(Note that the merge base $R^+ \not\le R^-$, i.e. the merge base is
-later than one of the branches to be merged.)
+(Note that $R^+ \not\le R^-$, i.e. the merge base
+is a descendant, not an ancestor, of the 2nd parent.)
 
 \subsection{No Replay}
 
@@ -558,7 +617,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$.
@@ -571,7 +630,7 @@ $\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
@@ -582,7 +641,9 @@ Merge commits $L$ and $R$ using merge base $M$ ($M < L, M < R$):
 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}