chiark / gitweb /
wip dependency insertion
[topbloke-formulae.git] / article.tex
index 5106c14df573f6a916761b8c7608f796a2307f25..c096e07474c761333a7666d5724e8294eb36d295 100644 (file)
@@ -814,8 +814,15 @@ dependency.
 \[ \eqn{ Currently Excluded }{
  L \nothaspatch \pry
 }\]
+\[ \eqn{ Inserted's Ends }{
+ E \in \pendsof{L}{\pry} \implies E \le R^+
+}\]
+\[ \eqn{ Others' Ends }{
+ \bigforall_{\p \neq \pr, L \haspatch \p}
+ E \in \pendsof{R^+}{\py} \implies E \le L
+}\]
 \[ \eqn{ Insertion Acyclic }{
- R^+ \nothaspatch \pqy
+ R^+ \nothaspatch \pq
 }\]
 
 \subsection{No Replay}
@@ -832,8 +839,66 @@ Not applicable.
 
 Not applicable.
 
+\subsection{Base Acyclic}
+
+Consider some $D \isin C$.  We will show that $D \not\in \pqy$.
+By $\merge$, $D \isin L \lor D \isin R^+ \lor D = C$.
+
+For $D \isin L$, Base Acyclic for L suffices.  For $D \isin R^+$,
+Insertion Acyclic suffices.  For $D = C$, trivial.  $\qed$.
+
+\subsection{Coherence and Patch Inclusion}
+
+$$
+\begin{cases}
+  \p = \pr    \lor L \haspatch \p : & C \haspatch \p \\
+  \p \neq \pr \land L \nothaspatch \p : & C \nothaspatch \p
+\end{cases}
+$$
+
+\proofstarts
+~ Consider some $D \in \py$.
+$D \neq C$ so $D \le C \equiv D \le L \lor D \le R^+$.
+
+\subsubsection{For $\p = \pr$:}
+
+$D \not\isin L$ by Currently Excluded.
+$D \not\isin R^-$ by Base Acyclic.
+So by $\merge$, $D \isin C \equiv D \isin R^+$,
+which by Tip Self Inpatch of $R^+$, $\equiv D \le R^+$.
+
+And by definition of $\pancs$,
+$D \le L \equiv D \in \pancsof{L}{R^+}$.
+Applying Transitive Ancestors to Inserted's Ends gives
+$A \in \pancsof{L}{R^+} \implies A \le R^+$.
+So $D \le L \implies D \le R^+$.
+Thus $D \le C \equiv D \le R^+$.
+
+So $D \isin C \equiv D \le C$, i.e. $C \haspatch \pr$.
+OK.
+
+\subsubsection{For $\p \neq \pr$:}
+
 xxx up to here
 
+By Insertion Acyclic, $D \not\isin R^+$. xxx this is wrong
+By Tip Contents for $R^+$,
+$D \isin R^+ \equiv D \isin R^- \lor (D \in \pry \land ...)$
+but $D \in \py$ so $D \not\in \pry$.  So $D \not\isin R^-$.
+By $\merge$, $D \isin C \equiv D \isin L$.
+
+If $L \nothaspatch \p$, $D \not\isin L$ so $C \nothaspatch \p$.  OK.
+
+If $L \haspatch \p$, Others' Ends applies; by Transitive
+Ancestors, $A \in \pancsof{R^+}{\py} \implies A \le L$.
+So $D \le R^+$, which is the same as $D \in \pancsof{R^+}{\py}$,
+$\implies D \le L$.  Thus $D le C \equiv D \le L$.
+And by $\haspatch$, $D \le L \equiv D \isin L$ so
+$D \isin C \equiv D \le C$.  Thus $C \haspatch \p$.
+OK.
+
+$\qed$
+
 \section{Merge}
 
 Merge commits $L$ and $R$ using merge base $M$: