Am Sa., 26. Nov. 2022 um 11:54 Uhr schrieb Daphne Preston-Kendal <d...@nonceword.org>: > > On 23 Nov 2022, at 15:40, Jakob Wuhrer <jakob.wuh...@gmail.com> wrote: > > > Hi, > > > > Daphne Preston-Kendal <d...@nonceword.org> writes: > >> On 19 Nov 2022, at 01:35, Shiro Kawai <shiro.ka...@gmail.com> wrote: > >>> That part is resolved by the replies to my post. Sensible base cases can > >>> be defined, and it makes sense to have them taking zero arguments. > >> > >> Can you formally define them and show that they are a correct base > >> case, in the sense of being of null effect if appended to the end of > >> another arguments list? I can observe how the sample implementation > >> behaves (emergently) when given no comparator arguments, but I’m still > >> far from certain that they’re correct in a compositional sense. > > > > I have made an attempt at providing a formal definition for a ``zero'' > > comparator and a ``one'' comparator along with some rudimentary proofs > > showing that they are neutral elements for ~make-sum-comparator~ and > > ~make-product-comparator~, respectively. I've attached both a pdf > > document and org source code for said document, containing some > > definitions and proofs. > > Wow, thanks so much for this detailed analysis! > > The only problem (and it’s a real nitpick) is the hash function of > comparator-one. Since it is implementation-defined how a product comparator > combines the hash values of each of the comparators it is given, there’s no > guarantee that 0 will truly be of null effect. > > Possible resolutions: > 1. ignore the problem – the hash value will still be stable even if it isn’t > guaranteed to be exactly same as a comparator without comparator-one mixed in > 2. actually define how hash values in a product comparator are combined > 3. simply require that a hash value of 0 from one of the comparators is > ignored and has no effect on the output value
1.