X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=article.tex;h=0428df707a2978eae6c336b40447f29b5b820385;hb=1814499fa14d3774567205fa57a95b3adbfe4fb5;hp=70d6d88200ffa76188a4e3fb553043e4094288a2;hpb=bfa0996c930a2507501eec79b4a89333d35d47aa;p=topbloke-formulae.git diff --git a/article.tex b/article.tex index 70d6d88..0428df7 100644 --- a/article.tex +++ b/article.tex @@ -369,7 +369,10 @@ Topbloke strips the metadata when exporting. Trivial. \subsection{Unique Base} -If $A, C \in \py$ then $\baseof{C} = \baseof{A}$. $\qed$ +If $A, C \in \py$ then by Calculation of Ends for +$C, \py, C \not\in \py$: +$\pendsof{C}{\pn} = \pendsof{A}{\pn}$ so +$\baseof{C} = \baseof{A}$. $\qed$ \subsection{Tip Contents} We need to consider only $A, C \in \py$. From Tip Contents for $A$: @@ -396,7 +399,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} @@ -435,10 +440,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 @@ -451,6 +501,9 @@ Used for removing a branch dependency. \subsection{Conditions} +\[ \eqn{ Ingredients }{ +R^+ \in \pry \land R^- = \baseof{R^+} +}\] \[ \eqn{ Into Base }{ L \in \pn }\] @@ -465,9 +518,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} @@ -542,6 +596,8 @@ 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$. +$\qed$ + \section{Foreign Inclusion} Consider some $D$ s.t. $\patchof{D} = \bot$. $D \neq C$. @@ -549,11 +605,13 @@ 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 @@ -564,7 +622,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} @@ -727,7 +787,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}