[racket] [redex] Structured Semantics

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Thu Jul 8 11:01:14 EDT 2010

This isn't truly a structured semantics, though yes it comes close. 

Do we show the GC rules in the Redex book? It would do the same. 

-- Matthias




On Jul 7, 2010, at 11:53 PM, Jay McCarthy wrote:

> How should I use Redex to encode a structured semantics... For example,
> 
> Suppose I have the L_thread language and the ->_thread reduction
> relation with contract
> 
> (store_global store_local term) ->_thread (store_global store_local term)
> 
> and I want to have another language L_system with an ->_system rr with contract
> 
> (store_global (store_local term) ...) ->_system (store_global
> (store_local term) ...)
> 
> where (among other rules) I have the rule:
> 
> (store_global store_local term) ->_thread (store_global' store_local' term')
> ---------------------
> (store_global (store_local term) any_others ...) ->_system
> (store_global' (store_local' term') any_others ...)
> 
> I could easily use reduction-relation for ->_thread and most of
> ->_system, but for this particular rule, it doesn't seem possible to
> express in Redex. If the reduction-relation? structure were exposed
> (or perhaps had a struct property associated with it), then I could
> code this one rule in Racket and dispatch to the two other rrs when
> necessary, but that seems wrong.
> 
> Another way I could do it is combine the two languages and rules into
> one with a "mode" switching...
> 
> L_synthetic = (THREAD L_thread L_system/thread-hole) + (SYSTEM L_system)
> 
> ->_synthetic =
> 
> (THREAD thread sys) -> (THREAD thread' sys)
> 
> ...
> 
> (SYSTEM (in-hole sys thread)) -> (THREAD thread sys)
> 
> But that seems like the wrong thing too.
> 
> Any other ideas or examples?
> 
> Jay
> 
> -- 
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://teammccarthy.org/jay
> 
> "The glory of God is Intelligence" - D&C 93
> _________________________________________________
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/users



Posted on the users mailing list.