;; Your task: add reductions to :->cc for cc3, cc6, and ccdelta. ;; (Note: the initial test expression doesn't need those rules, ;; so you should at least expand it to exercise your rules.) (require (lib "reduction-semantics.ss" "reduction-semantics") (lib "iswim.ss" "reduction-semantics" "examples") (lib "gui.ss" "reduction-semantics")) (define cc1 (reduction iswim-grammar (side-condition (((name M M) (name N M)) : (in-hole (name E E) ||)) (not (V? M))) `(,M : ,(replace E hole `(|| ,N))))) (define cc2 (reduction iswim-grammar (side-condition (((name V V) (name N M)) : (in-hole (name E E) ||)) (not (V? N))) `(,N : ,(replace E hole `(,V ||))))) (define ccbeta (reduction iswim-grammar ((("lam" (name X X) (name M M)) (name V V)) : (in-hole (name E E) ||)) `(,(iswim-subst M X V) : ,E))) (define cc4 (reduction iswim-grammar ((name V V) : (in-hole (name E E) ((name U V) ||))) `((,U ,V) : ,(replace E hole '||)))) (define cc5 (reduction iswim-grammar ((name V V) : (in-hole (name E E) (|| (name N M)))) `((,V ,N) : ,(replace E hole '||)))) (define :->cc (list cc1 cc2 cc4 cc5 ccbeta)) (gui iswim-grammar :->cc `(((,false ,true) ((,false 1) 0)) : ||))