chiark / gitweb /
wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 1 Mar 2012 13:49:48 +0000 (13:49 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 1 Mar 2012 13:49:48 +0000 (13:49 +0000)
article.tex

index 4cb6c96..32164de 100644 (file)
@@ -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 $