chiark / gitweb /
1 \section{Traversal phase --- proofs}
3 For each operation called for by the traversal algorithms, we prove
4 that the commit generation preconditions are met.
6 \subsection{Base Dependency Merge, Base Sibling Merge}
8 We do not prove that the preconditions are met.  Instead, we check
9 them at runtime.  If they turn out not to be met, we abandon
10 \alg{Merge-Base} and resort to \alg{Recreate-Base}.
12 WIP WHAT ABOUT PROVING ALL THE TRAVERSAL RESULTS
14 \subsection{Tip Base Merge}
16 $L = W$, $R = \tipcn$.
18 TODO TBD
20 Afterwards, $\baseof{W} = \tipcn$.
22 \subsection{Tip Source Merge}
24 In fact, we do this backwards: $L = S$, $R = W$.  Since $S \in \pcy$,
25 the resulting $C \in \pcy$ and the remaining properties of the Merge
26 commit construction are symmetrical in $L$ and $R$ so this is fine.
28 By the results of Tip Base Merge, $\baseof{W} = \tipcn$.
30 By Base Ends Supreme, $\tipcn \ge \baseof{S}$ i.e.
31 $\baseof{R} \ge \baseof{L}$.
33 Either $\baseof{L} = \baseof{M}$, or we must choose a different $M$ in
34 which case $M = \baseof{S}$ will suffice.