X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke-formulae.git;a=blobdiff_plain;f=article.tex;h=7630745d41eaf60ca7369bd99e7ec29ea03cbe98;hp=e6447d92380b854b40c0c1bf9d61825564f79a4d;hb=c2932ba812fa6fdf7b03615dd4a8709449cd8983;hpb=1dba870613dc3668dbbcb5cf5afd61f9cd310a1d diff --git a/article.tex b/article.tex index e6447d9..7630745 100644 --- a/article.tex +++ b/article.tex @@ -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, @@ -399,7 +418,9 @@ Need to consider only $A, C \in \pn$. For $D = C$: $D \in \pn$ so $D \not\in \py$. OK. For $D \neq C$: $D \isin C \equiv D \isin A$, so by Base Acyclic for -$A$, $D \isin C \implies D \not\in \py$. $\qed$ +$A$, $D \isin C \implies D \not\in \py$. + +$\qed$ \subsection{Coherence and patch inclusion} @@ -438,10 +459,55 @@ $\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$ +\section{Create Base} + +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 + \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 @@ -454,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 }\] @@ -468,9 +537,10 @@ Used for removing a branch dependency. 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} @@ -545,18 +615,22 @@ So $L \nothaspatch \p \implies C \nothaspatch \p$. Whereas if $L \haspatch \p$, $D \isin L \equiv D \le L$. so $L \haspatch \p \implies C \haspatch \p$. -\section{Foreign Inclusion} +$\qed$ + +\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$. By Foreign Inclusion of $D$ in $L$, $D \isin L \equiv D \le L$. And $D \le C \equiv D \le L$. -Thus $D \isin C \equiv D \le C$. $\qed$ +Thus $D \isin C \equiv D \le C$. + +$\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 @@ -567,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} @@ -730,7 +806,9 @@ $C \in \pn$ when $L \in \pn$ so by Merge Acyclic, $R \nothaspatch \p$. Consider some $D \in \py$. By Base Acyclic of $L$, $D \not\isin L$. By the above, $D \not\isin -R$. And $D \neq C$. So $D \not\isin C$. $\qed$ +R$. And $D \neq C$. So $D \not\isin C$. + +$\qed$ \subsection{Tip Contents}