[darcs-users] question mergers, revisited
David Roundy
droundy at abridgegame.org
Wed Jan 28 12:22:03 UTC 2004
On Mon, Jan 19, 2004 at 12:49:07PM -0500, Mirian Crzig Lennox wrote:
> Back in December, I posted that I had been having some difficulty
> unwinding a particular hypothetical merger:
>
> M(M(A,B),M(M(C,D),E))
>
> I began by unwinding the two halves,
>
> C
> A M(C,D)
> M(A,B) M(M(C,D),E)
>
> then got stuck trying to reconcile patch A with M(C,D). After staring
> at the problem for on three weeks, this is what I've come up with:
>
> * Since none of the mergers in either column involves A with C or D,
> we may assume that AC' <=> CA' and AD' <=> DA' are valid
> commutations.
Not quite. A and M(C,D) are in parallel, so we know that A and M(C,D)
commute, but we need to use merge theorem to find
A M(C',D') <-> M(C,D) A'
...and we then need to keep doing this sort of backwards commuting.
> * By definition, a merger comprises parallel patches; thus M(P1,P2) is
> semantically equivalent to M(P2,P1) regardless of context.
> Furthermore, for any simple patch P3,
>
> if P1P3 <=> P3'P1' and P2P3 <=> P3'P2' then M(P1,P2)P3 <=> P3'M(P1'P2')
I don't think this is quite true.
(using for this email -P1 to indicate P1 inverse)
if
-P1 P3 <-> P3' -P1'
P3 P1 <-> P1' P3'' (this will be same P1' as first line by merge
theorem, but there is no guarantee that both
are valid commutes, so you have to check both)
P3 P2 <-> P2' P3'''
then
M(P1,P2)P3 <-> P3' M(P1',P2')
On top of this, I seem to recall that there is a corner case that needs to
be checked for, but this will at least get the common cases right.
> Consequently, my full unwinding works out to:
>
> C'
> M(C'D')
> A
> M(A,B)
> M(M(A,B),M(M(C,D),E))
>
> Where C' and D' are C and D respectively commuted with A.
>
> Is this correct?
Yes, that is correct, except that I think your definition of C' and D' may
be off, depending on how you planned on doing the commutation with A.
--
David Roundy
http://civet.berkeley.edu/droundy/
More information about the darcs-users
mailing list