(require (lib "reduction-semantics.ss" "reduction-semantics") (lib "gui.ss" "reduction-semantics")) (define works (let* ((g36208 (language (t (-> (d:state ...) d:alpha ...) (->* d:alpha ...)) (t-c hole) (d:state q0 q1 q2 q3 qn) (d:alpha letter digit underline))) (g36209 (append (list (reduction/context g36208 t-c (-> () ()) `reject) (reduction/context g36208 t-c (->* (d:alpha_i ...)) `(-> (q0) ,(term (d:alpha_i ...)))) (reduction/context g36208 t-c (-> (d:state ... q3 d:state ...) ()) `accept) (reduction/context g36208 t-c (-> (q0 . #0=(d:state_i ...)) . #1=(())) `(-> ,#2=(term (d:state_i ...)) ())) (reduction/context g36208 t-c (-> (q1 . #0#) . #1#) `(-> ,#2# ())) (reduction/context g36208 t-c (-> (q2 . #0#) . #1#) `(-> ,#2# ())) (reduction/context g36208 t-c (-> (qn . #0#) . #1#) `(-> ,#2# ()))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8=(d:state_a ...)) (letter . #9=(d:alpha_i ...))) `(-> (,@#10=(term (d:state_b ...)) q0 ,@#11=(term (d:state_a ...))) ,#12=(term (d:alpha_i ...))))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8#) (digit . #9#)) `(-> (,@#10# q1 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8#) (underline . #9#)) `(-> (,@#10# q0 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (letter . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (digit . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (underline . #9#)) `(-> (,@#10# q2 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (letter . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (digit . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (underline . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (letter . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (digit . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (underline . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (letter . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (digit . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (underline . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#)))))) (lambda (l) (traces g36208 g36209 `(->* ,l))))) (works `(underline underline digit underline digit)) ; s/letter/a/g ; s/digit/b/g ; s/underline/c/g (define doesnt-work (let* ((g36208 (language (t (-> (d:state ...) d:alpha ...) (->* d:alpha ...)) (t-c hole) (d:state q0 q1 q2 q3 qn) (d:alpha a b c))) (g36209 (append (list (reduction/context g36208 t-c (-> () ()) `reject) (reduction/context g36208 t-c (->* (d:alpha_i ...)) `(-> (q0) ,(term (d:alpha_i ...)))) (reduction/context g36208 t-c (-> (d:state ... q3 d:state ...) ()) `accept) (reduction/context g36208 t-c (-> (q0 . #0=(d:state_i ...)) . #1=(())) `(-> ,#2=(term (d:state_i ...)) ())) (reduction/context g36208 t-c (-> (q1 . #0#) . #1#) `(-> ,#2# ())) (reduction/context g36208 t-c (-> (q2 . #0#) . #1#) `(-> ,#2# ())) (reduction/context g36208 t-c (-> (qn . #0#) . #1#) `(-> ,#2# ()))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8=(d:state_a ...)) (a . #9=(d:alpha_i ...))) `(-> (,@#10=(term (d:state_b ...)) q0 ,@#11=(term (d:state_a ...))) ,#12=(term (d:alpha_i ...))))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8#) (b . #9#)) `(-> (,@#10# q1 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q0 . #8#) (c . #9#)) `(-> (,@#10# q0 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (a . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (b . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q1 . #8#) (c . #9#)) `(-> (,@#10# q2 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (a . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (b . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q2 . #8#) (c . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (a . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (b . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... q3 . #8#) (c . #9#)) `(-> (,@#10# q3 ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (a . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (b . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#))) (list (reduction/context g36208 t-c (-> (d:state_b ... qn . #8#) (c . #9#)) `(-> (,@#10# qn ,@#11#) ,#12#)))))) (lambda (l) (traces g36208 g36209 `(->* ,l))))) (doesnt-work `(c c b c b))