-- import the calculus rules and transformations -- import LR-StandardReductions.inp -- import LR-Answers.inp -- import LR-Transformations.inp -- import LR-Unions.inp -- overlap all left hand sides of each transformation with all left hand sides of each normal -- order reduction -- union (abscpcx,0) = {(abs,0),(cpcx,0)} -- cpcx-in,1 overlap (cpcx-in,1).r all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) ,(SR,llet-e,1),(SR,llet-e,2),(SR,llet-in,1) } ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) ,(SR,llet,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,1).r and (SR,llet-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,1).r and (SR,llet-e,2).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,1).r and (SR,llet-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,1).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,1).r and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-in,2 overlap (cpcx-in,2).r all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) ,(SR,llet-e,1),(SR,llet-e,2),(SR,llet-in,1) } ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) ,(SR,llet,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,2).r and (SR,llet-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,2).r and (SR,llet-e,2).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,2).r and (SR,llet-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,2).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,2).r and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-in,3 overlap (cpcx-in,3).r all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) ,(SR,llet-e,1),(SR,llet-e,2),(SR,llet-in,1) } ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) ,(SR,llet,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,3).r and (SR,llet-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,3).r and (SR,llet-e,2).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,3).r and (SR,llet-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,3).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,3).r and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-in,4 overlap (cpcx-in,4).r all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) ,(SR,llet-e,1),(SR,llet-e,2),(SR,llet-in,1) } ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) ,(SR,llet,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,4).r and (SR,llet-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,4).r and (SR,llet-e,2).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,4).r and (SR,llet-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,4).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,4).r and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-in,5 overlap (cpcx-in,5).r all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) ,(SR,llet-e,1),(SR,llet-e,2),(SR,llet-in,1) } ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) ,(SR,llet,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,5).r and (SR,llet-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,5).r and (SR,llet-e,2).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,5).r and (SR,llet-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-in,5).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,5).r and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4}