[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.


More information about the darcs-users mailing list