From: Ian Jackson Date: Sun, 27 May 2012 23:03:06 +0000 (+0100) Subject: foreign notation: introduce \isforeign X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke-formulae.git;a=commitdiff_plain;h=28bb86cd8218c491ad4fe845c4547af57b1aecb4 foreign notation: introduce \isforeign perl -i~ -pe 's/\\patchof(\{[^{}]+\})\s+=\s+\\foreign\b/\\isforeign$1/g' *.tex and then add the definition in article.tex --- diff --git a/anticommit.tex b/anticommit.tex index 72469b8..39d13e5 100644 --- a/anticommit.tex +++ b/anticommit.tex @@ -131,7 +131,7 @@ Single Parent Unique Tips applies. $\qed$ \subsection{Foreign Inclusion} -Consider some $D$ s.t. $\patchof{D} = \foreign$. $D \neq C$. +Consider some $D$ s.t. $\isforeign{D}$. $D \neq C$. So by Desired Contents $D \isin C \equiv D \isin L$. By Foreign Inclusion of $D$ in $L$, $D \isin L \equiv D \le L$. diff --git a/article.tex b/article.tex index ffd940f..67f7890 100644 --- a/article.tex +++ b/article.tex @@ -97,6 +97,7 @@ \newcommand{\depsreqof}[1]{\depsreq ( #1 ) } \newcommand{\foreign}{\bot} +\newcommand{\isforeign}[1]{\patchof{#1} = \foreign} \newcommand{\allpatches}{\Upsilon} \newcommand{\assign}{\leftarrow} diff --git a/invariants.tex b/invariants.tex index 736fb8e..6cebb05 100644 --- a/invariants.tex +++ b/invariants.tex @@ -22,11 +22,11 @@ We maintain these each time we construct a new commit. \\ \bigforall_{C,\p} C \haspatch \p \implies \pendsof{C}{\py} = \{ T \} }\] \[\eqn{Foreign Inclusion}{ - \bigforall_{D \text{ s.t. } \patchof{D} = \foreign} D \isin C \equiv D \leq C + \bigforall_{D \text{ s.t. } \isforeign{D}} D \isin C \equiv D \leq C }\] \[\eqn{Foreign Contents}{ - \bigforall_{C \text{ s.t. } \patchof{C} = \foreign} - D \le C \implies \patchof{D} = \foreign + \bigforall_{C \text{ s.t. } \isforeign{C}} + D \le C \implies \isforeign{D} }\] We also assign each new commit $C$ to zero or one of the sets $\p$, as diff --git a/lemmas.tex b/lemmas.tex index 72e00d6..83fc3f6 100644 --- a/lemmas.tex +++ b/lemmas.tex @@ -175,12 +175,12 @@ $$ \right] \implies \left[ - \bigforall_{D \text{ s.t. } \patchof{D} = \foreign} + \bigforall_{D \text{ s.t. } \isforeign{D}} D \isin C \equiv D \le C \right] $$ \proof{ -Consider some $D$ s.t. $\patchof{D} = \foreign$. +Consider some $D$ s.t. $\isforeign{D}$. If $D = C$, trivially true. For $D \neq C$, by Foreign Inclusion of $D$ in $L$, $D \isin L \equiv D \le L$. And by Exact Ancestors $D \le L \equiv D \le C$. @@ -192,20 +192,20 @@ Given conformant commits $A \in \set A$, $$ \left[ C \hasparents \set A \land - \patchof{C} = \foreign \land - \bigforall_{A \in \set A} \patchof{A} = \foreign + \isforeign{C} \land + \bigforall_{A \in \set A} \isforeign{A} \right] \implies \left[ \bigforall_{D} D \le C \implies - \patchof{D} = \foreign + \isforeign{D} \right] $$ \proof{ -Consider some $D \le C$. If $D = C$, $\patchof{D} = \foreign$ trivially. +Consider some $D \le C$. If $D = C$, $\isforeign{D}$ trivially. If $D \neq C$ then $D \le A$ where $A \in \set A$. By Foreign -Contents of $A$, $\patchof{D} = \foreign$. +Contents of $A$, $\isforeign{D}$. } diff --git a/merge.tex b/merge.tex index 6ba1387..54f83da 100644 --- a/merge.tex +++ b/merge.tex @@ -56,19 +56,19 @@ satisfied; in particular, provided that $L \ge \baseof{R}$. , \text{where} \{J,K\} = \{L,R\} }\] \[ \eqn{ Foreign Merges }{ - \patchof{L} = \foreign \implies \patchof{R} = \foreign + \isforeign{L} \implies \isforeign{R} }\] \subsection{Non-Topbloke merges} -We require both $\patchof{L} = \foreign$ and $\patchof{R} = \foreign$ +We require both $\isforeign{L}$ and $\isforeign{R}$ (Foreign Merges, above). I.e. not only is it forbidden to merge into a Topbloke-controlled branch without Topbloke's assistance, it is also forbidden to merge any Topbloke-controlled branch into any plain git branch. Given those conditions, Tip Merge and Merge Acyclic do not apply. -By Foreign Contents of $L$, $\patchof{M} = \foreign$ as well. +By Foreign Contents of $L$, $\isforeign{M}$ as well. So by Foreign Contents for any $A \in \{L,M,R\}$, $\forall_{\p, D \in \py} D \not\le A$ so $\pendsof{A}{\py} = \{ \}$ and the RHS of both Merge Ends @@ -280,7 +280,7 @@ $\qed$ \subsection{Foreign Inclusion} -Consider some $D$ s.t. $\patchof{D} = \foreign$. +Consider some $D$ s.t. $\isforeign{D}$. By Foreign Inclusion of $L, M, R$: $D \isin L \equiv D \le L$; $D \isin M \equiv D \le M$; @@ -311,6 +311,6 @@ $\qed$ \subsection{Foreign Contents} -Only relevant if $\patchof{L} = \foreign$, in which case -$\patchof{C} = \foreign$ and by Foreign Merges $\patchof{R} = \foreign$, +Only relevant if $\isforeign{L}$, in which case +$\isforeign{C}$ and by Foreign Merges $\isforeign{R}$, so Totally Foreign Contents applies. $\qed$ diff --git a/pseudomerge.tex b/pseudomerge.tex index d884be8..9318c30 100644 --- a/pseudomerge.tex +++ b/pseudomerge.tex @@ -25,7 +25,7 @@ but whose contents are exactly those of $L$. }\] \[ \eqn{ Foreign Unaffected }{ - \bigforall_{ D \text{ s.t. } \patchof{D} = \foreign } + \bigforall_{ D \text{ s.t. } \isforeign{D} } \left[ \bigexists_{A \in \set A} D \le A \right] \implies D \le L @@ -34,7 +34,7 @@ but whose contents are exactly those of $L$. \subsection{Lemma: Foreign Identical} -$\patchof{D} = \foreign \implies \big[ D \le C \equiv D \le L \big]$. +$\isforeign{D} \implies \big[ D \le C \equiv D \le L \big]$. \proof{ If $D \le L$, trivially $D \le C$; so conversely diff --git a/simple.tex b/simple.tex index f714edb..297103a 100644 --- a/simple.tex +++ b/simple.tex @@ -100,6 +100,6 @@ Simple Foreign Inclusion applies. $\qed$ \subsection{Foreign Contents:} -Only relevant if $\patchof{C} = \foreign$, and in that case Totally +Only relevant if $\isforeign{C}$, and in that case Totally Foreign Contents applies. $\qed$