-- import the calculus rules and transformations import LR-Contexts.inp 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)} overlap (lbeta).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (cpT-e,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (cpd-e,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (cpT-in,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (cpd-in,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (llet-in).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (llet-e).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (lapp).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (lcaselist).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (lcasepair).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (lcasebool).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (lseq).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,3).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,4).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,5).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (seq-c,6).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0)} overlap (caselist-c,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(lll,0) ,(ucp,0) } overlap (caselist-c,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(lll,0) ,(ucp,0)} overlap (casebool-c,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(lll,0) ,(ucp,0)} overlap (casebool-c,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casepair-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(lll,0) ,(ucp,0)} overlap (casepair-c).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(caselist-c,0) ,(casebool-c,0) ,(seq-c,0) ,(cpx,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(lll,0) ,(ucp,0)} overlap (cpx-in).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0) ,(lll,0) } overlap (cpx-e,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(xch,1) ,(abs,0) ,(gc,0) ,(ucp,0) ,(lll,0) } overlap (xch).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(cpcx,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(abs,0) ,(gc,0) ,(ucp,0) ,(lll,0) } overlap (cpcx-in,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(ucp,0) ,(lll,0) } restrict {(abscpcx,0):2,(cpx,0):2,(xch,1):2,(gc,1):2} overlap (cpcx-in,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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).l 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).l 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} overlap (cpcx-in,3).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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).l 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).l and (SR,cp-e,1).l ignore {(SR,lll,+,0) ,(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(gc,2) ,(lll,0) ,(ucp,0) } restrict {(abs,0):0,(cpcx,0):2,(cpx,0):4,(xch,1):0,(gc,1):4} overlap (cpcx-in,4).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-in,4).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-in,5).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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).l 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).l 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} overlap (cpcx-e,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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-e,1).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,1).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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-e,2).l 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-e,2).l 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} overlap (cpcx-e,3).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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-e,3).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,3).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,4).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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-e,4).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,4).l 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):2,(xch,1):0,(gc,1):2} overlap (cpcx-e,5).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3) ,(SR,cp-in,1),(SR,cp-e,1) } 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-e,5).l 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-e,5).l 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} overlap (gc,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(ucp,0) ,(cpcx,0) ,(cpx,0) ,(xch,1) } overlap (gc,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(casebool-c,0) ,(casepair-c,0) ,(caselist-c,0) ,(seq-c,0) ,(ucp,0) ,(cpcx,0) ,(cpx,0) ,(xch,1) } -- add an option to allow not too much abs-steps for closing, e.g. 1, since -- the transformation is non-terminating and blows up the expressions overlap (abs,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0),(cpcx,0),(lbeta,1) ,(cpT,0),(cpd,0),(ucp,0),(gc,2) ,(lll,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) } restrict {(abs,0):1,(cpx,0):2} overlap (abs,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(SR,lll,+,0),(cpcx,0),(lbeta,1) ,(cpT,0),(cpd,0),(ucp,0),(gc,2) ,(lll,0) ,(caselist-c,0) ,(casebool-c,0) ,(casepair-c,0) ,(seq-c,0) } restrict {(abs,1):1,(abs,2):1,(cpx-e,1):2,(cpx-e,2):2,(cpx-in,1):2} overlap (ucp,1).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(cpcx,0),(caselist-c,0),(casebool-c,0),(casepair-c,0),(cpx,0),(xch,1),(abs,0) ,(cpT,0), (cpd,0),(lll,0) } overlap (ucp,2).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(cpcx,0),(caselist-c,0),(casebool-c,0),(casepair-c,0),(cpx,0),(xch,1),(abs,0) ,(cpT,0), (cpd,0),(lll,0) } overlap (ucp,3).l all except {(SR,lll,+,1),(SR,lll,+,2),(SR,lll,+,3)} ignore {(cpcx,0),(caselist-c,0),(casebool-c,0),(casepair-c,0),(cpx,0),(xch,1),(abs,0) ,(cpT,0), (cpd,0),(lll,0) }