From: Ian Jackson Date: Thu, 1 Mar 2012 13:49:48 +0000 (+0000) Subject: wip X-Git-Tag: f0.2~182 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke-formulae.git;a=commitdiff_plain;h=53f9c060d6ef0257657fe8aa9ddb2bb11f18d3bc wip --- diff --git a/article.tex b/article.tex index 4cb6c96..32164de 100644 --- a/article.tex +++ b/article.tex @@ -59,7 +59,9 @@ {\hbox{\scriptsize$\forall$}}}% } -\newcommand{\proof}[1]{{\it Proof.} #1 $\square$} + +\newcommand{\qed}{\square} +\newcommand{\proof}[1]{{\it Proof.} #1 $\qed$} \begin{document} @@ -112,7 +114,7 @@ i.e. all $\le$-maximal commits in $\pancsof{C}{\set P}$. \item[ $ \baseof{C} $ ] $ \pendsof{C}{\pn} = \{ \baseof{C} \} $ where $ C \in \py $. A partial function from commits to commits. -See ``unique base'', below. +See Unique Base, below. \item[ $ C \haspatch \p $ ] $\displaystyle \bigforall_{D \in \py} D \isin C \equiv D \le C $. @@ -226,6 +228,55 @@ make it wrong to make plain commits with git because the recorded $\pends$ would have to be updated. The annotation is not needed because $\forall_{\py \ni C} \; \pendsof{C}{\py} = \{C\}$. +\section{Simple commit} + +A simple single-parent forward commit $C$ as made by git-commit. +\begin{gather} +\tag*{} C \hasparents \{ A \} \\ +\tag*{} \patchof{C} = \patchof{A} \\ +\tag*{} D \isin C \equiv D \isin A \lor D = C +\end{gather} + +\subsection{No Replay} +Trivial. + +\subsection{Unique Base} +If $A, C \in \py$ then $\baseof{C} = \baseof{A}$. $\qed$ + +\subsection{Tip Contents} +We need to consider only $A, C \in \py$. From Tip Contents for $A$: +\[ D \isin A \equiv D \isin \baseof{A} \lor ( D \in \py \land D \le A ) \] +Substitute into the contents of $C$: +\[ D \isin C \equiv D \isin \baseof{A} \lor ( D \in \py \land D \le A ) + \lor D = C \] +Since $D = C \implies D \in \py$, +and substituting in $\baseof{C}$, this gives: +\[ D \isin C \equiv D \isin \baseof{C} \lor + (D \in \py \land D \le A) \lor + (D = C \land D \in \py) \] +\[ \equiv D \isin \baseof{C} \lor + [ D \in \py \land ( D \le A \lor D = C ) ] \] +So by Exact Ancestors: +\[ D \isin C \equiv D \isin \baseof{C} \lor ( D \in \py \land D \le C +) \] +$\qed$ + +\subsection{Base Acyclic} + +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$ + +\subsection{Coherence} + +\subsubsection{For $A \haspatch P, D = C$:} +\[ D \isin C \equiv \ldots \lor t \text{ so } D \haspatch C \] +\[ D \le C \] +OK + \section{Test more symbols} $ C \haspatch \p $