The rewrite relation of the following TRS is considered.
There are 377 ruless (increase limit for explicit display).
eqt#(pid(N1),pid(N2)) | → | eqt#(N1,N2) | (378) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(T1,T2) | (379) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(H1,H2) | (380) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | and#(eqt(H1,H2),eqt(T1,T2)) | (381) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(T1,T2) | (382) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(H1,H2) | (383) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | and#(eqt(H1,H2),eqt(T1,T2)) | (384) |
eqt#(tuplenil(H1),tuplenil(H2)) | → | eqt#(H1,H2) | (385) |
element#(int(s(s(N1))),tuple(T1,T2)) | → | element#(int(s(N1)),T2) | (386) |
record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) | → | record_update#(Record,Name,Field,NewF) | (387) |
record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) | → | record_updates#(record_update(Record,Name,Field,NewF),Name,Fields) | (388) |
locker2_map_promote_pending#(cons(Lock,Locks),Pending) | → | locker2_map_promote_pending#(Locks,Pending) | (389) |
locker2_map_promote_pending#(cons(Lock,Locks),Pending) | → | locker2_promote_pending#(Lock,Pending) | (390) |
locker2_map_claim_lock#(cons(Lock,Locks),Resources,Client) | → | locker2_map_claim_lock#(Locks,Resources,Client) | (391) |
locker2_promote_pending#(Lock,Client) | → | record_extract#(Lock,lock,pending) | (392) |
locker2_promote_pending#(Lock,Client) | → | case0#(Client,Lock,record_extract(Lock,lock,pending)) | (393) |
case0#(Client,Lock,cons(Client,Pendings)) | → | record_updates#(Lock,lock,cons(tuple(excl,tuplenil(Client)),cons(tuple(pending,tuplenil(Pendings)),nil))) | (394) |
locker2_remove_pending#(Lock,Client) | → | record_extract#(Lock,lock,pending) | (395) |
locker2_remove_pending#(Lock,Client) | → | subtract#(record_extract(Lock,lock,pending),cons(Client,nil)) | (396) |
locker2_remove_pending#(Lock,Client) | → | record_updates#(Lock,lock,cons(tuple(pending,tuplenil(subtract(record_extract(Lock,lock,pending),cons(Client,nil)))),nil)) | (397) |
locker2_add_pending#(Lock,Resources,Client) | → | record_extract#(Lock,lock,resource) | (398) |
locker2_add_pending#(Lock,Resources,Client) | → | member#(record_extract(Lock,lock,resource),Resources) | (399) |
locker2_add_pending#(Lock,Resources,Client) | → | case1#(Client,Resources,Lock,member(record_extract(Lock,lock,resource),Resources)) | (400) |
case1#(Client,Resources,Lock,true) | → | record_extract#(Lock,lock,pending) | (401) |
case1#(Client,Resources,Lock,true) | → | append#(record_extract(Lock,lock,pending),cons(Client,nil)) | (402) |
case1#(Client,Resources,Lock,true) | → | record_updates#(Lock,lock,cons(tuple(pending,tuplenil(append(record_extract(Lock,lock,pending),cons(Client,nil)))),nil)) | (403) |
locker2_release_lock#(Lock,Client) | → | record_extract#(Lock,lock,excl) | (404) |
locker2_release_lock#(Lock,Client) | → | gen_modtageq#(Client,record_extract(Lock,lock,excl)) | (405) |
locker2_release_lock#(Lock,Client) | → | case2#(Client,Lock,gen_modtageq(Client,record_extract(Lock,lock,excl))) | (406) |
case2#(Client,Lock,true) | → | record_updates#(Lock,lock,cons(tuple(excllock,excl),nil)) | (407) |
locker2_obtainables#(cons(Lock,Locks),Client) | → | record_extract#(Lock,lock,pending) | (408) |
locker2_obtainables#(cons(Lock,Locks),Client) | → | member#(Client,record_extract(Lock,lock,pending)) | (409) |
locker2_obtainables#(cons(Lock,Locks),Client) | → | case5#(Client,Locks,Lock,member(Client,record_extract(Lock,lock,pending))) | (410) |
case5#(Client,Locks,Lock,true) | → | locker2_obtainables#(Locks,Client) | (411) |
case5#(Client,Locks,Lock,false) | → | locker2_obtainables#(Locks,Client) | (412) |
locker2_check_available#(Resource,cons(Lock,Locks)) | → | record_extract#(Lock,lock,resource) | (413) |
locker2_check_available#(Resource,cons(Lock,Locks)) | → | case6#(Locks,Lock,Resource,equal(Resource,record_extract(Lock,lock,resource))) | (414) |
case6#(Locks,Lock,Resource,true) | → | record_extract#(Lock,lock,pending) | (415) |
case6#(Locks,Lock,Resource,true) | → | record_extract#(Lock,lock,excl) | (416) |
case6#(Locks,Lock,Resource,false) | → | locker2_check_available#(Resource,Locks) | (417) |
locker2_check_availables#(cons(Resource,Resources),Locks) | → | locker2_check_availables#(Resources,Locks) | (418) |
locker2_check_availables#(cons(Resource,Resources),Locks) | → | locker2_check_available#(Resource,Locks) | (419) |
append#(cons(Head,Tail),List) | → | append#(Tail,List) | (420) |
subtract#(List,cons(Head,Tail)) | → | delete#(Head,List) | (421) |
subtract#(List,cons(Head,Tail)) | → | subtract#(delete(Head,List),Tail) | (422) |
delete#(E,cons(Head,Tail)) | → | case8#(Tail,Head,E,equal(E,Head)) | (423) |
case8#(Tail,Head,E,false) | → | delete#(E,Tail) | (424) |
member#(E,cons(Head,Tail)) | → | case9#(Tail,Head,E,equal(E,Head)) | (425) |
case9#(Tail,Head,E,false) | → | member#(E,Tail) | (426) |
eqs#(stack(E1,S1),stack(E2,S2)) | → | eqs#(S1,S2) | (427) |
eqs#(stack(E1,S1),stack(E2,S2)) | → | eqt#(E1,E2) | (428) |
eqs#(stack(E1,S1),stack(E2,S2)) | → | and#(eqt(E1,E2),eqs(S1,S2)) | (429) |
istops#(E1,stack(E2,S1)) | → | eqt#(E1,E2) | (430) |
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | eqc#(CS1,CS2) | (431) |
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | eqs#(S1,S2) | (432) |
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | and#(eqs(S1,S2),eqc(CS1,CS2)) | (433) |
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | eqt#(E1,E2) | (434) |
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | and#(eqt(E1,E2),and(eqs(S1,S2),eqc(CS1,CS2))) | (435) |
push#(E1,E2,calls(E3,S1,CS1)) | → | eqt#(E1,E3) | (436) |
push#(E1,E2,calls(E3,S1,CS1)) | → | push1#(E1,E2,E3,S1,CS1,eqt(E1,E3)) | (437) |
push1#(E1,E2,E3,S1,CS1,T) | → | pushs#(E2,S1) | (438) |
The dependency pairs are split into 10 components.
element#(int(s(s(N1))),tuple(T1,T2)) | → | element#(int(s(N1)),T2) | (386) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
element#(int(s(s(N1))),tuple(T1,T2)) | → | element#(int(s(N1)),T2) | (386) |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
locker2_map_promote_pending#(cons(Lock,Locks),Pending) | → | locker2_map_promote_pending#(Locks,Pending) | (389) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
locker2_map_promote_pending#(cons(Lock,Locks),Pending) | → | locker2_map_promote_pending#(Locks,Pending) | (389) |
2 | ≥ | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
locker2_map_claim_lock#(cons(Lock,Locks),Resources,Client) | → | locker2_map_claim_lock#(Locks,Resources,Client) | (391) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
locker2_map_claim_lock#(cons(Lock,Locks),Resources,Client) | → | locker2_map_claim_lock#(Locks,Resources,Client) | (391) |
3 | ≥ | 3 | |
2 | ≥ | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
subtract#(List,cons(Head,Tail)) | → | subtract#(delete(Head,List),Tail) | (422) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
subtract#(List,cons(Head,Tail)) | → | subtract#(delete(Head,List),Tail) | (422) |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) | → | record_updates#(record_update(Record,Name,Field,NewF),Name,Fields) | (388) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
record_updates#(Record,Name,cons(tuple(Field,tuplenil(NewF)),Fields)) | → | record_updates#(record_update(Record,Name,Field,NewF),Name,Fields) | (388) |
3 | > | 3 | |
2 | ≥ | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
append#(cons(Head,Tail),List) | → | append#(Tail,List) | (420) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
append#(cons(Head,Tail),List) | → | append#(Tail,List) | (420) |
2 | ≥ | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
locker2_check_availables#(cons(Resource,Resources),Locks) | → | locker2_check_availables#(Resources,Locks) | (418) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
locker2_check_availables#(cons(Resource,Resources),Locks) | → | locker2_check_availables#(Resources,Locks) | (418) |
2 | ≥ | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | eqc#(CS1,CS2) | (431) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
eqc#(calls(E1,S1,CS1),calls(E2,S2,CS2)) | → | eqc#(CS1,CS2) | (431) |
2 | > | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
eqs#(stack(E1,S1),stack(E2,S2)) | → | eqs#(S1,S2) | (427) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
eqs#(stack(E1,S1),stack(E2,S2)) | → | eqs#(S1,S2) | (427) |
2 | > | 2 | |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
eqt#(tuplenil(H1),tuplenil(H2)) | → | eqt#(H1,H2) | (385) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(H1,H2) | (383) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(T1,T2) | (382) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(H1,H2) | (380) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(T1,T2) | (379) |
eqt#(pid(N1),pid(N2)) | → | eqt#(N1,N2) | (378) |
π(eqt#) | = | 1 |
eqt#(tuplenil(H1),tuplenil(H2)) | → | eqt#(H1,H2) | (385) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(H1,H2) | (383) |
eqt#(tuple(H1,T1),tuple(H2,T2)) | → | eqt#(T1,T2) | (382) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(H1,H2) | (380) |
eqt#(cons(H1,T1),cons(H2,T2)) | → | eqt#(T1,T2) | (379) |
eqt#(pid(N1),pid(N2)) | → | eqt#(N1,N2) | (378) |
There are no pairs anymore.