chiark / gitweb /
unique tips: single parent unique tips applies to anticommit too
[topbloke-formulae.git] / invariants.tex
index 25d51c508c167005c48d7642108e961785aa1258..bc3813e6b83593e5d5ad0ad9c2b59c9a0f53d000 100644 (file)
@@ -13,11 +13,14 @@ We maintain these each time we construct a new commit. \\
       (D \in \py \land D \le C) }
 }\]
 \[\eqn{Base Acyclic:}{
-  \bigforall_{B \in \pn} D \isin B \implies D \notin \py
+  \bigforall_{C \in \pn} D \isin C \implies D \notin \py
 }\]
 \[\eqn{Coherence:}{
   \bigforall_{C,\p} C \haspatch \p \lor C \nothaspatch \p
 }\]
+\[\eqn{Unique Tips:}{
+  \bigforall_{C,\p} C \haspatch \p \implies \pendsof{C}{\p} = \{ T \}
+}\]
 \[\eqn{Foreign Inclusion:}{
   \bigforall_{D \text{ s.t. } \patchof{D} = \bot} D \isin C \equiv D \leq C
 }\]
@@ -25,3 +28,14 @@ We maintain these each time we construct a new commit. \\
   \bigforall_{C \text{ s.t. } \patchof{C} = \bot}
     D \le C \implies \patchof{D} = \bot
 }\]
+
+We also assign each new commit $C$ to zero or one of the sets $\p$, as
+stated in the definition of $\patchof{C}$ in the summary for each kind
+of commit.
+
+A commit $C$ which satisfies all of the above is said to be
+``conformant''.
+
+For each operation we will perform which generates a new commit, we
+will assume the conformance of the existing history and prove the
+conformance of the new commit.