Jason Dagit wrote:
Heinrich Apfelmus wrote:

My amusing (to me) observation was that this "intuitively correct"
property is equivalent to the following property about merges:

Consider three concurrent patches

  X = C^(-1)   inverse of C
  Y = A
  Z = B'

  visually:

        +-- X                 +-- C --<
        |                     |
    >---+-- Y        <=>      +-- A (-- B)
        |                     |
        +-- Z                 +-- B'

    X Y Z concurrent <=>      C A B in sequence

such that

  X and Y  can be merged  (i.e. X and Y^(-1) commute)
  Y and Z  can be merged  (...)
  Z and X  can be merged  (...)

I don't understand the setup of this example. What does it mean for two or more patches to be concurrent? Also, the notation for your diagram is unfamiliar so I need an explanation of the symbols (>--) vs. (--<), (-- B), what does + represent, etc. At first I thought it was an ASCII art tree, but if that is true why do you say C A B is a sequence when they appear to branch from the same level of the tree? And I think you might have more than one notation for inverses, C^(-1) vs. (--B).

Do you think it would help if we used the context notation here?

Yes, I didn't intend to cloud the issue with my botched ASCII art; let's use context notation.

For example, this is what I think you mean:

oXx, oYy, oZz, would mean that X, Y, and Z all have the same pre- context (meaning they all apply to the same sequence of patches).

and you have, iCcAaBb as a sequence. So then, I think you mean to commute A and B so that we get cB'd.

In this notation the lower case letters represent the context of the patches. The context before the patch is the pre-context and it is where the patch applies, similar to the domain of a function. The post-context is the resulting context from applying the patch (so, c = i with C on the end). When patches are in a sequence we omit the contexts that are implied or redundant.

Ok, so the situation is indeed the following: we have three parallel (concurrent? what's the established name?) patches

    o X x, o Y y and o Z z

and want to merge them. (I'm separating contexts and patches by spaces as this will make better notation subsequently). Now, we assume that each pair can be merged, i.e. we have

    x X^(-1) o Y y  <->  x Y1 xy X2 y
    y Y^(-1) o Z z  <->  y Z1 yz Y2 z
    z Z^(-1) o X x  <->  z X1 zx Z2 x

so that we can build for example the repositories

    o X x Y1 xy    (X and Y merged)
    o Y y Z1 yz    (Y and Z merged)
    o Z z X1 zx    (Z and X merged)

Is this enough to establish the existence of a patch xy Z' xyz that merges Z into the union of X and Y, i.e. that allows us to build o X x Y1 xy Z' xyz ?

No, I think the three premises are not enough. This has to be a new axiom or a consequence of other axioms. It does look like permutivity, but as I understand it, permutivity makes the existence of Z' a premise, not a consequence.


Regards,
apfelmus

--
http://apfelmus.nfshost.com

_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to