Wow!, that was fast! No need to thank, I'm just using your awesome tool to perform random testing. Thanks, Mallku
El martes, 21 de diciembre de 2021 a las 18:22:09 UTC-3, Robby Findler escribió: > There was a bug in the matcher; I've pushed a fix. > > With that fix, you'll get > > (list > (match > (list > (bind 'A '(hole (hole hole))) > (bind 'x '(hole (hole hole)))))) > > as the result. That's different than the matcher because the pattern `A` > is really shorthand for something like `(name A (nt A))`, where the `name` > part introduces the name and the `nt` pattern matching construct matches > only non-terminals without binding a name. > > Thanks for finding the bug! > > Robby > > > On Tue, Dec 21, 2021 at 2:50 PM Mallku Ernesto Soldevila Raffa wrote: > >> Just to clarify, I understand that the several binds of x correspond to >> the several patterns name in the productions, and the pattern against with >> we are matching, but I would have expected for the firsts to be discarded, >> or, if still considered in the resulting match for some reason, that I >> don't >> know, I would have expected for the application of the constraint of >> names, >> that would have rendered #f the match. >> >> thanks!, >> Mallku >> >> El martes, 21 de diciembre de 2021 a las 17:38:28 UTC-3, Mallku Ernesto >> Soldevila Raffa escribió: >> >>> Hi to everyone!, >>> I'm trying to test the mechanization of Redex's semantics done in [1], >>> against the present version of racket, 8.3. I'm using the >>> random-match-test.rkt >>> >>> module from [1] to generate random grammars, patterns and terms, and to >>> test them >>> using the proposed mechanization of Redex in [1] and the actual >>> implementation of >>> it, in racket 8.3. >>> >>> In doing it, I've found an example that I cannot explain in terms of my >>> understanding >>> of the behavior of the name pattern: >>> >>> (define-language L [A (name x B)] >>> [B (hole (name x (hole hole)))]) >>> >>> (redex-match L (name x A) >>> (term (hole (hole hole)))) >>> >>> The result of the previous match is: >>> >>> (list (match (list >>> (bind 'A '(hole (hole hole))) >>> (bind 'x '(hole hole)) >>> (bind 'x '(hole (hole hole))) >>> (bind 'x '(hole (hole hole)))))) >>> >>> Which shows that 'x' is bound to different, non-equivalent, terms. While >>> I've never used the pattern name explicitly in such a way, while >>> defining >>> grammars, I'm still curious about what is going on here. Even more, I >>> would >>> have thought that the following match would return the same result as the >>> previous: >>> >>> (redex-match L (name x (name x B)) >>> (term (hole (hole hole)))) >>> >>> where I just replaced the non-term A by the rhs of its only production, >>> but >>> what I obtain is: >>> >>> #f >>> >>> As a side note, the mechanization of Redex in [1] just returns something >>> equivalent to: >>> >>> (bind 'x '(hole (hole hole))) >>> >>> In both cases. Does anyone understand the behavior of the shown example >>> under racket 8.3? >>> >>> Thanks in advance!, >>> Mallku >>> >>> [1] : https://link.springer.com/chapter/10.1007%2F978-3-642-25318-8_27 >>> El jueves, 9 de diciembre de 2021 a las 13:20:31 UTC-3, Mallku Ernesto >>> Soldevila Raffa escribió: >>> >>>> Thanks a lot for the info! If I found any mismatches, I'll report it. >>>> >>>> Regards, >>>> Mallku >>>> >>>> El miércoles, 8 de diciembre de 2021 a las 23:32:25 UTC-3, Robby >>>> Findler escribió: >>>> >>>>> I'm sorry, my sentence was ambiguous! I'm saying that I don't know of >>>>> any other work that is specifically focused on the semantics of Redex. >>>>> (Of >>>>> course, there may be work I'm not aware of.) >>>>> >>>>> The paper is still a good match, I believe, yes. You're right that the >>>>> syntactic checks for well-formed grammars have tightened since that era, >>>>> but if the program is valid, then I think it should match; the underlying >>>>> algorithms have not changed, only bug fixes have happened. >>>>> >>>>> Of course, if you find that this isn't the case, I'd be very >>>>> interested to hear more :) >>>>> >>>>> Robby >>>>> >>>>> >>>>> >>>>> On Wed, Dec 8, 2021 at 6:34 PM Mallku Ernesto Soldevila Raffa wrote: >>>>> >>>>>> I beg your pardon!, I'm not understanding the answer, what is it that >>>>>> might be specific of Redex? >>>>>> >>>>>> I suspect that the answer is that there isn't some recent work on >>>>>> formal >>>>>> semantics specifically about Redex. In that case, does anybody know >>>>>> if the >>>>>> already mentioned paper [1] is still a good match for today's >>>>>> semantics of >>>>>> Redex? The paper provides a mechanization of the model in Redex, >>>>>> together >>>>>> with some tools to test it. Of interest is a tool that asks Redex to >>>>>> generate >>>>>> random patterns and terms that match against them, and tests if the >>>>>> mechanized model is capable of reproducing the matching (or that is >>>>>> what >>>>>> I suspect that the tests are doing :P ). It was possible to run the >>>>>> mechanization >>>>>> on a recent version of Redex, but the generated patterns are >>>>>> ill-formed >>>>>> (e.g., in-hole p1 p2, where p1 contains more than 1 hole). Of course >>>>>> I could >>>>>> provide more details about the error, but I don't know if it is of >>>>>> interest, it's >>>>>> a mechanization written for the Redex version that comes with Racket >>>>>> 5.* >>>>>> or something like that. >>>>>> >>>>>> Thanks!, >>>>>> Mallku >>>>>> >>>>>> >>>>>> [1] : >>>>>> https://link.springer.com/chapter/10.1007%2F978-3-642-25318-8_27 >>>>>> >>>>>> El miércoles, 8 de diciembre de 2021 a las 21:03:44 UTC-3, Robby >>>>>> Findler escribió: >>>>>> >>>>>>> I think that might be it specifically about redex, I am sorry to >>>>>>> say. >>>>>>> >>>>>>> Robby >>>>>>> >>>>>>> On Wed, Dec 8, 2021 at 5:28 PM Mallku Ernesto Soldevila Raffa wrote: >>>>>>> >>>>>>>> Hi community!, >>>>>>>> I'm interested in understanding the semantics of PLT Redex, since >>>>>>>> we are working on a tool >>>>>>>> to translate fragments of Redex models to Coq. At the moment, we >>>>>>>> just have a >>>>>>>> mechanization in Coq of the semantics proposed in a ~10 years old >>>>>>>> paper [1]. Does >>>>>>>> anybody know if there is an updated work on formal semantics of >>>>>>>> Redex? >>>>>>>> >>>>>>>> Thanks in advance!, >>>>>>>> Mallku >>>>>>>> >>>>>>>> [1] : >>>>>>>> https://link.springer.com/chapter/10.1007%2F978-3-642-25318-8_27 >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Racket Users" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to >>>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Racket Users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to >>>>>> >>>>> >>>>> -- >> You received this message because you are subscribed to the Google Groups >> "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to >> > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/dcfd3db0-13f7-4fd0-9054-b40be4fcf00bn%40googlegroups.com.

