Robby,

Thank you, it mostly works for my semantics, and I know how to change the
algorithm for some corner cases.

Then I have one more question --- then I get terms (a result of
`find-path'), is there a way to show them (and only them) using GUI tools
like `traces' and `stepper'?



BR,
Anton Podkopaev

On Wed, Feb 10, 2016 at 2:42 AM, Robby Findler <[email protected]>
wrote:

> I'm sorry it took me so long to get back to this. I'm not sure there
> is a good thing to be added to Redex for this problem. Overall, it
> seems like a graph search problem and there are multiple different
> strategies depending on properties of the graph that you're searching.
> It's not too hard to code these up in Racket and then find the best
> one for your task, I would say. And redex's current support is pretty
> simplistic, tailored to models with much less interesting reduction
> graphs than yours has, I think.
>
> If you find what seems to be a particularly useful and general purpose
> search strategy and want it to be included in Redex, I'd be delighted
> if you would make a pull request. In the meantime, I've offered one
> that may or may not work well for your model, below.
>
> hth,
> Robby
>
> #lang racket
> (require redex/reduction-semantics)
> (define-language L (n ::= natural))
> (define red
>   (reduction-relation
>    L
>    (--> n ,(max 0 (min 20 (+ (term n) 3))))
>    (--> n ,(max 0 (min 20 (- (term n) 1))))))
>
> (define (find-path red from to)
>   (define parents (make-hash))
>   (let/ec done
>     (let loop ([t from])
>       (define nexts (apply-reduction-relation red t))
>       (for ([next (in-list (remove-duplicates nexts))])
>         (cond
>           [(equal? next to)
>            (hash-set! parents to t)
>            (done)]
>           [(hash-ref parents next #f)
>            (void)]
>           [else
>            (hash-set! parents next t)
>            (loop next)]))))
>   (let loop ([term to])
>     (cond
>       [(equal? term from) (list from)]
>       [else (cons term (loop (hash-ref parents term)))])))
>
> (find-path red 0 10)
>
>
> On Sun, Dec 20, 2015 at 6:26 AM, Anton Podkopaev <[email protected]>
> wrote:
> > Unfortunately, I need something else, because my semantics is highly
> > non-deterministic, and I want to be able to see only paths, which lead
> to a
> > certain term.
> >
> > BR,
> > Anton Podkopaev
> >
> > 2015-12-18 20:49 GMT+03:00 Robby Findler <[email protected]>:
> >>
> >> I think you may want to call apply-reduction-relation* with a
> >> #:stop-when argument instead?
> >>
> >> Robby
> >>
> >>
> >> On Fri, Dec 18, 2015 at 5:33 AM, Anton Podkopaev <[email protected]>
> >> wrote:
> >> > Hello, colleagues!
> >> >
> >> > Is there any way to get a term trace from successful test-->>E in
> Redex?
> >> >
> >> > BR,
> >> > Anton Podkopaev, PhD student, SPbSU
> >> >
> >> > --
> >> > 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].
> >> > For more options, visit https://groups.google.com/d/optout.
> >
> >
>

-- 
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to