[darcs-devel] Right and left inverses
Jules Colding
colding at 42tools.com
Fri Mar 28 17:17:33 UTC 2008
On 28/03/2008, at 15.16, David Roundy wrote:
> On Thu, Mar 27, 2008 at 09:56:18PM +0100, Jules Colding wrote:
>> I'm still reading appendix A in the darcs2 manual. Right after
>> theorem
>> 1 it is said that:
>
> Perhaps I should belatedly warn you that the appendix A is in need of
> considerable work...
Thank you for the warning ;-)
Appendix A seemed to me the best place to start if I wanted to
understand the theory behind darcs, which I do. Any update/rewrite
planned?
>> "it is possible to show that the right inverse of a patch is equal
>> to
>> its left inverse"
>>
>> How?
>
> You simply consider the inverse of the inverse. If the inverse of the
> inverse is the original patch, then the right inverse is the same as
> the
> left inverse.
>
> let riA = right-invert A
>
> which means that
>
> A riA has same effect as the identity change
>
> let liA = left-invert A
>
> means that
>
> liA A has the same effect as the identity change
>
> So now consider
>
> rrA = right-invert riA
>
> so riA rrA has the same effect as identity
>
> Now if rrA is the same as A, we conclude that riA == liA.
OK, in other words:
riA rrA = I, I is the identity change
A riA = I
=> A riA rrA = rrA
=> A I = rrA
=> A = rrA
now substituting into riA rrA = I we get:
riA A = I
=> riA = liA
The only assumption I can see that is made underway is that:
IA = AI = A, where I is the identity change.
which seems logically valid although I'm not sure a mathematician
would agree without a rigorous proof.
> So I've shown that the statement you were asking about right/left
> inverse
> equality is the same as the statement that the right-invert (or
> alternatively left-invert) is a self-inverting function.
Yes.
> So how do we know that inversion is self-inverting? That comes from
> the
> effect of identity.
>
> If we begin in state o, then applying A gives us state a. Then
> applying
> riA gives us the state o. Applying rrA must give us the state a again
> (since it's the right-invert of riA), and the patch that takes us
> from o to
> a is A.
In other words:
A o --> a
=> A riA o --> o
=> A riA rrA o = A o --> a
substituting (A riA = I) now gives:
rrA o --> a
=> rrA = A
The same can be done for llA. I'm sorry if my notation isn't correct,
but the meaning should be clear.
Thank you for explaining this to me :-)
Best regards,
jules
More information about the darcs-devel
mailing list