-- 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-e,1 overlap (cpcx-e,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-e,1).r and (SR,llet-e,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,1).r and (SR,llet-e,2).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,1).r and (SR,llet-in,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,1).r and (SR,cp-in,1).l 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) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-e,1).r and (SR,cp-e,1).l 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) ,(cpcx-in,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-e,2 overlap (cpcx-e,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-e,2).r and (SR,llet-e,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,2).r and (SR,llet-e,2).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,2).r and (SR,llet-in,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,2).r and (SR,cp-in,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(cpcx-e,1),(cpcx-e,2),(cpcx-e,3),(cpcx-e,4),(cpcx-e,5) ,(gc,2) ,(ucp,0) ,(lll,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-e,2).r and (SR,cp-e,1).l 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) ,(cpcx-in,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-e,3 overlap (cpcx-e,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-e,3).r and (SR,llet-e,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,3).r and (SR,llet-e,2).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,3).r and (SR,llet-in,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,3).r and (SR,cp-in,1).l 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) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-e,3).r and (SR,cp-e,1).l 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) ,(cpcx-in,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-e,4 overlap (cpcx-e,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-e,4).r and (SR,llet-e,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,4).r and (SR,llet-e,2).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,4).r and (SR,llet-in,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,4).r and (SR,cp-in,1).l 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) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-e,4).r and (SR,cp-e,1).l 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) ,(cpcx-in,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} -- cpcx-e,5 overlap (cpcx-e,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-e,5).r and (SR,llet-e,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,5).r and (SR,llet-e,2).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,5).r and (SR,llet-in,1).l 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) } restrict {(abs,0):1,(abscpcx,0):1,(cpcx,0):1,(cpx,0):2,(xch,1):2} overlap (cpcx-e,5).r and (SR,cp-in,1).l 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) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-e,5).r and (SR,cp-e,1).l 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) ,(cpcx-in,0) ,(cpx-in,1) ,(cpx-e,1) ,(abs,1) ,(abs,2) ,(cpd-in,1), (cpd-e,1), (cpd-e,2) ,(cpT-in,1), (cpT-e,1), (cpT-e,2) } restrict {(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4}