# [darcs-users] Patch Theory in action

Kevin Smith yarcs at qualitycode.com
Sun Nov 23 19:46:50 UTC 2003

```Marnix Klooster wrote:
> Kevin Smith wrote (in part):
>>2. The M(A, B) notation is never mapped back to the ABC notation, which
>>seemed jarring.
>
> I agree that this notation is confusing, because (I think) M(A,B) is
> used both to mean 'the change that results by merging changes A and B'
> and 'the patch that results by merging changes A and B'.  I think that
> the Theory description will be a lot clearer when the patch/change
> distinction is strictly kept.

Actually, most of my confusion relates to the lack of mapping between
the two notations. We went from having compound patches like CBA to
having merges like M(A, B). What would a compound patch containing a
merge look like?

> In a similar way I find the notation
>
>   P1 || P2 ===> ... <--> ...
>
> confusing.  I think that I know what is meant, but as a mathematician
> this is too semi-formal to make formal sense.

For me, the most confusing part is the implied precedence. I would be
somewhat happier with:

(P1 || P2) ===> (P1 P2 <--> P2' P1')

...or whatever it was supposed to be. It really didn't bother me.

>>3. The statement "it is possible to show that the right inverse of a
>>patch is equal to its left inverse." is never really explained. What is
>>a "left inverse" or a "right inverse"?
>
>
> A little group theory.

Yikes. I appreciate your explanation, but I was barely able to follow
along, and at the end I still have no idea why we would care about a
left or right inverse.

I took calculus 20 years ago, and haven't dealt with abstract theories
much since then. I'm a programmer, so I understand code and algorithms.
I really hope we can find ways to communicate patch theory to folks like
myself without requiring understanding of abstract stuff like that.

If it's important to know about these inverses, we should find a way to
describe it concretely. If not, it would be great to relegate that
statement to a footnote, or attach a comment like ("You don't need to
know this, but you may find it interesting that...").

> In the notation introduced above, "multiply by P3 on the right" means
> to do the following step:
>
>   P1 = P2  =>  P1 o P3 = P2 o P3

Yes. We should avoid using the word "multiply" here.

Thanks very much for your message! It cleared up a few things, and it
seems to have helped inspire David to make some notational changes that
will help me more in the future.

Kevin

```