X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=article.tex;h=89d23fe179d9bfc53524f3cfe65fb20d4425f51e;hb=9e53deabff04c90177d8282bdf7969545e6dc5ee;hp=f712ba63fc0e7fdb37b78598eb1f192d357a634b;hpb=1511c5c4eb6b930fb76c06b88c4c5f57756e78eb;p=topbloke-formulae.git diff --git a/article.tex b/article.tex index f712ba6..89d23fe 100644 --- a/article.tex +++ b/article.tex @@ -56,8 +56,11 @@ \newcommand{\merge}[4]{{\mathcal M}(#1,#2,#3,#4)} %\newcommand{\merge}[4]{{#2 {{\frac{ #1 }{ #3 } #4}}}} -\newcommand{\patchof}[1]{{\mathcal P} ( #1 ) } -\newcommand{\baseof}[1]{{\mathcal B} ( #1 ) } +\newcommand{\patch}{{\mathcal P}} +\newcommand{\base}{{\mathcal B}} + +\newcommand{\patchof}[1]{\patch ( #1 ) } +\newcommand{\baseof}[1]{\base ( #1 ) } \newcommand{\eqn}[2]{ #2 \tag*{\mbox{\bf #1}} } \newcommand{\corrolary}[1]{ #1 \tag*{\mbox{\it Corrolary.}} } @@ -254,6 +257,37 @@ by the LHS. And $A \le A''$. }\] XXX proof TBD. +\subsection{No Replay for Merge Results} + +If we are constructing $C$, given +\gathbegin + \merge{C}{L}{M}{R} +\gathnext + L \le C +\gathnext + R \le C +\end{gather} +No Replay is preserved. {\it Proof:} + +\subsubsection{For $D=C$:} $D \isin C, D \le C$. OK. + +\subsubsection{For $D \isin L \land D \isin R$:} +$D \isin C$. And $D \isin L \implies D \le L \implies D \le C$. OK. + +\subsubsection{For $D \neq C \land D \not\isin L \land D \not\isin R$:} +$D \not\isin C$. OK. + +\subsubsection{For $D \neq C \land (D \isin L \equiv D \not\isin R) + \land D \not\isin M$:} +$D \isin C$. Also $D \isin L \lor D \isin R$ so $D \le L \lor D \le +R$ so $D \le C$. OK. + +\subsubsection{For $D \neq C \land (D \isin L \equiv D \not\isin R) + \land D \isin M$:} +$D \not\isin C$. OK. + +$\qed$ + \section{Commit annotation} We annotate each Topbloke commit $C$ with: @@ -355,7 +389,7 @@ $D \isin C \equiv D \isin A \equiv D \le A \equiv D \le C$. $\qed$ \section{Anticommit} Given $L, R^+, R^-$ where -$\patchof{R^+} = \pry, \patchof{R^-} = \prn$. +$R^+ \in \pry, R^- = \baseof{R^+}$. Construct $C$ which has $\pr$ removed. Used for removing a branch dependency. \gathbegin @@ -371,16 +405,25 @@ Used for removing a branch dependency. \[ \eqn{ Unique Tip }{ \pendsof{L}{\pry} = \{ R^+ \} }\] -\[ \eqn{ Correct Base }{ - \baseof{R^+} = R^- -}\] \[ \eqn{ Currently Included }{ L \haspatch \pry }\] +\subsection{Desired Contents} +xxx need to prove $D \isin C \equiv D \not\in \pry \land D \isin L$. -xxx want to prove $D \isin C \equiv D \not\in \pry \land D \isin L$. +\subsection{No Replay} + +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$ and No Replay for +Merge Results applies. $\qed$ + +\subsection{Unique Base} + +Need to consider only $C \in \py$, ie $L \in \py$. + +xxx tbd \section{Merge} @@ -408,28 +451,7 @@ Merge commits $L$ and $R$ using merge base $M$ ($M < L, M < R$): \subsection{No Replay} -\subsubsection{For $D=C$:} $D \isin C, D \le C$. OK. - -\subsubsection{For $D \isin L \land D \isin R$:} -$D \isin C$. And $D \isin L \implies D \le L \implies D \le C$. OK. - -\subsubsection{For $D \neq C \land D \not\isin L \land D \not\isin R$:} -$D \not\isin C$. OK. - -\subsubsection{For $D \neq C \land D \not\isin L \land D \not\isin R$:} -$D \not\isin C$. OK. - -\subsubsection{For $D \neq C \land (D \isin L \equiv D \not\isin R) - \land D \not\isin M$:} -$D \isin C$. Also $D \isin L \lor D \isin R$ so $D \le L \lor D \le -R$ so $D \le C$. OK. - -\subsubsection{For $D \neq C \land (D \isin L \equiv D \not\isin R) - \land D \isin M$:} -$D \not\isin C$. Also $D \isin L \lor D \isin R$ so $D \le L \lor D \le -R$ so $D \le C$. OK. - -$\qed$ +See No Replay for Merge Results. \subsection{Unique Base}