YES We show the termination of the TRS R: or(T(),T()) -> T() or(F(),T()) -> T() or(T(),F()) -> T() or(F(),F()) -> F() and(T(),B) -> B and(B,T()) -> B and(F(),B) -> F() and(B,F()) -> F() imp(T(),B) -> B imp(F(),B) -> T() not(T()) -> F() not(F()) -> T() if(T(),B1,B2) -> B1 if(F(),B1,B2) -> B2 eq(T(),T()) -> T() eq(F(),F()) -> T() eq(T(),F()) -> F() eq(F(),T()) -> F() eqt(nil(),undefined()) -> F() eqt(nil(),pid(N2)) -> F() eqt(nil(),int(N2)) -> F() eqt(nil(),cons(H2,T2)) -> F() eqt(nil(),tuple(H2,T2)) -> F() eqt(nil(),tuplenil(H2)) -> F() eqt(a(),nil()) -> F() eqt(a(),a()) -> T() eqt(a(),excl()) -> F() eqt(a(),false()) -> F() eqt(a(),lock()) -> F() eqt(a(),locker()) -> F() eqt(a(),mcrlrecord()) -> F() eqt(a(),ok()) -> F() eqt(a(),pending()) -> F() eqt(a(),release()) -> F() eqt(a(),request()) -> F() eqt(a(),resource()) -> F() eqt(a(),tag()) -> F() eqt(a(),true()) -> F() eqt(a(),undefined()) -> F() eqt(a(),pid(N2)) -> F() eqt(a(),int(N2)) -> F() eqt(a(),cons(H2,T2)) -> F() eqt(a(),tuple(H2,T2)) -> F() eqt(a(),tuplenil(H2)) -> F() eqt(excl(),nil()) -> F() eqt(excl(),a()) -> F() eqt(excl(),excl()) -> T() eqt(excl(),false()) -> F() eqt(excl(),lock()) -> F() eqt(excl(),locker()) -> F() eqt(excl(),mcrlrecord()) -> F() eqt(excl(),ok()) -> F() eqt(excl(),pending()) -> F() eqt(excl(),release()) -> F() eqt(excl(),request()) -> F() eqt(excl(),resource()) -> F() eqt(excl(),tag()) -> F() eqt(excl(),true()) -> F() eqt(excl(),undefined()) -> F() eqt(excl(),pid(N2)) -> F() eqt(excl(),eqt(false(),int(N2))) -> F() eqt(false(),cons(H2,T2)) -> F() eqt(false(),tuple(H2,T2)) -> F() eqt(false(),tuplenil(H2)) -> F() eqt(lock(),nil()) -> F() eqt(lock(),a()) -> F() eqt(lock(),excl()) -> F() eqt(lock(),false()) -> F() eqt(lock(),lock()) -> T() eqt(lock(),locker()) -> F() eqt(lock(),mcrlrecord()) -> F() eqt(lock(),ok()) -> F() eqt(lock(),pending()) -> F() eqt(lock(),release()) -> F() eqt(lock(),request()) -> F() eqt(lock(),resource()) -> F() eqt(lock(),tag()) -> F() eqt(lock(),true()) -> F() eqt(lock(),undefined()) -> F() eqt(lock(),pid(N2)) -> F() eqt(lock(),int(N2)) -> F() eqt(lock(),cons(H2,T2)) -> F() eqt(lock(),tuple(H2,T2)) -> F() eqt(lock(),tuplenil(H2)) -> F() eqt(locker(),nil()) -> F() eqt(locker(),a()) -> F() eqt(locker(),excl()) -> F() eqt(locker(),false()) -> F() eqt(locker(),lock()) -> F() eqt(locker(),locker()) -> T() eqt(locker(),mcrlrecord()) -> F() eqt(locker(),ok()) -> F() eqt(locker(),pending()) -> F() eqt(locker(),release()) -> F() eqt(locker(),request()) -> F() eqt(locker(),resource()) -> F() eqt(locker(),tag()) -> F() eqt(locker(),true()) -> F() eqt(locker(),undefined()) -> F() eqt(locker(),pid(N2)) -> F() eqt(locker(),int(N2)) -> F() eqt(locker(),cons(H2,T2)) -> F() eqt(locker(),tuple(H2,T2)) -> F() eqt(locker(),tuplenil(H2)) -> F() eqt(mcrlrecord(),nil()) -> F() eqt(mcrlrecord(),a()) -> F() eqt(mcrlrecord(),excl()) -> F() eqt(mcrlrecord(),false()) -> F() eqt(mcrlrecord(),lock()) -> F() eqt(mcrlrecord(),locker()) -> F() eqt(mcrlrecord(),mcrlrecord()) -> T() eqt(mcrlrecord(),ok()) -> F() eqt(mcrlrecord(),pending()) -> F() eqt(mcrlrecord(),release()) -> F() eqt(mcrlrecord(),request()) -> F() eqt(mcrlrecord(),resource()) -> F() eqt(ok(),resource()) -> F() eqt(ok(),tag()) -> F() eqt(ok(),true()) -> F() eqt(ok(),undefined()) -> F() eqt(ok(),pid(N2)) -> F() eqt(ok(),int(N2)) -> F() eqt(ok(),cons(H2,T2)) -> F() eqt(ok(),tuple(H2,T2)) -> F() eqt(ok(),tuplenil(H2)) -> F() eqt(pending(),nil()) -> F() eqt(pending(),a()) -> F() eqt(pending(),excl()) -> F() eqt(pending(),false()) -> F() eqt(pending(),lock()) -> F() eqt(pending(),locker()) -> F() eqt(pending(),mcrlrecord()) -> F() eqt(pending(),ok()) -> F() eqt(pending(),pending()) -> T() eqt(pending(),release()) -> F() eqt(pending(),request()) -> F() eqt(pending(),resource()) -> F() eqt(pending(),tag()) -> F() eqt(pending(),true()) -> F() eqt(pending(),undefined()) -> F() eqt(pending(),pid(N2)) -> F() eqt(pending(),int(N2)) -> F() eqt(pending(),cons(H2,T2)) -> F() eqt(pending(),tuple(H2,T2)) -> F() eqt(pending(),tuplenil(H2)) -> F() eqt(release(),nil()) -> F() eqt(release(),a()) -> F() eqt(release(),excl()) -> F() eqt(release(),false()) -> F() eqt(release(),lock()) -> F() eqt(release(),locker()) -> F() eqt(release(),mcrlrecord()) -> F() eqt(release(),ok()) -> F() eqt(request(),mcrlrecord()) -> F() eqt(request(),ok()) -> F() eqt(request(),pending()) -> F() eqt(request(),release()) -> F() eqt(request(),request()) -> T() eqt(request(),resource()) -> F() eqt(request(),tag()) -> F() eqt(request(),true()) -> F() eqt(request(),undefined()) -> F() eqt(request(),pid(N2)) -> F() eqt(request(),int(N2)) -> F() eqt(request(),cons(H2,T2)) -> F() eqt(request(),tuple(H2,T2)) -> F() eqt(request(),tuplenil(H2)) -> F() eqt(resource(),nil()) -> F() eqt(resource(),a()) -> F() eqt(resource(),excl()) -> F() eqt(resource(),false()) -> F() eqt(resource(),lock()) -> F() eqt(resource(),locker()) -> F() eqt(resource(),mcrlrecord()) -> F() eqt(resource(),ok()) -> F() eqt(resource(),pending()) -> F() eqt(resource(),release()) -> F() eqt(resource(),request()) -> F() eqt(resource(),resource()) -> T() eqt(resource(),tag()) -> F() eqt(resource(),true()) -> F() eqt(resource(),undefined()) -> F() eqt(resource(),pid(N2)) -> F() eqt(resource(),int(N2)) -> F() eqt(resource(),cons(H2,T2)) -> F() eqt(resource(),tuple(H2,T2)) -> F() eqt(resource(),tuplenil(H2)) -> F() eqt(tag(),nil()) -> F() eqt(tag(),a()) -> F() eqt(tag(),excl()) -> F() eqt(tag(),false()) -> F() eqt(tag(),lock()) -> F() eqt(tag(),locker()) -> F() eqt(tag(),mcrlrecord()) -> F() eqt(tag(),ok()) -> F() eqt(tag(),pending()) -> F() eqt(tag(),release()) -> F() eqt(tag(),request()) -> F() eqt(tag(),resource()) -> F() eqt(tag(),tag()) -> T() eqt(tag(),true()) -> F() eqt(tag(),undefined()) -> F() eqt(tag(),pid(N2)) -> F() eqt(tag(),int(N2)) -> F() eqt(tag(),cons(H2,T2)) -> F() eqt(tag(),tuple(H2,T2)) -> F() eqt(tag(),tuplenil(H2)) -> F() eqt(true(),nil()) -> F() eqt(true(),a()) -> F() eqt(true(),excl()) -> F() eqt(true(),false()) -> F() eqt(true(),lock()) -> F() eqt(true(),locker()) -> F() eqt(true(),mcrlrecord()) -> F() eqt(true(),ok()) -> F() eqt(true(),pending()) -> F() eqt(true(),release()) -> F() eqt(true(),request()) -> F() eqt(true(),resource()) -> F() eqt(true(),tag()) -> F() eqt(true(),true()) -> T() eqt(true(),undefined()) -> F() eqt(true(),pid(N2)) -> F() eqt(true(),int(N2)) -> F() eqt(true(),cons(H2,T2)) -> F() eqt(true(),tuple(H2,T2)) -> F() eqt(true(),tuplenil(H2)) -> F() eqt(undefined(),nil()) -> F() eqt(undefined(),a()) -> F() eqt(undefined(),tuplenil(H2)) -> F() eqt(pid(N1),nil()) -> F() eqt(pid(N1),a()) -> F() eqt(pid(N1),excl()) -> F() eqt(pid(N1),false()) -> F() eqt(pid(N1),lock()) -> F() eqt(pid(N1),locker()) -> F() eqt(pid(N1),mcrlrecord()) -> F() eqt(pid(N1),ok()) -> F() eqt(pid(N1),pending()) -> F() eqt(pid(N1),release()) -> F() eqt(pid(N1),request()) -> F() eqt(pid(N1),resource()) -> F() eqt(pid(N1),tag()) -> F() eqt(pid(N1),true()) -> F() eqt(pid(N1),undefined()) -> F() eqt(pid(N1),pid(N2)) -> eqt(N1,N2) eqt(pid(N1),int(N2)) -> F() eqt(pid(N1),cons(H2,T2)) -> F() eqt(pid(N1),tuple(H2,T2)) -> F() eqt(pid(N1),tuplenil(H2)) -> F() eqt(int(N1),nil()) -> F() eqt(int(N1),a()) -> F() eqt(int(N1),excl()) -> F() eqt(int(N1),false()) -> F() eqt(int(N1),lock()) -> F() eqt(int(N1),locker()) -> F() eqt(int(N1),mcrlrecord()) -> F() eqt(int(N1),ok()) -> F() eqt(int(N1),pending()) -> F() eqt(int(N1),release()) -> F() eqt(int(N1),request()) -> F() eqt(int(N1),resource()) -> F() eqt(int(N1),tag()) -> F() eqt(int(N1),true()) -> F() eqt(int(N1),undefined()) -> F() eqt(cons(H1,T1),resource()) -> F() eqt(cons(H1,T1),tag()) -> F() eqt(cons(H1,T1),true()) -> F() eqt(cons(H1,T1),undefined()) -> F() eqt(cons(H1,T1),pid(N2)) -> F() eqt(cons(H1,T1),int(N2)) -> F() eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) eqt(cons(H1,T1),tuple(H2,T2)) -> F() eqt(cons(H1,T1),tuplenil(H2)) -> F() eqt(tuple(H1,T1),nil()) -> F() eqt(tuple(H1,T1),a()) -> F() eqt(tuple(H1,T1),excl()) -> F() eqt(tuple(H1,T1),false()) -> F() eqt(tuple(H1,T1),lock()) -> F() eqt(tuple(H1,T1),locker()) -> F() eqt(tuple(H1,T1),mcrlrecord()) -> F() eqt(tuple(H1,T1),ok()) -> F() eqt(tuple(H1,T1),pending()) -> F() eqt(tuple(H1,T1),release()) -> F() eqt(tuple(H1,T1),request()) -> F() eqt(tuple(H1,T1),resource()) -> F() eqt(tuple(H1,T1),tag()) -> F() eqt(tuple(H1,T1),true()) -> F() eqt(tuple(H1,T1),undefined()) -> F() eqt(tuple(H1,T1),pid(N2)) -> F() eqt(tuple(H1,T1),int(N2)) -> F() eqt(tuple(H1,T1),cons(H2,T2)) -> F() eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) eqt(tuple(H1,T1),tuplenil(H2)) -> F() eqt(tuplenil(H1),nil()) -> F() eqt(tuplenil(H1),a()) -> F() eqt(tuplenil(H1),excl()) -> F() eqt(tuplenil(H1),false()) -> F() eqt(tuplenil(H1),lock()) -> F() eqt(tuplenil(H1),locker()) -> F() eqt(tuplenil(H1),mcrlrecord()) -> F() eqt(tuplenil(H1),ok()) -> F() eqt(tuplenil(H1),pending()) -> F() eqt(tuplenil(H1),release()) -> F() eqt(tuplenil(H1),request()) -> F() eqt(tuplenil(H1),resource()) -> F() eqt(tuplenil(H1),tag()) -> F() eqt(tuplenil(H1),true()) -> F() eqt(tuplenil(H1),undefined()) -> F() eqt(tuplenil(H1),pid(N2)) -> F() eqt(tuplenil(H1),int(N2)) -> F() eqt(tuplenil(H1),cons(H2,T2)) -> F() eqt(tuplenil(H1),tuple(H2,T2)) -> F() eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) element(int(s(|0|())),tuplenil(T1)) -> T1 element(int(s(|0|())),tuple(T1,T2)) -> T1 element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) record_updates(Record,Name,nil()) -> Record record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) locker2_map_promote_pending(nil(),Pending) -> nil() locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) locker2_map_claim_lock(nil(),Resources,Client) -> nil() locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) locker2_map_add_pending(nil(),Resources,Client) -> nil() locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) case0(Client,Lock,MCRLFree0) -> Lock locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) case1(Client,Resources,Lock,false()) -> Lock locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) case4(Client,Lock,MCRLFree1) -> false() locker2_obtainables(nil(),Client) -> true() locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) locker2_check_available(Resource,nil()) -> false() locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) locker2_check_availables(nil(),Locks) -> true() locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) locker2_adduniq(nil(),List) -> List append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) subtract(List,nil()) -> List subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) delete(E,nil()) -> nil() delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) case8(Tail,Head,E,true()) -> Tail case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) gen_modtageq(Client1,Client2) -> equal(Client1,Client2) member(E,nil()) -> false() member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) case9(Tail,Head,E,true()) -> true() case9(Tail,Head,E,false()) -> member(E,Tail) eqs(empty(),empty()) -> T() eqs(empty(),stack(E2,S2)) -> F() eqs(stack(E1,S1),empty()) -> F() eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) pushs(E1,S1) -> stack(E1,S1) pops(stack(E1,S1)) -> S1 tops(stack(E1,S1)) -> E1 istops(E1,empty()) -> F() istops(E1,stack(E2,S1)) -> eqt(E1,E2) eqc(nocalls(),nocalls()) -> T() eqc(nocalls(),calls(E2,S2,CS2)) -> F() eqc(calls(E1,S1,CS1),nocalls()) -> F() eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(pid(N1),pid(N2)) -> eqt#(N1,N2) p2: eqt#(cons(H1,T1),cons(H2,T2)) -> and#(eqt(H1,H2),eqt(T1,T2)) p3: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p4: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p5: eqt#(tuple(H1,T1),tuple(H2,T2)) -> and#(eqt(H1,H2),eqt(T1,T2)) p6: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p7: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) p8: eqt#(tuplenil(H1),tuplenil(H2)) -> eqt#(H1,H2) p9: element#(int(s(s(N1))),tuple(T1,T2)) -> element#(int(s(N1)),T2) p10: record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates#(record_update(Record,Name,Field,NewF),Name,Fields) p11: record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_update#(Record,Name,Field,NewF) p12: locker2_map_promote_pending#(cons(Lock,Locks),Pending) -> locker2_promote_pending#(Lock,Pending) p13: locker2_map_promote_pending#(cons(Lock,Locks),Pending) -> locker2_map_promote_pending#(Locks,Pending) p14: locker2_map_claim_lock#(cons(Lock,Locks),Resources,Client) -> locker2_map_claim_lock#(Locks,Resources,Client) p15: locker2_promote_pending#(Lock,Client) -> case0#(Client,Lock,record_extract(Lock,lock(),pending())) p16: locker2_promote_pending#(Lock,Client) -> record_extract#(Lock,lock(),pending()) p17: case0#(Client,Lock,cons(Client,Pendings)) -> record_updates#(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) p18: locker2_remove_pending#(Lock,Client) -> record_updates#(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) p19: locker2_remove_pending#(Lock,Client) -> subtract#(record_extract(Lock,lock(),pending()),cons(Client,nil())) p20: locker2_remove_pending#(Lock,Client) -> record_extract#(Lock,lock(),pending()) p21: locker2_add_pending#(Lock,Resources,Client) -> case1#(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) p22: locker2_add_pending#(Lock,Resources,Client) -> member#(record_extract(Lock,lock(),resource()),Resources) p23: locker2_add_pending#(Lock,Resources,Client) -> record_extract#(Lock,lock(),resource()) p24: case1#(Client,Resources,Lock,true()) -> record_updates#(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) p25: case1#(Client,Resources,Lock,true()) -> append#(record_extract(Lock,lock(),pending()),cons(Client,nil())) p26: case1#(Client,Resources,Lock,true()) -> record_extract#(Lock,lock(),pending()) p27: locker2_release_lock#(Lock,Client) -> case2#(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) p28: locker2_release_lock#(Lock,Client) -> gen_modtageq#(Client,record_extract(Lock,lock(),excl())) p29: locker2_release_lock#(Lock,Client) -> record_extract#(Lock,lock(),excl()) p30: case2#(Client,Lock,true()) -> record_updates#(Lock,lock(),cons(tuple(excllock(),excl()),nil())) p31: locker2_obtainables#(cons(Lock,Locks),Client) -> case5#(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) p32: locker2_obtainables#(cons(Lock,Locks),Client) -> member#(Client,record_extract(Lock,lock(),pending())) p33: locker2_obtainables#(cons(Lock,Locks),Client) -> record_extract#(Lock,lock(),pending()) p34: case5#(Client,Locks,Lock,true()) -> locker2_obtainables#(Locks,Client) p35: case5#(Client,Locks,Lock,false()) -> locker2_obtainables#(Locks,Client) p36: locker2_check_available#(Resource,cons(Lock,Locks)) -> case6#(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) p37: locker2_check_available#(Resource,cons(Lock,Locks)) -> record_extract#(Lock,lock(),resource()) p38: case6#(Locks,Lock,Resource,true()) -> record_extract#(Lock,lock(),excl()) p39: case6#(Locks,Lock,Resource,true()) -> record_extract#(Lock,lock(),pending()) p40: case6#(Locks,Lock,Resource,false()) -> locker2_check_available#(Resource,Locks) p41: locker2_check_availables#(cons(Resource,Resources),Locks) -> locker2_check_available#(Resource,Locks) p42: locker2_check_availables#(cons(Resource,Resources),Locks) -> locker2_check_availables#(Resources,Locks) p43: append#(cons(Head,Tail),List) -> append#(Tail,List) p44: subtract#(List,cons(Head,Tail)) -> subtract#(delete(Head,List),Tail) p45: subtract#(List,cons(Head,Tail)) -> delete#(Head,List) p46: delete#(E,cons(Head,Tail)) -> case8#(Tail,Head,E,equal(E,Head)) p47: case8#(Tail,Head,E,false()) -> delete#(E,Tail) p48: member#(E,cons(Head,Tail)) -> case9#(Tail,Head,E,equal(E,Head)) p49: case9#(Tail,Head,E,false()) -> member#(E,Tail) p50: eqs#(stack(E1,S1),stack(E2,S2)) -> and#(eqt(E1,E2),eqs(S1,S2)) p51: eqs#(stack(E1,S1),stack(E2,S2)) -> eqt#(E1,E2) p52: eqs#(stack(E1,S1),stack(E2,S2)) -> eqs#(S1,S2) p53: istops#(E1,stack(E2,S1)) -> eqt#(E1,E2) p54: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and#(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) p55: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> eqt#(E1,E2) p56: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and#(eqs(S1,S2),eqc(CS1,CS2)) p57: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> eqs#(S1,S2) p58: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> eqc#(CS1,CS2) p59: push#(E1,E2,calls(E3,S1,CS1)) -> push1#(E1,E2,E3,S1,CS1,eqt(E1,E3)) p60: push#(E1,E2,calls(E3,S1,CS1)) -> eqt#(E1,E3) p61: push1#(E1,E2,E3,S1,CS1,T()) -> pushs#(E2,S1) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p58} {p52} {p1, p3, p4, p6, p7, p8} {p9} {p10} {p13} {p14} {p44} {p42} {p43} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> eqc#(CS1,CS2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r26, r47, r69, r90, r111, r134, r158, r179, r200, r221, r318, r321, r326, r327, r334, r337, r338, r339, r342, r348, r350, r353, r356, r359, r360, r362, r363, r364, r367, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqc#_A(x1,x2) = x1 + x2 calls_A(x1,x2,x3) = x1 + x2 + x3 + 2 or_A(x1,x2) = 5 T_A() = 2 F_A() = 4 and_A(x1,x2) = 5 imp_A(x1,x2) = x2 + 3 not_A(x1) = 5 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 5 eqt_A(x1,x2) = 3 a_A() = 5 excl_A() = 11 lock_A() = 7 locker_A() = 5 mcrlrecord_A() = 8 pending_A() = 11 request_A() = 5 resource_A() = 16 tag_A() = 0 true_A() = 12 record_new_A(x1) = 10 tuple_A(x1,x2) = 9 undefined_A() = 5 nil_A() = 6 tuplenil_A(x1) = x1 record_updates_A(x1,x2,x3) = x1 + x3 + 2 locker2_map_claim_lock_A(x1,x2,x3) = 36 cons_A(x1,x2) = x1 + 17 locker2_claim_lock_A(x1,x2,x3) = 18 locker2_map_add_pending_A(x1,x2,x3) = x3 + 7 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 17 false_A() = 5 case4_A(x1,x2,x3) = x3 + 6 locker2_obtainables_A(x1,x2) = x2 + 17 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 14 record_extract_A(x1,x2,x3) = x1 + 16 locker2_check_available_A(x1,x2) = x1 + x2 + 19 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + 19 delete_A(x1,x2) = x2 + 18 case8_A(x1,x2,x3,x4) = 1 equal_A(x1,x2) = x1 + 37 gen_tag_A(x1) = 10 case9_A(x1,x2,x3,x4) = 13 eqs_A(x1,x2) = 6 empty_A() = 5 stack_A(x1,x2) = x1 + x2 + 7 pops_A(x1) = x1 tops_A(x1) = x1 istops_A(x1,x2) = x1 + x2 eqc_A(x1,x2) = 7 nocalls_A() = 6 base order 2: precedence: subtract > record_updates = delete = case8 = equal > record_new = locker2_map_add_pending = case5 = member > nil = locker2_map_claim_lock = locker2_obtainables > eqc# = true = eqc > calls = excl = pending > mcrlrecord > lock = nocalls > or = not = eq = a = locker = request = undefined = empty > F > tag = tuplenil = locker2_claim_lock = gen_tag > cons > case1 = case9 > record_extract > and = tuple > imp = if = case4 = locker2_check_available = locker2_adduniq = stack = pops = tops > resource = false = eqs > eqt > T = istops partial status: pi(eqc#) = [2] pi(calls) = [3] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(a) = [] pi(excl) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(pending) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(record_new) = [] pi(tuple) = [] pi(undefined) = [] pi(nil) = [] pi(tuplenil) = [] pi(record_updates) = [] pi(locker2_map_claim_lock) = [] pi(cons) = [1] pi(locker2_claim_lock) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [1, 3, 4] pi(false) = [] pi(case4) = [3] pi(locker2_obtainables) = [] pi(case5) = [] pi(member) = [2] pi(record_extract) = [] pi(locker2_check_available) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [2] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(pops) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqs#(stack(E1,S1),stack(E2,S2)) -> eqs#(S1,S2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r28, r30, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r45, r47, r48, r50, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r68, r69, r70, r72, r73, r74, r75, r76, r77, r78, r79, r80, r81, r82, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r93, r94, r95, r96, r97, r98, r99, r100, r101, r102, r103, r104, r105, r108, r110, r111, r112, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r129, r130, r131, r133, r134, r135, r136, r137, r138, r139, r141, r142, r143, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r244, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r295, r298, r299, r300, r302, r303, r304, r305, r306, r307, r308, r309, r310, r311, r312, r313, r318, r327, r334, r335, r336, r337, r338, r339, r342, r348, r350, r353, r356, r359, r360, r362, r363, r364, r367, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqs#_A(x1,x2) = x1 + x2 + 24 stack_A(x1,x2) = x1 + x2 + 23 or_A(x1,x2) = 20 T_A() = 4 F_A() = 19 and_A(x1,x2) = 20 imp_A(x1,x2) = 5 not_A(x1) = 20 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 20 eqt_A(x1,x2) = x1 + x2 + 8 nil_A() = 21 undefined_A() = 20 pid_A(x1) = 20 int_A(x1) = 20 cons_A(x1,x2) = x1 + x2 + 80 tuple_A(x1,x2) = x2 + 22 tuplenil_A(x1) = x1 + 7 a_A() = 3 false_A() = 20 locker_A() = 20 ok_A() = 20 pending_A() = 9 release_A() = 20 request_A() = 20 resource_A() = 74 tag_A() = 20 true_A() = 25 excl_A() = 2 lock_A() = 5 mcrlrecord_A() = 1 record_new_A(x1) = x1 + 112 locker2_map_add_pending_A(x1,x2,x3) = x3 + 22 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 318 locker2_release_lock_A(x1,x2) = 157 case2_A(x1,x2,x3) = 156 gen_modtageq_A(x1,x2) = x1 + 158 record_extract_A(x1,x2,x3) = x1 + x2 + x3 record_updates_A(x1,x2,x3) = x3 + 30 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 21 locker2_obtainables_A(x1,x2) = x1 + x2 + 26 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 67 locker2_check_available_A(x1,x2) = x1 + x2 + 82 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 60 delete_A(x1,x2) = x1 + x2 + 21 case8_A(x1,x2,x3,x4) = 1 equal_A(x1,x2) = x1 + 71 gen_tag_A(x1) = 50 case9_A(x1,x2,x3,x4) = 26 eqs_A(x1,x2) = 22 empty_A() = 20 pops_A(x1) = x1 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 21 nocalls_A() = 21 calls_A(x1,x2,x3) = x1 + x2 + x3 + 23 base order 2: precedence: gen_modtageq = locker2_obtainables = locker2_check_available > case5 = equal > cons = subtract > record_new > mcrlrecord > eqs# = or = not = eq = undefined = a = locker = ok = release = request = resource = tag = case4 = gen_tag = eqs > stack = F = imp = if = eqt = false = locker2_map_add_pending = member = locker2_adduniq = case9 = pops = tops = istops > pid = tuplenil = calls > true = locker2_release_lock > excl = nocalls > record_extract = empty > case1 > pending > lock > T = eqc > and = tuple = case2 > nil = record_updates = excllock > int = delete > case8 partial status: pi(eqs#) = [] pi(stack) = [1] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(cons) = [1, 2] pi(tuple) = [] pi(tuplenil) = [] pi(a) = [] pi(false) = [] pi(locker) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(excl) = [] pi(lock) = [] pi(mcrlrecord) = [] pi(record_new) = [1] pi(locker2_map_add_pending) = [3] pi(case1) = [] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [1] pi(record_extract) = [2, 3] pi(record_updates) = [] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [1, 2] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [2] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [1] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(pops) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(pid(N1),pid(N2)) -> eqt#(N1,N2) p2: eqt#(tuplenil(H1),tuplenil(H2)) -> eqt#(H1,H2) p3: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) p4: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p5: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p6: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76, r77, r78, r79, r80, r81, r82, r83, r84, r90, r105, r106, r107, r108, r109, r110, r111, r112, r113, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r128, r129, r130, r131, r132, r133, r134, r135, r136, r137, r138, r139, r140, r141, r142, r143, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r244, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r295, r296, r297, r298, r299, r300, r301, r302, r303, r304, r305, r306, r307, r308, r309, r310, r311, r312, r313, r315, r316, r317, r318, r327, r334, r335, r336, r337, r338, r339, r342, r344, r348, r350, r353, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x1 + x2 + 52 pid_A(x1) = x1 + 20 tuplenil_A(x1) = x1 + 15 tuple_A(x1,x2) = x1 + x2 + 15 cons_A(x1,x2) = x1 + x2 + 51 or_A(x1,x2) = 2 T_A() = 1 F_A() = 19 and_A(x1,x2) = x1 + 20 imp_A(x1,x2) = x2 + 2 not_A(x1) = 20 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 20 eqt_A(x1,x2) = x1 + 16 nil_A() = 41 undefined_A() = 30 int_A(x1) = x1 + 20 a_A() = 20 excl_A() = 20 false_A() = 20 lock_A() = 29 locker_A() = 2 mcrlrecord_A() = 4 ok_A() = 20 pending_A() = 5 release_A() = 20 request_A() = 20 resource_A() = 44 tag_A() = 20 true_A() = 37 element_A(x1,x2) = x1 + x2 + 22 s_A(x1) = x1 + 21 |0|_A() = 1 record_new_A(x1) = 221 locker2_map_add_pending_A(x1,x2,x3) = x3 + 42 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 3 locker2_release_lock_A(x1,x2) = 130 case2_A(x1,x2,x3) = 129 gen_modtageq_A(x1,x2) = 2 record_extract_A(x1,x2,x3) = x1 + 39 record_updates_A(x1,x2,x3) = 14 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 21 locker2_obtainables_A(x1,x2) = x2 + 38 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 39 locker2_check_available_A(x1,x2) = x1 + x2 + 53 case6_A(x1,x2,x3,x4) = 52 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = 1 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 2 delete_A(x1,x2) = x1 + x2 + 50 case8_A(x1,x2,x3,x4) = 1 case9_A(x1,x2,x3,x4) = 38 eqs_A(x1,x2) = x1 + x2 + 76 empty_A() = 20 stack_A(x1,x2) = x1 + 37 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = x1 + 38 nocalls_A() = 21 calls_A(x1,x2,x3) = x1 + x2 + x3 + 37 base order 2: precedence: true = delete > case2 = member = andt = subtract > eqt# = cons = record_new = locker2_check_available = equal = case8 > undefined = case9 > lock = case5 = case6 > locker2_obtainables > pending > locker2_map_add_pending > nil = case1 = record_extract = record_updates > tuplenil = element = locker2_release_lock = case4 = nocalls > not = eq = int = excl = false = ok = release = request = s = gen_modtageq = eqs = empty = istops > F > or = imp = locker = eqc > T > and = if = eqt = a = |0| = excllock = locker2_adduniq = tops = calls > pid = tuple = stack > resource > mcrlrecord = tag partial status: pi(eqt#) = [1] pi(pid) = [1] pi(tuplenil) = [] pi(tuple) = [] pi(cons) = [1] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [1] pi(nil) = [] pi(undefined) = [] pi(int) = [1] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(element) = [1] pi(s) = [1] pi(|0|) = [] pi(record_new) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [1, 4] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [] pi(record_extract) = [] pi(record_updates) = [] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [] pi(case6) = [] pi(andt) = [] pi(equal) = [] pi(locker2_adduniq) = [2] pi(subtract) = [2] pi(delete) = [1] pi(case8) = [] pi(case9) = [] pi(eqs) = [1] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [1] pi(nocalls) = [] pi(calls) = [2, 3] The following rules are removed: p1 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(tuplenil(H1),tuplenil(H2)) -> eqt#(H1,H2) p2: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) p3: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p4: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p5: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(tuplenil(H1),tuplenil(H2)) -> eqt#(H1,H2) p2: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p3: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p4: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p5: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76, r77, r78, r79, r80, r81, r82, r83, r85, r86, r87, r88, r89, r90, r91, r92, r93, r94, r95, r96, r97, r98, r99, r100, r101, r102, r103, r105, r106, r107, r108, r109, r110, r111, r112, r113, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r126, r127, r128, r129, r130, r131, r132, r133, r134, r135, r136, r137, r138, r139, r140, r141, r142, r143, r144, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r228, r229, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r244, r245, r247, r248, r249, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r295, r296, r297, r298, r299, r300, r301, r302, r303, r304, r305, r306, r307, r308, r309, r310, r311, r312, r313, r315, r316, r317, r318, r327, r334, r335, r336, r337, r338, r339, r342, r344, r348, r350, r353, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x1 + x2 + 27 tuplenil_A(x1) = x1 + 3 cons_A(x1,x2) = x1 + x2 + 26 tuple_A(x1,x2) = x1 + x2 + 19 or_A(x1,x2) = 8 T_A() = 7 F_A() = 6 and_A(x1,x2) = 7 imp_A(x1,x2) = x2 + 8 not_A(x1) = 8 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 8 eqt_A(x1,x2) = x2 + 2 nil_A() = 5 undefined_A() = 7 pid_A(x1) = 7 int_A(x1) = 7 a_A() = 8 excl_A() = 8 false_A() = 7 lock_A() = 12 locker_A() = 8 mcrlrecord_A() = 8 ok_A() = 7 pending_A() = 10 release_A() = 7 request_A() = 8 resource_A() = 15 tag_A() = 8 true_A() = 23 element_A(x1,x2) = x2 + 9 s_A(x1) = 8 |0|_A() = 1 record_new_A(x1) = 117 locker2_map_add_pending_A(x1,x2,x3) = x3 + 6 case1_A(x1,x2,x3,x4) = x3 + x4 + 1 locker2_release_lock_A(x1,x2) = 30 case2_A(x1,x2,x3) = 29 gen_modtageq_A(x1,x2) = 11 record_extract_A(x1,x2,x3) = x2 + x3 record_updates_A(x1,x2,x3) = 23 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 8 locker2_obtainables_A(x1,x2) = x2 + 24 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 29 locker2_check_available_A(x1,x2) = x1 + x2 + 28 case6_A(x1,x2,x3,x4) = 21 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = 10 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 2 delete_A(x1,x2) = x1 + x2 + 25 case8_A(x1,x2,x3,x4) = 1 case9_A(x1,x2,x3,x4) = 24 eqs_A(x1,x2) = x1 + 12 empty_A() = 8 stack_A(x1,x2) = x1 + 11 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = x1 + 1 nocalls_A() = 9 calls_A(x1,x2,x3) = x1 + x2 + x3 + 13 base order 2: precedence: member > or = imp = not = if = eq = a = locker = ok = release = request = |0| = locker2_adduniq = subtract = case9 = tops > true > andt > eqt# > cons = case1 = case8 > record_new = locker2_release_lock = case5 = locker2_check_available > nil = locker2_map_add_pending = case2 > resource = gen_modtageq = record_updates = excllock = locker2_obtainables = delete > false = lock = case6 = equal > undefined = excl = record_extract = case4 > pending > tuplenil = tuple = eqt = mcrlrecord = eqs = stack = istops = calls > pid = element = nocalls > tag = s = empty > T = int > and = eqc > F partial status: pi(eqt#) = [1, 2] pi(tuplenil) = [] pi(cons) = [] pi(tuple) = [1] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(element) = [2] pi(s) = [] pi(|0|) = [] pi(record_new) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [4] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [] pi(record_extract) = [2, 3] pi(record_updates) = [] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [1] pi(case6) = [] pi(andt) = [] pi(equal) = [] pi(locker2_adduniq) = [2] pi(subtract) = [2] pi(delete) = [2] pi(case8) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [1] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p2: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p3: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p4: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p2: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) p3: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(H1,H2) p4: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r17, r18, r19, r20, r21, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r34, r35, r38, r39, r40, r41, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r54, r55, r58, r59, r60, r61, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r74, r75, r78, r79, r80, r81, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r94, r95, r98, r99, r100, r101, r103, r104, r105, r106, r107, r108, r109, r110, r111, r112, r114, r115, r119, r120, r121, r122, r124, r125, r126, r127, r128, r129, r130, r131, r132, r133, r134, r135, r136, r139, r140, r141, r142, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r157, r158, r161, r162, r163, r164, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r177, r178, r179, r181, r182, r183, r184, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r197, r198, r200, r201, r202, r203, r204, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r217, r218, r221, r222, r223, r224, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r240, r241, r244, r245, r247, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r260, r261, r264, r265, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r284, r285, r288, r289, r290, r291, r294, r295, r296, r297, r298, r299, r300, r301, r302, r304, r305, r308, r309, r310, r311, r313, r316, r318, r327, r335, r336, r337, r338, r339, r342, r344, r348, r350, r353, r359, r360, r362, r363, r364, r368, r369, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x1 cons_A(x1,x2) = x1 + x2 + 32 tuple_A(x1,x2) = x1 + x2 + 17 or_A(x1,x2) = 6 T_A() = 1 F_A() = 5 and_A(x1,x2) = 7 imp_A(x1,x2) = x2 + 2 not_A(x1) = 6 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 6 eqt_A(x1,x2) = x2 + 2 nil_A() = 9 undefined_A() = 9 pid_A(x1) = x1 + 6 int_A(x1) = x1 + 6 tuplenil_A(x1) = 9 a_A() = 6 excl_A() = 6 false_A() = 6 lock_A() = 8 locker_A() = 6 mcrlrecord_A() = 6 ok_A() = 6 release_A() = 6 request_A() = 6 true_A() = 29 pending_A() = 2 resource_A() = 2 tag_A() = 0 element_A(x1,x2) = x1 + x2 + 19 s_A(x1) = x1 + 18 |0|_A() = 1 record_new_A(x1) = 110 locker2_map_add_pending_A(x1,x2,x3) = x3 + 10 locker2_release_lock_A(x1,x2) = 73 case2_A(x1,x2,x3) = 72 gen_modtageq_A(x1,x2) = 27 record_extract_A(x1,x2,x3) = 7 record_updates_A(x1,x2,x3) = 28 excllock_A() = 7 case4_A(x1,x2,x3) = x3 + 7 locker2_obtainables_A(x1,x2) = x2 + 30 case5_A(x1,x2,x3,x4) = 29 member_A(x1,x2) = x2 + 32 locker2_check_available_A(x1,x2) = x1 + x2 + 34 case6_A(x1,x2,x3,x4) = 31 andt_A(x1,x2) = x1 + 2 equal_A(x1,x2) = 28 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 2 delete_A(x1,x2) = x1 + x2 + 31 case8_A(x1,x2,x3,x4) = 1 case9_A(x1,x2,x3,x4) = 31 eqs_A(x1,x2) = x1 + x2 empty_A() = 6 stack_A(x1,x2) = x1 + 9 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = x1 + 2 nocalls_A() = 7 calls_A(x1,x2,x3) = x1 + x2 + x3 + 6 base order 2: precedence: eqs > calls > and = stack > record_new = gen_modtageq = delete > tuplenil = element = locker2_map_add_pending = case2 = equal = nocalls > or = imp = not = if = eq = nil = undefined = a = locker = ok = release = request = tag = s = |0| = case4 = member = locker2_adduniq = subtract = empty = tops > eqt# = cons = tuple = F = eqt = pid = lock = record_updates = eqc > int = case6 = andt = case8 = istops > locker2_obtainables = case5 = locker2_check_available > false > true = case9 > pending = locker2_release_lock = record_extract = excllock > excl = resource > T > mcrlrecord partial status: pi(eqt#) = [1] pi(cons) = [1, 2] pi(tuple) = [] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [1] pi(int) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(release) = [] pi(request) = [] pi(true) = [] pi(pending) = [] pi(resource) = [] pi(tag) = [] pi(element) = [] pi(s) = [1] pi(|0|) = [] pi(record_new) = [] pi(locker2_map_add_pending) = [3] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [] pi(record_extract) = [] pi(record_updates) = [] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [2] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [1] pi(case6) = [] pi(andt) = [] pi(equal) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [2] pi(case8) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [1] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p3 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p2: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) p3: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p1, p2, p3} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(H1,H2) p2: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p3: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r24, r26, r27, r28, r30, r32, r34, r35, r36, r37, r39, r40, r41, r42, r43, r44, r46, r47, r48, r50, r52, r54, r55, r56, r57, r60, r61, r62, r63, r64, r66, r67, r68, r70, r72, r74, r75, r76, r77, r79, r80, r81, r82, r83, r84, r86, r87, r88, r90, r92, r94, r95, r96, r97, r99, r100, r101, r102, r103, r104, r106, r107, r108, r110, r112, r114, r115, r116, r117, r118, r120, r121, r123, r124, r125, r127, r128, r129, r131, r133, r135, r136, r137, r138, r140, r141, r142, r143, r144, r145, r147, r148, r149, r151, r153, r155, r157, r158, r159, r160, r162, r163, r164, r165, r166, r167, r169, r170, r171, r173, r175, r177, r178, r179, r180, r182, r183, r184, r185, r186, r187, r189, r190, r191, r193, r195, r197, r198, r199, r200, r202, r203, r204, r205, r206, r207, r209, r210, r211, r213, r215, r217, r218, r219, r220, r222, r223, r224, r225, r226, r227, r229, r230, r232, r233, r234, r236, r238, r240, r241, r242, r243, r245, r247, r248, r249, r250, r252, r253, r254, r256, r258, r260, r261, r262, r263, r265, r266, r267, r269, r270, r271, r273, r274, r276, r277, r278, r280, r282, r284, r285, r286, r287, r289, r290, r291, r292, r294, r296, r297, r298, r300, r302, r304, r305, r306, r307, r309, r310, r311, r312, r313, r315, r318, r321, r327, r337, r343, r344, r348, r350, r353, r354, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x1 + x2 + 29 cons_A(x1,x2) = x1 + x2 + 28 tuple_A(x1,x2) = x2 + 13 or_A(x1,x2) = x2 + 3 T_A() = 11 F_A() = 9 and_A(x1,x2) = x1 + 14 imp_A(x1,x2) = x2 + 12 not_A(x1) = 12 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 12 eqt_A(x1,x2) = x2 + 2 nil_A() = 1 undefined_A() = 10 pid_A(x1) = 10 int_A(x1) = 10 tuplenil_A(x1) = x1 + 14 a_A() = 10 excl_A() = 12 false_A() = 10 locker_A() = 12 ok_A() = 10 release_A() = 10 request_A() = 12 resource_A() = 12 tag_A() = 12 lock_A() = 5 mcrlrecord_A() = 0 pending_A() = 3 true_A() = 6 element_A(x1,x2) = x2 + 12 s_A(x1) = 11 |0|_A() = 1 record_new_A(x1) = 68 record_updates_A(x1,x2,x3) = x1 + 3 locker2_map_add_pending_A(x1,x2,x3) = x3 + 2 case4_A(x1,x2,x3) = x3 + 11 locker2_check_available_A(x1,x2) = x1 + x2 case6_A(x1,x2,x3,x4) = 13 equal_A(x1,x2) = x1 + 40 record_extract_A(x1,x2,x3) = x1 + 26 andt_A(x1,x2) = 7 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 delete_A(x1,x2) = x1 + x2 + 29 case8_A(x1,x2,x3,x4) = x1 + 1 member_A(x1,x2) = x2 + 11 case9_A(x1,x2,x3,x4) = 7 eqs_A(x1,x2) = x1 + x2 + 36 empty_A() = 12 stack_A(x1,x2) = x1 + 17 tops_A(x1) = x1 istops_A(x1,x2) = x1 + x2 eqc_A(x1,x2) = x2 + 18 nocalls_A() = 13 calls_A(x1,x2,x3) = x1 + x2 + x3 + 17 base order 2: precedence: eqs > and > eqt# = eqt = pid = record_new = stack > tuple = nocalls > or = eq = a = locker = request = tag = element = empty = eqc > T = not = undefined = ok = release = s = istops > F = imp = if = |0| = locker2_map_add_pending = locker2_adduniq = delete = member = tops = calls > cons = int = tuplenil > case8 = case9 > true > record_updates = equal = andt > false = locker2_check_available > resource = case4 = case6 > record_extract > excl = lock > pending > nil = mcrlrecord = subtract partial status: pi(eqt#) = [2] pi(cons) = [1, 2] pi(tuple) = [2] pi(or) = [2] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(locker) = [] pi(ok) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(lock) = [] pi(mcrlrecord) = [] pi(pending) = [] pi(true) = [] pi(element) = [] pi(s) = [] pi(|0|) = [] pi(record_new) = [] pi(record_updates) = [] pi(locker2_map_add_pending) = [3] pi(case4) = [3] pi(locker2_check_available) = [1] pi(case6) = [] pi(equal) = [] pi(record_extract) = [] pi(andt) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [2] pi(case8) = [1] pi(member) = [2] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [2] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p2: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p1, p2} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(cons(H1,T1),cons(H2,T2)) -> eqt#(T1,T2) p2: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r20, r21, r23, r24, r25, r26, r27, r28, r30, r31, r32, r33, r34, r35, r36, r37, r38, r40, r41, r43, r44, r45, r46, r47, r48, r50, r51, r52, r53, r54, r55, r56, r57, r58, r60, r61, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76, r77, r78, r80, r81, r83, r84, r85, r86, r87, r88, r90, r91, r92, r93, r94, r95, r96, r97, r98, r100, r101, r103, r104, r105, r106, r107, r108, r110, r111, r112, r113, r114, r115, r116, r117, r118, r119, r121, r122, r124, r125, r126, r127, r128, r129, r131, r132, r133, r134, r135, r136, r137, r138, r139, r141, r142, r144, r145, r146, r147, r148, r149, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r163, r164, r166, r167, r168, r169, r170, r171, r173, r174, r175, r176, r177, r178, r179, r180, r181, r183, r184, r186, r187, r188, r189, r190, r191, r193, r194, r195, r196, r197, r198, r199, r200, r201, r203, r204, r206, r207, r208, r209, r210, r211, r213, r214, r215, r216, r217, r218, r219, r220, r221, r223, r224, r226, r227, r228, r229, r230, r231, r232, r233, r234, r236, r237, r238, r239, r240, r241, r242, r243, r244, r247, r249, r250, r251, r252, r253, r254, r256, r257, r258, r259, r260, r261, r262, r263, r264, r266, r267, r268, r270, r271, r273, r274, r275, r276, r277, r278, r280, r281, r282, r283, r284, r285, r286, r287, r288, r290, r291, r294, r295, r296, r297, r300, r301, r302, r303, r304, r305, r306, r307, r308, r310, r311, r313, r318, r327, r335, r336, r337, r338, r339, r342, r348, r350, r353, r356, r358, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x1 + x2 + 39 cons_A(x1,x2) = x2 + 38 tuple_A(x1,x2) = x2 + 6 or_A(x1,x2) = 11 T_A() = 2 F_A() = 10 imp_A(x1,x2) = x2 + 3 not_A(x1) = 11 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 11 eqt_A(x1,x2) = x2 + 6 nil_A() = 12 pid_A(x1) = x1 + 11 int_A(x1) = 5 tuplenil_A(x1) = 13 a_A() = 5 excl_A() = 11 false_A() = 11 locker_A() = 11 mcrlrecord_A() = 11 ok_A() = 11 pending_A() = 16 release_A() = 11 request_A() = 11 resource_A() = 38 tag_A() = 11 true_A() = 14 lock_A() = 3 undefined_A() = 2 record_new_A(x1) = x1 + 35 locker2_map_add_pending_A(x1,x2,x3) = x3 + 13 locker2_release_lock_A(x1,x2) = x2 + 72 case2_A(x1,x2,x3) = 71 gen_modtageq_A(x1,x2) = x1 + 52 record_extract_A(x1,x2,x3) = x1 + 1 record_updates_A(x1,x2,x3) = x3 + 20 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 12 locker2_obtainables_A(x1,x2) = x2 + 15 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = 36 locker2_check_available_A(x1,x2) = x1 + x2 + 40 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 27 delete_A(x1,x2) = x2 + 12 case8_A(x1,x2,x3,x4) = 1 equal_A(x1,x2) = x1 + 51 gen_tag_A(x1) = 20 case9_A(x1,x2,x3,x4) = x1 + 37 eqs_A(x1,x2) = 11 empty_A() = 11 stack_A(x1,x2) = x1 + 14 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = x2 + 1 nocalls_A() = 12 calls_A(x1,x2,x3) = x1 + x2 + x3 + 12 base order 2: precedence: eqc > record_extract > eqt = pid = locker2_release_lock = nocalls > or = eq = ok = release = request = tag = case2 = gen_tag = empty = istops > F = not = record_new = record_updates = stack = calls > tuplenil = subtract > pending = equal > eqt# = lock = gen_modtageq = delete = case9 > cons = if = undefined = locker2_map_add_pending = case4 = locker2_adduniq = tops > tuple = locker = locker2_check_available = case8 > T = eqs > imp = int = a = mcrlrecord > resource > member > locker2_obtainables > true > nil = excl = excllock = case5 > false partial status: pi(eqt#) = [2] pi(cons) = [2] pi(tuple) = [2] pi(or) = [] pi(T) = [] pi(F) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(pid) = [1] pi(int) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(lock) = [] pi(undefined) = [] pi(record_new) = [1] pi(locker2_map_add_pending) = [3] pi(locker2_release_lock) = [2] pi(case2) = [] pi(gen_modtageq) = [1] pi(record_extract) = [1] pi(record_updates) = [3] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [2] pi(case5) = [] pi(member) = [] pi(locker2_check_available) = [] pi(locker2_adduniq) = [2] pi(subtract) = [1] pi(delete) = [] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [] pi(case9) = [1] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [2] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: eqt#(tuple(H1,T1),tuple(H2,T2)) -> eqt#(T1,T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r29, r30, r31, r32, r35, r36, r37, r38, r39, r40, r41, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r55, r56, r57, r58, r59, r60, r61, r63, r65, r66, r67, r68, r69, r70, r71, r72, r75, r76, r77, r78, r79, r80, r81, r82, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r95, r96, r97, r98, r99, r100, r101, r102, r103, r104, r105, r106, r107, r109, r110, r111, r112, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r128, r129, r130, r131, r133, r134, r136, r137, r138, r139, r141, r142, r143, r144, r145, r146, r148, r150, r151, r153, r154, r155, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r241, r242, r243, r244, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r275, r276, r277, r278, r279, r280, r281, r282, r285, r286, r287, r288, r289, r290, r291, r292, r294, r295, r296, r297, r299, r300, r301, r302, r305, r306, r307, r308, r309, r310, r311, r313, r318, r324, r326, r327, r334, r335, r336, r337, r338, r339, r342, r348, r349, r350, r353, r356, r358, r359, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: eqt#_A(x1,x2) = x2 tuple_A(x1,x2) = x2 + 23 or_A(x1,x2) = 22 T_A() = 4 F_A() = 21 and_A(x1,x2) = 22 imp_A(x1,x2) = x2 + 5 not_A(x1) = 22 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 22 eqt_A(x1,x2) = x1 + x2 + 10 nil_A() = 105 undefined_A() = 22 pid_A(x1) = 9 int_A(x1) = 9 cons_A(x1,x2) = 3 tuplenil_A(x1) = 6 a_A() = 6 excl_A() = 84 lock_A() = 103 locker_A() = 22 mcrlrecord_A() = 5 ok_A() = 22 request_A() = 9 resource_A() = 99 tag_A() = 9 true_A() = 106 false_A() = 4 pending_A() = 9 release_A() = 1 record_new_A(x1) = 106 locker2_map_promote_pending_A(x1,x2) = x1 + 105 locker2_promote_pending_A(x1,x2) = 107 locker2_map_claim_lock_A(x1,x2,x3) = 106 locker2_claim_lock_A(x1,x2,x3) = 1 locker2_map_add_pending_A(x1,x2,x3) = x3 + 106 case1_A(x1,x2,x3,x4) = x1 + x2 + x3 + 102 locker2_release_lock_A(x1,x2) = 109 case2_A(x1,x2,x3) = 108 gen_modtageq_A(x1,x2) = 1 record_extract_A(x1,x2,x3) = x1 + 101 record_updates_A(x1,x2,x3) = 2 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 5 locker2_obtainables_A(x1,x2) = x1 + x2 + 107 case5_A(x1,x2,x3,x4) = 1 member_A(x1,x2) = x2 + 10 locker2_check_available_A(x1,x2) = x1 + x2 + 108 locker2_adduniq_A(x1,x2) = x2 + 1 append_A(x1,x2) = 101 subtract_A(x1,x2) = x1 + 2 delete_A(x1,x2) = x2 + 5 case8_A(x1,x2,x3,x4) = 1 equal_A(x1,x2) = x1 + 112 gen_tag_A(x1) = 30 case9_A(x1,x2,x3,x4) = 2 eqs_A(x1,x2) = x2 + 24 empty_A() = 22 stack_A(x1,x2) = x1 + 25 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 23 nocalls_A() = 23 calls_A(x1,x2,x3) = x1 + x2 + x3 + 25 base order 2: precedence: true = case2 > record_updates > case1 > record_new = record_extract = append = gen_tag > tuplenil = locker2_release_lock = nocalls > or = not = eq = locker = mcrlrecord = ok = empty > F = eqt = eqs = stack = istops > pid = a = request = tag = calls > eqc > eqt# = and = locker2_map_promote_pending > tuple = locker2_promote_pending > locker2_map_claim_lock = locker2_map_add_pending > if = nil = int = release = excllock = case4 = locker2_adduniq = tops > delete = equal > gen_modtageq = member = locker2_check_available = subtract > locker2_obtainables > excl = pending > lock > undefined > imp = resource > T = cons = case5 > false = locker2_claim_lock = case8 = case9 partial status: pi(eqt#) = [2] pi(tuple) = [2] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [2] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(cons) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(false) = [] pi(pending) = [] pi(release) = [] pi(record_new) = [] pi(locker2_map_promote_pending) = [] pi(locker2_promote_pending) = [] pi(locker2_map_claim_lock) = [] pi(locker2_claim_lock) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [1, 3] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [] pi(record_extract) = [1] pi(record_updates) = [] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [1, 2] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [2] pi(locker2_adduniq) = [2] pi(append) = [] pi(subtract) = [] pi(delete) = [2] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [2] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [1, 3] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: element#(int(s(s(N1))),tuple(T1,T2)) -> element#(int(s(N1)),T2) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76, r77, r78, r79, r80, r81, r82, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r93, r94, r95, r96, r97, r98, r99, r100, r101, r102, r103, r104, r105, r106, r107, r108, r109, r110, r111, r112, r113, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r128, r129, r130, r131, r132, r133, r134, r135, r136, r137, r138, r139, r140, r141, r142, r143, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r244, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r295, r296, r297, r298, r299, r300, r301, r302, r303, r304, r305, r306, r307, r308, r309, r310, r311, r312, r313, r318, r321, r324, r327, r337, r338, r339, r340, r342, r344, r348, r350, r353, r356, r358, r359, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: element#_A(x1,x2) = x1 int_A(x1) = x1 s_A(x1) = x1 tuple_A(x1,x2) = 6 or_A(x1,x2) = x1 + 30 T_A() = 33 F_A() = 4 and_A(x1,x2) = 5 imp_A(x1,x2) = x2 + 34 not_A(x1) = 5 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 34 eqt_A(x1,x2) = 36 nil_A() = 30 undefined_A() = 8 pid_A(x1) = 37 cons_A(x1,x2) = 25 tuplenil_A(x1) = 28 a_A() = 0 excl_A() = 24 false_A() = 36 lock_A() = 7 locker_A() = 34 mcrlrecord_A() = 32 ok_A() = 5 pending_A() = 8 release_A() = 5 request_A() = 34 resource_A() = 29 tag_A() = 34 true_A() = 34 record_new_A(x1) = 31 record_updates_A(x1,x2,x3) = x1 + 1 locker2_map_promote_pending_A(x1,x2) = x1 + 26 locker2_promote_pending_A(x1,x2) = 24 locker2_map_add_pending_A(x1,x2,x3) = x3 + 31 case4_A(x1,x2,x3) = x3 + 37 locker2_obtainables_A(x1,x2) = 35 case5_A(x1,x2,x3,x4) = 35 member_A(x1,x2) = x2 + 7 record_extract_A(x1,x2,x3) = x2 + x3 + 1 andt_A(x1,x2) = x1 + x2 locker2_obtainable_A(x1,x2) = 0 locker2_check_available_A(x1,x2) = x1 + x2 + 37 case6_A(x1,x2,x3,x4) = 31 equal_A(x1,x2) = 15 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 13 delete_A(x1,x2) = x1 + x2 + 37 case8_A(x1,x2,x3,x4) = 1 gen_tag_A(x1) = 29 case9_A(x1,x2,x3,x4) = 6 eqs_A(x1,x2) = 34 empty_A() = 34 stack_A(x1,x2) = x1 + 37 tops_A(x1) = x1 istops_A(x1,x2) = x1 + x2 eqc_A(x1,x2) = 35 nocalls_A() = 35 calls_A(x1,x2,x3) = x1 + x2 + x3 + 37 base order 2: precedence: case4 = locker2_check_available = delete > false > mcrlrecord = locker2_obtainables > resource = true = locker2_map_promote_pending = locker2_promote_pending = calls > pid = tuplenil = record_new = locker2_map_add_pending = case6 = istops > eqt = nil > record_extract = stack > eqc = nocalls > or = imp = eq = locker = request = tag = eqs = empty > s = T > element# = not = undefined = a = ok = pending = release > tuple = F = gen_tag > int > and = if = cons = equal = locker2_adduniq = tops > excl = lock = record_updates = case5 = member = subtract = case8 > andt = locker2_obtainable = case9 partial status: pi(element#) = [1] pi(int) = [1] pi(s) = [1] pi(tuple) = [] pi(or) = [1] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(cons) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(record_new) = [] pi(record_updates) = [] pi(locker2_map_promote_pending) = [1] pi(locker2_promote_pending) = [] pi(locker2_map_add_pending) = [3] pi(case4) = [3] pi(locker2_obtainables) = [] pi(case5) = [] pi(member) = [2] pi(record_extract) = [2, 3] pi(andt) = [1] pi(locker2_obtainable) = [] pi(locker2_check_available) = [2] pi(case6) = [] pi(equal) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [2] pi(case8) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates#(record_update(Record,Name,Field,NewF),Name,Fields) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76, r77, r78, r79, r80, r81, r82, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r93, r94, r95, r96, r97, r98, r99, r100, r101, r102, r103, r104, r111, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r128, r129, r130, r131, r132, r133, r134, r135, r136, r137, r138, r139, r140, r141, r142, r143, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r295, r296, r297, r298, r299, r300, r301, r302, r303, r304, r305, r306, r307, r308, r309, r310, r311, r312, r313, r318, r327, r334, r337, r338, r339, r342, r344, r348, r350, r353, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: record_updates#_A(x1,x2,x3) = x3 cons_A(x1,x2) = x2 + 21 tuple_A(x1,x2) = x1 + x2 + 6 tuplenil_A(x1) = x1 + 31 record_update_A(x1,x2,x3,x4) = x2 + x4 + 22 or_A(x1,x2) = 6 T_A() = 1 F_A() = 5 and_A(x1,x2) = 9 imp_A(x1,x2) = x2 + 2 not_A(x1) = 6 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = x2 + 5 eqt_A(x1,x2) = x1 + 2 nil_A() = 9 undefined_A() = 6 pid_A(x1) = 6 int_A(x1) = 4 a_A() = 6 excl_A() = 20 false_A() = 6 lock_A() = 8 locker_A() = 6 mcrlrecord_A() = 2 ok_A() = 6 pending_A() = 18 release_A() = 6 request_A() = 6 resource_A() = 6 tag_A() = 6 true_A() = 77 record_new_A(x1) = 90 locker2_map_add_pending_A(x1,x2,x3) = x3 + 10 case1_A(x1,x2,x3,x4) = x1 + x2 + x3 + 17 case4_A(x1,x2,x3) = x3 + 7 locker2_obtainables_A(x1,x2) = x2 + 96 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 79 record_extract_A(x1,x2,x3) = 16 locker2_check_available_A(x1,x2) = x1 + x2 + 78 case6_A(x1,x2,x3,x4) = 77 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = x1 + 22 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + 24 delete_A(x1,x2) = x1 + 23 case8_A(x1,x2,x3,x4) = 1 case9_A(x1,x2,x3,x4) = 78 eqs_A(x1,x2) = 10 empty_A() = 6 stack_A(x1,x2) = x1 + 11 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = x1 + 12 nocalls_A() = 7 calls_A(x1,x2,x3) = x1 + x2 + x3 + 11 base order 2: precedence: record_update > record_updates# = or = and = imp = not = if = locker = ok = release = request = record_new = locker2_map_add_pending = locker2_obtainables = locker2_adduniq = subtract = tops = eqc > tuple = delete > nil = tag = case4 = locker2_check_available > false = case1 > cons = case8 > case9 > true > record_extract = case6 > excl = andt > a = pending = case5 > F = eq = eqt = pid = istops = calls > tuplenil = int = stack = nocalls > lock = eqs = empty > undefined > resource = member > mcrlrecord = equal > T partial status: pi(record_updates#) = [3] pi(cons) = [2] pi(tuple) = [1, 2] pi(tuplenil) = [] pi(record_update) = [4] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [2] pi(eqt) = [1] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(record_new) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [1] pi(case4) = [3] pi(locker2_obtainables) = [2] pi(case5) = [] pi(member) = [2] pi(record_extract) = [] pi(locker2_check_available) = [] pi(case6) = [] pi(andt) = [2] pi(equal) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [] pi(case8) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [1] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: locker2_map_promote_pending#(cons(Lock,Locks),Pending) -> locker2_map_promote_pending#(Locks,Pending) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r24, r26, r34, r35, r36, r37, r38, r39, r40, r41, r42, r44, r47, r54, r55, r56, r57, r58, r60, r61, r62, r64, r69, r90, r94, r95, r97, r98, r99, r100, r101, r102, r104, r111, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r125, r157, r158, r159, r160, r161, r162, r163, r164, r165, r167, r177, r178, r179, r180, r181, r182, r183, r184, r185, r187, r197, r198, r199, r200, r201, r202, r203, r204, r205, r207, r217, r218, r219, r220, r221, r222, r223, r224, r225, r227, r230, r240, r241, r242, r243, r244, r245, r247, r248, r250, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r274, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r318, r321, r327, r334, r337, r338, r342, r344, r348, r350, r353, r356, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: locker2_map_promote_pending#_A(x1,x2) = x1 cons_A(x1,x2) = x2 + 28 or_A(x1,x2) = x1 + x2 T_A() = 12 F_A() = 23 and_A(x1,x2) = 24 imp_A(x1,x2) = x2 + 13 not_A(x1) = 24 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 24 eqt_A(x1,x2) = x2 + 9 nil_A() = 2 undefined_A() = 22 pid_A(x1) = 24 int_A(x1) = 24 tuplenil_A(x1) = 32 a_A() = 13 release_A() = 24 request_A() = 14 resource_A() = 24 tag_A() = 34 true_A() = 24 excl_A() = 13 false_A() = 1 lock_A() = 3 locker_A() = 13 mcrlrecord_A() = 13 ok_A() = 13 tuple_A(x1,x2) = 8 record_new_A(x1) = 23 record_updates_A(x1,x2,x3) = x1 + 23 locker2_map_add_pending_A(x1,x2,x3) = x3 + 3 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 7 case4_A(x1,x2,x3) = x3 + 2 locker2_obtainables_A(x1,x2) = x2 + 26 locker2_check_available_A(x1,x2) = x1 + x2 + 30 case6_A(x1,x2,x3,x4) = 26 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = 1 record_extract_A(x1,x2,x3) = x1 + 25 pending_A() = 3 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 3 delete_A(x1,x2) = x1 + x2 + 26 case8_A(x1,x2,x3,x4) = 27 gen_tag_A(x1) = x1 + 33 member_A(x1,x2) = x1 + x2 + 26 case9_A(x1,x2,x3,x4) = 25 eqs_A(x1,x2) = 25 empty_A() = 24 stack_A(x1,x2) = x1 + 27 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 26 nocalls_A() = 25 calls_A(x1,x2,x3) = x1 + x2 + x3 + 27 base order 2: precedence: eqc > or = and = not = eq = release = locker = ok = istops > F = eqt = eqs = stack = calls > pid = nocalls > imp = a = request = mcrlrecord = case4 = delete = empty > T = false > tag = subtract = member > locker2_obtainables = pending = gen_tag > tuplenil = tuple > record_new = record_extract > case1 > int = record_updates > cons = if = locker2_map_add_pending = locker2_adduniq = tops > locker2_map_promote_pending# = locker2_check_available = case8 = case9 > resource > true > equal > lock = case6 > nil = undefined = excl = andt partial status: pi(locker2_map_promote_pending#) = [1] pi(cons) = [2] pi(or) = [1, 2] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(tuplenil) = [] pi(a) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(tuple) = [] pi(record_new) = [] pi(record_updates) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [4] pi(case4) = [3] pi(locker2_obtainables) = [] pi(locker2_check_available) = [] pi(case6) = [] pi(andt) = [2] pi(equal) = [] pi(record_extract) = [] pi(pending) = [] pi(locker2_adduniq) = [2] pi(subtract) = [2] pi(delete) = [] pi(case8) = [] pi(gen_tag) = [1] pi(member) = [1, 2] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [2] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: locker2_map_claim_lock#(cons(Lock,Locks),Resources,Client) -> locker2_map_claim_lock#(Locks,Resources,Client) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r26, r47, r69, r90, r111, r134, r158, r179, r200, r221, r315, r318, r327, r335, r336, r337, r338, r339, r342, r348, r349, r350, r353, r356, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: locker2_map_claim_lock#_A(x1,x2,x3) = x1 + x2 + x3 + 12 cons_A(x1,x2) = x2 + 11 or_A(x1,x2) = 4 T_A() = 1 F_A() = 3 and_A(x1,x2) = 4 imp_A(x1,x2) = x2 + 2 not_A(x1) = 4 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 4 eqt_A(x1,x2) = 2 a_A() = 4 excl_A() = 0 lock_A() = 5 locker_A() = 4 mcrlrecord_A() = 4 pending_A() = 0 request_A() = 4 resource_A() = 6 tag_A() = 4 true_A() = 7 element_A(x1,x2) = x2 + 6 int_A(x1) = 4 s_A(x1) = 5 |0|_A() = 1 tuplenil_A(x1) = x1 record_new_A(x1) = 11 tuple_A(x1,x2) = x2 undefined_A() = 2 nil_A() = 10 locker2_map_add_pending_A(x1,x2,x3) = x1 + x3 + 1 locker2_release_lock_A(x1,x2) = 23 case2_A(x1,x2,x3) = 22 gen_modtageq_A(x1,x2) = x1 + 24 record_extract_A(x1,x2,x3) = x1 + x3 record_updates_A(x1,x2,x3) = x2 + 1 excllock_A() = 6 case4_A(x1,x2,x3) = x3 + 5 false_A() = 4 locker2_obtainables_A(x1,x2) = x2 + 8 case5_A(x1,x2,x3,x4) = 1 member_A(x1,x2) = x1 + x2 + 12 locker2_check_available_A(x1,x2) = x1 + x2 + 13 locker2_adduniq_A(x1,x2) = x2 + 1 append_A(x1,x2) = x1 subtract_A(x1,x2) = x1 + x2 delete_A(x1,x2) = x1 + x2 + 12 case8_A(x1,x2,x3,x4) = 1 equal_A(x1,x2) = x1 + 13 gen_tag_A(x1) = 5 case9_A(x1,x2,x3,x4) = 8 eqs_A(x1,x2) = 5 empty_A() = 4 stack_A(x1,x2) = x1 + 7 tops_A(x1) = x1 istops_A(x1,x2) = x1 + x2 eqc_A(x1,x2) = 6 nocalls_A() = 5 calls_A(x1,x2,x3) = x1 + x2 + x3 + 7 base order 2: precedence: calls > stack = eqc > element = gen_modtageq = eqs > and = s = locker2_release_lock > eqt = int = record_new = case2 > tuple > gen_tag = nocalls > or = not = eq = a = locker = request = tag = tuplenil = member = empty = istops > F = locker2_obtainables > lock > undefined > locker2_check_available > case9 > true > record_updates = excllock > record_extract = append > resource > imp = mcrlrecord > locker2_map_claim_lock# = T = subtract > cons = pending > case5 = case8 > delete > if = excl = |0| = nil = locker2_map_add_pending = case4 = locker2_adduniq = equal = tops > false partial status: pi(locker2_map_claim_lock#) = [3] pi(cons) = [] pi(or) = [] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(a) = [] pi(excl) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(pending) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(element) = [] pi(int) = [] pi(s) = [] pi(|0|) = [] pi(tuplenil) = [1] pi(record_new) = [] pi(tuple) = [2] pi(undefined) = [] pi(nil) = [] pi(locker2_map_add_pending) = [3] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [1] pi(record_extract) = [3] pi(record_updates) = [2] pi(excllock) = [] pi(case4) = [3] pi(false) = [] pi(locker2_obtainables) = [2] pi(case5) = [] pi(member) = [1] pi(locker2_check_available) = [2] pi(locker2_adduniq) = [2] pi(append) = [] pi(subtract) = [1] pi(delete) = [] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [3] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: subtract#(List,cons(Head,Tail)) -> subtract#(delete(Head,List),Tail) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r24, r25, r26, r27, r28, r30, r31, r32, r33, r34, r35, r37, r38, r39, r40, r41, r42, r44, r45, r46, r47, r48, r50, r51, r52, r53, r54, r55, r57, r58, r59, r60, r61, r62, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r77, r78, r79, r80, r81, r82, r84, r85, r86, r87, r88, r90, r91, r92, r93, r94, r95, r97, r98, r99, r100, r101, r102, r104, r105, r106, r107, r108, r110, r111, r112, r113, r114, r115, r118, r119, r120, r121, r122, r123, r125, r126, r127, r128, r129, r131, r132, r133, r134, r135, r136, r138, r139, r140, r141, r142, r143, r145, r146, r147, r148, r149, r151, r152, r153, r154, r155, r156, r157, r158, r160, r161, r162, r163, r164, r165, r167, r168, r169, r170, r171, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r187, r188, r189, r190, r191, r193, r194, r195, r196, r197, r198, r200, r201, r202, r203, r204, r205, r207, r208, r209, r210, r211, r213, r214, r215, r216, r217, r218, r220, r221, r222, r223, r224, r225, r227, r228, r229, r230, r231, r232, r233, r234, r236, r237, r238, r239, r240, r241, r243, r244, r245, r247, r248, r250, r251, r252, r253, r254, r256, r257, r258, r259, r260, r261, r263, r264, r265, r267, r268, r269, r270, r274, r275, r276, r277, r278, r280, r281, r282, r283, r284, r285, r287, r288, r289, r290, r291, r292, r294, r295, r296, r297, r298, r300, r301, r302, r303, r304, r305, r307, r308, r309, r310, r311, r312, r318, r327, r334, r335, r336, r337, r338, r339, r342, r344, r348, r349, r350, r352, r353, r356, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: subtract#_A(x1,x2) = x1 + x2 cons_A(x1,x2) = x1 + x2 + 34 delete_A(x1,x2) = x1 + x2 + 33 or_A(x1,x2) = 66 T_A() = 1 F_A() = 65 imp_A(x1,x2) = x2 + 2 not_A(x1) = 66 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 66 eqt_A(x1,x2) = x2 + 57 nil_A() = 11 undefined_A() = 66 pid_A(x1) = 66 int_A(x1) = 66 tuplenil_A(x1) = 66 a_A() = 66 excl_A() = 9 false_A() = 66 locker_A() = 66 mcrlrecord_A() = 63 ok_A() = 66 pending_A() = 64 release_A() = 66 request_A() = 66 tag_A() = 66 true_A() = 10 lock_A() = 2 resource_A() = 3 tuple_A(x1,x2) = 7 record_new_A(x1) = 67 locker2_map_add_pending_A(x1,x2,x3) = x3 + 12 case1_A(x1,x2,x3,x4) = x1 + x2 + x3 + x4 + 42 locker2_release_lock_A(x1,x2) = 64 case2_A(x1,x2,x3) = 63 gen_modtageq_A(x1,x2) = x1 + 65 record_extract_A(x1,x2,x3) = 5 record_updates_A(x1,x2,x3) = x2 + x3 + 8 excllock_A() = 1 case4_A(x1,x2,x3) = x3 + 67 locker2_obtainables_A(x1,x2) = x2 + 73 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x1 + x2 + 67 locker2_check_available_A(x1,x2) = x1 + x2 + 67 case6_A(x1,x2,x3,x4) = 10 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = 1 locker2_adduniq_A(x1,x2) = x2 + 1 append_A(x1,x2) = x1 + x2 + 1 subtract_A(x1,x2) = x1 + x2 + 14 case8_A(x1,x2,x3,x4) = 1 gen_tag_A(x1) = 67 case9_A(x1,x2,x3,x4) = 11 eqs_A(x1,x2) = 66 empty_A() = 66 stack_A(x1,x2) = x1 + 69 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 67 nocalls_A() = 67 calls_A(x1,x2,x3) = x1 + x2 + x3 + 68 base order 2: precedence: gen_modtageq > locker2_release_lock = locker2_obtainables = case5 > record_new = locker2_map_add_pending = case2 = member = equal > nil = pending = case9 > mcrlrecord = true > tag = tuple = gen_tag > tuplenil > delete = int = case1 > record_updates = subtract > cons = append > subtract# = undefined = case8 > lock > case4 = locker2_check_available > false = case6 = calls > record_extract = andt > nocalls > or = not = eq = a = locker = ok = release = request = resource = empty > F = imp = if = eqt = excllock = locker2_adduniq = tops > pid = excl = istops > T = eqc > stack > eqs partial status: pi(subtract#) = [] pi(cons) = [] pi(delete) = [2] pi(or) = [] pi(T) = [] pi(F) = [] pi(imp) = [2] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(tag) = [] pi(true) = [] pi(lock) = [] pi(resource) = [] pi(tuple) = [] pi(record_new) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [] pi(locker2_release_lock) = [] pi(case2) = [] pi(gen_modtageq) = [1] pi(record_extract) = [] pi(record_updates) = [2] pi(excllock) = [] pi(case4) = [3] pi(locker2_obtainables) = [2] pi(case5) = [] pi(member) = [2] pi(locker2_check_available) = [] pi(case6) = [] pi(andt) = [] pi(equal) = [] pi(locker2_adduniq) = [2] pi(append) = [1, 2] pi(subtract) = [1, 2] pi(case8) = [] pi(gen_tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [1] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: locker2_check_availables#(cons(Resource,Resources),Locks) -> locker2_check_availables#(Resources,Locks) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r1, r2, r3, r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r62, r63, r64, r65, r66, r67, r69, r70, r71, r72, r73, r74, r75, r77, r78, r79, r80, r81, r82, r83, r84, r85, r86, r87, r88, r89, r90, r91, r92, r93, r94, r95, r97, r98, r99, r100, r101, r102, r103, r104, r105, r106, r107, r109, r110, r112, r113, r114, r115, r116, r117, r118, r119, r120, r121, r122, r123, r124, r125, r126, r127, r128, r129, r130, r131, r132, r133, r135, r136, r137, r138, r139, r140, r141, r142, r143, r144, r145, r146, r147, r148, r149, r150, r151, r152, r153, r154, r155, r156, r157, r158, r159, r160, r161, r162, r163, r164, r165, r166, r167, r168, r169, r170, r171, r172, r173, r174, r175, r176, r177, r178, r179, r180, r181, r182, r183, r184, r185, r186, r187, r188, r189, r190, r191, r192, r193, r194, r195, r196, r197, r198, r199, r200, r201, r202, r203, r204, r205, r206, r207, r208, r209, r210, r211, r212, r213, r214, r215, r216, r217, r218, r219, r220, r221, r222, r223, r224, r225, r226, r227, r228, r229, r230, r231, r232, r233, r234, r235, r236, r237, r238, r239, r240, r241, r242, r243, r244, r245, r247, r248, r249, r250, r251, r252, r253, r254, r255, r256, r257, r258, r259, r260, r261, r262, r263, r264, r265, r266, r267, r268, r269, r270, r271, r273, r274, r275, r276, r277, r278, r279, r280, r281, r282, r283, r284, r285, r286, r287, r288, r289, r290, r291, r292, r294, r315, r318, r321, r327, r334, r337, r338, r339, r342, r348, r350, r353, r356, r358, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: locker2_check_availables#_A(x1,x2) = x1 + x2 + 16 cons_A(x1,x2) = x2 + 15 or_A(x1,x2) = x1 + x2 T_A() = 13 F_A() = 6 and_A(x1,x2) = 48 imp_A(x1,x2) = x2 + 14 not_A(x1) = 14 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 14 eqt_A(x1,x2) = x1 + 2 nil_A() = 8 undefined_A() = 7 pid_A(x1) = 7 int_A(x1) = 7 tuple_A(x1,x2) = x2 + 45 tuplenil_A(x1) = x1 + 3 a_A() = 14 excl_A() = 1 false_A() = 7 lock_A() = 89 locker_A() = 14 mcrlrecord_A() = 5 ok_A() = 7 pending_A() = 10 release_A() = 7 request_A() = 14 resource_A() = 14 tag_A() = 14 true_A() = 88 element_A(x1,x2) = x2 + 44 s_A(x1) = 43 |0|_A() = 1 record_new_A(x1) = 192 record_updates_A(x1,x2,x3) = x1 + x3 + 99 locker2_map_add_pending_A(x1,x2,x3) = x3 + 9 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 5 case4_A(x1,x2,x3) = x3 + 8 locker2_obtainables_A(x1,x2) = x2 + 90 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x1 + x2 + 90 record_extract_A(x1,x2,x3) = 92 locker2_check_available_A(x1,x2) = x1 + x2 + 13 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 3 delete_A(x1,x2) = x1 + x2 + 13 case8_A(x1,x2,x3,x4) = 14 equal_A(x1,x2) = x1 + 29 gen_tag_A(x1) = x1 + 63 case9_A(x1,x2,x3,x4) = 89 eqs_A(x1,x2) = x1 + 53 empty_A() = 14 stack_A(x1,x2) = x1 + 49 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 49 nocalls_A() = 15 calls_A(x1,x2,x3) = x1 + x2 + x3 + 52 base order 2: precedence: case4 > false > member > pending = record_new = locker2_obtainables > lock > case1 > equal > locker2_map_add_pending = record_extract = subtract = delete > nil > tag = case9 > true = s = gen_tag > tuple > and = element = record_updates > locker2_check_availables# = eqs = stack > cons = imp = if = eq = undefined = int = a = release = request = |0| = locker2_adduniq = case8 = tops = nocalls > or = locker = ok = resource = case5 = empty > F = locker2_check_available > eqt > pid = istops = eqc = calls > T > not = tuplenil = excl = mcrlrecord partial status: pi(locker2_check_availables#) = [1, 2] pi(cons) = [] pi(or) = [1, 2] pi(T) = [] pi(F) = [] pi(and) = [] pi(imp) = [] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(eqt) = [1] pi(nil) = [] pi(undefined) = [] pi(pid) = [] pi(int) = [] pi(tuple) = [] pi(tuplenil) = [] pi(a) = [] pi(excl) = [] pi(false) = [] pi(lock) = [] pi(locker) = [] pi(mcrlrecord) = [] pi(ok) = [] pi(pending) = [] pi(release) = [] pi(request) = [] pi(resource) = [] pi(tag) = [] pi(true) = [] pi(element) = [2] pi(s) = [] pi(|0|) = [] pi(record_new) = [] pi(record_updates) = [] pi(locker2_map_add_pending) = [3] pi(case1) = [1, 3, 4] pi(case4) = [3] pi(locker2_obtainables) = [] pi(case5) = [] pi(member) = [2] pi(record_extract) = [] pi(locker2_check_available) = [] pi(locker2_adduniq) = [2] pi(subtract) = [1, 2] pi(delete) = [2] pi(case8) = [] pi(equal) = [] pi(gen_tag) = [1] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: append#(cons(Head,Tail),List) -> append#(Tail,List) and R consists of: r1: or(T(),T()) -> T() r2: or(F(),T()) -> T() r3: or(T(),F()) -> T() r4: or(F(),F()) -> F() r5: and(T(),B) -> B r6: and(B,T()) -> B r7: and(F(),B) -> F() r8: and(B,F()) -> F() r9: imp(T(),B) -> B r10: imp(F(),B) -> T() r11: not(T()) -> F() r12: not(F()) -> T() r13: if(T(),B1,B2) -> B1 r14: if(F(),B1,B2) -> B2 r15: eq(T(),T()) -> T() r16: eq(F(),F()) -> T() r17: eq(T(),F()) -> F() r18: eq(F(),T()) -> F() r19: eqt(nil(),undefined()) -> F() r20: eqt(nil(),pid(N2)) -> F() r21: eqt(nil(),int(N2)) -> F() r22: eqt(nil(),cons(H2,T2)) -> F() r23: eqt(nil(),tuple(H2,T2)) -> F() r24: eqt(nil(),tuplenil(H2)) -> F() r25: eqt(a(),nil()) -> F() r26: eqt(a(),a()) -> T() r27: eqt(a(),excl()) -> F() r28: eqt(a(),false()) -> F() r29: eqt(a(),lock()) -> F() r30: eqt(a(),locker()) -> F() r31: eqt(a(),mcrlrecord()) -> F() r32: eqt(a(),ok()) -> F() r33: eqt(a(),pending()) -> F() r34: eqt(a(),release()) -> F() r35: eqt(a(),request()) -> F() r36: eqt(a(),resource()) -> F() r37: eqt(a(),tag()) -> F() r38: eqt(a(),true()) -> F() r39: eqt(a(),undefined()) -> F() r40: eqt(a(),pid(N2)) -> F() r41: eqt(a(),int(N2)) -> F() r42: eqt(a(),cons(H2,T2)) -> F() r43: eqt(a(),tuple(H2,T2)) -> F() r44: eqt(a(),tuplenil(H2)) -> F() r45: eqt(excl(),nil()) -> F() r46: eqt(excl(),a()) -> F() r47: eqt(excl(),excl()) -> T() r48: eqt(excl(),false()) -> F() r49: eqt(excl(),lock()) -> F() r50: eqt(excl(),locker()) -> F() r51: eqt(excl(),mcrlrecord()) -> F() r52: eqt(excl(),ok()) -> F() r53: eqt(excl(),pending()) -> F() r54: eqt(excl(),release()) -> F() r55: eqt(excl(),request()) -> F() r56: eqt(excl(),resource()) -> F() r57: eqt(excl(),tag()) -> F() r58: eqt(excl(),true()) -> F() r59: eqt(excl(),undefined()) -> F() r60: eqt(excl(),pid(N2)) -> F() r61: eqt(excl(),eqt(false(),int(N2))) -> F() r62: eqt(false(),cons(H2,T2)) -> F() r63: eqt(false(),tuple(H2,T2)) -> F() r64: eqt(false(),tuplenil(H2)) -> F() r65: eqt(lock(),nil()) -> F() r66: eqt(lock(),a()) -> F() r67: eqt(lock(),excl()) -> F() r68: eqt(lock(),false()) -> F() r69: eqt(lock(),lock()) -> T() r70: eqt(lock(),locker()) -> F() r71: eqt(lock(),mcrlrecord()) -> F() r72: eqt(lock(),ok()) -> F() r73: eqt(lock(),pending()) -> F() r74: eqt(lock(),release()) -> F() r75: eqt(lock(),request()) -> F() r76: eqt(lock(),resource()) -> F() r77: eqt(lock(),tag()) -> F() r78: eqt(lock(),true()) -> F() r79: eqt(lock(),undefined()) -> F() r80: eqt(lock(),pid(N2)) -> F() r81: eqt(lock(),int(N2)) -> F() r82: eqt(lock(),cons(H2,T2)) -> F() r83: eqt(lock(),tuple(H2,T2)) -> F() r84: eqt(lock(),tuplenil(H2)) -> F() r85: eqt(locker(),nil()) -> F() r86: eqt(locker(),a()) -> F() r87: eqt(locker(),excl()) -> F() r88: eqt(locker(),false()) -> F() r89: eqt(locker(),lock()) -> F() r90: eqt(locker(),locker()) -> T() r91: eqt(locker(),mcrlrecord()) -> F() r92: eqt(locker(),ok()) -> F() r93: eqt(locker(),pending()) -> F() r94: eqt(locker(),release()) -> F() r95: eqt(locker(),request()) -> F() r96: eqt(locker(),resource()) -> F() r97: eqt(locker(),tag()) -> F() r98: eqt(locker(),true()) -> F() r99: eqt(locker(),undefined()) -> F() r100: eqt(locker(),pid(N2)) -> F() r101: eqt(locker(),int(N2)) -> F() r102: eqt(locker(),cons(H2,T2)) -> F() r103: eqt(locker(),tuple(H2,T2)) -> F() r104: eqt(locker(),tuplenil(H2)) -> F() r105: eqt(mcrlrecord(),nil()) -> F() r106: eqt(mcrlrecord(),a()) -> F() r107: eqt(mcrlrecord(),excl()) -> F() r108: eqt(mcrlrecord(),false()) -> F() r109: eqt(mcrlrecord(),lock()) -> F() r110: eqt(mcrlrecord(),locker()) -> F() r111: eqt(mcrlrecord(),mcrlrecord()) -> T() r112: eqt(mcrlrecord(),ok()) -> F() r113: eqt(mcrlrecord(),pending()) -> F() r114: eqt(mcrlrecord(),release()) -> F() r115: eqt(mcrlrecord(),request()) -> F() r116: eqt(mcrlrecord(),resource()) -> F() r117: eqt(ok(),resource()) -> F() r118: eqt(ok(),tag()) -> F() r119: eqt(ok(),true()) -> F() r120: eqt(ok(),undefined()) -> F() r121: eqt(ok(),pid(N2)) -> F() r122: eqt(ok(),int(N2)) -> F() r123: eqt(ok(),cons(H2,T2)) -> F() r124: eqt(ok(),tuple(H2,T2)) -> F() r125: eqt(ok(),tuplenil(H2)) -> F() r126: eqt(pending(),nil()) -> F() r127: eqt(pending(),a()) -> F() r128: eqt(pending(),excl()) -> F() r129: eqt(pending(),false()) -> F() r130: eqt(pending(),lock()) -> F() r131: eqt(pending(),locker()) -> F() r132: eqt(pending(),mcrlrecord()) -> F() r133: eqt(pending(),ok()) -> F() r134: eqt(pending(),pending()) -> T() r135: eqt(pending(),release()) -> F() r136: eqt(pending(),request()) -> F() r137: eqt(pending(),resource()) -> F() r138: eqt(pending(),tag()) -> F() r139: eqt(pending(),true()) -> F() r140: eqt(pending(),undefined()) -> F() r141: eqt(pending(),pid(N2)) -> F() r142: eqt(pending(),int(N2)) -> F() r143: eqt(pending(),cons(H2,T2)) -> F() r144: eqt(pending(),tuple(H2,T2)) -> F() r145: eqt(pending(),tuplenil(H2)) -> F() r146: eqt(release(),nil()) -> F() r147: eqt(release(),a()) -> F() r148: eqt(release(),excl()) -> F() r149: eqt(release(),false()) -> F() r150: eqt(release(),lock()) -> F() r151: eqt(release(),locker()) -> F() r152: eqt(release(),mcrlrecord()) -> F() r153: eqt(release(),ok()) -> F() r154: eqt(request(),mcrlrecord()) -> F() r155: eqt(request(),ok()) -> F() r156: eqt(request(),pending()) -> F() r157: eqt(request(),release()) -> F() r158: eqt(request(),request()) -> T() r159: eqt(request(),resource()) -> F() r160: eqt(request(),tag()) -> F() r161: eqt(request(),true()) -> F() r162: eqt(request(),undefined()) -> F() r163: eqt(request(),pid(N2)) -> F() r164: eqt(request(),int(N2)) -> F() r165: eqt(request(),cons(H2,T2)) -> F() r166: eqt(request(),tuple(H2,T2)) -> F() r167: eqt(request(),tuplenil(H2)) -> F() r168: eqt(resource(),nil()) -> F() r169: eqt(resource(),a()) -> F() r170: eqt(resource(),excl()) -> F() r171: eqt(resource(),false()) -> F() r172: eqt(resource(),lock()) -> F() r173: eqt(resource(),locker()) -> F() r174: eqt(resource(),mcrlrecord()) -> F() r175: eqt(resource(),ok()) -> F() r176: eqt(resource(),pending()) -> F() r177: eqt(resource(),release()) -> F() r178: eqt(resource(),request()) -> F() r179: eqt(resource(),resource()) -> T() r180: eqt(resource(),tag()) -> F() r181: eqt(resource(),true()) -> F() r182: eqt(resource(),undefined()) -> F() r183: eqt(resource(),pid(N2)) -> F() r184: eqt(resource(),int(N2)) -> F() r185: eqt(resource(),cons(H2,T2)) -> F() r186: eqt(resource(),tuple(H2,T2)) -> F() r187: eqt(resource(),tuplenil(H2)) -> F() r188: eqt(tag(),nil()) -> F() r189: eqt(tag(),a()) -> F() r190: eqt(tag(),excl()) -> F() r191: eqt(tag(),false()) -> F() r192: eqt(tag(),lock()) -> F() r193: eqt(tag(),locker()) -> F() r194: eqt(tag(),mcrlrecord()) -> F() r195: eqt(tag(),ok()) -> F() r196: eqt(tag(),pending()) -> F() r197: eqt(tag(),release()) -> F() r198: eqt(tag(),request()) -> F() r199: eqt(tag(),resource()) -> F() r200: eqt(tag(),tag()) -> T() r201: eqt(tag(),true()) -> F() r202: eqt(tag(),undefined()) -> F() r203: eqt(tag(),pid(N2)) -> F() r204: eqt(tag(),int(N2)) -> F() r205: eqt(tag(),cons(H2,T2)) -> F() r206: eqt(tag(),tuple(H2,T2)) -> F() r207: eqt(tag(),tuplenil(H2)) -> F() r208: eqt(true(),nil()) -> F() r209: eqt(true(),a()) -> F() r210: eqt(true(),excl()) -> F() r211: eqt(true(),false()) -> F() r212: eqt(true(),lock()) -> F() r213: eqt(true(),locker()) -> F() r214: eqt(true(),mcrlrecord()) -> F() r215: eqt(true(),ok()) -> F() r216: eqt(true(),pending()) -> F() r217: eqt(true(),release()) -> F() r218: eqt(true(),request()) -> F() r219: eqt(true(),resource()) -> F() r220: eqt(true(),tag()) -> F() r221: eqt(true(),true()) -> T() r222: eqt(true(),undefined()) -> F() r223: eqt(true(),pid(N2)) -> F() r224: eqt(true(),int(N2)) -> F() r225: eqt(true(),cons(H2,T2)) -> F() r226: eqt(true(),tuple(H2,T2)) -> F() r227: eqt(true(),tuplenil(H2)) -> F() r228: eqt(undefined(),nil()) -> F() r229: eqt(undefined(),a()) -> F() r230: eqt(undefined(),tuplenil(H2)) -> F() r231: eqt(pid(N1),nil()) -> F() r232: eqt(pid(N1),a()) -> F() r233: eqt(pid(N1),excl()) -> F() r234: eqt(pid(N1),false()) -> F() r235: eqt(pid(N1),lock()) -> F() r236: eqt(pid(N1),locker()) -> F() r237: eqt(pid(N1),mcrlrecord()) -> F() r238: eqt(pid(N1),ok()) -> F() r239: eqt(pid(N1),pending()) -> F() r240: eqt(pid(N1),release()) -> F() r241: eqt(pid(N1),request()) -> F() r242: eqt(pid(N1),resource()) -> F() r243: eqt(pid(N1),tag()) -> F() r244: eqt(pid(N1),true()) -> F() r245: eqt(pid(N1),undefined()) -> F() r246: eqt(pid(N1),pid(N2)) -> eqt(N1,N2) r247: eqt(pid(N1),int(N2)) -> F() r248: eqt(pid(N1),cons(H2,T2)) -> F() r249: eqt(pid(N1),tuple(H2,T2)) -> F() r250: eqt(pid(N1),tuplenil(H2)) -> F() r251: eqt(int(N1),nil()) -> F() r252: eqt(int(N1),a()) -> F() r253: eqt(int(N1),excl()) -> F() r254: eqt(int(N1),false()) -> F() r255: eqt(int(N1),lock()) -> F() r256: eqt(int(N1),locker()) -> F() r257: eqt(int(N1),mcrlrecord()) -> F() r258: eqt(int(N1),ok()) -> F() r259: eqt(int(N1),pending()) -> F() r260: eqt(int(N1),release()) -> F() r261: eqt(int(N1),request()) -> F() r262: eqt(int(N1),resource()) -> F() r263: eqt(int(N1),tag()) -> F() r264: eqt(int(N1),true()) -> F() r265: eqt(int(N1),undefined()) -> F() r266: eqt(cons(H1,T1),resource()) -> F() r267: eqt(cons(H1,T1),tag()) -> F() r268: eqt(cons(H1,T1),true()) -> F() r269: eqt(cons(H1,T1),undefined()) -> F() r270: eqt(cons(H1,T1),pid(N2)) -> F() r271: eqt(cons(H1,T1),int(N2)) -> F() r272: eqt(cons(H1,T1),cons(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r273: eqt(cons(H1,T1),tuple(H2,T2)) -> F() r274: eqt(cons(H1,T1),tuplenil(H2)) -> F() r275: eqt(tuple(H1,T1),nil()) -> F() r276: eqt(tuple(H1,T1),a()) -> F() r277: eqt(tuple(H1,T1),excl()) -> F() r278: eqt(tuple(H1,T1),false()) -> F() r279: eqt(tuple(H1,T1),lock()) -> F() r280: eqt(tuple(H1,T1),locker()) -> F() r281: eqt(tuple(H1,T1),mcrlrecord()) -> F() r282: eqt(tuple(H1,T1),ok()) -> F() r283: eqt(tuple(H1,T1),pending()) -> F() r284: eqt(tuple(H1,T1),release()) -> F() r285: eqt(tuple(H1,T1),request()) -> F() r286: eqt(tuple(H1,T1),resource()) -> F() r287: eqt(tuple(H1,T1),tag()) -> F() r288: eqt(tuple(H1,T1),true()) -> F() r289: eqt(tuple(H1,T1),undefined()) -> F() r290: eqt(tuple(H1,T1),pid(N2)) -> F() r291: eqt(tuple(H1,T1),int(N2)) -> F() r292: eqt(tuple(H1,T1),cons(H2,T2)) -> F() r293: eqt(tuple(H1,T1),tuple(H2,T2)) -> and(eqt(H1,H2),eqt(T1,T2)) r294: eqt(tuple(H1,T1),tuplenil(H2)) -> F() r295: eqt(tuplenil(H1),nil()) -> F() r296: eqt(tuplenil(H1),a()) -> F() r297: eqt(tuplenil(H1),excl()) -> F() r298: eqt(tuplenil(H1),false()) -> F() r299: eqt(tuplenil(H1),lock()) -> F() r300: eqt(tuplenil(H1),locker()) -> F() r301: eqt(tuplenil(H1),mcrlrecord()) -> F() r302: eqt(tuplenil(H1),ok()) -> F() r303: eqt(tuplenil(H1),pending()) -> F() r304: eqt(tuplenil(H1),release()) -> F() r305: eqt(tuplenil(H1),request()) -> F() r306: eqt(tuplenil(H1),resource()) -> F() r307: eqt(tuplenil(H1),tag()) -> F() r308: eqt(tuplenil(H1),true()) -> F() r309: eqt(tuplenil(H1),undefined()) -> F() r310: eqt(tuplenil(H1),pid(N2)) -> F() r311: eqt(tuplenil(H1),int(N2)) -> F() r312: eqt(tuplenil(H1),cons(H2,T2)) -> F() r313: eqt(tuplenil(H1),tuple(H2,T2)) -> F() r314: eqt(tuplenil(H1),tuplenil(H2)) -> eqt(H1,H2) r315: element(int(s(|0|())),tuplenil(T1)) -> T1 r316: element(int(s(|0|())),tuple(T1,T2)) -> T1 r317: element(int(s(s(N1))),tuple(T1,T2)) -> element(int(s(N1)),T2) r318: record_new(lock()) -> tuple(mcrlrecord(),tuple(lock(),tuple(undefined(),tuple(nil(),tuplenil(nil()))))) r319: record_extract(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),resource()) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))) r320: record_update(tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(F2))))),lock(),pending(),NewF) -> tuple(mcrlrecord(),tuple(lock(),tuple(F0,tuple(F1,tuplenil(NewF))))) r321: record_updates(Record,Name,nil()) -> Record r322: record_updates(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) -> record_updates(record_update(Record,Name,Field,NewF),Name,Fields) r323: locker2_map_promote_pending(nil(),Pending) -> nil() r324: locker2_map_promote_pending(cons(Lock,Locks),Pending) -> cons(locker2_promote_pending(Lock,Pending),locker2_map_promote_pending(Locks,Pending)) r325: locker2_map_claim_lock(nil(),Resources,Client) -> nil() r326: locker2_map_claim_lock(cons(Lock,Locks),Resources,Client) -> cons(locker2_claim_lock(Lock,Resources,Client),locker2_map_claim_lock(Locks,Resources,Client)) r327: locker2_map_add_pending(nil(),Resources,Client) -> nil() r328: locker2_promote_pending(Lock,Client) -> case0(Client,Lock,record_extract(Lock,lock(),pending())) r329: case0(Client,Lock,cons(Client,Pendings)) -> record_updates(Lock,lock(),cons(tuple(excl(),tuplenil(Client)),cons(tuple(pending(),tuplenil(Pendings)),nil()))) r330: case0(Client,Lock,MCRLFree0) -> Lock r331: locker2_remove_pending(Lock,Client) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(subtract(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r332: locker2_add_pending(Lock,Resources,Client) -> case1(Client,Resources,Lock,member(record_extract(Lock,lock(),resource()),Resources)) r333: case1(Client,Resources,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(pending(),tuplenil(append(record_extract(Lock,lock(),pending()),cons(Client,nil())))),nil())) r334: case1(Client,Resources,Lock,false()) -> Lock r335: locker2_release_lock(Lock,Client) -> case2(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock(),excl()))) r336: case2(Client,Lock,true()) -> record_updates(Lock,lock(),cons(tuple(excllock(),excl()),nil())) r337: case4(Client,Lock,MCRLFree1) -> false() r338: locker2_obtainables(nil(),Client) -> true() r339: locker2_obtainables(cons(Lock,Locks),Client) -> case5(Client,Locks,Lock,member(Client,record_extract(Lock,lock(),pending()))) r340: case5(Client,Locks,Lock,true()) -> andt(locker2_obtainable(Lock,Client),locker2_obtainables(Locks,Client)) r341: case5(Client,Locks,Lock,false()) -> locker2_obtainables(Locks,Client) r342: locker2_check_available(Resource,nil()) -> false() r343: locker2_check_available(Resource,cons(Lock,Locks)) -> case6(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock(),resource()))) r344: case6(Locks,Lock,Resource,true()) -> andt(equal(record_extract(Lock,lock(),excl()),nil()),equal(record_extract(Lock,lock(),pending()),nil())) r345: case6(Locks,Lock,Resource,false()) -> locker2_check_available(Resource,Locks) r346: locker2_check_availables(nil(),Locks) -> true() r347: locker2_check_availables(cons(Resource,Resources),Locks) -> andt(locker2_check_available(Resource,Locks),locker2_check_availables(Resources,Locks)) r348: locker2_adduniq(nil(),List) -> List r349: append(cons(Head,Tail),List) -> cons(Head,append(Tail,List)) r350: subtract(List,nil()) -> List r351: subtract(List,cons(Head,Tail)) -> subtract(delete(Head,List),Tail) r352: delete(E,nil()) -> nil() r353: delete(E,cons(Head,Tail)) -> case8(Tail,Head,E,equal(E,Head)) r354: case8(Tail,Head,E,true()) -> Tail r355: case8(Tail,Head,E,false()) -> cons(Head,delete(E,Tail)) r356: gen_tag(Pid) -> tuple(Pid,tuplenil(tag())) r357: gen_modtageq(Client1,Client2) -> equal(Client1,Client2) r358: member(E,nil()) -> false() r359: member(E,cons(Head,Tail)) -> case9(Tail,Head,E,equal(E,Head)) r360: case9(Tail,Head,E,true()) -> true() r361: case9(Tail,Head,E,false()) -> member(E,Tail) r362: eqs(empty(),empty()) -> T() r363: eqs(empty(),stack(E2,S2)) -> F() r364: eqs(stack(E1,S1),empty()) -> F() r365: eqs(stack(E1,S1),stack(E2,S2)) -> and(eqt(E1,E2),eqs(S1,S2)) r366: pushs(E1,S1) -> stack(E1,S1) r367: pops(stack(E1,S1)) -> S1 r368: tops(stack(E1,S1)) -> E1 r369: istops(E1,empty()) -> F() r370: istops(E1,stack(E2,S1)) -> eqt(E1,E2) r371: eqc(nocalls(),nocalls()) -> T() r372: eqc(nocalls(),calls(E2,S2,CS2)) -> F() r373: eqc(calls(E1,S1,CS1),nocalls()) -> F() r374: eqc(calls(E1,S1,CS1),calls(E2,S2,CS2)) -> and(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) r375: push(E1,E2,nocalls()) -> calls(E1,stack(E2,empty()),nocalls()) r376: push(E1,E2,calls(E3,S1,CS1)) -> push1(E1,E2,E3,S1,CS1,eqt(E1,E3)) r377: push1(E1,E2,E3,S1,CS1,T()) -> calls(E3,pushs(E2,S1),CS1) The set of usable rules consists of r4, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r318, r321, r327, r334, r337, r338, r339, r342, r344, r348, r350, r353, r356, r359, r360, r362, r363, r364, r368, r369, r371, r372, r373 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: matrix interpretation with standard point-wise order: carrier: N^1 order: standard order interpretations: append#_A(x1,x2) = x1 cons_A(x1,x2) = x2 + 12 or_A(x1,x2) = 5 F_A() = 4 and_A(x1,x2) = 5 imp_A(x1,x2) = x2 + 7 T_A() = 6 not_A(x1) = 7 if_A(x1,x2,x3) = x2 + x3 + 1 eq_A(x1,x2) = 7 record_new_A(x1) = 2 lock_A() = 4 tuple_A(x1,x2) = 0 mcrlrecord_A() = 4 undefined_A() = 4 nil_A() = 3 tuplenil_A(x1) = x1 record_updates_A(x1,x2,x3) = x1 + x3 locker2_map_add_pending_A(x1,x2,x3) = x3 + 4 case1_A(x1,x2,x3,x4) = x1 + x3 + x4 + 19 false_A() = 1 case4_A(x1,x2,x3) = x3 + 2 locker2_obtainables_A(x1,x2) = x2 + 9 true_A() = 8 case5_A(x1,x2,x3,x4) = 2 member_A(x1,x2) = x2 + 2 record_extract_A(x1,x2,x3) = x1 + 26 pending_A() = 10 locker2_check_available_A(x1,x2) = x1 + x2 + 13 case6_A(x1,x2,x3,x4) = 11 andt_A(x1,x2) = x1 + x2 equal_A(x1,x2) = 1 excl_A() = 7 locker2_adduniq_A(x1,x2) = x2 + 1 subtract_A(x1,x2) = x1 + x2 + 3 delete_A(x1,x2) = x1 + x2 + 10 case8_A(x1,x2,x3,x4) = 11 gen_tag_A(x1) = 8 tag_A() = 7 case9_A(x1,x2,x3,x4) = 9 eqs_A(x1,x2) = 7 empty_A() = 7 stack_A(x1,x2) = x1 + 10 tops_A(x1) = x1 istops_A(x1,x2) = x2 eqc_A(x1,x2) = 8 nocalls_A() = 8 calls_A(x1,x2,x3) = x1 + x2 + x3 + 9 base order 2: precedence: eqc > and > stack > eqs = calls > nocalls > or = not = eq = undefined = empty = istops > F = case4 = delete > tuplenil = false > member > record_updates = locker2_obtainables = subtract = case9 > cons > mcrlrecord > lock > record_new = locker2_map_add_pending > nil > case1 = pending = case6 > record_extract = andt > case5 > equal > locker2_check_available > true > imp = excl > T > append# = if = tuple = locker2_adduniq = case8 = tops > gen_tag > tag partial status: pi(append#) = [1] pi(cons) = [2] pi(or) = [] pi(F) = [] pi(and) = [] pi(imp) = [2] pi(T) = [] pi(not) = [] pi(if) = [2, 3] pi(eq) = [] pi(record_new) = [] pi(lock) = [] pi(tuple) = [] pi(mcrlrecord) = [] pi(undefined) = [] pi(nil) = [] pi(tuplenil) = [1] pi(record_updates) = [3] pi(locker2_map_add_pending) = [3] pi(case1) = [4] pi(false) = [] pi(case4) = [3] pi(locker2_obtainables) = [2] pi(true) = [] pi(case5) = [] pi(member) = [2] pi(record_extract) = [1] pi(pending) = [] pi(locker2_check_available) = [2] pi(case6) = [] pi(andt) = [] pi(equal) = [] pi(excl) = [] pi(locker2_adduniq) = [2] pi(subtract) = [] pi(delete) = [1] pi(case8) = [] pi(gen_tag) = [] pi(tag) = [] pi(case9) = [] pi(eqs) = [] pi(empty) = [] pi(stack) = [1] pi(tops) = [1] pi(istops) = [2] pi(eqc) = [] pi(nocalls) = [] pi(calls) = [] The following rules are removed: p1 Then no dependency pair remains.