[prev in list] [next in list] [prev in thread] [next in thread] 

List:       darcs-conflicts
Subject:    [darcs-conflicts] A permutation of four patches
From:       Arjan Boeijink <w.a.boeijink () student ! utwente ! nl>
Date:       2005-12-24 11:47:12
Message-ID: 43AD3540.5060506 () student ! utwente ! nl
[Download RAW message or body]

Hi,

Because three patch permutations don't cover all possible commutes, I 
tried to write down the permutation of four non-commuting patches.
A small problem with four patch permutations is that multiple ways to 
permute exist, though they overlap for a large parts.

This permutation of four non-commuting is a straightforward extension on 
permutation of three patches.
The main difference is that it includes a middle conflict with right 
conflict commute, and the patch sequence in reversed order has two 
middle conflicts.

          A         B              C              D
  <-->AB  <A;@B|    |@A;B>         C              D
  <-->AC  <A;@B|    (A)<;B@C|      |@A;BC>        D
  <-->AD  <A;@B|    (A)<;B@C|      (A)<;BC@D|     |@A;BCD>
  <-->BC  <AB;@C|   (A)[@B](C)     (A)<;BC@D|     |@A;BCD>
  <-->BD  <AB;@C|   (AB,B)<;C@D|   (A)[@B](C,CD)  |@A;BCD>
  <-->CD  <ABC;@D|  (AB,B)[@C](D)  (A)[@B](C,CD)  |@A;BCD>
  <-->BA  <ABC;@D|  (AB,B)[@C](D)  |@AB;>(C,CD)   |@B;CD>
  <-->CA  <ABC;@D|  |@ABC;>(D)     (B)[@C](D)     |@B;CD>
  <-->CB  <ABC;@D|  |@ABC;>(D)     |@BC;>(D)      |@C;D>
  <-->DA  A         <BC;@D|        |@BC;>(D)      |@C;D>
  <-->CD  A         B              <C;@D|         |@C;D>

In a different order the permutation becomes:

          A         B                C                D
  <-->AB  <A;@B|    |@A;B>           C                D
  <-->CD  <A;@B|    |@A;B>           <C;@D|           |@C;D>
  <-->AD  <A;@B|    (A)<B;C@D|       |@AB;C>(D)       |@C;D>
  <-->BD  <ABC;@D|  (AB)|@B;[C]|(D)  |@AB;C>(D)       |@C;D>
  <-->AC  <ABC;@D|  (AB)|@B;[C]|(D)  (AB)|[B];@C|(D)  |@A;BCD>
  <-->BC  <ABC;@D|  (AB,B)[@C](D)    (A)[@B](C,CD)    |@A;BCD>
  <-->CB  <ABC;@D|  (AB)|@B;[C]|(D)  (AB)|[B];@C|(D)  |@A;BCD>
  <-->DB  <A;@B|    (A)<B;C@D|       (AB)|[B];@C|(D)  |@A;BCD>
  <-->CA  <A;@B|    (A)<B;;C@D|      |@AB;C>(D)       |@C:D>
  <-->DA  <A;@B|    |@A;B>           <C;@D|           |@C;D>
  <-->DC  <A;@B|    |@A;B>           C                D

The tricky part here is commutation of the two middle conflicts, where 
their identities are swapped but their effect can't be:

 (AB,B)[@C](D) (A)[@B](C,CD) <-> (AB)|@B;[C]|(D) (AB)|[B];@C|(D)

Translating the resulting conflicts to existing conflict types gives 
(although I'm not sure if this is correct.):

  (AB)|@B;[C]|(D)  ~=  (ABC)<C^;B^@B|(CD)
  (AB)|[B];@C|(D)  ~=  (AB)|@C;B^>(BCD)

Permutations in other orders overlap mostly with above two and don't 
contain new commute cases.

--Arjan

_______________________________________________
darcs-conflicts mailing list
darcs-conflicts@darcs.net
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-conflicts
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic