YES(O(1), O(n^1)) 63.97/16.99 YES(O(1), O(n^1)) 64.96/17.18 64.96/17.18 64.96/17.18 64.96/17.18 64.96/17.18 64.96/17.18 Runtime Complexity (innermost) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml.xml 64.96/17.18 64.96/17.18 64.96/17.18
64.96/17.18 64.96/17.18 64.96/17.18
64.96/17.18
64.96/17.18

(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

or(T, T) → T 64.96/17.18
or(F, T) → T 64.96/17.18
or(T, F) → T 64.96/17.18
or(F, F) → F 64.96/17.18
and(T, B) → B 64.96/17.18
and(B, T) → B 64.96/17.18
and(F, B) → F 64.96/17.18
and(B, F) → F 64.96/17.18
imp(T, B) → B 64.96/17.18
imp(F, B) → T 64.96/17.18
not(T) → F 64.96/17.18
not(F) → T 64.96/17.18
if(T, B1, B2) → B1 64.96/17.18
if(F, B1, B2) → B2 64.96/17.18
eq(T, T) → T 64.96/17.18
eq(F, F) → T 64.96/17.18
eq(T, F) → F 64.96/17.18
eq(F, T) → F 64.96/17.18
eqt(nil, undefined) → F 64.96/17.18
eqt(nil, pid(N2)) → F 64.96/17.18
eqt(nil, int(N2)) → F 64.96/17.18
eqt(nil, cons(H2, T2)) → F 64.96/17.18
eqt(nil, tuple(H2, T2)) → F 64.96/17.18
eqt(nil, tuplenil(H2)) → F 64.96/17.18
eqt(a, nil) → F 64.96/17.18
eqt(a, a) → T 64.96/17.18
eqt(a, excl) → F 64.96/17.18
eqt(a, false) → F 64.96/17.18
eqt(a, lock) → F 64.96/17.18
eqt(a, locker) → F 64.96/17.18
eqt(a, mcrlrecord) → F 64.96/17.18
eqt(a, ok) → F 64.96/17.18
eqt(a, pending) → F 64.96/17.18
eqt(a, release) → F 64.96/17.18
eqt(a, request) → F 64.96/17.18
eqt(a, resource) → F 64.96/17.18
eqt(a, tag) → F 64.96/17.18
eqt(a, true) → F 64.96/17.18
eqt(a, undefined) → F 64.96/17.18
eqt(a, pid(N2)) → F 64.96/17.18
eqt(a, int(N2)) → F 64.96/17.18
eqt(a, cons(H2, T2)) → F 64.96/17.18
eqt(a, tuple(H2, T2)) → F 64.96/17.18
eqt(a, tuplenil(H2)) → F 64.96/17.18
eqt(excl, nil) → F 64.96/17.18
eqt(excl, a) → F 64.96/17.18
eqt(excl, excl) → T 64.96/17.18
eqt(excl, false) → F 64.96/17.18
eqt(excl, lock) → F 64.96/17.18
eqt(excl, locker) → F 64.96/17.18
eqt(excl, mcrlrecord) → F 64.96/17.18
eqt(excl, ok) → F 64.96/17.18
eqt(excl, pending) → F 64.96/17.18
eqt(excl, release) → F 64.96/17.18
eqt(excl, request) → F 64.96/17.18
eqt(excl, resource) → F 64.96/17.18
eqt(excl, tag) → F 64.96/17.18
eqt(excl, true) → F 64.96/17.18
eqt(excl, undefined) → F 64.96/17.18
eqt(excl, pid(N2)) → F 64.96/17.18
eqt(excl, eqt(false, int(N2))) → F 64.96/17.18
eqt(false, cons(H2, T2)) → F 64.96/17.18
eqt(false, tuple(H2, T2)) → F 64.96/17.18
eqt(false, tuplenil(H2)) → F 64.96/17.18
eqt(lock, nil) → F 64.96/17.18
eqt(lock, a) → F 64.96/17.18
eqt(lock, excl) → F 64.96/17.18
eqt(lock, false) → F 64.96/17.18
eqt(lock, lock) → T 64.96/17.18
eqt(lock, locker) → F 64.96/17.18
eqt(lock, mcrlrecord) → F 64.96/17.18
eqt(lock, ok) → F 64.96/17.18
eqt(lock, pending) → F 64.96/17.18
eqt(lock, release) → F 64.96/17.18
eqt(lock, request) → F 64.96/17.18
eqt(lock, resource) → F 64.96/17.18
eqt(lock, tag) → F 64.96/17.18
eqt(lock, true) → F 64.96/17.18
eqt(lock, undefined) → F 64.96/17.18
eqt(lock, pid(N2)) → F 64.96/17.18
eqt(lock, int(N2)) → F 64.96/17.18
eqt(lock, cons(H2, T2)) → F 64.96/17.18
eqt(lock, tuple(H2, T2)) → F 64.96/17.18
eqt(lock, tuplenil(H2)) → F 64.96/17.18
eqt(locker, nil) → F 64.96/17.18
eqt(locker, a) → F 64.96/17.18
eqt(locker, excl) → F 64.96/17.18
eqt(locker, false) → F 64.96/17.18
eqt(locker, lock) → F 64.96/17.18
eqt(locker, locker) → T 64.96/17.18
eqt(locker, mcrlrecord) → F 64.96/17.18
eqt(locker, ok) → F 64.96/17.18
eqt(locker, pending) → F 64.96/17.18
eqt(locker, release) → F 64.96/17.19
eqt(locker, request) → F 64.96/17.19
eqt(locker, resource) → F 64.96/17.19
eqt(locker, tag) → F 64.96/17.19
eqt(locker, true) → F 64.96/17.19
eqt(locker, undefined) → F 64.96/17.19
eqt(locker, pid(N2)) → F 64.96/17.19
eqt(locker, int(N2)) → F 64.96/17.19
eqt(locker, cons(H2, T2)) → F 64.96/17.19
eqt(locker, tuple(H2, T2)) → F 64.96/17.19
eqt(locker, tuplenil(H2)) → F 64.96/17.19
eqt(mcrlrecord, nil) → F 64.96/17.19
eqt(mcrlrecord, a) → F 64.96/17.19
eqt(mcrlrecord, excl) → F 64.96/17.19
eqt(mcrlrecord, false) → F 64.96/17.19
eqt(mcrlrecord, lock) → F 64.96/17.19
eqt(mcrlrecord, locker) → F 64.96/17.19
eqt(mcrlrecord, mcrlrecord) → T 64.96/17.19
eqt(mcrlrecord, ok) → F 64.96/17.19
eqt(mcrlrecord, pending) → F 64.96/17.19
eqt(mcrlrecord, release) → F 64.96/17.19
eqt(mcrlrecord, request) → F 64.96/17.19
eqt(mcrlrecord, resource) → F 64.96/17.19
eqt(ok, resource) → F 64.96/17.19
eqt(ok, tag) → F 64.96/17.19
eqt(ok, true) → F 64.96/17.19
eqt(ok, undefined) → F 64.96/17.19
eqt(ok, pid(N2)) → F 64.96/17.19
eqt(ok, int(N2)) → F 64.96/17.19
eqt(ok, cons(H2, T2)) → F 64.96/17.19
eqt(ok, tuple(H2, T2)) → F 64.96/17.19
eqt(ok, tuplenil(H2)) → F 64.96/17.19
eqt(pending, nil) → F 64.96/17.19
eqt(pending, a) → F 64.96/17.19
eqt(pending, excl) → F 64.96/17.19
eqt(pending, false) → F 64.96/17.19
eqt(pending, lock) → F 64.96/17.19
eqt(pending, locker) → F 64.96/17.19
eqt(pending, mcrlrecord) → F 64.96/17.19
eqt(pending, ok) → F 64.96/17.19
eqt(pending, pending) → T 64.96/17.19
eqt(pending, release) → F 64.96/17.19
eqt(pending, request) → F 64.96/17.19
eqt(pending, resource) → F 64.96/17.19
eqt(pending, tag) → F 64.96/17.19
eqt(pending, true) → F 64.96/17.19
eqt(pending, undefined) → F 64.96/17.19
eqt(pending, pid(N2)) → F 64.96/17.19
eqt(pending, int(N2)) → F 64.96/17.19
eqt(pending, cons(H2, T2)) → F 64.96/17.19
eqt(pending, tuple(H2, T2)) → F 64.96/17.19
eqt(pending, tuplenil(H2)) → F 64.96/17.19
eqt(release, nil) → F 64.96/17.19
eqt(release, a) → F 64.96/17.19
eqt(release, excl) → F 64.96/17.19
eqt(release, false) → F 64.96/17.19
eqt(release, lock) → F 64.96/17.19
eqt(release, locker) → F 64.96/17.19
eqt(release, mcrlrecord) → F 64.96/17.19
eqt(release, ok) → F 64.96/17.19
eqt(request, mcrlrecord) → F 64.96/17.19
eqt(request, ok) → F 64.96/17.19
eqt(request, pending) → F 64.96/17.19
eqt(request, release) → F 64.96/17.19
eqt(request, request) → T 64.96/17.19
eqt(request, resource) → F 64.96/17.19
eqt(request, tag) → F 64.96/17.19
eqt(request, true) → F 64.96/17.19
eqt(request, undefined) → F 64.96/17.19
eqt(request, pid(N2)) → F 64.96/17.19
eqt(request, int(N2)) → F 64.96/17.19
eqt(request, cons(H2, T2)) → F 64.96/17.19
eqt(request, tuple(H2, T2)) → F 64.96/17.19
eqt(request, tuplenil(H2)) → F 64.96/17.19
eqt(resource, nil) → F 64.96/17.19
eqt(resource, a) → F 64.96/17.19
eqt(resource, excl) → F 64.96/17.19
eqt(resource, false) → F 64.96/17.19
eqt(resource, lock) → F 64.96/17.19
eqt(resource, locker) → F 64.96/17.19
eqt(resource, mcrlrecord) → F 64.96/17.19
eqt(resource, ok) → F 64.96/17.19
eqt(resource, pending) → F 64.96/17.19
eqt(resource, release) → F 64.96/17.19
eqt(resource, request) → F 64.96/17.19
eqt(resource, resource) → T 64.96/17.19
eqt(resource, tag) → F 64.96/17.19
eqt(resource, true) → F 64.96/17.19
eqt(resource, undefined) → F 64.96/17.19
eqt(resource, pid(N2)) → F 64.96/17.19
eqt(resource, int(N2)) → F 64.96/17.19
eqt(resource, cons(H2, T2)) → F 64.96/17.19
eqt(resource, tuple(H2, T2)) → F 64.96/17.19
eqt(resource, tuplenil(H2)) → F 64.96/17.19
eqt(tag, nil) → F 64.96/17.19
eqt(tag, a) → F 64.96/17.19
eqt(tag, excl) → F 64.96/17.19
eqt(tag, false) → F 64.96/17.19
eqt(tag, lock) → F 64.96/17.19
eqt(tag, locker) → F 64.96/17.19
eqt(tag, mcrlrecord) → F 64.96/17.19
eqt(tag, ok) → F 64.96/17.19
eqt(tag, pending) → F 64.96/17.19
eqt(tag, release) → F 64.96/17.19
eqt(tag, request) → F 64.96/17.19
eqt(tag, resource) → F 64.96/17.19
eqt(tag, tag) → T 64.96/17.19
eqt(tag, true) → F 64.96/17.19
eqt(tag, undefined) → F 64.96/17.19
eqt(tag, pid(N2)) → F 64.96/17.19
eqt(tag, int(N2)) → F 64.96/17.19
eqt(tag, cons(H2, T2)) → F 64.96/17.19
eqt(tag, tuple(H2, T2)) → F 64.96/17.19
eqt(tag, tuplenil(H2)) → F 64.96/17.19
eqt(true, nil) → F 64.96/17.19
eqt(true, a) → F 64.96/17.19
eqt(true, excl) → F 64.96/17.19
eqt(true, false) → F 64.96/17.19
eqt(true, lock) → F 64.96/17.19
eqt(true, locker) → F 64.96/17.19
eqt(true, mcrlrecord) → F 64.96/17.19
eqt(true, ok) → F 64.96/17.19
eqt(true, pending) → F 64.96/17.19
eqt(true, release) → F 64.96/17.19
eqt(true, request) → F 64.96/17.19
eqt(true, resource) → F 64.96/17.19
eqt(true, tag) → F 64.96/17.19
eqt(true, true) → T 64.96/17.19
eqt(true, undefined) → F 64.96/17.19
eqt(true, pid(N2)) → F 64.96/17.19
eqt(true, int(N2)) → F 64.96/17.19
eqt(true, cons(H2, T2)) → F 64.96/17.19
eqt(true, tuple(H2, T2)) → F 64.96/17.19
eqt(true, tuplenil(H2)) → F 64.96/17.19
eqt(undefined, nil) → F 64.96/17.19
eqt(undefined, a) → F 64.96/17.19
eqt(undefined, tuplenil(H2)) → F 64.96/17.19
eqt(pid(N1), nil) → F 64.96/17.19
eqt(pid(N1), a) → F 64.96/17.19
eqt(pid(N1), excl) → F 64.96/17.19
eqt(pid(N1), false) → F 64.96/17.19
eqt(pid(N1), lock) → F 64.96/17.19
eqt(pid(N1), locker) → F 64.96/17.19
eqt(pid(N1), mcrlrecord) → F 64.96/17.19
eqt(pid(N1), ok) → F 64.96/17.19
eqt(pid(N1), pending) → F 64.96/17.19
eqt(pid(N1), release) → F 64.96/17.19
eqt(pid(N1), request) → F 64.96/17.19
eqt(pid(N1), resource) → F 64.96/17.19
eqt(pid(N1), tag) → F 64.96/17.19
eqt(pid(N1), true) → F 64.96/17.19
eqt(pid(N1), undefined) → F 64.96/17.19
eqt(pid(N1), pid(N2)) → eqt(N1, N2) 64.96/17.19
eqt(pid(N1), int(N2)) → F 64.96/17.19
eqt(pid(N1), cons(H2, T2)) → F 64.96/17.19
eqt(pid(N1), tuple(H2, T2)) → F 64.96/17.19
eqt(pid(N1), tuplenil(H2)) → F 64.96/17.19
eqt(int(N1), nil) → F 64.96/17.19
eqt(int(N1), a) → F 64.96/17.19
eqt(int(N1), excl) → F 64.96/17.19
eqt(int(N1), false) → F 64.96/17.19
eqt(int(N1), lock) → F 64.96/17.19
eqt(int(N1), locker) → F 64.96/17.19
eqt(int(N1), mcrlrecord) → F 64.96/17.19
eqt(int(N1), ok) → F 64.96/17.19
eqt(int(N1), pending) → F 64.96/17.19
eqt(int(N1), release) → F 64.96/17.19
eqt(int(N1), request) → F 64.96/17.19
eqt(int(N1), resource) → F 64.96/17.19
eqt(int(N1), tag) → F 64.96/17.19
eqt(int(N1), true) → F 64.96/17.19
eqt(int(N1), undefined) → F 64.96/17.19
eqt(cons(H1, T1), resource) → F 64.96/17.19
eqt(cons(H1, T1), tag) → F 64.96/17.19
eqt(cons(H1, T1), true) → F 64.96/17.19
eqt(cons(H1, T1), undefined) → F 64.96/17.19
eqt(cons(H1, T1), pid(N2)) → F 64.96/17.19
eqt(cons(H1, T1), int(N2)) → F 64.96/17.19
eqt(cons(H1, T1), cons(H2, T2)) → and(eqt(H1, H2), eqt(T1, T2)) 64.96/17.19
eqt(cons(H1, T1), tuple(H2, T2)) → F 64.96/17.19
eqt(cons(H1, T1), tuplenil(H2)) → F 64.96/17.19
eqt(tuple(H1, T1), nil) → F 64.96/17.19
eqt(tuple(H1, T1), a) → F 64.96/17.19
eqt(tuple(H1, T1), excl) → F 64.96/17.19
eqt(tuple(H1, T1), false) → F 64.96/17.19
eqt(tuple(H1, T1), lock) → F 64.96/17.19
eqt(tuple(H1, T1), locker) → F 64.96/17.19
eqt(tuple(H1, T1), mcrlrecord) → F 64.96/17.19
eqt(tuple(H1, T1), ok) → F 64.96/17.19
eqt(tuple(H1, T1), pending) → F 64.96/17.19
eqt(tuple(H1, T1), release) → F 64.96/17.19
eqt(tuple(H1, T1), request) → F 64.96/17.19
eqt(tuple(H1, T1), resource) → F 64.96/17.19
eqt(tuple(H1, T1), tag) → F 64.96/17.19
eqt(tuple(H1, T1), true) → F 64.96/17.19
eqt(tuple(H1, T1), undefined) → F 64.96/17.19
eqt(tuple(H1, T1), pid(N2)) → F 64.96/17.19
eqt(tuple(H1, T1), int(N2)) → F 64.96/17.19
eqt(tuple(H1, T1), cons(H2, T2)) → F 64.96/17.19
eqt(tuple(H1, T1), tuple(H2, T2)) → and(eqt(H1, H2), eqt(T1, T2)) 64.96/17.19
eqt(tuple(H1, T1), tuplenil(H2)) → F 64.96/17.19
eqt(tuplenil(H1), nil) → F 64.96/17.19
eqt(tuplenil(H1), a) → F 64.96/17.19
eqt(tuplenil(H1), excl) → F 64.96/17.19
eqt(tuplenil(H1), false) → F 64.96/17.19
eqt(tuplenil(H1), lock) → F 64.96/17.19
eqt(tuplenil(H1), locker) → F 64.96/17.19
eqt(tuplenil(H1), mcrlrecord) → F 64.96/17.19
eqt(tuplenil(H1), ok) → F 64.96/17.19
eqt(tuplenil(H1), pending) → F 64.96/17.19
eqt(tuplenil(H1), release) → F 64.96/17.19
eqt(tuplenil(H1), request) → F 64.96/17.19
eqt(tuplenil(H1), resource) → F 64.96/17.19
eqt(tuplenil(H1), tag) → F 64.96/17.19
eqt(tuplenil(H1), true) → F 64.96/17.19
eqt(tuplenil(H1), undefined) → F 64.96/17.19
eqt(tuplenil(H1), pid(N2)) → F 64.96/17.19
eqt(tuplenil(H1), int(N2)) → F 64.96/17.19
eqt(tuplenil(H1), cons(H2, T2)) → F 64.96/17.19
eqt(tuplenil(H1), tuple(H2, T2)) → F 64.96/17.19
eqt(tuplenil(H1), tuplenil(H2)) → eqt(H1, H2) 64.96/17.19
element(int(s(0)), tuplenil(T1)) → T1 64.96/17.19
element(int(s(0)), tuple(T1, T2)) → T1 64.96/17.19
element(int(s(s(N1))), tuple(T1, T2)) → element(int(s(N1)), T2) 64.96/17.19
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 64.96/17.19
record_extract(tuple(mcrlrecord, tuple(lock, tuple(F0, tuple(F1, tuplenil(F2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(F0, tuple(F1, tuplenil(F2))))) 64.96/17.19
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))))) 64.96/17.19
record_updates(Record, Name, nil) → Record 64.96/17.19
record_updates(Record, Name, cons(tuple(Field, tuplenil(NewF)), Fields)) → record_updates(record_update(Record, Name, Field, NewF), Name, Fields) 64.96/17.19
locker2_map_promote_pending(nil, Pending) → nil 64.96/17.19
locker2_map_promote_pending(cons(Lock, Locks), Pending) → cons(locker2_promote_pending(Lock, Pending), locker2_map_promote_pending(Locks, Pending)) 64.96/17.19
locker2_map_claim_lock(nil, Resources, Client) → nil 64.96/17.19
locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) → cons(locker2_claim_lock(Lock, Resources, Client), locker2_map_claim_lock(Locks, Resources, Client)) 64.96/17.19
locker2_map_add_pending(nil, Resources, Client) → nil 64.96/17.19
locker2_promote_pending(Lock, Client) → case0(Client, Lock, record_extract(Lock, lock, pending)) 64.96/17.19
case0(Client, Lock, cons(Client, Pendings)) → record_updates(Lock, lock, cons(tuple(excl, tuplenil(Client)), cons(tuple(pending, tuplenil(Pendings)), nil))) 64.96/17.19
case0(Client, Lock, MCRLFree0) → Lock 64.96/17.19
locker2_remove_pending(Lock, Client) → record_updates(Lock, lock, cons(tuple(pending, tuplenil(subtract(record_extract(Lock, lock, pending), cons(Client, nil)))), nil)) 64.96/17.19
locker2_add_pending(Lock, Resources, Client) → case1(Client, Resources, Lock, member(record_extract(Lock, lock, resource), Resources)) 64.96/17.19
case1(Client, Resources, Lock, true) → record_updates(Lock, lock, cons(tuple(pending, tuplenil(append(record_extract(Lock, lock, pending), cons(Client, nil)))), nil)) 64.96/17.19
case1(Client, Resources, Lock, false) → Lock 64.96/17.19
locker2_release_lock(Lock, Client) → case2(Client, Lock, gen_modtageq(Client, record_extract(Lock, lock, excl))) 64.96/17.19
case2(Client, Lock, true) → record_updates(Lock, lock, cons(tuple(excllock, excl), nil)) 64.96/17.19
case4(Client, Lock, MCRLFree1) → false 64.96/17.19
locker2_obtainables(nil, Client) → true 64.96/17.19
locker2_obtainables(cons(Lock, Locks), Client) → case5(Client, Locks, Lock, member(Client, record_extract(Lock, lock, pending))) 64.96/17.19
case5(Client, Locks, Lock, true) → andt(locker2_obtainable(Lock, Client), locker2_obtainables(Locks, Client)) 64.96/17.19
case5(Client, Locks, Lock, false) → locker2_obtainables(Locks, Client) 64.96/17.19
locker2_check_available(Resource, nil) → false 64.96/17.19
locker2_check_available(Resource, cons(Lock, Locks)) → case6(Locks, Lock, Resource, equal(Resource, record_extract(Lock, lock, resource))) 64.96/17.19
case6(Locks, Lock, Resource, true) → andt(equal(record_extract(Lock, lock, excl), nil), equal(record_extract(Lock, lock, pending), nil)) 64.96/17.19
case6(Locks, Lock, Resource, false) → locker2_check_available(Resource, Locks) 64.96/17.19
locker2_check_availables(nil, Locks) → true 64.96/17.19
locker2_check_availables(cons(Resource, Resources), Locks) → andt(locker2_check_available(Resource, Locks), locker2_check_availables(Resources, Locks)) 64.96/17.19
locker2_adduniq(nil, List) → List 64.96/17.19
append(cons(Head, Tail), List) → cons(Head, append(Tail, List)) 65.36/17.28
subtract(List, nil) → List 65.36/17.28
subtract(List, cons(Head, Tail)) → subtract(delete(Head, List), Tail) 65.36/17.28
delete(E, nil) → nil 65.36/17.28
delete(E, cons(Head, Tail)) → case8(Tail, Head, E, equal(E, Head)) 65.36/17.28
case8(Tail, Head, E, true) → Tail 65.36/17.28
case8(Tail, Head, E, false) → cons(Head, delete(E, Tail)) 65.36/17.28
gen_tag(Pid) → tuple(Pid, tuplenil(tag)) 65.36/17.28
gen_modtageq(Client1, Client2) → equal(Client1, Client2) 65.36/17.28
member(E, nil) → false 65.36/17.28
member(E, cons(Head, Tail)) → case9(Tail, Head, E, equal(E, Head)) 65.36/17.28
case9(Tail, Head, E, true) → true 65.36/17.28
case9(Tail, Head, E, false) → member(E, Tail) 65.36/17.28
eqs(empty, empty) → T 65.36/17.28
eqs(empty, stack(E2, S2)) → F 65.36/17.28
eqs(stack(E1, S1), empty) → F 65.36/17.28
eqs(stack(E1, S1), stack(E2, S2)) → and(eqt(E1, E2), eqs(S1, S2)) 65.36/17.28
pushs(E1, S1) → stack(E1, S1) 65.36/17.28
pops(stack(E1, S1)) → S1 65.36/17.28
tops(stack(E1, S1)) → E1 65.36/17.28
istops(E1, empty) → F 65.36/17.28
istops(E1, stack(E2, S1)) → eqt(E1, E2) 65.36/17.28
eqc(nocalls, nocalls) → T 65.36/17.28
eqc(nocalls, calls(E2, S2, CS2)) → F 65.36/17.28
eqc(calls(E1, S1, CS1), nocalls) → F 65.36/17.28
eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) → and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 65.36/17.28
push(E1, E2, nocalls) → calls(E1, stack(E2, empty), nocalls) 65.36/17.28
push(E1, E2, calls(E3, S1, CS1)) → push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 65.36/17.28
push1(E1, E2, E3, S1, CS1, T) → calls(E3, pushs(E2, S1), CS1)

Rewrite Strategy: INNERMOST
65.36/17.28
65.36/17.28

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT
65.36/17.28
65.36/17.28

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.36/17.28
or(F, T) → T 65.36/17.28
or(T, F) → T 65.36/17.28
or(F, F) → F 65.36/17.28
and(T, z0) → z0 65.36/17.28
and(z0, T) → z0 65.36/17.28
and(F, z0) → F 65.36/17.28
and(z0, F) → F 65.36/17.28
imp(T, z0) → z0 65.36/17.28
imp(F, z0) → T 65.36/17.28
not(T) → F 65.36/17.28
not(F) → T 65.36/17.28
if(T, z0, z1) → z0 65.36/17.28
if(F, z0, z1) → z1 65.36/17.28
eq(T, T) → T 65.36/17.28
eq(F, F) → T 65.36/17.28
eq(T, F) → F 65.36/17.28
eq(F, T) → F 65.36/17.28
eqt(nil, undefined) → F 65.36/17.28
eqt(nil, pid(z0)) → F 65.36/17.28
eqt(nil, int(z0)) → F 65.36/17.28
eqt(nil, cons(z0, z1)) → F 65.36/17.28
eqt(nil, tuple(z0, z1)) → F 65.36/17.28
eqt(nil, tuplenil(z0)) → F 65.36/17.28
eqt(a, nil) → F 65.36/17.28
eqt(a, a) → T 65.36/17.28
eqt(a, excl) → F 65.36/17.28
eqt(a, false) → F 65.36/17.28
eqt(a, lock) → F 65.36/17.28
eqt(a, locker) → F 65.36/17.28
eqt(a, mcrlrecord) → F 65.36/17.28
eqt(a, ok) → F 65.36/17.28
eqt(a, pending) → F 65.36/17.28
eqt(a, release) → F 65.36/17.28
eqt(a, request) → F 65.36/17.28
eqt(a, resource) → F 65.36/17.28
eqt(a, tag) → F 65.36/17.28
eqt(a, true) → F 65.36/17.28
eqt(a, undefined) → F 65.36/17.28
eqt(a, pid(z0)) → F 65.36/17.28
eqt(a, int(z0)) → F 65.36/17.28
eqt(a, cons(z0, z1)) → F 65.36/17.28
eqt(a, tuple(z0, z1)) → F 65.36/17.28
eqt(a, tuplenil(z0)) → F 65.36/17.28
eqt(excl, nil) → F 65.36/17.28
eqt(excl, a) → F 65.36/17.28
eqt(excl, excl) → T 65.36/17.28
eqt(excl, false) → F 65.36/17.28
eqt(excl, lock) → F 65.36/17.28
eqt(excl, locker) → F 65.36/17.28
eqt(excl, mcrlrecord) → F 65.36/17.28
eqt(excl, ok) → F 65.36/17.28
eqt(excl, pending) → F 65.36/17.28
eqt(excl, release) → F 65.36/17.28
eqt(excl, request) → F 65.36/17.28
eqt(excl, resource) → F 65.36/17.28
eqt(excl, tag) → F 65.36/17.28
eqt(excl, true) → F 65.36/17.28
eqt(excl, undefined) → F 65.36/17.28
eqt(excl, pid(z0)) → F 65.36/17.28
eqt(excl, eqt(false, int(z0))) → F 65.36/17.28
eqt(false, cons(z0, z1)) → F 65.36/17.28
eqt(false, tuple(z0, z1)) → F 65.36/17.28
eqt(false, tuplenil(z0)) → F 65.36/17.28
eqt(lock, nil) → F 65.36/17.28
eqt(lock, a) → F 65.36/17.28
eqt(lock, excl) → F 65.36/17.28
eqt(lock, false) → F 65.36/17.28
eqt(lock, lock) → T 65.36/17.28
eqt(lock, locker) → F 65.36/17.28
eqt(lock, mcrlrecord) → F 65.36/17.28
eqt(lock, ok) → F 65.36/17.28
eqt(lock, pending) → F 65.36/17.28
eqt(lock, release) → F 65.36/17.28
eqt(lock, request) → F 65.36/17.28
eqt(lock, resource) → F 65.36/17.28
eqt(lock, tag) → F 65.36/17.28
eqt(lock, true) → F 65.36/17.28
eqt(lock, undefined) → F 65.36/17.28
eqt(lock, pid(z0)) → F 65.36/17.28
eqt(lock, int(z0)) → F 65.36/17.28
eqt(lock, cons(z0, z1)) → F 65.36/17.28
eqt(lock, tuple(z0, z1)) → F 65.36/17.28
eqt(lock, tuplenil(z0)) → F 65.36/17.28
eqt(locker, nil) → F 65.36/17.28
eqt(locker, a) → F 65.36/17.28
eqt(locker, excl) → F 65.36/17.28
eqt(locker, false) → F 65.36/17.28
eqt(locker, lock) → F 65.36/17.28
eqt(locker, locker) → T 65.36/17.28
eqt(locker, mcrlrecord) → F 65.36/17.28
eqt(locker, ok) → F 65.36/17.28
eqt(locker, pending) → F 65.36/17.28
eqt(locker, release) → F 65.36/17.28
eqt(locker, request) → F 65.36/17.28
eqt(locker, resource) → F 65.36/17.28
eqt(locker, tag) → F 65.36/17.28
eqt(locker, true) → F 65.36/17.28
eqt(locker, undefined) → F 65.36/17.28
eqt(locker, pid(z0)) → F 65.36/17.28
eqt(locker, int(z0)) → F 65.36/17.28
eqt(locker, cons(z0, z1)) → F 65.36/17.28
eqt(locker, tuple(z0, z1)) → F 65.36/17.28
eqt(locker, tuplenil(z0)) → F 65.36/17.28
eqt(mcrlrecord, nil) → F 65.36/17.28
eqt(mcrlrecord, a) → F 65.36/17.28
eqt(mcrlrecord, excl) → F 65.36/17.28
eqt(mcrlrecord, false) → F 65.36/17.28
eqt(mcrlrecord, lock) → F 65.36/17.28
eqt(mcrlrecord, locker) → F 65.36/17.28
eqt(mcrlrecord, mcrlrecord) → T 65.36/17.28
eqt(mcrlrecord, ok) → F 65.36/17.28
eqt(mcrlrecord, pending) → F 65.36/17.28
eqt(mcrlrecord, release) → F 65.36/17.28
eqt(mcrlrecord, request) → F 65.36/17.28
eqt(mcrlrecord, resource) → F 65.36/17.28
eqt(ok, resource) → F 65.36/17.28
eqt(ok, tag) → F 65.36/17.28
eqt(ok, true) → F 65.36/17.28
eqt(ok, undefined) → F 65.36/17.28
eqt(ok, pid(z0)) → F 65.36/17.28
eqt(ok, int(z0)) → F 65.36/17.28
eqt(ok, cons(z0, z1)) → F 65.36/17.28
eqt(ok, tuple(z0, z1)) → F 65.36/17.28
eqt(ok, tuplenil(z0)) → F 65.36/17.28
eqt(pending, nil) → F 65.36/17.28
eqt(pending, a) → F 65.36/17.28
eqt(pending, excl) → F 65.36/17.28
eqt(pending, false) → F 65.36/17.28
eqt(pending, lock) → F 65.36/17.28
eqt(pending, locker) → F 65.36/17.28
eqt(pending, mcrlrecord) → F 65.36/17.28
eqt(pending, ok) → F 65.36/17.28
eqt(pending, pending) → T 65.36/17.28
eqt(pending, release) → F 65.36/17.28
eqt(pending, request) → F 65.36/17.28
eqt(pending, resource) → F 65.36/17.28
eqt(pending, tag) → F 65.36/17.28
eqt(pending, true) → F 65.36/17.28
eqt(pending, undefined) → F 65.36/17.28
eqt(pending, pid(z0)) → F 65.36/17.28
eqt(pending, int(z0)) → F 65.36/17.28
eqt(pending, cons(z0, z1)) → F 65.36/17.28
eqt(pending, tuple(z0, z1)) → F 65.36/17.28
eqt(pending, tuplenil(z0)) → F 65.36/17.28
eqt(release, nil) → F 65.36/17.28
eqt(release, a) → F 65.36/17.28
eqt(release, excl) → F 65.36/17.28
eqt(release, false) → F 65.36/17.28
eqt(release, lock) → F 65.36/17.28
eqt(release, locker) → F 65.36/17.28
eqt(release, mcrlrecord) → F 65.36/17.28
eqt(release, ok) → F 65.36/17.28
eqt(request, mcrlrecord) → F 65.36/17.28
eqt(request, ok) → F 65.36/17.28
eqt(request, pending) → F 65.36/17.28
eqt(request, release) → F 65.36/17.28
eqt(request, request) → T 65.36/17.28
eqt(request, resource) → F 65.36/17.28
eqt(request, tag) → F 65.36/17.28
eqt(request, true) → F 65.36/17.28
eqt(request, undefined) → F 65.36/17.28
eqt(request, pid(z0)) → F 65.36/17.28
eqt(request, int(z0)) → F 65.36/17.28
eqt(request, cons(z0, z1)) → F 65.36/17.28
eqt(request, tuple(z0, z1)) → F 65.36/17.28
eqt(request, tuplenil(z0)) → F 65.36/17.28
eqt(resource, nil) → F 65.36/17.28
eqt(resource, a) → F 65.36/17.28
eqt(resource, excl) → F 65.36/17.28
eqt(resource, false) → F 65.36/17.28
eqt(resource, lock) → F 65.36/17.28
eqt(resource, locker) → F 65.36/17.28
eqt(resource, mcrlrecord) → F 65.36/17.28
eqt(resource, ok) → F 65.36/17.28
eqt(resource, pending) → F 65.36/17.28
eqt(resource, release) → F 65.36/17.28
eqt(resource, request) → F 65.36/17.28
eqt(resource, resource) → T 65.36/17.28
eqt(resource, tag) → F 65.36/17.28
eqt(resource, true) → F 65.36/17.28
eqt(resource, undefined) → F 65.36/17.28
eqt(resource, pid(z0)) → F 65.36/17.28
eqt(resource, int(z0)) → F 65.36/17.28
eqt(resource, cons(z0, z1)) → F 65.36/17.28
eqt(resource, tuple(z0, z1)) → F 65.36/17.28
eqt(resource, tuplenil(z0)) → F 65.36/17.28
eqt(tag, nil) → F 65.36/17.28
eqt(tag, a) → F 65.36/17.28
eqt(tag, excl) → F 65.36/17.28
eqt(tag, false) → F 65.36/17.28
eqt(tag, lock) → F 65.36/17.28
eqt(tag, locker) → F 65.36/17.28
eqt(tag, mcrlrecord) → F 65.36/17.28
eqt(tag, ok) → F 65.36/17.28
eqt(tag, pending) → F 65.36/17.28
eqt(tag, release) → F 65.36/17.28
eqt(tag, request) → F 65.36/17.28
eqt(tag, resource) → F 65.36/17.28
eqt(tag, tag) → T 65.36/17.28
eqt(tag, true) → F 65.36/17.28
eqt(tag, undefined) → F 65.36/17.28
eqt(tag, pid(z0)) → F 65.36/17.28
eqt(tag, int(z0)) → F 65.36/17.28
eqt(tag, cons(z0, z1)) → F 65.36/17.28
eqt(tag, tuple(z0, z1)) → F 65.36/17.28
eqt(tag, tuplenil(z0)) → F 65.36/17.28
eqt(true, nil) → F 65.36/17.28
eqt(true, a) → F 65.36/17.28
eqt(true, excl) → F 65.36/17.28
eqt(true, false) → F 65.36/17.28
eqt(true, lock) → F 65.36/17.28
eqt(true, locker) → F 65.36/17.28
eqt(true, mcrlrecord) → F 65.36/17.28
eqt(true, ok) → F 65.36/17.28
eqt(true, pending) → F 65.36/17.28
eqt(true, release) → F 65.36/17.28
eqt(true, request) → F 65.36/17.28
eqt(true, resource) → F 65.36/17.28
eqt(true, tag) → F 65.36/17.28
eqt(true, true) → T 65.36/17.28
eqt(true, undefined) → F 65.36/17.28
eqt(true, pid(z0)) → F 65.36/17.28
eqt(true, int(z0)) → F 65.36/17.28
eqt(true, cons(z0, z1)) → F 65.36/17.28
eqt(true, tuple(z0, z1)) → F 65.36/17.28
eqt(true, tuplenil(z0)) → F 65.36/17.28
eqt(undefined, nil) → F 65.36/17.28
eqt(undefined, a) → F 65.36/17.28
eqt(undefined, tuplenil(z0)) → F 65.36/17.28
eqt(pid(z0), nil) → F 65.36/17.28
eqt(pid(z0), a) → F 65.36/17.28
eqt(pid(z0), excl) → F 65.36/17.28
eqt(pid(z0), false) → F 65.36/17.28
eqt(pid(z0), lock) → F 65.36/17.28
eqt(pid(z0), locker) → F 65.36/17.28
eqt(pid(z0), mcrlrecord) → F 65.36/17.28
eqt(pid(z0), ok) → F 65.36/17.28
eqt(pid(z0), pending) → F 65.36/17.28
eqt(pid(z0), release) → F 65.36/17.28
eqt(pid(z0), request) → F 65.36/17.28
eqt(pid(z0), resource) → F 65.36/17.28
eqt(pid(z0), tag) → F 65.36/17.28
eqt(pid(z0), true) → F 65.36/17.28
eqt(pid(z0), undefined) → F 65.36/17.28
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.36/17.28
eqt(pid(z0), int(z1)) → F 65.36/17.28
eqt(pid(z0), cons(z1, z2)) → F 65.36/17.28
eqt(pid(z0), tuple(z1, z2)) → F 65.36/17.28
eqt(pid(z0), tuplenil(z1)) → F 65.36/17.28
eqt(int(z0), nil) → F 65.36/17.28
eqt(int(z0), a) → F 65.36/17.28
eqt(int(z0), excl) → F 65.36/17.28
eqt(int(z0), false) → F 65.36/17.28
eqt(int(z0), lock) → F 65.36/17.28
eqt(int(z0), locker) → F 65.36/17.28
eqt(int(z0), mcrlrecord) → F 65.36/17.28
eqt(int(z0), ok) → F 65.36/17.28
eqt(int(z0), pending) → F 65.36/17.28
eqt(int(z0), release) → F 65.36/17.28
eqt(int(z0), request) → F 65.36/17.28
eqt(int(z0), resource) → F 65.36/17.28
eqt(int(z0), tag) → F 65.36/17.28
eqt(int(z0), true) → F 65.36/17.28
eqt(int(z0), undefined) → F 65.36/17.28
eqt(cons(z0, z1), resource) → F 65.36/17.28
eqt(cons(z0, z1), tag) → F 65.36/17.28
eqt(cons(z0, z1), true) → F 65.36/17.28
eqt(cons(z0, z1), undefined) → F 65.36/17.28
eqt(cons(z0, z1), pid(z2)) → F 65.36/17.28
eqt(cons(z0, z1), int(z2)) → F 65.36/17.28
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.36/17.28
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.36/17.28
eqt(cons(z0, z1), tuplenil(z2)) → F 65.36/17.28
eqt(tuple(z0, z1), nil) → F 65.36/17.28
eqt(tuple(z0, z1), a) → F 65.36/17.28
eqt(tuple(z0, z1), excl) → F 65.36/17.28
eqt(tuple(z0, z1), false) → F 65.36/17.28
eqt(tuple(z0, z1), lock) → F 65.36/17.28
eqt(tuple(z0, z1), locker) → F 65.36/17.28
eqt(tuple(z0, z1), mcrlrecord) → F 65.36/17.28
eqt(tuple(z0, z1), ok) → F 65.36/17.28
eqt(tuple(z0, z1), pending) → F 65.36/17.28
eqt(tuple(z0, z1), release) → F 65.36/17.28
eqt(tuple(z0, z1), request) → F 65.36/17.28
eqt(tuple(z0, z1), resource) → F 65.36/17.28
eqt(tuple(z0, z1), tag) → F 65.36/17.28
eqt(tuple(z0, z1), true) → F 65.36/17.28
eqt(tuple(z0, z1), undefined) → F 65.36/17.28
eqt(tuple(z0, z1), pid(z2)) → F 65.36/17.28
eqt(tuple(z0, z1), int(z2)) → F 65.36/17.28
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.36/17.28
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.36/17.28
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.36/17.28
eqt(tuplenil(z0), nil) → F 65.36/17.28
eqt(tuplenil(z0), a) → F 65.36/17.28
eqt(tuplenil(z0), excl) → F 65.36/17.28
eqt(tuplenil(z0), false) → F 65.36/17.28
eqt(tuplenil(z0), lock) → F 65.36/17.28
eqt(tuplenil(z0), locker) → F 65.36/17.28
eqt(tuplenil(z0), mcrlrecord) → F 65.36/17.28
eqt(tuplenil(z0), ok) → F 65.36/17.28
eqt(tuplenil(z0), pending) → F 65.36/17.28
eqt(tuplenil(z0), release) → F 65.36/17.28
eqt(tuplenil(z0), request) → F 65.36/17.28
eqt(tuplenil(z0), resource) → F 65.36/17.28
eqt(tuplenil(z0), tag) → F 65.36/17.28
eqt(tuplenil(z0), true) → F 65.36/17.28
eqt(tuplenil(z0), undefined) → F 65.36/17.28
eqt(tuplenil(z0), pid(z1)) → F 65.36/17.28
eqt(tuplenil(z0), int(z1)) → F 65.36/17.28
eqt(tuplenil(z0), cons(z1, z2)) → F 65.36/17.28
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.36/17.28
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.36/17.28
element(int(s(0)), tuplenil(z0)) → z0 65.36/17.28
element(int(s(0)), tuple(z0, z1)) → z0 65.36/17.28
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.36/17.28
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.36/17.28
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.36/17.28
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.36/17.28
record_updates(z0, z1, nil) → z0 65.36/17.28
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.36/17.28
locker2_map_promote_pending(nil, z0) → nil 65.36/17.28
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.36/17.28
locker2_map_claim_lock(nil, z0, z1) → nil 65.36/17.28
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.36/17.28
locker2_map_add_pending(nil, z0, z1) → nil 65.36/17.28
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.36/17.28
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.36/17.28
case0(z0, z1, z2) → z1 65.36/17.28
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.36/17.28
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.36/17.28
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.36/17.28
case1(z0, z1, z2, false) → z2 65.36/17.28
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.36/17.28
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.36/17.28
case4(z0, z1, z2) → false 65.36/17.28
locker2_obtainables(nil, z0) → true 65.36/17.28
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.36/17.28
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.36/17.28
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.36/17.28
locker2_check_available(z0, nil) → false 65.36/17.28
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.36/17.28
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.36/17.28
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.36/17.28
locker2_check_availables(nil, z0) → true 65.36/17.28
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.36/17.28
locker2_adduniq(nil, z0) → z0 65.36/17.28
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.36/17.28
subtract(z0, nil) → z0 65.36/17.28
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.36/17.28
delete(z0, nil) → nil 65.36/17.28
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.36/17.28
case8(z0, z1, z2, true) → z0 65.36/17.28
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.36/17.28
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.36/17.28
gen_modtageq(z0, z1) → equal(z0, z1) 65.36/17.28
member(z0, nil) → false 65.36/17.28
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.36/17.28
case9(z0, z1, z2, true) → true 65.36/17.28
case9(z0, z1, z2, false) → member(z2, z0) 65.36/17.28
eqs(empty, empty) → T 65.36/17.28
eqs(empty, stack(z0, z1)) → F 65.36/17.28
eqs(stack(z0, z1), empty) → F 65.36/17.28
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.36/17.28
pushs(z0, z1) → stack(z0, z1) 65.36/17.28
pops(stack(z0, z1)) → z1 65.36/17.28
tops(stack(z0, z1)) → z0 65.36/17.28
istops(z0, empty) → F 65.36/17.28
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.36/17.28
eqc(nocalls, nocalls) → T 65.36/17.28
eqc(nocalls, calls(z0, z1, z2)) → F 65.36/17.28
eqc(calls(z0, z1, z2), nocalls) → F 65.36/17.28
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.36/17.28
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.36/17.28
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.36/17.28
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.36/17.28
EQT(cons(z0, z1), cons(z2, z3)) → c271(AND(eqt(z0, z2), eqt(z1, z3)), EQT(z0, z2), EQT(z1, z3)) 65.36/17.28
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(AND(eqt(z0, z2), eqt(z1, z3)), EQT(z0, z2), EQT(z1, z3)) 65.36/17.28
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.36/17.28
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.36/17.28
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4), RECORD_UPDATE(z0, z1, z2, z3)) 65.36/17.28
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.36/17.28
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.36/17.28
LOCKER2_PROMOTE_PENDING(z0, z1) → c327(CASE0(z1, z0, record_extract(z0, lock, pending)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.28
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.36/17.28
LOCKER2_REMOVE_PENDING(z0, z1) → c330(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)), SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.28
LOCKER2_ADD_PENDING(z0, z1, z2) → c331(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)), MEMBER(record_extract(z0, lock, resource), z1), RECORD_EXTRACT(z0, lock, resource)) 65.36/17.28
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)), APPEND(record_extract(z2, lock, pending), cons(z0, nil)), RECORD_EXTRACT(z2, lock, pending)) 65.36/17.28
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))), GEN_MODTAGEQ(z1, record_extract(z0, lock, excl)), RECORD_EXTRACT(z0, lock, excl)) 65.36/17.28
CASE2(z0, z1, true) → c335(RECORD_UPDATES(z1, lock, cons(tuple(excllock, excl), nil))) 65.36/17.28
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338(CASE5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))), MEMBER(z2, record_extract(z0, lock, pending)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.28
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.36/17.28
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.36/17.28
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342(CASE6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))), RECORD_EXTRACT(z1, lock, resource)) 65.36/17.28
CASE6(z0, z1, z2, true) → c343(RECORD_EXTRACT(z1, lock, excl), RECORD_EXTRACT(z1, lock, pending)) 65.36/17.28
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.36/17.28
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.36/17.28
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.36/17.28
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.36/17.28
DELETE(z0, cons(z1, z2)) → c352(CASE8(z2, z1, z0, equal(z0, z1))) 65.36/17.28
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.36/17.28
MEMBER(z0, cons(z1, z2)) → c358(CASE9(z2, z1, z0, equal(z0, z1))) 65.36/17.28
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.36/17.28
EQS(stack(z0, z1), stack(z2, z3)) → c364(AND(eqt(z0, z2), eqs(z1, z3)), EQT(z0, z2), EQS(z1, z3)) 65.36/17.28
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.36/17.28
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(AND(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))), EQT(z0, z3), AND(eqs(z1, z4), eqc(z2, z5)), EQS(z1, z4), EQC(z2, z5)) 65.36/17.28
PUSH(z0, z1, calls(z2, z3, z4)) → c375(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2)), EQT(z0, z2)) 65.36/17.28
PUSH1(z0, z1, z2, z3, z4, T) → c376(PUSHS(z1, z3))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.36/17.28
EQT(cons(z0, z1), cons(z2, z3)) → c271(AND(eqt(z0, z2), eqt(z1, z3)), EQT(z0, z2), EQT(z1, z3)) 65.36/17.28
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(AND(eqt(z0, z2), eqt(z1, z3)), EQT(z0, z2), EQT(z1, z3)) 65.36/17.28
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.36/17.28
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.36/17.28
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4), RECORD_UPDATE(z0, z1, z2, z3)) 65.36/17.28
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.36/17.28
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.36/17.28
LOCKER2_PROMOTE_PENDING(z0, z1) → c327(CASE0(z1, z0, record_extract(z0, lock, pending)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.28
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.36/17.28
LOCKER2_REMOVE_PENDING(z0, z1) → c330(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)), SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.28
LOCKER2_ADD_PENDING(z0, z1, z2) → c331(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)), MEMBER(record_extract(z0, lock, resource), z1), RECORD_EXTRACT(z0, lock, resource)) 65.36/17.28
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)), APPEND(record_extract(z2, lock, pending), cons(z0, nil)), RECORD_EXTRACT(z2, lock, pending)) 65.36/17.28
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))), GEN_MODTAGEQ(z1, record_extract(z0, lock, excl)), RECORD_EXTRACT(z0, lock, excl)) 65.36/17.30
CASE2(z0, z1, true) → c335(RECORD_UPDATES(z1, lock, cons(tuple(excllock, excl), nil))) 65.36/17.30
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338(CASE5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))), MEMBER(z2, record_extract(z0, lock, pending)), RECORD_EXTRACT(z0, lock, pending)) 65.36/17.30
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.36/17.30
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.36/17.30
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342(CASE6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))), RECORD_EXTRACT(z1, lock, resource)) 65.36/17.30
CASE6(z0, z1, z2, true) → c343(RECORD_EXTRACT(z1, lock, excl), RECORD_EXTRACT(z1, lock, pending)) 65.36/17.30
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.36/17.30
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.30
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.30
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.30
DELETE(z0, cons(z1, z2)) → c352(CASE8(z2, z1, z0, equal(z0, z1))) 65.77/17.30
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.30
MEMBER(z0, cons(z1, z2)) → c358(CASE9(z2, z1, z0, equal(z0, z1))) 65.77/17.30
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.30
EQS(stack(z0, z1), stack(z2, z3)) → c364(AND(eqt(z0, z2), eqs(z1, z3)), EQT(z0, z2), EQS(z1, z3)) 65.77/17.30
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.30
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(AND(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))), EQT(z0, z3), AND(eqs(z1, z4), eqc(z2, z5)), EQS(z1, z4), EQC(z2, z5)) 65.77/17.30
PUSH(z0, z1, calls(z2, z3, z4)) → c375(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2)), EQT(z0, z2)) 65.77/17.30
PUSH1(z0, z1, z2, z3, z4, T) → c376(PUSHS(z1, z3))
K tuples:none
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, RECORD_UPDATES, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_PROMOTE_PENDING, CASE0, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_OBTAINABLES, CASE5, LOCKER2_CHECK_AVAILABLE, CASE6, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, DELETE, CASE8, MEMBER, CASE9, EQS, ISTOPS, EQC, PUSH, PUSH1

Compound Symbols:

c245, c271, c292, c313, c316, c321, c323, c325, c327, c328, c330, c331, c332, c334, c335, c338, c339, c340, c342, c343, c344, c346, c348, c350, c352, c354, c358, c360, c364, c369, c373, c375, c376

65.77/17.30
65.77/17.30

(3) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 25 trailing tuple parts
65.77/17.30
65.77/17.30

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.30
or(F, T) → T 65.77/17.30
or(T, F) → T 65.77/17.30
or(F, F) → F 65.77/17.30
and(T, z0) → z0 65.77/17.30
and(z0, T) → z0 65.77/17.30
and(F, z0) → F 65.77/17.30
and(z0, F) → F 65.77/17.30
imp(T, z0) → z0 65.77/17.30
imp(F, z0) → T 65.77/17.30
not(T) → F 65.77/17.30
not(F) → T 65.77/17.30
if(T, z0, z1) → z0 65.77/17.30
if(F, z0, z1) → z1 65.77/17.30
eq(T, T) → T 65.77/17.30
eq(F, F) → T 65.77/17.30
eq(T, F) → F 65.77/17.30
eq(F, T) → F 65.77/17.30
eqt(nil, undefined) → F 65.77/17.30
eqt(nil, pid(z0)) → F 65.77/17.30
eqt(nil, int(z0)) → F 65.77/17.30
eqt(nil, cons(z0, z1)) → F 65.77/17.30
eqt(nil, tuple(z0, z1)) → F 65.77/17.30
eqt(nil, tuplenil(z0)) → F 65.77/17.30
eqt(a, nil) → F 65.77/17.30
eqt(a, a) → T 65.77/17.30
eqt(a, excl) → F 65.77/17.30
eqt(a, false) → F 65.77/17.30
eqt(a, lock) → F 65.77/17.30
eqt(a, locker) → F 65.77/17.30
eqt(a, mcrlrecord) → F 65.77/17.30
eqt(a, ok) → F 65.77/17.30
eqt(a, pending) → F 65.77/17.30
eqt(a, release) → F 65.77/17.30
eqt(a, request) → F 65.77/17.30
eqt(a, resource) → F 65.77/17.30
eqt(a, tag) → F 65.77/17.30
eqt(a, true) → F 65.77/17.30
eqt(a, undefined) → F 65.77/17.30
eqt(a, pid(z0)) → F 65.77/17.30
eqt(a, int(z0)) → F 65.77/17.30
eqt(a, cons(z0, z1)) → F 65.77/17.30
eqt(a, tuple(z0, z1)) → F 65.77/17.30
eqt(a, tuplenil(z0)) → F 65.77/17.30
eqt(excl, nil) → F 65.77/17.30
eqt(excl, a) → F 65.77/17.30
eqt(excl, excl) → T 65.77/17.30
eqt(excl, false) → F 65.77/17.30
eqt(excl, lock) → F 65.77/17.30
eqt(excl, locker) → F 65.77/17.30
eqt(excl, mcrlrecord) → F 65.77/17.30
eqt(excl, ok) → F 65.77/17.30
eqt(excl, pending) → F 65.77/17.30
eqt(excl, release) → F 65.77/17.30
eqt(excl, request) → F 65.77/17.30
eqt(excl, resource) → F 65.77/17.30
eqt(excl, tag) → F 65.77/17.30
eqt(excl, true) → F 65.77/17.30
eqt(excl, undefined) → F 65.77/17.30
eqt(excl, pid(z0)) → F 65.77/17.30
eqt(excl, eqt(false, int(z0))) → F 65.77/17.30
eqt(false, cons(z0, z1)) → F 65.77/17.30
eqt(false, tuple(z0, z1)) → F 65.77/17.30
eqt(false, tuplenil(z0)) → F 65.77/17.30
eqt(lock, nil) → F 65.77/17.30
eqt(lock, a) → F 65.77/17.30
eqt(lock, excl) → F 65.77/17.30
eqt(lock, false) → F 65.77/17.30
eqt(lock, lock) → T 65.77/17.30
eqt(lock, locker) → F 65.77/17.30
eqt(lock, mcrlrecord) → F 65.77/17.30
eqt(lock, ok) → F 65.77/17.30
eqt(lock, pending) → F 65.77/17.30
eqt(lock, release) → F 65.77/17.30
eqt(lock, request) → F 65.77/17.30
eqt(lock, resource) → F 65.77/17.30
eqt(lock, tag) → F 65.77/17.30
eqt(lock, true) → F 65.77/17.30
eqt(lock, undefined) → F 65.77/17.30
eqt(lock, pid(z0)) → F 65.77/17.30
eqt(lock, int(z0)) → F 65.77/17.30
eqt(lock, cons(z0, z1)) → F 65.77/17.30
eqt(lock, tuple(z0, z1)) → F 65.77/17.30
eqt(lock, tuplenil(z0)) → F 65.77/17.30
eqt(locker, nil) → F 65.77/17.30
eqt(locker, a) → F 65.77/17.30
eqt(locker, excl) → F 65.77/17.30
eqt(locker, false) → F 65.77/17.30
eqt(locker, lock) → F 65.77/17.30
eqt(locker, locker) → T 65.77/17.30
eqt(locker, mcrlrecord) → F 65.77/17.30
eqt(locker, ok) → F 65.77/17.30
eqt(locker, pending) → F 65.77/17.30
eqt(locker, release) → F 65.77/17.30
eqt(locker, request) → F 65.77/17.30
eqt(locker, resource) → F 65.77/17.30
eqt(locker, tag) → F 65.77/17.30
eqt(locker, true) → F 65.77/17.30
eqt(locker, undefined) → F 65.77/17.30
eqt(locker, pid(z0)) → F 65.77/17.30
eqt(locker, int(z0)) → F 65.77/17.30
eqt(locker, cons(z0, z1)) → F 65.77/17.30
eqt(locker, tuple(z0, z1)) → F 65.77/17.30
eqt(locker, tuplenil(z0)) → F 65.77/17.30
eqt(mcrlrecord, nil) → F 65.77/17.30
eqt(mcrlrecord, a) → F 65.77/17.30
eqt(mcrlrecord, excl) → F 65.77/17.30
eqt(mcrlrecord, false) → F 65.77/17.30
eqt(mcrlrecord, lock) → F 65.77/17.30
eqt(mcrlrecord, locker) → F 65.77/17.30
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.30
eqt(mcrlrecord, ok) → F 65.77/17.30
eqt(mcrlrecord, pending) → F 65.77/17.30
eqt(mcrlrecord, release) → F 65.77/17.30
eqt(mcrlrecord, request) → F 65.77/17.30
eqt(mcrlrecord, resource) → F 65.77/17.30
eqt(ok, resource) → F 65.77/17.30
eqt(ok, tag) → F 65.77/17.30
eqt(ok, true) → F 65.77/17.30
eqt(ok, undefined) → F 65.77/17.30
eqt(ok, pid(z0)) → F 65.77/17.30
eqt(ok, int(z0)) → F 65.77/17.30
eqt(ok, cons(z0, z1)) → F 65.77/17.30
eqt(ok, tuple(z0, z1)) → F 65.77/17.30
eqt(ok, tuplenil(z0)) → F 65.77/17.30
eqt(pending, nil) → F 65.77/17.30
eqt(pending, a) → F 65.77/17.30
eqt(pending, excl) → F 65.77/17.30
eqt(pending, false) → F 65.77/17.30
eqt(pending, lock) → F 65.77/17.30
eqt(pending, locker) → F 65.77/17.30
eqt(pending, mcrlrecord) → F 65.77/17.30
eqt(pending, ok) → F 65.77/17.30
eqt(pending, pending) → T 65.77/17.30
eqt(pending, release) → F 65.77/17.30
eqt(pending, request) → F 65.77/17.30
eqt(pending, resource) → F 65.77/17.30
eqt(pending, tag) → F 65.77/17.30
eqt(pending, true) → F 65.77/17.30
eqt(pending, undefined) → F 65.77/17.30
eqt(pending, pid(z0)) → F 65.77/17.30
eqt(pending, int(z0)) → F 65.77/17.30
eqt(pending, cons(z0, z1)) → F 65.77/17.30
eqt(pending, tuple(z0, z1)) → F 65.77/17.30
eqt(pending, tuplenil(z0)) → F 65.77/17.30
eqt(release, nil) → F 65.77/17.30
eqt(release, a) → F 65.77/17.30
eqt(release, excl) → F 65.77/17.30
eqt(release, false) → F 65.77/17.30
eqt(release, lock) → F 65.77/17.30
eqt(release, locker) → F 65.77/17.30
eqt(release, mcrlrecord) → F 65.77/17.30
eqt(release, ok) → F 65.77/17.30
eqt(request, mcrlrecord) → F 65.77/17.30
eqt(request, ok) → F 65.77/17.30
eqt(request, pending) → F 65.77/17.30
eqt(request, release) → F 65.77/17.30
eqt(request, request) → T 65.77/17.30
eqt(request, resource) → F 65.77/17.30
eqt(request, tag) → F 65.77/17.30
eqt(request, true) → F 65.77/17.30
eqt(request, undefined) → F 65.77/17.30
eqt(request, pid(z0)) → F 65.77/17.30
eqt(request, int(z0)) → F 65.77/17.30
eqt(request, cons(z0, z1)) → F 65.77/17.30
eqt(request, tuple(z0, z1)) → F 65.77/17.30
eqt(request, tuplenil(z0)) → F 65.77/17.30
eqt(resource, nil) → F 65.77/17.30
eqt(resource, a) → F 65.77/17.30
eqt(resource, excl) → F 65.77/17.30
eqt(resource, false) → F 65.77/17.30
eqt(resource, lock) → F 65.77/17.30
eqt(resource, locker) → F 65.77/17.30
eqt(resource, mcrlrecord) → F 65.77/17.30
eqt(resource, ok) → F 65.77/17.30
eqt(resource, pending) → F 65.77/17.30
eqt(resource, release) → F 65.77/17.30
eqt(resource, request) → F 65.77/17.30
eqt(resource, resource) → T 65.77/17.30
eqt(resource, tag) → F 65.77/17.30
eqt(resource, true) → F 65.77/17.30
eqt(resource, undefined) → F 65.77/17.30
eqt(resource, pid(z0)) → F 65.77/17.30
eqt(resource, int(z0)) → F 65.77/17.30
eqt(resource, cons(z0, z1)) → F 65.77/17.30
eqt(resource, tuple(z0, z1)) → F 65.77/17.30
eqt(resource, tuplenil(z0)) → F 65.77/17.30
eqt(tag, nil) → F 65.77/17.30
eqt(tag, a) → F 65.77/17.30
eqt(tag, excl) → F 65.77/17.30
eqt(tag, false) → F 65.77/17.30
eqt(tag, lock) → F 65.77/17.30
eqt(tag, locker) → F 65.77/17.30
eqt(tag, mcrlrecord) → F 65.77/17.30
eqt(tag, ok) → F 65.77/17.30
eqt(tag, pending) → F 65.77/17.30
eqt(tag, release) → F 65.77/17.30
eqt(tag, request) → F 65.77/17.30
eqt(tag, resource) → F 65.77/17.30
eqt(tag, tag) → T 65.77/17.30
eqt(tag, true) → F 65.77/17.30
eqt(tag, undefined) → F 65.77/17.30
eqt(tag, pid(z0)) → F 65.77/17.30
eqt(tag, int(z0)) → F 65.77/17.30
eqt(tag, cons(z0, z1)) → F 65.77/17.30
eqt(tag, tuple(z0, z1)) → F 65.77/17.30
eqt(tag, tuplenil(z0)) → F 65.77/17.30
eqt(true, nil) → F 65.77/17.30
eqt(true, a) → F 65.77/17.30
eqt(true, excl) → F 65.77/17.30
eqt(true, false) → F 65.77/17.30
eqt(true, lock) → F 65.77/17.30
eqt(true, locker) → F 65.77/17.30
eqt(true, mcrlrecord) → F 65.77/17.30
eqt(true, ok) → F 65.77/17.30
eqt(true, pending) → F 65.77/17.30
eqt(true, release) → F 65.77/17.30
eqt(true, request) → F 65.77/17.30
eqt(true, resource) → F 65.77/17.30
eqt(true, tag) → F 65.77/17.30
eqt(true, true) → T 65.77/17.30
eqt(true, undefined) → F 65.77/17.30
eqt(true, pid(z0)) → F 65.77/17.30
eqt(true, int(z0)) → F 65.77/17.30
eqt(true, cons(z0, z1)) → F 65.77/17.30
eqt(true, tuple(z0, z1)) → F 65.77/17.30
eqt(true, tuplenil(z0)) → F 65.77/17.30
eqt(undefined, nil) → F 65.77/17.30
eqt(undefined, a) → F 65.77/17.30
eqt(undefined, tuplenil(z0)) → F 65.77/17.30
eqt(pid(z0), nil) → F 65.77/17.30
eqt(pid(z0), a) → F 65.77/17.30
eqt(pid(z0), excl) → F 65.77/17.30
eqt(pid(z0), false) → F 65.77/17.30
eqt(pid(z0), lock) → F 65.77/17.30
eqt(pid(z0), locker) → F 65.77/17.30
eqt(pid(z0), mcrlrecord) → F 65.77/17.30
eqt(pid(z0), ok) → F 65.77/17.30
eqt(pid(z0), pending) → F 65.77/17.30
eqt(pid(z0), release) → F 65.77/17.30
eqt(pid(z0), request) → F 65.77/17.30
eqt(pid(z0), resource) → F 65.77/17.30
eqt(pid(z0), tag) → F 65.77/17.30
eqt(pid(z0), true) → F 65.77/17.30
eqt(pid(z0), undefined) → F 65.77/17.30
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.30
eqt(pid(z0), int(z1)) → F 65.77/17.30
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.30
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.30
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.30
eqt(int(z0), nil) → F 65.77/17.30
eqt(int(z0), a) → F 65.77/17.30
eqt(int(z0), excl) → F 65.77/17.30
eqt(int(z0), false) → F 65.77/17.30
eqt(int(z0), lock) → F 65.77/17.30
eqt(int(z0), locker) → F 65.77/17.30
eqt(int(z0), mcrlrecord) → F 65.77/17.30
eqt(int(z0), ok) → F 65.77/17.30
eqt(int(z0), pending) → F 65.77/17.30
eqt(int(z0), release) → F 65.77/17.30
eqt(int(z0), request) → F 65.77/17.30
eqt(int(z0), resource) → F 65.77/17.30
eqt(int(z0), tag) → F 65.77/17.30
eqt(int(z0), true) → F 65.77/17.30
eqt(int(z0), undefined) → F 65.77/17.30
eqt(cons(z0, z1), resource) → F 65.77/17.30
eqt(cons(z0, z1), tag) → F 65.77/17.30
eqt(cons(z0, z1), true) → F 65.77/17.30
eqt(cons(z0, z1), undefined) → F 65.77/17.30
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.30
eqt(cons(z0, z1), int(z2)) → F 65.77/17.30
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.30
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.30
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.30
eqt(tuple(z0, z1), nil) → F 65.77/17.30
eqt(tuple(z0, z1), a) → F 65.77/17.30
eqt(tuple(z0, z1), excl) → F 65.77/17.30
eqt(tuple(z0, z1), false) → F 65.77/17.30
eqt(tuple(z0, z1), lock) → F 65.77/17.30
eqt(tuple(z0, z1), locker) → F 65.77/17.30
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.30
eqt(tuple(z0, z1), ok) → F 65.77/17.30
eqt(tuple(z0, z1), pending) → F 65.77/17.30
eqt(tuple(z0, z1), release) → F 65.77/17.30
eqt(tuple(z0, z1), request) → F 65.77/17.30
eqt(tuple(z0, z1), resource) → F 65.77/17.30
eqt(tuple(z0, z1), tag) → F 65.77/17.30
eqt(tuple(z0, z1), true) → F 65.77/17.30
eqt(tuple(z0, z1), undefined) → F 65.77/17.30
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.30
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.30
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.30
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.30
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.30
eqt(tuplenil(z0), nil) → F 65.77/17.30
eqt(tuplenil(z0), a) → F 65.77/17.30
eqt(tuplenil(z0), excl) → F 65.77/17.30
eqt(tuplenil(z0), false) → F 65.77/17.30
eqt(tuplenil(z0), lock) → F 65.77/17.30
eqt(tuplenil(z0), locker) → F 65.77/17.30
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.30
eqt(tuplenil(z0), ok) → F 65.77/17.30
eqt(tuplenil(z0), pending) → F 65.77/17.30
eqt(tuplenil(z0), release) → F 65.77/17.30
eqt(tuplenil(z0), request) → F 65.77/17.30
eqt(tuplenil(z0), resource) → F 65.77/17.30
eqt(tuplenil(z0), tag) → F 65.77/17.30
eqt(tuplenil(z0), true) → F 65.77/17.30
eqt(tuplenil(z0), undefined) → F 65.77/17.30
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.30
eqt(tuplenil(z0), int(z1)) → F 65.77/17.30
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.30
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.30
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.30
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.30
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.30
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.30
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.30
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.30
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.30
record_updates(z0, z1, nil) → z0 65.77/17.30
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.30
locker2_map_promote_pending(nil, z0) → nil 65.77/17.30
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.30
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.30
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.30
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.30
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.30
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.30
case0(z0, z1, z2) → z1 65.77/17.30
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.30
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.30
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.30
case1(z0, z1, z2, false) → z2 65.77/17.30
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.30
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.30
case4(z0, z1, z2) → false 65.77/17.31
locker2_obtainables(nil, z0) → true 65.77/17.31
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.31
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.31
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.31
locker2_check_available(z0, nil) → false 65.77/17.31
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.31
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.31
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.31
locker2_check_availables(nil, z0) → true 65.77/17.31
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.31
locker2_adduniq(nil, z0) → z0 65.77/17.31
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.31
subtract(z0, nil) → z0 65.77/17.31
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.31
delete(z0, nil) → nil 65.77/17.31
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case8(z0, z1, z2, true) → z0 65.77/17.31
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.31
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.31
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.31
member(z0, nil) → false 65.77/17.31
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case9(z0, z1, z2, true) → true 65.77/17.31
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.31
eqs(empty, empty) → T 65.77/17.31
eqs(empty, stack(z0, z1)) → F 65.77/17.31
eqs(stack(z0, z1), empty) → F 65.77/17.31
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.31
pushs(z0, z1) → stack(z0, z1) 65.77/17.31
pops(stack(z0, z1)) → z1 65.77/17.31
tops(stack(z0, z1)) → z0 65.77/17.31
istops(z0, empty) → F 65.77/17.31
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.31
eqc(nocalls, nocalls) → T 65.77/17.31
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.31
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.31
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.31
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.31
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.31
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.77/17.31
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.31
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.31
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c375(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2)), EQT(z0, z2)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c330(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)), SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c331(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)), MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
CASE6(z0, z1, z2, true) → c343 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.77/17.31
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.31
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.31
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c375(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2)), EQT(z0, z2)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c330(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)), SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c331(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)), MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
CASE6(z0, z1, z2, true) → c343 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376
K tuples:none
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, CASE0, CASE5, CASE6, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, CASE8, CASE9, ISTOPS, PUSH, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_OBTAINABLES, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1

Compound Symbols:

c245, c313, c316, c323, c325, c328, c339, c340, c344, c346, c348, c350, c354, c360, c369, c375, c271, c292, c321, c327, c330, c331, c332, c334, c335, c338, c342, c343, c352, c358, c364, c373, c376

65.77/17.31
65.77/17.31

(5) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC
65.77/17.31
65.77/17.31

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.31
or(F, T) → T 65.77/17.31
or(T, F) → T 65.77/17.31
or(F, F) → F 65.77/17.31
and(T, z0) → z0 65.77/17.31
and(z0, T) → z0 65.77/17.31
and(F, z0) → F 65.77/17.31
and(z0, F) → F 65.77/17.31
imp(T, z0) → z0 65.77/17.31
imp(F, z0) → T 65.77/17.31
not(T) → F 65.77/17.31
not(F) → T 65.77/17.31
if(T, z0, z1) → z0 65.77/17.31
if(F, z0, z1) → z1 65.77/17.31
eq(T, T) → T 65.77/17.31
eq(F, F) → T 65.77/17.31
eq(T, F) → F 65.77/17.31
eq(F, T) → F 65.77/17.31
eqt(nil, undefined) → F 65.77/17.31
eqt(nil, pid(z0)) → F 65.77/17.31
eqt(nil, int(z0)) → F 65.77/17.31
eqt(nil, cons(z0, z1)) → F 65.77/17.31
eqt(nil, tuple(z0, z1)) → F 65.77/17.31
eqt(nil, tuplenil(z0)) → F 65.77/17.31
eqt(a, nil) → F 65.77/17.31
eqt(a, a) → T 65.77/17.31
eqt(a, excl) → F 65.77/17.31
eqt(a, false) → F 65.77/17.31
eqt(a, lock) → F 65.77/17.31
eqt(a, locker) → F 65.77/17.31
eqt(a, mcrlrecord) → F 65.77/17.31
eqt(a, ok) → F 65.77/17.31
eqt(a, pending) → F 65.77/17.31
eqt(a, release) → F 65.77/17.31
eqt(a, request) → F 65.77/17.31
eqt(a, resource) → F 65.77/17.31
eqt(a, tag) → F 65.77/17.31
eqt(a, true) → F 65.77/17.31
eqt(a, undefined) → F 65.77/17.31
eqt(a, pid(z0)) → F 65.77/17.31
eqt(a, int(z0)) → F 65.77/17.31
eqt(a, cons(z0, z1)) → F 65.77/17.31
eqt(a, tuple(z0, z1)) → F 65.77/17.31
eqt(a, tuplenil(z0)) → F 65.77/17.31
eqt(excl, nil) → F 65.77/17.31
eqt(excl, a) → F 65.77/17.31
eqt(excl, excl) → T 65.77/17.31
eqt(excl, false) → F 65.77/17.31
eqt(excl, lock) → F 65.77/17.31
eqt(excl, locker) → F 65.77/17.31
eqt(excl, mcrlrecord) → F 65.77/17.31
eqt(excl, ok) → F 65.77/17.31
eqt(excl, pending) → F 65.77/17.31
eqt(excl, release) → F 65.77/17.31
eqt(excl, request) → F 65.77/17.31
eqt(excl, resource) → F 65.77/17.31
eqt(excl, tag) → F 65.77/17.31
eqt(excl, true) → F 65.77/17.31
eqt(excl, undefined) → F 65.77/17.31
eqt(excl, pid(z0)) → F 65.77/17.31
eqt(excl, eqt(false, int(z0))) → F 65.77/17.31
eqt(false, cons(z0, z1)) → F 65.77/17.31
eqt(false, tuple(z0, z1)) → F 65.77/17.31
eqt(false, tuplenil(z0)) → F 65.77/17.31
eqt(lock, nil) → F 65.77/17.31
eqt(lock, a) → F 65.77/17.31
eqt(lock, excl) → F 65.77/17.31
eqt(lock, false) → F 65.77/17.31
eqt(lock, lock) → T 65.77/17.31
eqt(lock, locker) → F 65.77/17.31
eqt(lock, mcrlrecord) → F 65.77/17.31
eqt(lock, ok) → F 65.77/17.31
eqt(lock, pending) → F 65.77/17.31
eqt(lock, release) → F 65.77/17.31
eqt(lock, request) → F 65.77/17.31
eqt(lock, resource) → F 65.77/17.31
eqt(lock, tag) → F 65.77/17.31
eqt(lock, true) → F 65.77/17.31
eqt(lock, undefined) → F 65.77/17.31
eqt(lock, pid(z0)) → F 65.77/17.31
eqt(lock, int(z0)) → F 65.77/17.31
eqt(lock, cons(z0, z1)) → F 65.77/17.31
eqt(lock, tuple(z0, z1)) → F 65.77/17.31
eqt(lock, tuplenil(z0)) → F 65.77/17.31
eqt(locker, nil) → F 65.77/17.31
eqt(locker, a) → F 65.77/17.31
eqt(locker, excl) → F 65.77/17.31
eqt(locker, false) → F 65.77/17.31
eqt(locker, lock) → F 65.77/17.31
eqt(locker, locker) → T 65.77/17.31
eqt(locker, mcrlrecord) → F 65.77/17.31
eqt(locker, ok) → F 65.77/17.31
eqt(locker, pending) → F 65.77/17.31
eqt(locker, release) → F 65.77/17.31
eqt(locker, request) → F 65.77/17.31
eqt(locker, resource) → F 65.77/17.31
eqt(locker, tag) → F 65.77/17.31
eqt(locker, true) → F 65.77/17.31
eqt(locker, undefined) → F 65.77/17.31
eqt(locker, pid(z0)) → F 65.77/17.31
eqt(locker, int(z0)) → F 65.77/17.31
eqt(locker, cons(z0, z1)) → F 65.77/17.31
eqt(locker, tuple(z0, z1)) → F 65.77/17.31
eqt(locker, tuplenil(z0)) → F 65.77/17.31
eqt(mcrlrecord, nil) → F 65.77/17.31
eqt(mcrlrecord, a) → F 65.77/17.31
eqt(mcrlrecord, excl) → F 65.77/17.31
eqt(mcrlrecord, false) → F 65.77/17.31
eqt(mcrlrecord, lock) → F 65.77/17.31
eqt(mcrlrecord, locker) → F 65.77/17.31
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.31
eqt(mcrlrecord, ok) → F 65.77/17.31
eqt(mcrlrecord, pending) → F 65.77/17.31
eqt(mcrlrecord, release) → F 65.77/17.31
eqt(mcrlrecord, request) → F 65.77/17.31
eqt(mcrlrecord, resource) → F 65.77/17.31
eqt(ok, resource) → F 65.77/17.31
eqt(ok, tag) → F 65.77/17.31
eqt(ok, true) → F 65.77/17.31
eqt(ok, undefined) → F 65.77/17.31
eqt(ok, pid(z0)) → F 65.77/17.31
eqt(ok, int(z0)) → F 65.77/17.31
eqt(ok, cons(z0, z1)) → F 65.77/17.31
eqt(ok, tuple(z0, z1)) → F 65.77/17.31
eqt(ok, tuplenil(z0)) → F 65.77/17.31
eqt(pending, nil) → F 65.77/17.31
eqt(pending, a) → F 65.77/17.31
eqt(pending, excl) → F 65.77/17.31
eqt(pending, false) → F 65.77/17.31
eqt(pending, lock) → F 65.77/17.31
eqt(pending, locker) → F 65.77/17.31
eqt(pending, mcrlrecord) → F 65.77/17.31
eqt(pending, ok) → F 65.77/17.31
eqt(pending, pending) → T 65.77/17.31
eqt(pending, release) → F 65.77/17.31
eqt(pending, request) → F 65.77/17.31
eqt(pending, resource) → F 65.77/17.31
eqt(pending, tag) → F 65.77/17.31
eqt(pending, true) → F 65.77/17.31
eqt(pending, undefined) → F 65.77/17.31
eqt(pending, pid(z0)) → F 65.77/17.31
eqt(pending, int(z0)) → F 65.77/17.31
eqt(pending, cons(z0, z1)) → F 65.77/17.31
eqt(pending, tuple(z0, z1)) → F 65.77/17.31
eqt(pending, tuplenil(z0)) → F 65.77/17.31
eqt(release, nil) → F 65.77/17.31
eqt(release, a) → F 65.77/17.31
eqt(release, excl) → F 65.77/17.31
eqt(release, false) → F 65.77/17.31
eqt(release, lock) → F 65.77/17.31
eqt(release, locker) → F 65.77/17.31
eqt(release, mcrlrecord) → F 65.77/17.31
eqt(release, ok) → F 65.77/17.31
eqt(request, mcrlrecord) → F 65.77/17.31
eqt(request, ok) → F 65.77/17.31
eqt(request, pending) → F 65.77/17.31
eqt(request, release) → F 65.77/17.31
eqt(request, request) → T 65.77/17.31
eqt(request, resource) → F 65.77/17.31
eqt(request, tag) → F 65.77/17.31
eqt(request, true) → F 65.77/17.31
eqt(request, undefined) → F 65.77/17.31
eqt(request, pid(z0)) → F 65.77/17.31
eqt(request, int(z0)) → F 65.77/17.31
eqt(request, cons(z0, z1)) → F 65.77/17.31
eqt(request, tuple(z0, z1)) → F 65.77/17.31
eqt(request, tuplenil(z0)) → F 65.77/17.31
eqt(resource, nil) → F 65.77/17.31
eqt(resource, a) → F 65.77/17.31
eqt(resource, excl) → F 65.77/17.31
eqt(resource, false) → F 65.77/17.31
eqt(resource, lock) → F 65.77/17.31
eqt(resource, locker) → F 65.77/17.31
eqt(resource, mcrlrecord) → F 65.77/17.31
eqt(resource, ok) → F 65.77/17.31
eqt(resource, pending) → F 65.77/17.31
eqt(resource, release) → F 65.77/17.31
eqt(resource, request) → F 65.77/17.31
eqt(resource, resource) → T 65.77/17.31
eqt(resource, tag) → F 65.77/17.31
eqt(resource, true) → F 65.77/17.31
eqt(resource, undefined) → F 65.77/17.31
eqt(resource, pid(z0)) → F 65.77/17.31
eqt(resource, int(z0)) → F 65.77/17.31
eqt(resource, cons(z0, z1)) → F 65.77/17.31
eqt(resource, tuple(z0, z1)) → F 65.77/17.31
eqt(resource, tuplenil(z0)) → F 65.77/17.31
eqt(tag, nil) → F 65.77/17.31
eqt(tag, a) → F 65.77/17.31
eqt(tag, excl) → F 65.77/17.31
eqt(tag, false) → F 65.77/17.31
eqt(tag, lock) → F 65.77/17.31
eqt(tag, locker) → F 65.77/17.31
eqt(tag, mcrlrecord) → F 65.77/17.31
eqt(tag, ok) → F 65.77/17.31
eqt(tag, pending) → F 65.77/17.31
eqt(tag, release) → F 65.77/17.31
eqt(tag, request) → F 65.77/17.31
eqt(tag, resource) → F 65.77/17.31
eqt(tag, tag) → T 65.77/17.31
eqt(tag, true) → F 65.77/17.31
eqt(tag, undefined) → F 65.77/17.31
eqt(tag, pid(z0)) → F 65.77/17.31
eqt(tag, int(z0)) → F 65.77/17.31
eqt(tag, cons(z0, z1)) → F 65.77/17.31
eqt(tag, tuple(z0, z1)) → F 65.77/17.31
eqt(tag, tuplenil(z0)) → F 65.77/17.31
eqt(true, nil) → F 65.77/17.31
eqt(true, a) → F 65.77/17.31
eqt(true, excl) → F 65.77/17.31
eqt(true, false) → F 65.77/17.31
eqt(true, lock) → F 65.77/17.31
eqt(true, locker) → F 65.77/17.31
eqt(true, mcrlrecord) → F 65.77/17.31
eqt(true, ok) → F 65.77/17.31
eqt(true, pending) → F 65.77/17.31
eqt(true, release) → F 65.77/17.31
eqt(true, request) → F 65.77/17.31
eqt(true, resource) → F 65.77/17.31
eqt(true, tag) → F 65.77/17.31
eqt(true, true) → T 65.77/17.31
eqt(true, undefined) → F 65.77/17.31
eqt(true, pid(z0)) → F 65.77/17.31
eqt(true, int(z0)) → F 65.77/17.31
eqt(true, cons(z0, z1)) → F 65.77/17.31
eqt(true, tuple(z0, z1)) → F 65.77/17.31
eqt(true, tuplenil(z0)) → F 65.77/17.31
eqt(undefined, nil) → F 65.77/17.31
eqt(undefined, a) → F 65.77/17.31
eqt(undefined, tuplenil(z0)) → F 65.77/17.31
eqt(pid(z0), nil) → F 65.77/17.31
eqt(pid(z0), a) → F 65.77/17.31
eqt(pid(z0), excl) → F 65.77/17.31
eqt(pid(z0), false) → F 65.77/17.31
eqt(pid(z0), lock) → F 65.77/17.31
eqt(pid(z0), locker) → F 65.77/17.31
eqt(pid(z0), mcrlrecord) → F 65.77/17.31
eqt(pid(z0), ok) → F 65.77/17.31
eqt(pid(z0), pending) → F 65.77/17.31
eqt(pid(z0), release) → F 65.77/17.31
eqt(pid(z0), request) → F 65.77/17.31
eqt(pid(z0), resource) → F 65.77/17.31
eqt(pid(z0), tag) → F 65.77/17.31
eqt(pid(z0), true) → F 65.77/17.31
eqt(pid(z0), undefined) → F 65.77/17.31
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.31
eqt(pid(z0), int(z1)) → F 65.77/17.31
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.31
eqt(int(z0), nil) → F 65.77/17.31
eqt(int(z0), a) → F 65.77/17.31
eqt(int(z0), excl) → F 65.77/17.31
eqt(int(z0), false) → F 65.77/17.31
eqt(int(z0), lock) → F 65.77/17.31
eqt(int(z0), locker) → F 65.77/17.31
eqt(int(z0), mcrlrecord) → F 65.77/17.31
eqt(int(z0), ok) → F 65.77/17.31
eqt(int(z0), pending) → F 65.77/17.31
eqt(int(z0), release) → F 65.77/17.31
eqt(int(z0), request) → F 65.77/17.31
eqt(int(z0), resource) → F 65.77/17.31
eqt(int(z0), tag) → F 65.77/17.31
eqt(int(z0), true) → F 65.77/17.31
eqt(int(z0), undefined) → F 65.77/17.31
eqt(cons(z0, z1), resource) → F 65.77/17.31
eqt(cons(z0, z1), tag) → F 65.77/17.31
eqt(cons(z0, z1), true) → F 65.77/17.31
eqt(cons(z0, z1), undefined) → F 65.77/17.31
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.31
eqt(cons(z0, z1), int(z2)) → F 65.77/17.31
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.31
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), nil) → F 65.77/17.31
eqt(tuple(z0, z1), a) → F 65.77/17.31
eqt(tuple(z0, z1), excl) → F 65.77/17.31
eqt(tuple(z0, z1), false) → F 65.77/17.31
eqt(tuple(z0, z1), lock) → F 65.77/17.31
eqt(tuple(z0, z1), locker) → F 65.77/17.31
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.31
eqt(tuple(z0, z1), ok) → F 65.77/17.31
eqt(tuple(z0, z1), pending) → F 65.77/17.31
eqt(tuple(z0, z1), release) → F 65.77/17.31
eqt(tuple(z0, z1), request) → F 65.77/17.31
eqt(tuple(z0, z1), resource) → F 65.77/17.31
eqt(tuple(z0, z1), tag) → F 65.77/17.31
eqt(tuple(z0, z1), true) → F 65.77/17.31
eqt(tuple(z0, z1), undefined) → F 65.77/17.31
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.31
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuplenil(z0), nil) → F 65.77/17.31
eqt(tuplenil(z0), a) → F 65.77/17.31
eqt(tuplenil(z0), excl) → F 65.77/17.31
eqt(tuplenil(z0), false) → F 65.77/17.31
eqt(tuplenil(z0), lock) → F 65.77/17.31
eqt(tuplenil(z0), locker) → F 65.77/17.31
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.31
eqt(tuplenil(z0), ok) → F 65.77/17.31
eqt(tuplenil(z0), pending) → F 65.77/17.31
eqt(tuplenil(z0), release) → F 65.77/17.31
eqt(tuplenil(z0), request) → F 65.77/17.31
eqt(tuplenil(z0), resource) → F 65.77/17.31
eqt(tuplenil(z0), tag) → F 65.77/17.31
eqt(tuplenil(z0), true) → F 65.77/17.31
eqt(tuplenil(z0), undefined) → F 65.77/17.31
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.31
eqt(tuplenil(z0), int(z1)) → F 65.77/17.31
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.31
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.31
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.31
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.31
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.31
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.31
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.31
record_updates(z0, z1, nil) → z0 65.77/17.31
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.31
locker2_map_promote_pending(nil, z0) → nil 65.77/17.31
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.31
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.31
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.31
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.31
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.31
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.31
case0(z0, z1, z2) → z1 65.77/17.31
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.31
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.31
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.31
case1(z0, z1, z2, false) → z2 65.77/17.31
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.31
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.31
case4(z0, z1, z2) → false 65.77/17.31
locker2_obtainables(nil, z0) → true 65.77/17.31
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.31
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.31
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.31
locker2_check_available(z0, nil) → false 65.77/17.31
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.31
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.31
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.31
locker2_check_availables(nil, z0) → true 65.77/17.31
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.31
locker2_adduniq(nil, z0) → z0 65.77/17.31
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.31
subtract(z0, nil) → z0 65.77/17.31
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.31
delete(z0, nil) → nil 65.77/17.31
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case8(z0, z1, z2, true) → z0 65.77/17.31
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.31
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.31
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.31
member(z0, nil) → false 65.77/17.31
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case9(z0, z1, z2, true) → true 65.77/17.31
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.31
eqs(empty, empty) → T 65.77/17.31
eqs(empty, stack(z0, z1)) → F 65.77/17.31
eqs(stack(z0, z1), empty) → F 65.77/17.31
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.31
pushs(z0, z1) → stack(z0, z1) 65.77/17.31
pops(stack(z0, z1)) → z1 65.77/17.31
tops(stack(z0, z1)) → z0 65.77/17.31
istops(z0, empty) → F 65.77/17.31
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.31
eqc(nocalls, nocalls) → T 65.77/17.31
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.31
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.31
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.31
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.31
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.31
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.77/17.31
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.31
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.31
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
CASE6(z0, z1, z2, true) → c343 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(EQT(z0, z2)) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil)))) 65.77/17.31
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.31
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.31
ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
CASE6(z0, z1, z2, true) → c343 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(EQT(z0, z2)) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
K tuples:none
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, CASE0, CASE5, CASE6, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, CASE8, CASE9, ISTOPS, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_OBTAINABLES, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c328, c339, c340, c344, c346, c348, c350, c354, c360, c369, c271, c292, c321, c327, c332, c334, c335, c338, c342, c343, c352, c358, c364, c373, c376, c

65.77/17.31
65.77/17.31

(7) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)

Removed 3 leading nodes:

ISTOPS(z0, stack(z1, z2)) → c369(EQT(z0, z1)) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(EQT(z0, z2)) 65.77/17.31
CASE0(z0, z1, cons(z0, z2)) → c328(RECORD_UPDATES(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))))
Removed 16 trailing nodes:

CASE5(z0, z1, z2, false) → c340(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
CASE6(z0, z1, z2, false) → c344(LOCKER2_CHECK_AVAILABLE(z2, z0)) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
CASE6(z0, z1, z2, true) → c343 65.77/17.31
CASE5(z0, z1, z2, true) → c339(LOCKER2_OBTAINABLES(z1, z0)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
LOCKER2_OBTAINABLES(cons(z0, z1), z2) → c338 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.31
CASE9(z0, z1, z2, false) → c360(MEMBER(z2, z0)) 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
CASE8(z0, z1, z2, false) → c354(DELETE(z2, z0)) 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2)))
65.77/17.31
65.77/17.31

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.31
or(F, T) → T 65.77/17.31
or(T, F) → T 65.77/17.31
or(F, F) → F 65.77/17.31
and(T, z0) → z0 65.77/17.31
and(z0, T) → z0 65.77/17.31
and(F, z0) → F 65.77/17.31
and(z0, F) → F 65.77/17.31
imp(T, z0) → z0 65.77/17.31
imp(F, z0) → T 65.77/17.31
not(T) → F 65.77/17.31
not(F) → T 65.77/17.31
if(T, z0, z1) → z0 65.77/17.31
if(F, z0, z1) → z1 65.77/17.31
eq(T, T) → T 65.77/17.31
eq(F, F) → T 65.77/17.31
eq(T, F) → F 65.77/17.31
eq(F, T) → F 65.77/17.31
eqt(nil, undefined) → F 65.77/17.31
eqt(nil, pid(z0)) → F 65.77/17.31
eqt(nil, int(z0)) → F 65.77/17.31
eqt(nil, cons(z0, z1)) → F 65.77/17.31
eqt(nil, tuple(z0, z1)) → F 65.77/17.31
eqt(nil, tuplenil(z0)) → F 65.77/17.31
eqt(a, nil) → F 65.77/17.31
eqt(a, a) → T 65.77/17.31
eqt(a, excl) → F 65.77/17.31
eqt(a, false) → F 65.77/17.31
eqt(a, lock) → F 65.77/17.31
eqt(a, locker) → F 65.77/17.31
eqt(a, mcrlrecord) → F 65.77/17.31
eqt(a, ok) → F 65.77/17.31
eqt(a, pending) → F 65.77/17.31
eqt(a, release) → F 65.77/17.31
eqt(a, request) → F 65.77/17.31
eqt(a, resource) → F 65.77/17.31
eqt(a, tag) → F 65.77/17.31
eqt(a, true) → F 65.77/17.31
eqt(a, undefined) → F 65.77/17.31
eqt(a, pid(z0)) → F 65.77/17.31
eqt(a, int(z0)) → F 65.77/17.31
eqt(a, cons(z0, z1)) → F 65.77/17.31
eqt(a, tuple(z0, z1)) → F 65.77/17.31
eqt(a, tuplenil(z0)) → F 65.77/17.31
eqt(excl, nil) → F 65.77/17.31
eqt(excl, a) → F 65.77/17.31
eqt(excl, excl) → T 65.77/17.31
eqt(excl, false) → F 65.77/17.31
eqt(excl, lock) → F 65.77/17.31
eqt(excl, locker) → F 65.77/17.31
eqt(excl, mcrlrecord) → F 65.77/17.31
eqt(excl, ok) → F 65.77/17.31
eqt(excl, pending) → F 65.77/17.31
eqt(excl, release) → F 65.77/17.31
eqt(excl, request) → F 65.77/17.31
eqt(excl, resource) → F 65.77/17.31
eqt(excl, tag) → F 65.77/17.31
eqt(excl, true) → F 65.77/17.31
eqt(excl, undefined) → F 65.77/17.31
eqt(excl, pid(z0)) → F 65.77/17.31
eqt(excl, eqt(false, int(z0))) → F 65.77/17.31
eqt(false, cons(z0, z1)) → F 65.77/17.31
eqt(false, tuple(z0, z1)) → F 65.77/17.31
eqt(false, tuplenil(z0)) → F 65.77/17.31
eqt(lock, nil) → F 65.77/17.31
eqt(lock, a) → F 65.77/17.31
eqt(lock, excl) → F 65.77/17.31
eqt(lock, false) → F 65.77/17.31
eqt(lock, lock) → T 65.77/17.31
eqt(lock, locker) → F 65.77/17.31
eqt(lock, mcrlrecord) → F 65.77/17.31
eqt(lock, ok) → F 65.77/17.31
eqt(lock, pending) → F 65.77/17.31
eqt(lock, release) → F 65.77/17.31
eqt(lock, request) → F 65.77/17.31
eqt(lock, resource) → F 65.77/17.31
eqt(lock, tag) → F 65.77/17.31
eqt(lock, true) → F 65.77/17.31
eqt(lock, undefined) → F 65.77/17.31
eqt(lock, pid(z0)) → F 65.77/17.31
eqt(lock, int(z0)) → F 65.77/17.31
eqt(lock, cons(z0, z1)) → F 65.77/17.31
eqt(lock, tuple(z0, z1)) → F 65.77/17.31
eqt(lock, tuplenil(z0)) → F 65.77/17.31
eqt(locker, nil) → F 65.77/17.31
eqt(locker, a) → F 65.77/17.31
eqt(locker, excl) → F 65.77/17.31
eqt(locker, false) → F 65.77/17.31
eqt(locker, lock) → F 65.77/17.31
eqt(locker, locker) → T 65.77/17.31
eqt(locker, mcrlrecord) → F 65.77/17.31
eqt(locker, ok) → F 65.77/17.31
eqt(locker, pending) → F 65.77/17.31
eqt(locker, release) → F 65.77/17.31
eqt(locker, request) → F 65.77/17.31
eqt(locker, resource) → F 65.77/17.31
eqt(locker, tag) → F 65.77/17.31
eqt(locker, true) → F 65.77/17.31
eqt(locker, undefined) → F 65.77/17.31
eqt(locker, pid(z0)) → F 65.77/17.31
eqt(locker, int(z0)) → F 65.77/17.31
eqt(locker, cons(z0, z1)) → F 65.77/17.31
eqt(locker, tuple(z0, z1)) → F 65.77/17.31
eqt(locker, tuplenil(z0)) → F 65.77/17.31
eqt(mcrlrecord, nil) → F 65.77/17.31
eqt(mcrlrecord, a) → F 65.77/17.31
eqt(mcrlrecord, excl) → F 65.77/17.31
eqt(mcrlrecord, false) → F 65.77/17.31
eqt(mcrlrecord, lock) → F 65.77/17.31
eqt(mcrlrecord, locker) → F 65.77/17.31
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.31
eqt(mcrlrecord, ok) → F 65.77/17.31
eqt(mcrlrecord, pending) → F 65.77/17.31
eqt(mcrlrecord, release) → F 65.77/17.31
eqt(mcrlrecord, request) → F 65.77/17.31
eqt(mcrlrecord, resource) → F 65.77/17.31
eqt(ok, resource) → F 65.77/17.31
eqt(ok, tag) → F 65.77/17.31
eqt(ok, true) → F 65.77/17.31
eqt(ok, undefined) → F 65.77/17.31
eqt(ok, pid(z0)) → F 65.77/17.31
eqt(ok, int(z0)) → F 65.77/17.31
eqt(ok, cons(z0, z1)) → F 65.77/17.31
eqt(ok, tuple(z0, z1)) → F 65.77/17.31
eqt(ok, tuplenil(z0)) → F 65.77/17.31
eqt(pending, nil) → F 65.77/17.31
eqt(pending, a) → F 65.77/17.31
eqt(pending, excl) → F 65.77/17.31
eqt(pending, false) → F 65.77/17.31
eqt(pending, lock) → F 65.77/17.31
eqt(pending, locker) → F 65.77/17.31
eqt(pending, mcrlrecord) → F 65.77/17.31
eqt(pending, ok) → F 65.77/17.31
eqt(pending, pending) → T 65.77/17.31
eqt(pending, release) → F 65.77/17.31
eqt(pending, request) → F 65.77/17.31
eqt(pending, resource) → F 65.77/17.31
eqt(pending, tag) → F 65.77/17.31
eqt(pending, true) → F 65.77/17.31
eqt(pending, undefined) → F 65.77/17.31
eqt(pending, pid(z0)) → F 65.77/17.31
eqt(pending, int(z0)) → F 65.77/17.31
eqt(pending, cons(z0, z1)) → F 65.77/17.31
eqt(pending, tuple(z0, z1)) → F 65.77/17.31
eqt(pending, tuplenil(z0)) → F 65.77/17.31
eqt(release, nil) → F 65.77/17.31
eqt(release, a) → F 65.77/17.31
eqt(release, excl) → F 65.77/17.31
eqt(release, false) → F 65.77/17.31
eqt(release, lock) → F 65.77/17.31
eqt(release, locker) → F 65.77/17.31
eqt(release, mcrlrecord) → F 65.77/17.31
eqt(release, ok) → F 65.77/17.31
eqt(request, mcrlrecord) → F 65.77/17.31
eqt(request, ok) → F 65.77/17.31
eqt(request, pending) → F 65.77/17.31
eqt(request, release) → F 65.77/17.31
eqt(request, request) → T 65.77/17.31
eqt(request, resource) → F 65.77/17.31
eqt(request, tag) → F 65.77/17.31
eqt(request, true) → F 65.77/17.31
eqt(request, undefined) → F 65.77/17.31
eqt(request, pid(z0)) → F 65.77/17.31
eqt(request, int(z0)) → F 65.77/17.31
eqt(request, cons(z0, z1)) → F 65.77/17.31
eqt(request, tuple(z0, z1)) → F 65.77/17.31
eqt(request, tuplenil(z0)) → F 65.77/17.31
eqt(resource, nil) → F 65.77/17.31
eqt(resource, a) → F 65.77/17.31
eqt(resource, excl) → F 65.77/17.31
eqt(resource, false) → F 65.77/17.31
eqt(resource, lock) → F 65.77/17.31
eqt(resource, locker) → F 65.77/17.31
eqt(resource, mcrlrecord) → F 65.77/17.31
eqt(resource, ok) → F 65.77/17.31
eqt(resource, pending) → F 65.77/17.31
eqt(resource, release) → F 65.77/17.31
eqt(resource, request) → F 65.77/17.31
eqt(resource, resource) → T 65.77/17.31
eqt(resource, tag) → F 65.77/17.31
eqt(resource, true) → F 65.77/17.31
eqt(resource, undefined) → F 65.77/17.31
eqt(resource, pid(z0)) → F 65.77/17.31
eqt(resource, int(z0)) → F 65.77/17.31
eqt(resource, cons(z0, z1)) → F 65.77/17.31
eqt(resource, tuple(z0, z1)) → F 65.77/17.31
eqt(resource, tuplenil(z0)) → F 65.77/17.31
eqt(tag, nil) → F 65.77/17.31
eqt(tag, a) → F 65.77/17.31
eqt(tag, excl) → F 65.77/17.31
eqt(tag, false) → F 65.77/17.31
eqt(tag, lock) → F 65.77/17.31
eqt(tag, locker) → F 65.77/17.31
eqt(tag, mcrlrecord) → F 65.77/17.31
eqt(tag, ok) → F 65.77/17.31
eqt(tag, pending) → F 65.77/17.31
eqt(tag, release) → F 65.77/17.31
eqt(tag, request) → F 65.77/17.31
eqt(tag, resource) → F 65.77/17.31
eqt(tag, tag) → T 65.77/17.31
eqt(tag, true) → F 65.77/17.31
eqt(tag, undefined) → F 65.77/17.31
eqt(tag, pid(z0)) → F 65.77/17.31
eqt(tag, int(z0)) → F 65.77/17.31
eqt(tag, cons(z0, z1)) → F 65.77/17.31
eqt(tag, tuple(z0, z1)) → F 65.77/17.31
eqt(tag, tuplenil(z0)) → F 65.77/17.31
eqt(true, nil) → F 65.77/17.31
eqt(true, a) → F 65.77/17.31
eqt(true, excl) → F 65.77/17.31
eqt(true, false) → F 65.77/17.31
eqt(true, lock) → F 65.77/17.31
eqt(true, locker) → F 65.77/17.31
eqt(true, mcrlrecord) → F 65.77/17.31
eqt(true, ok) → F 65.77/17.31
eqt(true, pending) → F 65.77/17.31
eqt(true, release) → F 65.77/17.31
eqt(true, request) → F 65.77/17.31
eqt(true, resource) → F 65.77/17.31
eqt(true, tag) → F 65.77/17.31
eqt(true, true) → T 65.77/17.31
eqt(true, undefined) → F 65.77/17.31
eqt(true, pid(z0)) → F 65.77/17.31
eqt(true, int(z0)) → F 65.77/17.31
eqt(true, cons(z0, z1)) → F 65.77/17.31
eqt(true, tuple(z0, z1)) → F 65.77/17.31
eqt(true, tuplenil(z0)) → F 65.77/17.31
eqt(undefined, nil) → F 65.77/17.31
eqt(undefined, a) → F 65.77/17.31
eqt(undefined, tuplenil(z0)) → F 65.77/17.31
eqt(pid(z0), nil) → F 65.77/17.31
eqt(pid(z0), a) → F 65.77/17.31
eqt(pid(z0), excl) → F 65.77/17.31
eqt(pid(z0), false) → F 65.77/17.31
eqt(pid(z0), lock) → F 65.77/17.31
eqt(pid(z0), locker) → F 65.77/17.31
eqt(pid(z0), mcrlrecord) → F 65.77/17.31
eqt(pid(z0), ok) → F 65.77/17.31
eqt(pid(z0), pending) → F 65.77/17.31
eqt(pid(z0), release) → F 65.77/17.31
eqt(pid(z0), request) → F 65.77/17.31
eqt(pid(z0), resource) → F 65.77/17.31
eqt(pid(z0), tag) → F 65.77/17.31
eqt(pid(z0), true) → F 65.77/17.31
eqt(pid(z0), undefined) → F 65.77/17.31
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.31
eqt(pid(z0), int(z1)) → F 65.77/17.31
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.31
eqt(int(z0), nil) → F 65.77/17.31
eqt(int(z0), a) → F 65.77/17.31
eqt(int(z0), excl) → F 65.77/17.31
eqt(int(z0), false) → F 65.77/17.31
eqt(int(z0), lock) → F 65.77/17.31
eqt(int(z0), locker) → F 65.77/17.31
eqt(int(z0), mcrlrecord) → F 65.77/17.31
eqt(int(z0), ok) → F 65.77/17.31
eqt(int(z0), pending) → F 65.77/17.31
eqt(int(z0), release) → F 65.77/17.31
eqt(int(z0), request) → F 65.77/17.31
eqt(int(z0), resource) → F 65.77/17.31
eqt(int(z0), tag) → F 65.77/17.31
eqt(int(z0), true) → F 65.77/17.31
eqt(int(z0), undefined) → F 65.77/17.31
eqt(cons(z0, z1), resource) → F 65.77/17.31
eqt(cons(z0, z1), tag) → F 65.77/17.31
eqt(cons(z0, z1), true) → F 65.77/17.31
eqt(cons(z0, z1), undefined) → F 65.77/17.31
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.31
eqt(cons(z0, z1), int(z2)) → F 65.77/17.31
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.31
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), nil) → F 65.77/17.31
eqt(tuple(z0, z1), a) → F 65.77/17.31
eqt(tuple(z0, z1), excl) → F 65.77/17.31
eqt(tuple(z0, z1), false) → F 65.77/17.31
eqt(tuple(z0, z1), lock) → F 65.77/17.31
eqt(tuple(z0, z1), locker) → F 65.77/17.31
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.31
eqt(tuple(z0, z1), ok) → F 65.77/17.31
eqt(tuple(z0, z1), pending) → F 65.77/17.31
eqt(tuple(z0, z1), release) → F 65.77/17.31
eqt(tuple(z0, z1), request) → F 65.77/17.31
eqt(tuple(z0, z1), resource) → F 65.77/17.31
eqt(tuple(z0, z1), tag) → F 65.77/17.31
eqt(tuple(z0, z1), true) → F 65.77/17.31
eqt(tuple(z0, z1), undefined) → F 65.77/17.31
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.31
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuplenil(z0), nil) → F 65.77/17.31
eqt(tuplenil(z0), a) → F 65.77/17.31
eqt(tuplenil(z0), excl) → F 65.77/17.31
eqt(tuplenil(z0), false) → F 65.77/17.31
eqt(tuplenil(z0), lock) → F 65.77/17.31
eqt(tuplenil(z0), locker) → F 65.77/17.31
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.31
eqt(tuplenil(z0), ok) → F 65.77/17.31
eqt(tuplenil(z0), pending) → F 65.77/17.31
eqt(tuplenil(z0), release) → F 65.77/17.31
eqt(tuplenil(z0), request) → F 65.77/17.31
eqt(tuplenil(z0), resource) → F 65.77/17.31
eqt(tuplenil(z0), tag) → F 65.77/17.31
eqt(tuplenil(z0), true) → F 65.77/17.31
eqt(tuplenil(z0), undefined) → F 65.77/17.31
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.31
eqt(tuplenil(z0), int(z1)) → F 65.77/17.31
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.31
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.31
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.31
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.31
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.31
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.31
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.31
record_updates(z0, z1, nil) → z0 65.77/17.31
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.31
locker2_map_promote_pending(nil, z0) → nil 65.77/17.31
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.31
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.31
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.31
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.31
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.31
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.31
case0(z0, z1, z2) → z1 65.77/17.31
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.31
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.31
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.31
case1(z0, z1, z2, false) → z2 65.77/17.31
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.31
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.31
case4(z0, z1, z2) → false 65.77/17.31
locker2_obtainables(nil, z0) → true 65.77/17.31
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.31
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.31
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.31
locker2_check_available(z0, nil) → false 65.77/17.31
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.31
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.31
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.31
locker2_check_availables(nil, z0) → true 65.77/17.31
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.31
locker2_adduniq(nil, z0) → z0 65.77/17.31
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.31
subtract(z0, nil) → z0 65.77/17.31
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.31
delete(z0, nil) → nil 65.77/17.31
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case8(z0, z1, z2, true) → z0 65.77/17.31
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.31
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.31
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.31
member(z0, nil) → false 65.77/17.31
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case9(z0, z1, z2, true) → true 65.77/17.31
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.31
eqs(empty, empty) → T 65.77/17.31
eqs(empty, stack(z0, z1)) → F 65.77/17.31
eqs(stack(z0, z1), empty) → F 65.77/17.31
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.31
pushs(z0, z1) → stack(z0, z1) 65.77/17.31
pops(stack(z0, z1)) → z1 65.77/17.31
tops(stack(z0, z1)) → z0 65.77/17.31
istops(z0, empty) → F 65.77/17.31
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.31
eqc(nocalls, nocalls) → T 65.77/17.31
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.31
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.31
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.31
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.31
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.31
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
K tuples:none
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.31
65.77/17.31

(9) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358
65.77/17.31
65.77/17.31

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.31
or(F, T) → T 65.77/17.31
or(T, F) → T 65.77/17.31
or(F, F) → F 65.77/17.31
and(T, z0) → z0 65.77/17.31
and(z0, T) → z0 65.77/17.31
and(F, z0) → F 65.77/17.31
and(z0, F) → F 65.77/17.31
imp(T, z0) → z0 65.77/17.31
imp(F, z0) → T 65.77/17.31
not(T) → F 65.77/17.31
not(F) → T 65.77/17.31
if(T, z0, z1) → z0 65.77/17.31
if(F, z0, z1) → z1 65.77/17.31
eq(T, T) → T 65.77/17.31
eq(F, F) → T 65.77/17.31
eq(T, F) → F 65.77/17.31
eq(F, T) → F 65.77/17.31
eqt(nil, undefined) → F 65.77/17.31
eqt(nil, pid(z0)) → F 65.77/17.31
eqt(nil, int(z0)) → F 65.77/17.31
eqt(nil, cons(z0, z1)) → F 65.77/17.31
eqt(nil, tuple(z0, z1)) → F 65.77/17.31
eqt(nil, tuplenil(z0)) → F 65.77/17.31
eqt(a, nil) → F 65.77/17.31
eqt(a, a) → T 65.77/17.31
eqt(a, excl) → F 65.77/17.31
eqt(a, false) → F 65.77/17.31
eqt(a, lock) → F 65.77/17.31
eqt(a, locker) → F 65.77/17.31
eqt(a, mcrlrecord) → F 65.77/17.31
eqt(a, ok) → F 65.77/17.31
eqt(a, pending) → F 65.77/17.31
eqt(a, release) → F 65.77/17.31
eqt(a, request) → F 65.77/17.31
eqt(a, resource) → F 65.77/17.31
eqt(a, tag) → F 65.77/17.31
eqt(a, true) → F 65.77/17.31
eqt(a, undefined) → F 65.77/17.31
eqt(a, pid(z0)) → F 65.77/17.31
eqt(a, int(z0)) → F 65.77/17.31
eqt(a, cons(z0, z1)) → F 65.77/17.31
eqt(a, tuple(z0, z1)) → F 65.77/17.31
eqt(a, tuplenil(z0)) → F 65.77/17.31
eqt(excl, nil) → F 65.77/17.31
eqt(excl, a) → F 65.77/17.31
eqt(excl, excl) → T 65.77/17.31
eqt(excl, false) → F 65.77/17.31
eqt(excl, lock) → F 65.77/17.31
eqt(excl, locker) → F 65.77/17.31
eqt(excl, mcrlrecord) → F 65.77/17.31
eqt(excl, ok) → F 65.77/17.31
eqt(excl, pending) → F 65.77/17.31
eqt(excl, release) → F 65.77/17.31
eqt(excl, request) → F 65.77/17.31
eqt(excl, resource) → F 65.77/17.31
eqt(excl, tag) → F 65.77/17.31
eqt(excl, true) → F 65.77/17.31
eqt(excl, undefined) → F 65.77/17.31
eqt(excl, pid(z0)) → F 65.77/17.31
eqt(excl, eqt(false, int(z0))) → F 65.77/17.31
eqt(false, cons(z0, z1)) → F 65.77/17.31
eqt(false, tuple(z0, z1)) → F 65.77/17.31
eqt(false, tuplenil(z0)) → F 65.77/17.31
eqt(lock, nil) → F 65.77/17.31
eqt(lock, a) → F 65.77/17.31
eqt(lock, excl) → F 65.77/17.31
eqt(lock, false) → F 65.77/17.31
eqt(lock, lock) → T 65.77/17.31
eqt(lock, locker) → F 65.77/17.31
eqt(lock, mcrlrecord) → F 65.77/17.31
eqt(lock, ok) → F 65.77/17.31
eqt(lock, pending) → F 65.77/17.31
eqt(lock, release) → F 65.77/17.31
eqt(lock, request) → F 65.77/17.31
eqt(lock, resource) → F 65.77/17.31
eqt(lock, tag) → F 65.77/17.31
eqt(lock, true) → F 65.77/17.31
eqt(lock, undefined) → F 65.77/17.31
eqt(lock, pid(z0)) → F 65.77/17.31
eqt(lock, int(z0)) → F 65.77/17.31
eqt(lock, cons(z0, z1)) → F 65.77/17.31
eqt(lock, tuple(z0, z1)) → F 65.77/17.31
eqt(lock, tuplenil(z0)) → F 65.77/17.31
eqt(locker, nil) → F 65.77/17.31
eqt(locker, a) → F 65.77/17.31
eqt(locker, excl) → F 65.77/17.31
eqt(locker, false) → F 65.77/17.31
eqt(locker, lock) → F 65.77/17.31
eqt(locker, locker) → T 65.77/17.31
eqt(locker, mcrlrecord) → F 65.77/17.31
eqt(locker, ok) → F 65.77/17.31
eqt(locker, pending) → F 65.77/17.31
eqt(locker, release) → F 65.77/17.31
eqt(locker, request) → F 65.77/17.31
eqt(locker, resource) → F 65.77/17.31
eqt(locker, tag) → F 65.77/17.31
eqt(locker, true) → F 65.77/17.31
eqt(locker, undefined) → F 65.77/17.31
eqt(locker, pid(z0)) → F 65.77/17.31
eqt(locker, int(z0)) → F 65.77/17.31
eqt(locker, cons(z0, z1)) → F 65.77/17.31
eqt(locker, tuple(z0, z1)) → F 65.77/17.31
eqt(locker, tuplenil(z0)) → F 65.77/17.31
eqt(mcrlrecord, nil) → F 65.77/17.31
eqt(mcrlrecord, a) → F 65.77/17.31
eqt(mcrlrecord, excl) → F 65.77/17.31
eqt(mcrlrecord, false) → F 65.77/17.31
eqt(mcrlrecord, lock) → F 65.77/17.31
eqt(mcrlrecord, locker) → F 65.77/17.31
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.31
eqt(mcrlrecord, ok) → F 65.77/17.31
eqt(mcrlrecord, pending) → F 65.77/17.31
eqt(mcrlrecord, release) → F 65.77/17.31
eqt(mcrlrecord, request) → F 65.77/17.31
eqt(mcrlrecord, resource) → F 65.77/17.31
eqt(ok, resource) → F 65.77/17.31
eqt(ok, tag) → F 65.77/17.31
eqt(ok, true) → F 65.77/17.31
eqt(ok, undefined) → F 65.77/17.31
eqt(ok, pid(z0)) → F 65.77/17.31
eqt(ok, int(z0)) → F 65.77/17.31
eqt(ok, cons(z0, z1)) → F 65.77/17.31
eqt(ok, tuple(z0, z1)) → F 65.77/17.31
eqt(ok, tuplenil(z0)) → F 65.77/17.31
eqt(pending, nil) → F 65.77/17.31
eqt(pending, a) → F 65.77/17.31
eqt(pending, excl) → F 65.77/17.31
eqt(pending, false) → F 65.77/17.31
eqt(pending, lock) → F 65.77/17.31
eqt(pending, locker) → F 65.77/17.31
eqt(pending, mcrlrecord) → F 65.77/17.31
eqt(pending, ok) → F 65.77/17.31
eqt(pending, pending) → T 65.77/17.31
eqt(pending, release) → F 65.77/17.31
eqt(pending, request) → F 65.77/17.31
eqt(pending, resource) → F 65.77/17.31
eqt(pending, tag) → F 65.77/17.31
eqt(pending, true) → F 65.77/17.31
eqt(pending, undefined) → F 65.77/17.31
eqt(pending, pid(z0)) → F 65.77/17.31
eqt(pending, int(z0)) → F 65.77/17.31
eqt(pending, cons(z0, z1)) → F 65.77/17.31
eqt(pending, tuple(z0, z1)) → F 65.77/17.31
eqt(pending, tuplenil(z0)) → F 65.77/17.31
eqt(release, nil) → F 65.77/17.31
eqt(release, a) → F 65.77/17.31
eqt(release, excl) → F 65.77/17.31
eqt(release, false) → F 65.77/17.31
eqt(release, lock) → F 65.77/17.31
eqt(release, locker) → F 65.77/17.31
eqt(release, mcrlrecord) → F 65.77/17.31
eqt(release, ok) → F 65.77/17.31
eqt(request, mcrlrecord) → F 65.77/17.31
eqt(request, ok) → F 65.77/17.31
eqt(request, pending) → F 65.77/17.31
eqt(request, release) → F 65.77/17.31
eqt(request, request) → T 65.77/17.31
eqt(request, resource) → F 65.77/17.31
eqt(request, tag) → F 65.77/17.31
eqt(request, true) → F 65.77/17.31
eqt(request, undefined) → F 65.77/17.31
eqt(request, pid(z0)) → F 65.77/17.31
eqt(request, int(z0)) → F 65.77/17.31
eqt(request, cons(z0, z1)) → F 65.77/17.31
eqt(request, tuple(z0, z1)) → F 65.77/17.31
eqt(request, tuplenil(z0)) → F 65.77/17.31
eqt(resource, nil) → F 65.77/17.31
eqt(resource, a) → F 65.77/17.31
eqt(resource, excl) → F 65.77/17.31
eqt(resource, false) → F 65.77/17.31
eqt(resource, lock) → F 65.77/17.31
eqt(resource, locker) → F 65.77/17.31
eqt(resource, mcrlrecord) → F 65.77/17.31
eqt(resource, ok) → F 65.77/17.31
eqt(resource, pending) → F 65.77/17.31
eqt(resource, release) → F 65.77/17.31
eqt(resource, request) → F 65.77/17.31
eqt(resource, resource) → T 65.77/17.31
eqt(resource, tag) → F 65.77/17.31
eqt(resource, true) → F 65.77/17.31
eqt(resource, undefined) → F 65.77/17.31
eqt(resource, pid(z0)) → F 65.77/17.31
eqt(resource, int(z0)) → F 65.77/17.31
eqt(resource, cons(z0, z1)) → F 65.77/17.31
eqt(resource, tuple(z0, z1)) → F 65.77/17.31
eqt(resource, tuplenil(z0)) → F 65.77/17.31
eqt(tag, nil) → F 65.77/17.31
eqt(tag, a) → F 65.77/17.31
eqt(tag, excl) → F 65.77/17.31
eqt(tag, false) → F 65.77/17.31
eqt(tag, lock) → F 65.77/17.31
eqt(tag, locker) → F 65.77/17.31
eqt(tag, mcrlrecord) → F 65.77/17.31
eqt(tag, ok) → F 65.77/17.31
eqt(tag, pending) → F 65.77/17.31
eqt(tag, release) → F 65.77/17.31
eqt(tag, request) → F 65.77/17.31
eqt(tag, resource) → F 65.77/17.31
eqt(tag, tag) → T 65.77/17.31
eqt(tag, true) → F 65.77/17.31
eqt(tag, undefined) → F 65.77/17.31
eqt(tag, pid(z0)) → F 65.77/17.31
eqt(tag, int(z0)) → F 65.77/17.31
eqt(tag, cons(z0, z1)) → F 65.77/17.31
eqt(tag, tuple(z0, z1)) → F 65.77/17.31
eqt(tag, tuplenil(z0)) → F 65.77/17.31
eqt(true, nil) → F 65.77/17.31
eqt(true, a) → F 65.77/17.31
eqt(true, excl) → F 65.77/17.31
eqt(true, false) → F 65.77/17.31
eqt(true, lock) → F 65.77/17.31
eqt(true, locker) → F 65.77/17.31
eqt(true, mcrlrecord) → F 65.77/17.31
eqt(true, ok) → F 65.77/17.31
eqt(true, pending) → F 65.77/17.31
eqt(true, release) → F 65.77/17.31
eqt(true, request) → F 65.77/17.31
eqt(true, resource) → F 65.77/17.31
eqt(true, tag) → F 65.77/17.31
eqt(true, true) → T 65.77/17.31
eqt(true, undefined) → F 65.77/17.31
eqt(true, pid(z0)) → F 65.77/17.31
eqt(true, int(z0)) → F 65.77/17.31
eqt(true, cons(z0, z1)) → F 65.77/17.31
eqt(true, tuple(z0, z1)) → F 65.77/17.31
eqt(true, tuplenil(z0)) → F 65.77/17.31
eqt(undefined, nil) → F 65.77/17.31
eqt(undefined, a) → F 65.77/17.31
eqt(undefined, tuplenil(z0)) → F 65.77/17.31
eqt(pid(z0), nil) → F 65.77/17.31
eqt(pid(z0), a) → F 65.77/17.31
eqt(pid(z0), excl) → F 65.77/17.31
eqt(pid(z0), false) → F 65.77/17.31
eqt(pid(z0), lock) → F 65.77/17.31
eqt(pid(z0), locker) → F 65.77/17.31
eqt(pid(z0), mcrlrecord) → F 65.77/17.31
eqt(pid(z0), ok) → F 65.77/17.31
eqt(pid(z0), pending) → F 65.77/17.31
eqt(pid(z0), release) → F 65.77/17.31
eqt(pid(z0), request) → F 65.77/17.31
eqt(pid(z0), resource) → F 65.77/17.31
eqt(pid(z0), tag) → F 65.77/17.31
eqt(pid(z0), true) → F 65.77/17.31
eqt(pid(z0), undefined) → F 65.77/17.31
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.31
eqt(pid(z0), int(z1)) → F 65.77/17.31
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.31
eqt(int(z0), nil) → F 65.77/17.31
eqt(int(z0), a) → F 65.77/17.31
eqt(int(z0), excl) → F 65.77/17.31
eqt(int(z0), false) → F 65.77/17.31
eqt(int(z0), lock) → F 65.77/17.31
eqt(int(z0), locker) → F 65.77/17.31
eqt(int(z0), mcrlrecord) → F 65.77/17.31
eqt(int(z0), ok) → F 65.77/17.31
eqt(int(z0), pending) → F 65.77/17.31
eqt(int(z0), release) → F 65.77/17.31
eqt(int(z0), request) → F 65.77/17.31
eqt(int(z0), resource) → F 65.77/17.31
eqt(int(z0), tag) → F 65.77/17.31
eqt(int(z0), true) → F 65.77/17.31
eqt(int(z0), undefined) → F 65.77/17.31
eqt(cons(z0, z1), resource) → F 65.77/17.31
eqt(cons(z0, z1), tag) → F 65.77/17.31
eqt(cons(z0, z1), true) → F 65.77/17.31
eqt(cons(z0, z1), undefined) → F 65.77/17.31
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.31
eqt(cons(z0, z1), int(z2)) → F 65.77/17.31
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.31
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), nil) → F 65.77/17.31
eqt(tuple(z0, z1), a) → F 65.77/17.31
eqt(tuple(z0, z1), excl) → F 65.77/17.31
eqt(tuple(z0, z1), false) → F 65.77/17.31
eqt(tuple(z0, z1), lock) → F 65.77/17.31
eqt(tuple(z0, z1), locker) → F 65.77/17.31
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.31
eqt(tuple(z0, z1), ok) → F 65.77/17.31
eqt(tuple(z0, z1), pending) → F 65.77/17.31
eqt(tuple(z0, z1), release) → F 65.77/17.31
eqt(tuple(z0, z1), request) → F 65.77/17.31
eqt(tuple(z0, z1), resource) → F 65.77/17.31
eqt(tuple(z0, z1), tag) → F 65.77/17.31
eqt(tuple(z0, z1), true) → F 65.77/17.31
eqt(tuple(z0, z1), undefined) → F 65.77/17.31
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.31
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.31
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.31
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.31
eqt(tuplenil(z0), nil) → F 65.77/17.31
eqt(tuplenil(z0), a) → F 65.77/17.31
eqt(tuplenil(z0), excl) → F 65.77/17.31
eqt(tuplenil(z0), false) → F 65.77/17.31
eqt(tuplenil(z0), lock) → F 65.77/17.31
eqt(tuplenil(z0), locker) → F 65.77/17.31
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.31
eqt(tuplenil(z0), ok) → F 65.77/17.31
eqt(tuplenil(z0), pending) → F 65.77/17.31
eqt(tuplenil(z0), release) → F 65.77/17.31
eqt(tuplenil(z0), request) → F 65.77/17.31
eqt(tuplenil(z0), resource) → F 65.77/17.31
eqt(tuplenil(z0), tag) → F 65.77/17.31
eqt(tuplenil(z0), true) → F 65.77/17.31
eqt(tuplenil(z0), undefined) → F 65.77/17.31
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.31
eqt(tuplenil(z0), int(z1)) → F 65.77/17.31
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.31
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.31
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.31
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.31
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.31
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.31
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.31
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.31
record_updates(z0, z1, nil) → z0 65.77/17.31
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.31
locker2_map_promote_pending(nil, z0) → nil 65.77/17.31
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.31
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.31
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.31
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.31
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.31
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.31
case0(z0, z1, z2) → z1 65.77/17.31
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.31
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.31
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.31
case1(z0, z1, z2, false) → z2 65.77/17.31
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.31
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.31
case4(z0, z1, z2) → false 65.77/17.31
locker2_obtainables(nil, z0) → true 65.77/17.31
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.31
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.31
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.31
locker2_check_available(z0, nil) → false 65.77/17.31
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.31
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.31
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.31
locker2_check_availables(nil, z0) → true 65.77/17.31
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.31
locker2_adduniq(nil, z0) → z0 65.77/17.31
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.31
subtract(z0, nil) → z0 65.77/17.31
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.31
delete(z0, nil) → nil 65.77/17.31
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case8(z0, z1, z2, true) → z0 65.77/17.31
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.31
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.31
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.31
member(z0, nil) → false 65.77/17.31
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.31
case9(z0, z1, z2, true) → true 65.77/17.31
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.31
eqs(empty, empty) → T 65.77/17.31
eqs(empty, stack(z0, z1)) → F 65.77/17.31
eqs(stack(z0, z1), empty) → F 65.77/17.31
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.31
pushs(z0, z1) → stack(z0, z1) 65.77/17.31
pops(stack(z0, z1)) → z1 65.77/17.31
tops(stack(z0, z1)) → z0 65.77/17.31
istops(z0, empty) → F 65.77/17.31
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.31
eqc(nocalls, nocalls) → T 65.77/17.31
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.31
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.31
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.31
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.31
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.31
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.31
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.31
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.31
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.31
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.31
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.31
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.31
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.31
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.31
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.31
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.31
DELETE(z0, cons(z1, z2)) → c352 65.77/17.31
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5))
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.31
CASE2(z0, z1, true) → c335 65.77/17.31
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.31
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.31
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.31
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.31
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.31
MEMBER(z0, cons(z1, z2)) → c358
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.31
65.77/17.31

(11) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.31
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.31
member(z0, nil) → false 65.77/17.31
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.31
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.31
subtract(z0, nil) → z0 65.77/17.31
delete(z0, nil) → nil 65.77/17.31
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.31
eqt(nil, undefined) → F 65.77/17.31
eqt(nil, pid(z0)) → F 65.77/17.31
eqt(nil, int(z0)) → F 65.77/17.31
eqt(nil, cons(z0, z1)) → F 65.77/17.31
eqt(nil, tuple(z0, z1)) → F 65.77/17.31
eqt(nil, tuplenil(z0)) → F 65.77/17.31
eqt(a, nil) → F 65.77/17.31
eqt(a, a) → T 65.77/17.31
eqt(a, excl) → F 65.77/17.31
eqt(a, false) → F 65.77/17.31
eqt(a, lock) → F 65.77/17.31
eqt(a, locker) → F 65.77/17.31
eqt(a, mcrlrecord) → F 65.77/17.31
eqt(a, ok) → F 65.77/17.31
eqt(a, pending) → F 65.77/17.31
eqt(a, release) → F 65.77/17.31
eqt(a, request) → F 65.77/17.31
eqt(a, resource) → F 65.77/17.31
eqt(a, tag) → F 65.77/17.31
eqt(a, true) → F 65.77/17.31
eqt(a, undefined) → F 65.77/17.31
eqt(a, pid(z0)) → F 65.77/17.31
eqt(a, int(z0)) → F 65.77/17.31
eqt(a, cons(z0, z1)) → F 65.77/17.31
eqt(a, tuple(z0, z1)) → F 65.77/17.31
eqt(a, tuplenil(z0)) → F 65.77/17.31
eqt(excl, nil) → F 65.77/17.31
eqt(excl, a) → F 65.77/17.31
eqt(excl, excl) → T 65.77/17.31
eqt(excl, false) → F 65.77/17.31
eqt(excl, lock) → F 65.77/17.31
eqt(excl, locker) → F 65.77/17.31
eqt(excl, mcrlrecord) → F 65.77/17.31
eqt(excl, ok) → F 65.77/17.31
eqt(excl, pending) → F 65.77/17.31
eqt(excl, release) → F 65.77/17.31
eqt(excl, request) → F 65.77/17.31
eqt(excl, resource) → F 65.77/17.31
eqt(excl, tag) → F 65.77/17.31
eqt(excl, true) → F 65.77/17.31
eqt(excl, undefined) → F 65.77/17.31
eqt(excl, pid(z0)) → F 65.77/17.31
eqt(excl, eqt(false, int(z0))) → F 65.77/17.31
eqt(false, cons(z0, z1)) → F 65.77/17.31
eqt(false, tuple(z0, z1)) → F 65.77/17.31
eqt(false, tuplenil(z0)) → F 65.77/17.31
eqt(lock, nil) → F 65.77/17.31
eqt(lock, a) → F 65.77/17.31
eqt(lock, excl) → F 65.77/17.31
eqt(lock, false) → F 65.77/17.31
eqt(lock, lock) → T 65.77/17.31
eqt(lock, locker) → F 65.77/17.31
eqt(lock, mcrlrecord) → F 65.77/17.31
eqt(lock, ok) → F 65.77/17.31
eqt(lock, pending) → F 65.77/17.31
eqt(lock, release) → F 65.77/17.31
eqt(lock, request) → F 65.77/17.31
eqt(lock, resource) → F 65.77/17.31
eqt(lock, tag) → F 65.77/17.31
eqt(lock, true) → F 65.77/17.31
eqt(lock, undefined) → F 65.77/17.31
eqt(lock, pid(z0)) → F 65.77/17.31
eqt(lock, int(z0)) → F 65.77/17.31
eqt(lock, cons(z0, z1)) → F 65.77/17.31
eqt(lock, tuple(z0, z1)) → F 65.77/17.31
eqt(lock, tuplenil(z0)) → F 65.77/17.31
eqt(locker, nil) → F 65.77/17.31
eqt(locker, a) → F 65.77/17.31
eqt(locker, excl) → F 65.77/17.31
eqt(locker, false) → F 65.77/17.31
eqt(locker, lock) → F 65.77/17.31
eqt(locker, locker) → T 65.77/17.31
eqt(locker, mcrlrecord) → F 65.77/17.31
eqt(locker, ok) → F 65.77/17.31
eqt(locker, pending) → F 65.77/17.31
eqt(locker, release) → F 65.77/17.31
eqt(locker, request) → F 65.77/17.31
eqt(locker, resource) → F 65.77/17.31
eqt(locker, tag) → F 65.77/17.31
eqt(locker, true) → F 65.77/17.31
eqt(locker, undefined) → F 65.77/17.31
eqt(locker, pid(z0)) → F 65.77/17.31
eqt(locker, int(z0)) → F 65.77/17.31
eqt(locker, cons(z0, z1)) → F 65.77/17.31
eqt(locker, tuple(z0, z1)) → F 65.77/17.31
eqt(locker, tuplenil(z0)) → F 65.77/17.31
eqt(mcrlrecord, nil) → F 65.77/17.31
eqt(mcrlrecord, a) → F 65.77/17.31
eqt(mcrlrecord, excl) → F 65.77/17.31
eqt(mcrlrecord, false) → F 65.77/17.31
eqt(mcrlrecord, lock) → F 65.77/17.31
eqt(mcrlrecord, locker) → F 65.77/17.31
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.31
eqt(mcrlrecord, ok) → F 65.77/17.31
eqt(mcrlrecord, pending) → F 65.77/17.31
eqt(mcrlrecord, release) → F 65.77/17.31
eqt(mcrlrecord, request) → F 65.77/17.31
eqt(mcrlrecord, resource) → F 65.77/17.31
eqt(ok, resource) → F 65.77/17.31
eqt(ok, tag) → F 65.77/17.31
eqt(ok, true) → F 65.77/17.31
eqt(ok, undefined) → F 65.77/17.31
eqt(ok, pid(z0)) → F 65.77/17.31
eqt(ok, int(z0)) → F 65.77/17.31
eqt(ok, cons(z0, z1)) → F 65.77/17.31
eqt(ok, tuple(z0, z1)) → F 65.77/17.31
eqt(ok, tuplenil(z0)) → F 65.77/17.31
eqt(pending, nil) → F 65.77/17.31
eqt(pending, a) → F 65.77/17.31
eqt(pending, excl) → F 65.77/17.31
eqt(pending, false) → F 65.77/17.31
eqt(pending, lock) → F 65.77/17.31
eqt(pending, locker) → F 65.77/17.31
eqt(pending, mcrlrecord) → F 65.77/17.31
eqt(pending, ok) → F 65.77/17.31
eqt(pending, pending) → T 65.77/17.31
eqt(pending, release) → F 65.77/17.31
eqt(pending, request) → F 65.77/17.31
eqt(pending, resource) → F 65.77/17.31
eqt(pending, tag) → F 65.77/17.31
eqt(pending, true) → F 65.77/17.31
eqt(pending, undefined) → F 65.77/17.31
eqt(pending, pid(z0)) → F 65.77/17.31
eqt(pending, int(z0)) → F 65.77/17.31
eqt(pending, cons(z0, z1)) → F 65.77/17.31
eqt(pending, tuple(z0, z1)) → F 65.77/17.31
eqt(pending, tuplenil(z0)) → F 65.77/17.31
eqt(release, nil) → F 65.77/17.31
eqt(release, a) → F 65.77/17.31
eqt(release, excl) → F 65.77/17.31
eqt(release, false) → F 65.77/17.31
eqt(release, lock) → F 65.77/17.31
eqt(release, locker) → F 65.77/17.31
eqt(release, mcrlrecord) → F 65.77/17.31
eqt(release, ok) → F 65.77/17.31
eqt(request, mcrlrecord) → F 65.77/17.31
eqt(request, ok) → F 65.77/17.31
eqt(request, pending) → F 65.77/17.31
eqt(request, release) → F 65.77/17.31
eqt(request, request) → T 65.77/17.31
eqt(request, resource) → F 65.77/17.31
eqt(request, tag) → F 65.77/17.31
eqt(request, true) → F 65.77/17.31
eqt(request, undefined) → F 65.77/17.31
eqt(request, pid(z0)) → F 65.77/17.31
eqt(request, int(z0)) → F 65.77/17.31
eqt(request, cons(z0, z1)) → F 65.77/17.31
eqt(request, tuple(z0, z1)) → F 65.77/17.31
eqt(request, tuplenil(z0)) → F 65.77/17.31
eqt(resource, nil) → F 65.77/17.31
eqt(resource, a) → F 65.77/17.31
eqt(resource, excl) → F 65.77/17.31
eqt(resource, false) → F 65.77/17.31
eqt(resource, lock) → F 65.77/17.31
eqt(resource, locker) → F 65.77/17.31
eqt(resource, mcrlrecord) → F 65.77/17.31
eqt(resource, ok) → F 65.77/17.31
eqt(resource, pending) → F 65.77/17.31
eqt(resource, release) → F 65.77/17.31
eqt(resource, request) → F 65.77/17.31
eqt(resource, resource) → T 65.77/17.31
eqt(resource, tag) → F 65.77/17.31
eqt(resource, true) → F 65.77/17.31
eqt(resource, undefined) → F 65.77/17.31
eqt(resource, pid(z0)) → F 65.77/17.31
eqt(resource, int(z0)) → F 65.77/17.31
eqt(resource, cons(z0, z1)) → F 65.77/17.31
eqt(resource, tuple(z0, z1)) → F 65.77/17.31
eqt(resource, tuplenil(z0)) → F 65.77/17.31
eqt(tag, nil) → F 65.77/17.31
eqt(tag, a) → F 65.77/17.31
eqt(tag, excl) → F 65.77/17.31
eqt(tag, false) → F 65.77/17.31
eqt(tag, lock) → F 65.77/17.31
eqt(tag, locker) → F 65.77/17.31
eqt(tag, mcrlrecord) → F 65.77/17.31
eqt(tag, ok) → F 65.77/17.31
eqt(tag, pending) → F 65.77/17.31
eqt(tag, release) → F 65.77/17.31
eqt(tag, request) → F 65.77/17.31
eqt(tag, resource) → F 65.77/17.31
eqt(tag, tag) → T 65.77/17.31
eqt(tag, true) → F 65.77/17.31
eqt(tag, undefined) → F 65.77/17.31
eqt(tag, pid(z0)) → F 65.77/17.31
eqt(tag, int(z0)) → F 65.77/17.31
eqt(tag, cons(z0, z1)) → F 65.77/17.31
eqt(tag, tuple(z0, z1)) → F 65.77/17.31
eqt(tag, tuplenil(z0)) → F 65.77/17.31
eqt(true, nil) → F 65.77/17.31
eqt(true, a) → F 65.77/17.31
eqt(true, excl) → F 65.77/17.31
eqt(true, false) → F 65.77/17.31
eqt(true, lock) → F 65.77/17.31
eqt(true, locker) → F 65.77/17.31
eqt(true, mcrlrecord) → F 65.77/17.31
eqt(true, ok) → F 65.77/17.31
eqt(true, pending) → F 65.77/17.31
eqt(true, release) → F 65.77/17.31
eqt(true, request) → F 65.77/17.31
eqt(true, resource) → F 65.77/17.31
eqt(true, tag) → F 65.77/17.31
eqt(true, true) → T 65.77/17.31
eqt(true, undefined) → F 65.77/17.31
eqt(true, pid(z0)) → F 65.77/17.31
eqt(true, int(z0)) → F 65.77/17.31
eqt(true, cons(z0, z1)) → F 65.77/17.31
eqt(true, tuple(z0, z1)) → F 65.77/17.31
eqt(true, tuplenil(z0)) → F 65.77/17.31
eqt(undefined, nil) → F 65.77/17.31
eqt(undefined, a) → F 65.77/17.31
eqt(undefined, tuplenil(z0)) → F 65.77/17.31
eqt(pid(z0), nil) → F 65.77/17.31
eqt(pid(z0), a) → F 65.77/17.31
eqt(pid(z0), excl) → F 65.77/17.32
eqt(pid(z0), false) → F 65.77/17.32
eqt(pid(z0), lock) → F 65.77/17.32
eqt(pid(z0), locker) → F 65.77/17.32
eqt(pid(z0), mcrlrecord) → F 65.77/17.32
eqt(pid(z0), ok) → F 65.77/17.32
eqt(pid(z0), pending) → F 65.77/17.32
eqt(pid(z0), release) → F 65.77/17.32
eqt(pid(z0), request) → F 65.77/17.32
eqt(pid(z0), resource) → F 65.77/17.32
eqt(pid(z0), tag) → F 65.77/17.32
eqt(pid(z0), true) → F 65.77/17.32
eqt(pid(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), int(z1)) → F 65.77/17.32
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.32
eqt(int(z0), nil) → F 65.77/17.32
eqt(int(z0), a) → F 65.77/17.32
eqt(int(z0), excl) → F 65.77/17.32
eqt(int(z0), false) → F 65.77/17.32
eqt(int(z0), lock) → F 65.77/17.32
eqt(int(z0), locker) → F 65.77/17.32
eqt(int(z0), mcrlrecord) → F 65.77/17.32
eqt(int(z0), ok) → F 65.77/17.32
eqt(int(z0), pending) → F 65.77/17.32
eqt(int(z0), release) → F 65.77/17.32
eqt(int(z0), request) → F 65.77/17.32
eqt(int(z0), resource) → F 65.77/17.32
eqt(int(z0), tag) → F 65.77/17.32
eqt(int(z0), true) → F 65.77/17.32
eqt(int(z0), undefined) → F 65.77/17.32
eqt(cons(z0, z1), resource) → F 65.77/17.32
eqt(cons(z0, z1), tag) → F 65.77/17.32
eqt(cons(z0, z1), true) → F 65.77/17.32
eqt(cons(z0, z1), undefined) → F 65.77/17.32
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.32
eqt(cons(z0, z1), int(z2)) → F 65.77/17.32
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.32
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), nil) → F 65.77/17.32
eqt(tuple(z0, z1), a) → F 65.77/17.32
eqt(tuple(z0, z1), excl) → F 65.77/17.32
eqt(tuple(z0, z1), false) → F 65.77/17.32
eqt(tuple(z0, z1), lock) → F 65.77/17.32
eqt(tuple(z0, z1), locker) → F 65.77/17.32
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.32
eqt(tuple(z0, z1), ok) → F 65.77/17.32
eqt(tuple(z0, z1), pending) → F 65.77/17.32
eqt(tuple(z0, z1), release) → F 65.77/17.32
eqt(tuple(z0, z1), request) → F 65.77/17.32
eqt(tuple(z0, z1), resource) → F 65.77/17.32
eqt(tuple(z0, z1), tag) → F 65.77/17.32
eqt(tuple(z0, z1), true) → F 65.77/17.32
eqt(tuple(z0, z1), undefined) → F 65.77/17.32
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.32
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuplenil(z0), nil) → F 65.77/17.32
eqt(tuplenil(z0), a) → F 65.77/17.32
eqt(tuplenil(z0), excl) → F 65.77/17.32
eqt(tuplenil(z0), false) → F 65.77/17.32
eqt(tuplenil(z0), lock) → F 65.77/17.32
eqt(tuplenil(z0), locker) → F 65.77/17.32
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.32
eqt(tuplenil(z0), ok) → F 65.77/17.32
eqt(tuplenil(z0), pending) → F 65.77/17.32
eqt(tuplenil(z0), release) → F 65.77/17.32
eqt(tuplenil(z0), request) → F 65.77/17.32
eqt(tuplenil(z0), resource) → F 65.77/17.32
eqt(tuplenil(z0), tag) → F 65.77/17.32
eqt(tuplenil(z0), true) → F 65.77/17.32
eqt(tuplenil(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.32
eqt(tuplenil(z0), int(z1)) → F 65.77/17.32
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.32
and(T, z0) → z0 65.77/17.32
and(z0, T) → z0 65.77/17.32
and(F, z0) → F 65.77/17.32
and(z0, F) → F 65.77/17.32
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.32
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.32

POL(APPEND(x1, x2)) = 0    65.77/17.32
POL(CASE1(x1, x2, x3, x4)) = [5]x1 + x2 + x3    65.77/17.32
POL(CASE2(x1, x2, x3)) = [5]x1 + [3]x2    65.77/17.32
POL(DELETE(x1, x2)) = 0    65.77/17.32
POL(ELEMENT(x1, x2)) = x2    65.77/17.32
POL(EQC(x1, x2)) = [5]x1    65.77/17.32
POL(EQS(x1, x2)) = [1] + [4]x1    65.77/17.32
POL(EQT(x1, x2)) = 0    65.77/17.32
POL(F) = [3]    65.77/17.32
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [2] + [5]x1 + [3]x2 + [5]x3    65.77/17.32
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.32
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [3] + [3]x1 + [5]x2    65.77/17.32
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [2] + [5]x1 + [4]x2    65.77/17.32
POL(MEMBER(x1, x2)) = [3]x2    65.77/17.32
POL(PUSH(x1, x2, x3)) = [5]x1 + [3]x2 + [4]x3    65.77/17.32
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [2] + [5]x1 + [2]x2 + x3 + [4]x4 + [4]x5    65.77/17.32
POL(RECORD_UPDATES(x1, x2, x3)) = 0    65.77/17.32
POL(SUBTRACT(x1, x2)) = 0    65.77/17.32
POL(T) = [3]    65.77/17.32
POL(a) = [3]    65.77/17.32
POL(and(x1, x2)) = [3]    65.77/17.32
POL(append(x1, x2)) = [3]    65.77/17.32
POL(c(x1)) = x1    65.77/17.32
POL(c245(x1)) = x1    65.77/17.32
POL(c271(x1, x2)) = x1 + x2    65.77/17.32
POL(c292(x1, x2)) = x1 + x2    65.77/17.32
POL(c313(x1)) = x1    65.77/17.32
POL(c316(x1)) = x1    65.77/17.32
POL(c321(x1)) = x1    65.77/17.32
POL(c323(x1, x2)) = x1 + x2    65.77/17.32
POL(c325(x1)) = x1    65.77/17.32
POL(c327) = 0    65.77/17.32
POL(c332(x1)) = x1    65.77/17.32
POL(c334(x1)) = x1    65.77/17.32
POL(c335) = 0    65.77/17.32
POL(c342) = 0    65.77/17.32
POL(c346(x1, x2)) = x1 + x2    65.77/17.32
POL(c348(x1)) = x1    65.77/17.32
POL(c350(x1, x2)) = x1 + x2    65.77/17.32
POL(c352) = 0    65.77/17.32
POL(c358) = 0    65.77/17.32
POL(c364(x1, x2)) = x1 + x2    65.77/17.32
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.32
POL(c376) = 0    65.77/17.32
POL(calls(x1, x2, x3)) = [4] + x1 + x2 + x3    65.77/17.32
POL(case8(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3    65.77/17.32
POL(case9(x1, x2, x3, x4)) = [4] + [4]x4    65.77/17.32
POL(cons(x1, x2)) = [4]    65.77/17.32
POL(delete(x1, x2)) = 0    65.77/17.32
POL(eqt(x1, x2)) = 0    65.77/17.32
POL(equal(x1, x2)) = [2]    65.77/17.32
POL(excl) = 0    65.77/17.32
POL(false) = 0    65.77/17.32
POL(gen_modtageq(x1, x2)) = 0    65.77/17.32
POL(int(x1)) = [3] + x1    65.77/17.32
POL(lock) = [5]    65.77/17.32
POL(locker) = [3]    65.77/17.32
POL(mcrlrecord) = [3]    65.77/17.32
POL(member(x1, x2)) = [2] + [4]x2    65.77/17.32
POL(nil) = [1]    65.77/17.32
POL(ok) = [3]    65.77/17.32
POL(pending) = 0    65.77/17.32
POL(pid(x1)) = x1    65.77/17.32
POL(record_extract(x1, x2, x3)) = [4] + [5]x1 + [5]x2 + [5]x3    65.77/17.32
POL(record_update(x1, x2, x3, x4)) = 0    65.77/17.32
POL(release) = [3]    65.77/17.32
POL(request) = [3]    65.77/17.32
POL(resource) = [5]    65.77/17.32
POL(s(x1)) = [1] + x1    65.77/17.32
POL(stack(x1, x2)) = x1 + x2    65.77/17.32
POL(subtract(x1, x2)) = [3]    65.77/17.32
POL(tag) = [3]    65.77/17.32
POL(true) = 0    65.77/17.32
POL(tuple(x1, x2)) = [4] + x1 + x2    65.77/17.32
POL(tuplenil(x1)) = [4]    65.77/17.32
POL(undefined) = [3]   
65.77/17.32
65.77/17.32

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.32
or(F, T) → T 65.77/17.32
or(T, F) → T 65.77/17.32
or(F, F) → F 65.77/17.32
and(T, z0) → z0 65.77/17.32
and(z0, T) → z0 65.77/17.32
and(F, z0) → F 65.77/17.32
and(z0, F) → F 65.77/17.32
imp(T, z0) → z0 65.77/17.32
imp(F, z0) → T 65.77/17.32
not(T) → F 65.77/17.32
not(F) → T 65.77/17.32
if(T, z0, z1) → z0 65.77/17.32
if(F, z0, z1) → z1 65.77/17.32
eq(T, T) → T 65.77/17.32
eq(F, F) → T 65.77/17.32
eq(T, F) → F 65.77/17.32
eq(F, T) → F 65.77/17.32
eqt(nil, undefined) → F 65.77/17.32
eqt(nil, pid(z0)) → F 65.77/17.32
eqt(nil, int(z0)) → F 65.77/17.32
eqt(nil, cons(z0, z1)) → F 65.77/17.32
eqt(nil, tuple(z0, z1)) → F 65.77/17.32
eqt(nil, tuplenil(z0)) → F 65.77/17.32
eqt(a, nil) → F 65.77/17.32
eqt(a, a) → T 65.77/17.32
eqt(a, excl) → F 65.77/17.32
eqt(a, false) → F 65.77/17.32
eqt(a, lock) → F 65.77/17.32
eqt(a, locker) → F 65.77/17.32
eqt(a, mcrlrecord) → F 65.77/17.32
eqt(a, ok) → F 65.77/17.32
eqt(a, pending) → F 65.77/17.32
eqt(a, release) → F 65.77/17.32
eqt(a, request) → F 65.77/17.32
eqt(a, resource) → F 65.77/17.32
eqt(a, tag) → F 65.77/17.32
eqt(a, true) → F 65.77/17.32
eqt(a, undefined) → F 65.77/17.32
eqt(a, pid(z0)) → F 65.77/17.32
eqt(a, int(z0)) → F 65.77/17.32
eqt(a, cons(z0, z1)) → F 65.77/17.32
eqt(a, tuple(z0, z1)) → F 65.77/17.32
eqt(a, tuplenil(z0)) → F 65.77/17.32
eqt(excl, nil) → F 65.77/17.32
eqt(excl, a) → F 65.77/17.32
eqt(excl, excl) → T 65.77/17.32
eqt(excl, false) → F 65.77/17.32
eqt(excl, lock) → F 65.77/17.32
eqt(excl, locker) → F 65.77/17.32
eqt(excl, mcrlrecord) → F 65.77/17.32
eqt(excl, ok) → F 65.77/17.32
eqt(excl, pending) → F 65.77/17.32
eqt(excl, release) → F 65.77/17.32
eqt(excl, request) → F 65.77/17.32
eqt(excl, resource) → F 65.77/17.32
eqt(excl, tag) → F 65.77/17.32
eqt(excl, true) → F 65.77/17.32
eqt(excl, undefined) → F 65.77/17.32
eqt(excl, pid(z0)) → F 65.77/17.32
eqt(excl, eqt(false, int(z0))) → F 65.77/17.32
eqt(false, cons(z0, z1)) → F 65.77/17.32
eqt(false, tuple(z0, z1)) → F 65.77/17.32
eqt(false, tuplenil(z0)) → F 65.77/17.32
eqt(lock, nil) → F 65.77/17.32
eqt(lock, a) → F 65.77/17.32
eqt(lock, excl) → F 65.77/17.32
eqt(lock, false) → F 65.77/17.32
eqt(lock, lock) → T 65.77/17.32
eqt(lock, locker) → F 65.77/17.32
eqt(lock, mcrlrecord) → F 65.77/17.32
eqt(lock, ok) → F 65.77/17.32
eqt(lock, pending) → F 65.77/17.32
eqt(lock, release) → F 65.77/17.32
eqt(lock, request) → F 65.77/17.32
eqt(lock, resource) → F 65.77/17.32
eqt(lock, tag) → F 65.77/17.32
eqt(lock, true) → F 65.77/17.32
eqt(lock, undefined) → F 65.77/17.32
eqt(lock, pid(z0)) → F 65.77/17.32
eqt(lock, int(z0)) → F 65.77/17.32
eqt(lock, cons(z0, z1)) → F 65.77/17.32
eqt(lock, tuple(z0, z1)) → F 65.77/17.32
eqt(lock, tuplenil(z0)) → F 65.77/17.32
eqt(locker, nil) → F 65.77/17.32
eqt(locker, a) → F 65.77/17.32
eqt(locker, excl) → F 65.77/17.32
eqt(locker, false) → F 65.77/17.32
eqt(locker, lock) → F 65.77/17.32
eqt(locker, locker) → T 65.77/17.32
eqt(locker, mcrlrecord) → F 65.77/17.32
eqt(locker, ok) → F 65.77/17.32
eqt(locker, pending) → F 65.77/17.32
eqt(locker, release) → F 65.77/17.32
eqt(locker, request) → F 65.77/17.32
eqt(locker, resource) → F 65.77/17.32
eqt(locker, tag) → F 65.77/17.32
eqt(locker, true) → F 65.77/17.32
eqt(locker, undefined) → F 65.77/17.32
eqt(locker, pid(z0)) → F 65.77/17.32
eqt(locker, int(z0)) → F 65.77/17.32
eqt(locker, cons(z0, z1)) → F 65.77/17.32
eqt(locker, tuple(z0, z1)) → F 65.77/17.32
eqt(locker, tuplenil(z0)) → F 65.77/17.32
eqt(mcrlrecord, nil) → F 65.77/17.32
eqt(mcrlrecord, a) → F 65.77/17.32
eqt(mcrlrecord, excl) → F 65.77/17.32
eqt(mcrlrecord, false) → F 65.77/17.32
eqt(mcrlrecord, lock) → F 65.77/17.32
eqt(mcrlrecord, locker) → F 65.77/17.32
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.32
eqt(mcrlrecord, ok) → F 65.77/17.32
eqt(mcrlrecord, pending) → F 65.77/17.32
eqt(mcrlrecord, release) → F 65.77/17.32
eqt(mcrlrecord, request) → F 65.77/17.32
eqt(mcrlrecord, resource) → F 65.77/17.32
eqt(ok, resource) → F 65.77/17.32
eqt(ok, tag) → F 65.77/17.32
eqt(ok, true) → F 65.77/17.32
eqt(ok, undefined) → F 65.77/17.32
eqt(ok, pid(z0)) → F 65.77/17.32
eqt(ok, int(z0)) → F 65.77/17.32
eqt(ok, cons(z0, z1)) → F 65.77/17.32
eqt(ok, tuple(z0, z1)) → F 65.77/17.32
eqt(ok, tuplenil(z0)) → F 65.77/17.32
eqt(pending, nil) → F 65.77/17.32
eqt(pending, a) → F 65.77/17.32
eqt(pending, excl) → F 65.77/17.32
eqt(pending, false) → F 65.77/17.32
eqt(pending, lock) → F 65.77/17.32
eqt(pending, locker) → F 65.77/17.32
eqt(pending, mcrlrecord) → F 65.77/17.32
eqt(pending, ok) → F 65.77/17.32
eqt(pending, pending) → T 65.77/17.32
eqt(pending, release) → F 65.77/17.32
eqt(pending, request) → F 65.77/17.32
eqt(pending, resource) → F 65.77/17.32
eqt(pending, tag) → F 65.77/17.32
eqt(pending, true) → F 65.77/17.32
eqt(pending, undefined) → F 65.77/17.32
eqt(pending, pid(z0)) → F 65.77/17.32
eqt(pending, int(z0)) → F 65.77/17.32
eqt(pending, cons(z0, z1)) → F 65.77/17.32
eqt(pending, tuple(z0, z1)) → F 65.77/17.32
eqt(pending, tuplenil(z0)) → F 65.77/17.32
eqt(release, nil) → F 65.77/17.32
eqt(release, a) → F 65.77/17.32
eqt(release, excl) → F 65.77/17.32
eqt(release, false) → F 65.77/17.32
eqt(release, lock) → F 65.77/17.32
eqt(release, locker) → F 65.77/17.32
eqt(release, mcrlrecord) → F 65.77/17.32
eqt(release, ok) → F 65.77/17.32
eqt(request, mcrlrecord) → F 65.77/17.32
eqt(request, ok) → F 65.77/17.32
eqt(request, pending) → F 65.77/17.32
eqt(request, release) → F 65.77/17.32
eqt(request, request) → T 65.77/17.32
eqt(request, resource) → F 65.77/17.32
eqt(request, tag) → F 65.77/17.32
eqt(request, true) → F 65.77/17.32
eqt(request, undefined) → F 65.77/17.32
eqt(request, pid(z0)) → F 65.77/17.32
eqt(request, int(z0)) → F 65.77/17.32
eqt(request, cons(z0, z1)) → F 65.77/17.32
eqt(request, tuple(z0, z1)) → F 65.77/17.32
eqt(request, tuplenil(z0)) → F 65.77/17.32
eqt(resource, nil) → F 65.77/17.32
eqt(resource, a) → F 65.77/17.32
eqt(resource, excl) → F 65.77/17.32
eqt(resource, false) → F 65.77/17.32
eqt(resource, lock) → F 65.77/17.32
eqt(resource, locker) → F 65.77/17.32
eqt(resource, mcrlrecord) → F 65.77/17.32
eqt(resource, ok) → F 65.77/17.32
eqt(resource, pending) → F 65.77/17.32
eqt(resource, release) → F 65.77/17.32
eqt(resource, request) → F 65.77/17.32
eqt(resource, resource) → T 65.77/17.32
eqt(resource, tag) → F 65.77/17.32
eqt(resource, true) → F 65.77/17.32
eqt(resource, undefined) → F 65.77/17.32
eqt(resource, pid(z0)) → F 65.77/17.32
eqt(resource, int(z0)) → F 65.77/17.32
eqt(resource, cons(z0, z1)) → F 65.77/17.32
eqt(resource, tuple(z0, z1)) → F 65.77/17.32
eqt(resource, tuplenil(z0)) → F 65.77/17.32
eqt(tag, nil) → F 65.77/17.32
eqt(tag, a) → F 65.77/17.32
eqt(tag, excl) → F 65.77/17.32
eqt(tag, false) → F 65.77/17.32
eqt(tag, lock) → F 65.77/17.32
eqt(tag, locker) → F 65.77/17.32
eqt(tag, mcrlrecord) → F 65.77/17.32
eqt(tag, ok) → F 65.77/17.32
eqt(tag, pending) → F 65.77/17.32
eqt(tag, release) → F 65.77/17.32
eqt(tag, request) → F 65.77/17.32
eqt(tag, resource) → F 65.77/17.32
eqt(tag, tag) → T 65.77/17.32
eqt(tag, true) → F 65.77/17.32
eqt(tag, undefined) → F 65.77/17.32
eqt(tag, pid(z0)) → F 65.77/17.32
eqt(tag, int(z0)) → F 65.77/17.32
eqt(tag, cons(z0, z1)) → F 65.77/17.32
eqt(tag, tuple(z0, z1)) → F 65.77/17.32
eqt(tag, tuplenil(z0)) → F 65.77/17.32
eqt(true, nil) → F 65.77/17.32
eqt(true, a) → F 65.77/17.32
eqt(true, excl) → F 65.77/17.32
eqt(true, false) → F 65.77/17.32
eqt(true, lock) → F 65.77/17.32
eqt(true, locker) → F 65.77/17.32
eqt(true, mcrlrecord) → F 65.77/17.32
eqt(true, ok) → F 65.77/17.32
eqt(true, pending) → F 65.77/17.32
eqt(true, release) → F 65.77/17.32
eqt(true, request) → F 65.77/17.32
eqt(true, resource) → F 65.77/17.32
eqt(true, tag) → F 65.77/17.32
eqt(true, true) → T 65.77/17.32
eqt(true, undefined) → F 65.77/17.32
eqt(true, pid(z0)) → F 65.77/17.32
eqt(true, int(z0)) → F 65.77/17.32
eqt(true, cons(z0, z1)) → F 65.77/17.32
eqt(true, tuple(z0, z1)) → F 65.77/17.32
eqt(true, tuplenil(z0)) → F 65.77/17.32
eqt(undefined, nil) → F 65.77/17.32
eqt(undefined, a) → F 65.77/17.32
eqt(undefined, tuplenil(z0)) → F 65.77/17.32
eqt(pid(z0), nil) → F 65.77/17.32
eqt(pid(z0), a) → F 65.77/17.32
eqt(pid(z0), excl) → F 65.77/17.32
eqt(pid(z0), false) → F 65.77/17.32
eqt(pid(z0), lock) → F 65.77/17.32
eqt(pid(z0), locker) → F 65.77/17.32
eqt(pid(z0), mcrlrecord) → F 65.77/17.32
eqt(pid(z0), ok) → F 65.77/17.32
eqt(pid(z0), pending) → F 65.77/17.32
eqt(pid(z0), release) → F 65.77/17.32
eqt(pid(z0), request) → F 65.77/17.32
eqt(pid(z0), resource) → F 65.77/17.32
eqt(pid(z0), tag) → F 65.77/17.32
eqt(pid(z0), true) → F 65.77/17.32
eqt(pid(z0), undefined) → F 65.77/17.32
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), int(z1)) → F 65.77/17.32
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.32
eqt(int(z0), nil) → F 65.77/17.32
eqt(int(z0), a) → F 65.77/17.32
eqt(int(z0), excl) → F 65.77/17.32
eqt(int(z0), false) → F 65.77/17.32
eqt(int(z0), lock) → F 65.77/17.32
eqt(int(z0), locker) → F 65.77/17.32
eqt(int(z0), mcrlrecord) → F 65.77/17.32
eqt(int(z0), ok) → F 65.77/17.32
eqt(int(z0), pending) → F 65.77/17.32
eqt(int(z0), release) → F 65.77/17.32
eqt(int(z0), request) → F 65.77/17.32
eqt(int(z0), resource) → F 65.77/17.32
eqt(int(z0), tag) → F 65.77/17.32
eqt(int(z0), true) → F 65.77/17.32
eqt(int(z0), undefined) → F 65.77/17.32
eqt(cons(z0, z1), resource) → F 65.77/17.32
eqt(cons(z0, z1), tag) → F 65.77/17.32
eqt(cons(z0, z1), true) → F 65.77/17.32
eqt(cons(z0, z1), undefined) → F 65.77/17.32
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.32
eqt(cons(z0, z1), int(z2)) → F 65.77/17.32
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.32
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), nil) → F 65.77/17.32
eqt(tuple(z0, z1), a) → F 65.77/17.32
eqt(tuple(z0, z1), excl) → F 65.77/17.32
eqt(tuple(z0, z1), false) → F 65.77/17.32
eqt(tuple(z0, z1), lock) → F 65.77/17.32
eqt(tuple(z0, z1), locker) → F 65.77/17.32
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.32
eqt(tuple(z0, z1), ok) → F 65.77/17.32
eqt(tuple(z0, z1), pending) → F 65.77/17.32
eqt(tuple(z0, z1), release) → F 65.77/17.32
eqt(tuple(z0, z1), request) → F 65.77/17.32
eqt(tuple(z0, z1), resource) → F 65.77/17.32
eqt(tuple(z0, z1), tag) → F 65.77/17.32
eqt(tuple(z0, z1), true) → F 65.77/17.32
eqt(tuple(z0, z1), undefined) → F 65.77/17.32
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.32
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuplenil(z0), nil) → F 65.77/17.32
eqt(tuplenil(z0), a) → F 65.77/17.32
eqt(tuplenil(z0), excl) → F 65.77/17.32
eqt(tuplenil(z0), false) → F 65.77/17.32
eqt(tuplenil(z0), lock) → F 65.77/17.32
eqt(tuplenil(z0), locker) → F 65.77/17.32
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.32
eqt(tuplenil(z0), ok) → F 65.77/17.32
eqt(tuplenil(z0), pending) → F 65.77/17.32
eqt(tuplenil(z0), release) → F 65.77/17.32
eqt(tuplenil(z0), request) → F 65.77/17.32
eqt(tuplenil(z0), resource) → F 65.77/17.32
eqt(tuplenil(z0), tag) → F 65.77/17.32
eqt(tuplenil(z0), true) → F 65.77/17.32
eqt(tuplenil(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.32
eqt(tuplenil(z0), int(z1)) → F 65.77/17.32
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.32
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.32
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.32
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.32
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.32
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.32
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.32
record_updates(z0, z1, nil) → z0 65.77/17.32
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.32
locker2_map_promote_pending(nil, z0) → nil 65.77/17.32
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.32
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.32
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.32
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.32
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.32
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.32
case0(z0, z1, z2) → z1 65.77/17.32
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.32
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.32
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.32
case1(z0, z1, z2, false) → z2 65.77/17.32
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.32
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.32
case4(z0, z1, z2) → false 65.77/17.32
locker2_obtainables(nil, z0) → true 65.77/17.32
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.32
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.32
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.32
locker2_check_available(z0, nil) → false 65.77/17.32
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.32
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.32
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.32
locker2_check_availables(nil, z0) → true 65.77/17.32
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.32
locker2_adduniq(nil, z0) → z0 65.77/17.32
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.32
subtract(z0, nil) → z0 65.77/17.32
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.32
delete(z0, nil) → nil 65.77/17.32
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.32
case8(z0, z1, z2, true) → z0 65.77/17.32
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.32
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.32
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.32
member(z0, nil) → false 65.77/17.32
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.32
case9(z0, z1, z2, true) → true 65.77/17.32
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.32
eqs(empty, empty) → T 65.77/17.32
eqs(empty, stack(z0, z1)) → F 65.77/17.32
eqs(stack(z0, z1), empty) → F 65.77/17.32
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.32
pushs(z0, z1) → stack(z0, z1) 65.77/17.32
pops(stack(z0, z1)) → z1 65.77/17.32
tops(stack(z0, z1)) → z0 65.77/17.32
istops(z0, empty) → F 65.77/17.32
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.32
eqc(nocalls, nocalls) → T 65.77/17.32
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.32
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.32
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.32
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.32
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.32
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3))
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.32
65.77/17.32

(13) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.32
member(z0, nil) → false 65.77/17.32
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.32
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.32
subtract(z0, nil) → z0 65.77/17.32
delete(z0, nil) → nil 65.77/17.32
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.32
eqt(nil, undefined) → F 65.77/17.32
eqt(nil, pid(z0)) → F 65.77/17.32
eqt(nil, int(z0)) → F 65.77/17.32
eqt(nil, cons(z0, z1)) → F 65.77/17.32
eqt(nil, tuple(z0, z1)) → F 65.77/17.32
eqt(nil, tuplenil(z0)) → F 65.77/17.32
eqt(a, nil) → F 65.77/17.32
eqt(a, a) → T 65.77/17.32
eqt(a, excl) → F 65.77/17.32
eqt(a, false) → F 65.77/17.32
eqt(a, lock) → F 65.77/17.32
eqt(a, locker) → F 65.77/17.32
eqt(a, mcrlrecord) → F 65.77/17.32
eqt(a, ok) → F 65.77/17.32
eqt(a, pending) → F 65.77/17.32
eqt(a, release) → F 65.77/17.32
eqt(a, request) → F 65.77/17.32
eqt(a, resource) → F 65.77/17.32
eqt(a, tag) → F 65.77/17.32
eqt(a, true) → F 65.77/17.32
eqt(a, undefined) → F 65.77/17.32
eqt(a, pid(z0)) → F 65.77/17.32
eqt(a, int(z0)) → F 65.77/17.32
eqt(a, cons(z0, z1)) → F 65.77/17.32
eqt(a, tuple(z0, z1)) → F 65.77/17.32
eqt(a, tuplenil(z0)) → F 65.77/17.32
eqt(excl, nil) → F 65.77/17.32
eqt(excl, a) → F 65.77/17.32
eqt(excl, excl) → T 65.77/17.32
eqt(excl, false) → F 65.77/17.32
eqt(excl, lock) → F 65.77/17.32
eqt(excl, locker) → F 65.77/17.32
eqt(excl, mcrlrecord) → F 65.77/17.32
eqt(excl, ok) → F 65.77/17.32
eqt(excl, pending) → F 65.77/17.32
eqt(excl, release) → F 65.77/17.32
eqt(excl, request) → F 65.77/17.32
eqt(excl, resource) → F 65.77/17.32
eqt(excl, tag) → F 65.77/17.32
eqt(excl, true) → F 65.77/17.32
eqt(excl, undefined) → F 65.77/17.32
eqt(excl, pid(z0)) → F 65.77/17.32
eqt(excl, eqt(false, int(z0))) → F 65.77/17.32
eqt(false, cons(z0, z1)) → F 65.77/17.32
eqt(false, tuple(z0, z1)) → F 65.77/17.32
eqt(false, tuplenil(z0)) → F 65.77/17.32
eqt(lock, nil) → F 65.77/17.32
eqt(lock, a) → F 65.77/17.32
eqt(lock, excl) → F 65.77/17.32
eqt(lock, false) → F 65.77/17.32
eqt(lock, lock) → T 65.77/17.32
eqt(lock, locker) → F 65.77/17.32
eqt(lock, mcrlrecord) → F 65.77/17.32
eqt(lock, ok) → F 65.77/17.32
eqt(lock, pending) → F 65.77/17.32
eqt(lock, release) → F 65.77/17.32
eqt(lock, request) → F 65.77/17.32
eqt(lock, resource) → F 65.77/17.32
eqt(lock, tag) → F 65.77/17.32
eqt(lock, true) → F 65.77/17.32
eqt(lock, undefined) → F 65.77/17.32
eqt(lock, pid(z0)) → F 65.77/17.32
eqt(lock, int(z0)) → F 65.77/17.32
eqt(lock, cons(z0, z1)) → F 65.77/17.32
eqt(lock, tuple(z0, z1)) → F 65.77/17.32
eqt(lock, tuplenil(z0)) → F 65.77/17.32
eqt(locker, nil) → F 65.77/17.32
eqt(locker, a) → F 65.77/17.32
eqt(locker, excl) → F 65.77/17.32
eqt(locker, false) → F 65.77/17.32
eqt(locker, lock) → F 65.77/17.32
eqt(locker, locker) → T 65.77/17.32
eqt(locker, mcrlrecord) → F 65.77/17.32
eqt(locker, ok) → F 65.77/17.32
eqt(locker, pending) → F 65.77/17.32
eqt(locker, release) → F 65.77/17.32
eqt(locker, request) → F 65.77/17.32
eqt(locker, resource) → F 65.77/17.32
eqt(locker, tag) → F 65.77/17.32
eqt(locker, true) → F 65.77/17.32
eqt(locker, undefined) → F 65.77/17.32
eqt(locker, pid(z0)) → F 65.77/17.32
eqt(locker, int(z0)) → F 65.77/17.32
eqt(locker, cons(z0, z1)) → F 65.77/17.32
eqt(locker, tuple(z0, z1)) → F 65.77/17.32
eqt(locker, tuplenil(z0)) → F 65.77/17.32
eqt(mcrlrecord, nil) → F 65.77/17.32
eqt(mcrlrecord, a) → F 65.77/17.32
eqt(mcrlrecord, excl) → F 65.77/17.32
eqt(mcrlrecord, false) → F 65.77/17.32
eqt(mcrlrecord, lock) → F 65.77/17.32
eqt(mcrlrecord, locker) → F 65.77/17.32
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.32
eqt(mcrlrecord, ok) → F 65.77/17.32
eqt(mcrlrecord, pending) → F 65.77/17.32
eqt(mcrlrecord, release) → F 65.77/17.32
eqt(mcrlrecord, request) → F 65.77/17.32
eqt(mcrlrecord, resource) → F 65.77/17.32
eqt(ok, resource) → F 65.77/17.32
eqt(ok, tag) → F 65.77/17.32
eqt(ok, true) → F 65.77/17.32
eqt(ok, undefined) → F 65.77/17.32
eqt(ok, pid(z0)) → F 65.77/17.32
eqt(ok, int(z0)) → F 65.77/17.32
eqt(ok, cons(z0, z1)) → F 65.77/17.32
eqt(ok, tuple(z0, z1)) → F 65.77/17.32
eqt(ok, tuplenil(z0)) → F 65.77/17.32
eqt(pending, nil) → F 65.77/17.32
eqt(pending, a) → F 65.77/17.32
eqt(pending, excl) → F 65.77/17.32
eqt(pending, false) → F 65.77/17.32
eqt(pending, lock) → F 65.77/17.32
eqt(pending, locker) → F 65.77/17.32
eqt(pending, mcrlrecord) → F 65.77/17.32
eqt(pending, ok) → F 65.77/17.32
eqt(pending, pending) → T 65.77/17.32
eqt(pending, release) → F 65.77/17.32
eqt(pending, request) → F 65.77/17.32
eqt(pending, resource) → F 65.77/17.32
eqt(pending, tag) → F 65.77/17.32
eqt(pending, true) → F 65.77/17.32
eqt(pending, undefined) → F 65.77/17.32
eqt(pending, pid(z0)) → F 65.77/17.32
eqt(pending, int(z0)) → F 65.77/17.32
eqt(pending, cons(z0, z1)) → F 65.77/17.32
eqt(pending, tuple(z0, z1)) → F 65.77/17.32
eqt(pending, tuplenil(z0)) → F 65.77/17.32
eqt(release, nil) → F 65.77/17.32
eqt(release, a) → F 65.77/17.32
eqt(release, excl) → F 65.77/17.32
eqt(release, false) → F 65.77/17.32
eqt(release, lock) → F 65.77/17.32
eqt(release, locker) → F 65.77/17.32
eqt(release, mcrlrecord) → F 65.77/17.32
eqt(release, ok) → F 65.77/17.32
eqt(request, mcrlrecord) → F 65.77/17.32
eqt(request, ok) → F 65.77/17.32
eqt(request, pending) → F 65.77/17.32
eqt(request, release) → F 65.77/17.32
eqt(request, request) → T 65.77/17.32
eqt(request, resource) → F 65.77/17.32
eqt(request, tag) → F 65.77/17.32
eqt(request, true) → F 65.77/17.32
eqt(request, undefined) → F 65.77/17.32
eqt(request, pid(z0)) → F 65.77/17.32
eqt(request, int(z0)) → F 65.77/17.32
eqt(request, cons(z0, z1)) → F 65.77/17.32
eqt(request, tuple(z0, z1)) → F 65.77/17.32
eqt(request, tuplenil(z0)) → F 65.77/17.32
eqt(resource, nil) → F 65.77/17.32
eqt(resource, a) → F 65.77/17.32
eqt(resource, excl) → F 65.77/17.32
eqt(resource, false) → F 65.77/17.32
eqt(resource, lock) → F 65.77/17.32
eqt(resource, locker) → F 65.77/17.32
eqt(resource, mcrlrecord) → F 65.77/17.32
eqt(resource, ok) → F 65.77/17.32
eqt(resource, pending) → F 65.77/17.32
eqt(resource, release) → F 65.77/17.32
eqt(resource, request) → F 65.77/17.32
eqt(resource, resource) → T 65.77/17.32
eqt(resource, tag) → F 65.77/17.32
eqt(resource, true) → F 65.77/17.32
eqt(resource, undefined) → F 65.77/17.32
eqt(resource, pid(z0)) → F 65.77/17.32
eqt(resource, int(z0)) → F 65.77/17.32
eqt(resource, cons(z0, z1)) → F 65.77/17.32
eqt(resource, tuple(z0, z1)) → F 65.77/17.32
eqt(resource, tuplenil(z0)) → F 65.77/17.32
eqt(tag, nil) → F 65.77/17.32
eqt(tag, a) → F 65.77/17.32
eqt(tag, excl) → F 65.77/17.32
eqt(tag, false) → F 65.77/17.32
eqt(tag, lock) → F 65.77/17.32
eqt(tag, locker) → F 65.77/17.32
eqt(tag, mcrlrecord) → F 65.77/17.32
eqt(tag, ok) → F 65.77/17.32
eqt(tag, pending) → F 65.77/17.32
eqt(tag, release) → F 65.77/17.32
eqt(tag, request) → F 65.77/17.32
eqt(tag, resource) → F 65.77/17.32
eqt(tag, tag) → T 65.77/17.32
eqt(tag, true) → F 65.77/17.32
eqt(tag, undefined) → F 65.77/17.32
eqt(tag, pid(z0)) → F 65.77/17.32
eqt(tag, int(z0)) → F 65.77/17.32
eqt(tag, cons(z0, z1)) → F 65.77/17.32
eqt(tag, tuple(z0, z1)) → F 65.77/17.32
eqt(tag, tuplenil(z0)) → F 65.77/17.32
eqt(true, nil) → F 65.77/17.32
eqt(true, a) → F 65.77/17.32
eqt(true, excl) → F 65.77/17.32
eqt(true, false) → F 65.77/17.32
eqt(true, lock) → F 65.77/17.32
eqt(true, locker) → F 65.77/17.32
eqt(true, mcrlrecord) → F 65.77/17.32
eqt(true, ok) → F 65.77/17.32
eqt(true, pending) → F 65.77/17.32
eqt(true, release) → F 65.77/17.32
eqt(true, request) → F 65.77/17.32
eqt(true, resource) → F 65.77/17.32
eqt(true, tag) → F 65.77/17.32
eqt(true, true) → T 65.77/17.32
eqt(true, undefined) → F 65.77/17.32
eqt(true, pid(z0)) → F 65.77/17.32
eqt(true, int(z0)) → F 65.77/17.32
eqt(true, cons(z0, z1)) → F 65.77/17.32
eqt(true, tuple(z0, z1)) → F 65.77/17.32
eqt(true, tuplenil(z0)) → F 65.77/17.32
eqt(undefined, nil) → F 65.77/17.32
eqt(undefined, a) → F 65.77/17.32
eqt(undefined, tuplenil(z0)) → F 65.77/17.32
eqt(pid(z0), nil) → F 65.77/17.32
eqt(pid(z0), a) → F 65.77/17.32
eqt(pid(z0), excl) → F 65.77/17.32
eqt(pid(z0), false) → F 65.77/17.32
eqt(pid(z0), lock) → F 65.77/17.32
eqt(pid(z0), locker) → F 65.77/17.32
eqt(pid(z0), mcrlrecord) → F 65.77/17.32
eqt(pid(z0), ok) → F 65.77/17.32
eqt(pid(z0), pending) → F 65.77/17.32
eqt(pid(z0), release) → F 65.77/17.32
eqt(pid(z0), request) → F 65.77/17.32
eqt(pid(z0), resource) → F 65.77/17.32
eqt(pid(z0), tag) → F 65.77/17.32
eqt(pid(z0), true) → F 65.77/17.32
eqt(pid(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), int(z1)) → F 65.77/17.32
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.32
eqt(int(z0), nil) → F 65.77/17.32
eqt(int(z0), a) → F 65.77/17.32
eqt(int(z0), excl) → F 65.77/17.32
eqt(int(z0), false) → F 65.77/17.32
eqt(int(z0), lock) → F 65.77/17.32
eqt(int(z0), locker) → F 65.77/17.32
eqt(int(z0), mcrlrecord) → F 65.77/17.32
eqt(int(z0), ok) → F 65.77/17.32
eqt(int(z0), pending) → F 65.77/17.32
eqt(int(z0), release) → F 65.77/17.32
eqt(int(z0), request) → F 65.77/17.32
eqt(int(z0), resource) → F 65.77/17.32
eqt(int(z0), tag) → F 65.77/17.32
eqt(int(z0), true) → F 65.77/17.32
eqt(int(z0), undefined) → F 65.77/17.32
eqt(cons(z0, z1), resource) → F 65.77/17.32
eqt(cons(z0, z1), tag) → F 65.77/17.32
eqt(cons(z0, z1), true) → F 65.77/17.32
eqt(cons(z0, z1), undefined) → F 65.77/17.32
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.32
eqt(cons(z0, z1), int(z2)) → F 65.77/17.32
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.32
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), nil) → F 65.77/17.32
eqt(tuple(z0, z1), a) → F 65.77/17.32
eqt(tuple(z0, z1), excl) → F 65.77/17.32
eqt(tuple(z0, z1), false) → F 65.77/17.32
eqt(tuple(z0, z1), lock) → F 65.77/17.32
eqt(tuple(z0, z1), locker) → F 65.77/17.32
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.32
eqt(tuple(z0, z1), ok) → F 65.77/17.32
eqt(tuple(z0, z1), pending) → F 65.77/17.32
eqt(tuple(z0, z1), release) → F 65.77/17.32
eqt(tuple(z0, z1), request) → F 65.77/17.32
eqt(tuple(z0, z1), resource) → F 65.77/17.32
eqt(tuple(z0, z1), tag) → F 65.77/17.32
eqt(tuple(z0, z1), true) → F 65.77/17.32
eqt(tuple(z0, z1), undefined) → F 65.77/17.32
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.32
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuplenil(z0), nil) → F 65.77/17.32
eqt(tuplenil(z0), a) → F 65.77/17.32
eqt(tuplenil(z0), excl) → F 65.77/17.32
eqt(tuplenil(z0), false) → F 65.77/17.32
eqt(tuplenil(z0), lock) → F 65.77/17.32
eqt(tuplenil(z0), locker) → F 65.77/17.32
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.32
eqt(tuplenil(z0), ok) → F 65.77/17.32
eqt(tuplenil(z0), pending) → F 65.77/17.32
eqt(tuplenil(z0), release) → F 65.77/17.32
eqt(tuplenil(z0), request) → F 65.77/17.32
eqt(tuplenil(z0), resource) → F 65.77/17.32
eqt(tuplenil(z0), tag) → F 65.77/17.32
eqt(tuplenil(z0), true) → F 65.77/17.32
eqt(tuplenil(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.32
eqt(tuplenil(z0), int(z1)) → F 65.77/17.32
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.32
and(T, z0) → z0 65.77/17.32
and(z0, T) → z0 65.77/17.32
and(F, z0) → F 65.77/17.32
and(z0, F) → F 65.77/17.32
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.32
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.32

POL(APPEND(x1, x2)) = 0    65.77/17.32
POL(CASE1(x1, x2, x3, x4)) = [3]x1 + [5]x2    65.77/17.32
POL(CASE2(x1, x2, x3)) = [3]x1 + [3]x2    65.77/17.32
POL(DELETE(x1, x2)) = 0    65.77/17.32
POL(ELEMENT(x1, x2)) = 0    65.77/17.32
POL(EQC(x1, x2)) = [4]x1 + [2]x2    65.77/17.32
POL(EQS(x1, x2)) = [1] + [2]x2    65.77/17.32
POL(EQT(x1, x2)) = 0    65.77/17.32
POL(F) = [3]    65.77/17.32
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [4]x1 + [5]x2 + [3]x3    65.77/17.32
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = 0    65.77/17.32
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.32
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = x1    65.77/17.32
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [1]    65.77/17.32
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [4] + [3]x1 + [5]x2    65.77/17.32
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [2] + [5]x1 + [5]x2    65.77/17.32
POL(MEMBER(x1, x2)) = x2    65.77/17.32
POL(PUSH(x1, x2, x3)) = [2] + [3]x1 + [5]x2 + [4]x3    65.77/17.32
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = x1 + [4]x2 + [3]x4 + [2]x5    65.77/17.32
POL(RECORD_UPDATES(x1, x2, x3)) = x2    65.77/17.32
POL(SUBTRACT(x1, x2)) = 0    65.77/17.32
POL(T) = [3]    65.77/17.32
POL(a) = [3]    65.77/17.32
POL(and(x1, x2)) = [3]    65.77/17.32
POL(append(x1, x2)) = [3]    65.77/17.32
POL(c(x1)) = x1    65.77/17.32
POL(c245(x1)) = x1    65.77/17.32
POL(c271(x1, x2)) = x1 + x2    65.77/17.32
POL(c292(x1, x2)) = x1 + x2    65.77/17.32
POL(c313(x1)) = x1    65.77/17.32
POL(c316(x1)) = x1    65.77/17.32
POL(c321(x1)) = x1    65.77/17.32
POL(c323(x1, x2)) = x1 + x2    65.77/17.32
POL(c325(x1)) = x1    65.77/17.32
POL(c327) = 0    65.77/17.32
POL(c332(x1)) = x1    65.77/17.32
POL(c334(x1)) = x1    65.77/17.32
POL(c335) = 0    65.77/17.32
POL(c342) = 0    65.77/17.32
POL(c346(x1, x2)) = x1 + x2    65.77/17.32
POL(c348(x1)) = x1    65.77/17.32
POL(c350(x1, x2)) = x1 + x2    65.77/17.32
POL(c352) = 0    65.77/17.32
POL(c358) = 0    65.77/17.32
POL(c364(x1, x2)) = x1 + x2    65.77/17.32
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.32
POL(c376) = 0    65.77/17.32
POL(calls(x1, x2, x3)) = [5] + x2 + x3    65.77/17.32
POL(case8(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3    65.77/17.32
POL(case9(x1, x2, x3, x4)) = [5]x1    65.77/17.32
POL(cons(x1, x2)) = [3] + x2    65.77/17.32
POL(delete(x1, x2)) = 0    65.77/17.32
POL(eqt(x1, x2)) = 0    65.77/17.32
POL(equal(x1, x2)) = 0    65.77/17.32
POL(excl) = 0    65.77/17.32
POL(false) = 0    65.77/17.32
POL(gen_modtageq(x1, x2)) = [2]    65.77/17.32
POL(int(x1)) = [3]    65.77/17.32
POL(lock) = 0    65.77/17.32
POL(locker) = [3]    65.77/17.32
POL(mcrlrecord) = [1]    65.77/17.32
POL(member(x1, x2)) = [4] + [5]x2    65.77/17.32
POL(nil) = [2]    65.77/17.32
POL(ok) = [3]    65.77/17.32
POL(pending) = [5]    65.77/17.32
POL(pid(x1)) = x1    65.77/17.32
POL(record_extract(x1, x2, x3)) = [3] + x3    65.77/17.32
POL(record_update(x1, x2, x3, x4)) = [3] + [5]x3    65.77/17.32
POL(release) = [3]    65.77/17.32
POL(request) = [3]    65.77/17.32
POL(resource) = [1]    65.77/17.32
POL(s(x1)) = 0    65.77/17.32
POL(stack(x1, x2)) = [4] + x1 + x2    65.77/17.32
POL(subtract(x1, x2)) = [3]    65.77/17.32
POL(tag) = [3]    65.77/17.32
POL(true) = 0    65.77/17.32
POL(tuple(x1, x2)) = 0    65.77/17.32
POL(tuplenil(x1)) = 0    65.77/17.32
POL(undefined) = [3]   
65.77/17.32
65.77/17.32

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.32
or(F, T) → T 65.77/17.32
or(T, F) → T 65.77/17.32
or(F, F) → F 65.77/17.32
and(T, z0) → z0 65.77/17.32
and(z0, T) → z0 65.77/17.32
and(F, z0) → F 65.77/17.32
and(z0, F) → F 65.77/17.32
imp(T, z0) → z0 65.77/17.32
imp(F, z0) → T 65.77/17.32
not(T) → F 65.77/17.32
not(F) → T 65.77/17.32
if(T, z0, z1) → z0 65.77/17.32
if(F, z0, z1) → z1 65.77/17.32
eq(T, T) → T 65.77/17.32
eq(F, F) → T 65.77/17.32
eq(T, F) → F 65.77/17.32
eq(F, T) → F 65.77/17.32
eqt(nil, undefined) → F 65.77/17.32
eqt(nil, pid(z0)) → F 65.77/17.32
eqt(nil, int(z0)) → F 65.77/17.32
eqt(nil, cons(z0, z1)) → F 65.77/17.32
eqt(nil, tuple(z0, z1)) → F 65.77/17.32
eqt(nil, tuplenil(z0)) → F 65.77/17.32
eqt(a, nil) → F 65.77/17.32
eqt(a, a) → T 65.77/17.32
eqt(a, excl) → F 65.77/17.32
eqt(a, false) → F 65.77/17.32
eqt(a, lock) → F 65.77/17.32
eqt(a, locker) → F 65.77/17.32
eqt(a, mcrlrecord) → F 65.77/17.32
eqt(a, ok) → F 65.77/17.32
eqt(a, pending) → F 65.77/17.32
eqt(a, release) → F 65.77/17.32
eqt(a, request) → F 65.77/17.32
eqt(a, resource) → F 65.77/17.32
eqt(a, tag) → F 65.77/17.32
eqt(a, true) → F 65.77/17.32
eqt(a, undefined) → F 65.77/17.32
eqt(a, pid(z0)) → F 65.77/17.32
eqt(a, int(z0)) → F 65.77/17.32
eqt(a, cons(z0, z1)) → F 65.77/17.32
eqt(a, tuple(z0, z1)) → F 65.77/17.32
eqt(a, tuplenil(z0)) → F 65.77/17.32
eqt(excl, nil) → F 65.77/17.32
eqt(excl, a) → F 65.77/17.32
eqt(excl, excl) → T 65.77/17.32
eqt(excl, false) → F 65.77/17.32
eqt(excl, lock) → F 65.77/17.32
eqt(excl, locker) → F 65.77/17.32
eqt(excl, mcrlrecord) → F 65.77/17.32
eqt(excl, ok) → F 65.77/17.32
eqt(excl, pending) → F 65.77/17.32
eqt(excl, release) → F 65.77/17.32
eqt(excl, request) → F 65.77/17.32
eqt(excl, resource) → F 65.77/17.32
eqt(excl, tag) → F 65.77/17.32
eqt(excl, true) → F 65.77/17.32
eqt(excl, undefined) → F 65.77/17.32
eqt(excl, pid(z0)) → F 65.77/17.32
eqt(excl, eqt(false, int(z0))) → F 65.77/17.32
eqt(false, cons(z0, z1)) → F 65.77/17.32
eqt(false, tuple(z0, z1)) → F 65.77/17.32
eqt(false, tuplenil(z0)) → F 65.77/17.32
eqt(lock, nil) → F 65.77/17.32
eqt(lock, a) → F 65.77/17.32
eqt(lock, excl) → F 65.77/17.32
eqt(lock, false) → F 65.77/17.32
eqt(lock, lock) → T 65.77/17.32
eqt(lock, locker) → F 65.77/17.32
eqt(lock, mcrlrecord) → F 65.77/17.32
eqt(lock, ok) → F 65.77/17.32
eqt(lock, pending) → F 65.77/17.32
eqt(lock, release) → F 65.77/17.32
eqt(lock, request) → F 65.77/17.32
eqt(lock, resource) → F 65.77/17.32
eqt(lock, tag) → F 65.77/17.32
eqt(lock, true) → F 65.77/17.32
eqt(lock, undefined) → F 65.77/17.32
eqt(lock, pid(z0)) → F 65.77/17.32
eqt(lock, int(z0)) → F 65.77/17.32
eqt(lock, cons(z0, z1)) → F 65.77/17.32
eqt(lock, tuple(z0, z1)) → F 65.77/17.32
eqt(lock, tuplenil(z0)) → F 65.77/17.32
eqt(locker, nil) → F 65.77/17.32
eqt(locker, a) → F 65.77/17.32
eqt(locker, excl) → F 65.77/17.32
eqt(locker, false) → F 65.77/17.32
eqt(locker, lock) → F 65.77/17.32
eqt(locker, locker) → T 65.77/17.32
eqt(locker, mcrlrecord) → F 65.77/17.32
eqt(locker, ok) → F 65.77/17.32
eqt(locker, pending) → F 65.77/17.32
eqt(locker, release) → F 65.77/17.32
eqt(locker, request) → F 65.77/17.32
eqt(locker, resource) → F 65.77/17.32
eqt(locker, tag) → F 65.77/17.32
eqt(locker, true) → F 65.77/17.32
eqt(locker, undefined) → F 65.77/17.32
eqt(locker, pid(z0)) → F 65.77/17.32
eqt(locker, int(z0)) → F 65.77/17.32
eqt(locker, cons(z0, z1)) → F 65.77/17.32
eqt(locker, tuple(z0, z1)) → F 65.77/17.32
eqt(locker, tuplenil(z0)) → F 65.77/17.32
eqt(mcrlrecord, nil) → F 65.77/17.32
eqt(mcrlrecord, a) → F 65.77/17.32
eqt(mcrlrecord, excl) → F 65.77/17.32
eqt(mcrlrecord, false) → F 65.77/17.32
eqt(mcrlrecord, lock) → F 65.77/17.32
eqt(mcrlrecord, locker) → F 65.77/17.32
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.32
eqt(mcrlrecord, ok) → F 65.77/17.32
eqt(mcrlrecord, pending) → F 65.77/17.32
eqt(mcrlrecord, release) → F 65.77/17.32
eqt(mcrlrecord, request) → F 65.77/17.32
eqt(mcrlrecord, resource) → F 65.77/17.32
eqt(ok, resource) → F 65.77/17.32
eqt(ok, tag) → F 65.77/17.32
eqt(ok, true) → F 65.77/17.32
eqt(ok, undefined) → F 65.77/17.32
eqt(ok, pid(z0)) → F 65.77/17.32
eqt(ok, int(z0)) → F 65.77/17.32
eqt(ok, cons(z0, z1)) → F 65.77/17.32
eqt(ok, tuple(z0, z1)) → F 65.77/17.32
eqt(ok, tuplenil(z0)) → F 65.77/17.32
eqt(pending, nil) → F 65.77/17.32
eqt(pending, a) → F 65.77/17.32
eqt(pending, excl) → F 65.77/17.32
eqt(pending, false) → F 65.77/17.32
eqt(pending, lock) → F 65.77/17.32
eqt(pending, locker) → F 65.77/17.32
eqt(pending, mcrlrecord) → F 65.77/17.32
eqt(pending, ok) → F 65.77/17.32
eqt(pending, pending) → T 65.77/17.32
eqt(pending, release) → F 65.77/17.32
eqt(pending, request) → F 65.77/17.32
eqt(pending, resource) → F 65.77/17.32
eqt(pending, tag) → F 65.77/17.32
eqt(pending, true) → F 65.77/17.32
eqt(pending, undefined) → F 65.77/17.32
eqt(pending, pid(z0)) → F 65.77/17.32
eqt(pending, int(z0)) → F 65.77/17.32
eqt(pending, cons(z0, z1)) → F 65.77/17.32
eqt(pending, tuple(z0, z1)) → F 65.77/17.32
eqt(pending, tuplenil(z0)) → F 65.77/17.32
eqt(release, nil) → F 65.77/17.32
eqt(release, a) → F 65.77/17.32
eqt(release, excl) → F 65.77/17.32
eqt(release, false) → F 65.77/17.32
eqt(release, lock) → F 65.77/17.32
eqt(release, locker) → F 65.77/17.32
eqt(release, mcrlrecord) → F 65.77/17.32
eqt(release, ok) → F 65.77/17.32
eqt(request, mcrlrecord) → F 65.77/17.32
eqt(request, ok) → F 65.77/17.32
eqt(request, pending) → F 65.77/17.32
eqt(request, release) → F 65.77/17.32
eqt(request, request) → T 65.77/17.32
eqt(request, resource) → F 65.77/17.32
eqt(request, tag) → F 65.77/17.32
eqt(request, true) → F 65.77/17.32
eqt(request, undefined) → F 65.77/17.32
eqt(request, pid(z0)) → F 65.77/17.32
eqt(request, int(z0)) → F 65.77/17.32
eqt(request, cons(z0, z1)) → F 65.77/17.32
eqt(request, tuple(z0, z1)) → F 65.77/17.32
eqt(request, tuplenil(z0)) → F 65.77/17.32
eqt(resource, nil) → F 65.77/17.32
eqt(resource, a) → F 65.77/17.32
eqt(resource, excl) → F 65.77/17.32
eqt(resource, false) → F 65.77/17.32
eqt(resource, lock) → F 65.77/17.32
eqt(resource, locker) → F 65.77/17.32
eqt(resource, mcrlrecord) → F 65.77/17.32
eqt(resource, ok) → F 65.77/17.32
eqt(resource, pending) → F 65.77/17.32
eqt(resource, release) → F 65.77/17.32
eqt(resource, request) → F 65.77/17.32
eqt(resource, resource) → T 65.77/17.32
eqt(resource, tag) → F 65.77/17.32
eqt(resource, true) → F 65.77/17.32
eqt(resource, undefined) → F 65.77/17.32
eqt(resource, pid(z0)) → F 65.77/17.32
eqt(resource, int(z0)) → F 65.77/17.32
eqt(resource, cons(z0, z1)) → F 65.77/17.32
eqt(resource, tuple(z0, z1)) → F 65.77/17.32
eqt(resource, tuplenil(z0)) → F 65.77/17.32
eqt(tag, nil) → F 65.77/17.32
eqt(tag, a) → F 65.77/17.32
eqt(tag, excl) → F 65.77/17.32
eqt(tag, false) → F 65.77/17.32
eqt(tag, lock) → F 65.77/17.32
eqt(tag, locker) → F 65.77/17.32
eqt(tag, mcrlrecord) → F 65.77/17.32
eqt(tag, ok) → F 65.77/17.32
eqt(tag, pending) → F 65.77/17.32
eqt(tag, release) → F 65.77/17.32
eqt(tag, request) → F 65.77/17.32
eqt(tag, resource) → F 65.77/17.32
eqt(tag, tag) → T 65.77/17.32
eqt(tag, true) → F 65.77/17.32
eqt(tag, undefined) → F 65.77/17.32
eqt(tag, pid(z0)) → F 65.77/17.32
eqt(tag, int(z0)) → F 65.77/17.32
eqt(tag, cons(z0, z1)) → F 65.77/17.32
eqt(tag, tuple(z0, z1)) → F 65.77/17.32
eqt(tag, tuplenil(z0)) → F 65.77/17.32
eqt(true, nil) → F 65.77/17.32
eqt(true, a) → F 65.77/17.32
eqt(true, excl) → F 65.77/17.32
eqt(true, false) → F 65.77/17.32
eqt(true, lock) → F 65.77/17.32
eqt(true, locker) → F 65.77/17.32
eqt(true, mcrlrecord) → F 65.77/17.32
eqt(true, ok) → F 65.77/17.32
eqt(true, pending) → F 65.77/17.32
eqt(true, release) → F 65.77/17.32
eqt(true, request) → F 65.77/17.32
eqt(true, resource) → F 65.77/17.32
eqt(true, tag) → F 65.77/17.32
eqt(true, true) → T 65.77/17.32
eqt(true, undefined) → F 65.77/17.32
eqt(true, pid(z0)) → F 65.77/17.32
eqt(true, int(z0)) → F 65.77/17.32
eqt(true, cons(z0, z1)) → F 65.77/17.32
eqt(true, tuple(z0, z1)) → F 65.77/17.32
eqt(true, tuplenil(z0)) → F 65.77/17.32
eqt(undefined, nil) → F 65.77/17.32
eqt(undefined, a) → F 65.77/17.32
eqt(undefined, tuplenil(z0)) → F 65.77/17.32
eqt(pid(z0), nil) → F 65.77/17.32
eqt(pid(z0), a) → F 65.77/17.32
eqt(pid(z0), excl) → F 65.77/17.32
eqt(pid(z0), false) → F 65.77/17.32
eqt(pid(z0), lock) → F 65.77/17.32
eqt(pid(z0), locker) → F 65.77/17.32
eqt(pid(z0), mcrlrecord) → F 65.77/17.32
eqt(pid(z0), ok) → F 65.77/17.32
eqt(pid(z0), pending) → F 65.77/17.32
eqt(pid(z0), release) → F 65.77/17.32
eqt(pid(z0), request) → F 65.77/17.32
eqt(pid(z0), resource) → F 65.77/17.32
eqt(pid(z0), tag) → F 65.77/17.32
eqt(pid(z0), true) → F 65.77/17.32
eqt(pid(z0), undefined) → F 65.77/17.32
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), int(z1)) → F 65.77/17.32
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.32
eqt(int(z0), nil) → F 65.77/17.32
eqt(int(z0), a) → F 65.77/17.32
eqt(int(z0), excl) → F 65.77/17.32
eqt(int(z0), false) → F 65.77/17.32
eqt(int(z0), lock) → F 65.77/17.32
eqt(int(z0), locker) → F 65.77/17.32
eqt(int(z0), mcrlrecord) → F 65.77/17.32
eqt(int(z0), ok) → F 65.77/17.32
eqt(int(z0), pending) → F 65.77/17.32
eqt(int(z0), release) → F 65.77/17.32
eqt(int(z0), request) → F 65.77/17.32
eqt(int(z0), resource) → F 65.77/17.32
eqt(int(z0), tag) → F 65.77/17.32
eqt(int(z0), true) → F 65.77/17.32
eqt(int(z0), undefined) → F 65.77/17.32
eqt(cons(z0, z1), resource) → F 65.77/17.32
eqt(cons(z0, z1), tag) → F 65.77/17.32
eqt(cons(z0, z1), true) → F 65.77/17.32
eqt(cons(z0, z1), undefined) → F 65.77/17.32
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.32
eqt(cons(z0, z1), int(z2)) → F 65.77/17.32
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.32
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), nil) → F 65.77/17.32
eqt(tuple(z0, z1), a) → F 65.77/17.32
eqt(tuple(z0, z1), excl) → F 65.77/17.32
eqt(tuple(z0, z1), false) → F 65.77/17.32
eqt(tuple(z0, z1), lock) → F 65.77/17.32
eqt(tuple(z0, z1), locker) → F 65.77/17.32
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.32
eqt(tuple(z0, z1), ok) → F 65.77/17.32
eqt(tuple(z0, z1), pending) → F 65.77/17.32
eqt(tuple(z0, z1), release) → F 65.77/17.32
eqt(tuple(z0, z1), request) → F 65.77/17.32
eqt(tuple(z0, z1), resource) → F 65.77/17.32
eqt(tuple(z0, z1), tag) → F 65.77/17.32
eqt(tuple(z0, z1), true) → F 65.77/17.32
eqt(tuple(z0, z1), undefined) → F 65.77/17.32
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.32
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.32
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.32
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.32
eqt(tuplenil(z0), nil) → F 65.77/17.32
eqt(tuplenil(z0), a) → F 65.77/17.32
eqt(tuplenil(z0), excl) → F 65.77/17.32
eqt(tuplenil(z0), false) → F 65.77/17.32
eqt(tuplenil(z0), lock) → F 65.77/17.32
eqt(tuplenil(z0), locker) → F 65.77/17.32
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.32
eqt(tuplenil(z0), ok) → F 65.77/17.32
eqt(tuplenil(z0), pending) → F 65.77/17.32
eqt(tuplenil(z0), release) → F 65.77/17.32
eqt(tuplenil(z0), request) → F 65.77/17.32
eqt(tuplenil(z0), resource) → F 65.77/17.32
eqt(tuplenil(z0), tag) → F 65.77/17.32
eqt(tuplenil(z0), true) → F 65.77/17.32
eqt(tuplenil(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.32
eqt(tuplenil(z0), int(z1)) → F 65.77/17.32
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.32
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.32
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.32
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.32
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.32
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.32
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.32
record_updates(z0, z1, nil) → z0 65.77/17.32
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.32
locker2_map_promote_pending(nil, z0) → nil 65.77/17.32
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.32
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.32
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.32
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.32
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.32
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.32
case0(z0, z1, z2) → z1 65.77/17.32
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.32
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.32
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.32
case1(z0, z1, z2, false) → z2 65.77/17.32
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.32
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.32
case4(z0, z1, z2) → false 65.77/17.32
locker2_obtainables(nil, z0) → true 65.77/17.32
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.32
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.32
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.32
locker2_check_available(z0, nil) → false 65.77/17.32
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.32
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.32
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.32
locker2_check_availables(nil, z0) → true 65.77/17.32
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.32
locker2_adduniq(nil, z0) → z0 65.77/17.32
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.32
subtract(z0, nil) → z0 65.77/17.32
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.32
delete(z0, nil) → nil 65.77/17.32
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.32
case8(z0, z1, z2, true) → z0 65.77/17.32
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.32
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.32
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.32
member(z0, nil) → false 65.77/17.32
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.32
case9(z0, z1, z2, true) → true 65.77/17.32
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.32
eqs(empty, empty) → T 65.77/17.32
eqs(empty, stack(z0, z1)) → F 65.77/17.32
eqs(stack(z0, z1), empty) → F 65.77/17.32
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.32
pushs(z0, z1) → stack(z0, z1) 65.77/17.32
pops(stack(z0, z1)) → z1 65.77/17.32
tops(stack(z0, z1)) → z0 65.77/17.32
istops(z0, empty) → F 65.77/17.32
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.32
eqc(nocalls, nocalls) → T 65.77/17.32
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.32
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.32
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.32
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.32
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.32
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.32
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.32
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.32
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.32
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.32
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.32
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.32
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.32
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.32
DELETE(z0, cons(z1, z2)) → c352
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.32
CASE2(z0, z1, true) → c335 65.77/17.32
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.32
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.32
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.32
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.32
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.32
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.32
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.32
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.32
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.32
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.32
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.32
65.77/17.32

(15) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.32
member(z0, nil) → false 65.77/17.32
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.32
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.32
subtract(z0, nil) → z0 65.77/17.32
delete(z0, nil) → nil 65.77/17.32
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.32
eqt(nil, undefined) → F 65.77/17.32
eqt(nil, pid(z0)) → F 65.77/17.32
eqt(nil, int(z0)) → F 65.77/17.32
eqt(nil, cons(z0, z1)) → F 65.77/17.32
eqt(nil, tuple(z0, z1)) → F 65.77/17.32
eqt(nil, tuplenil(z0)) → F 65.77/17.32
eqt(a, nil) → F 65.77/17.32
eqt(a, a) → T 65.77/17.32
eqt(a, excl) → F 65.77/17.32
eqt(a, false) → F 65.77/17.32
eqt(a, lock) → F 65.77/17.32
eqt(a, locker) → F 65.77/17.32
eqt(a, mcrlrecord) → F 65.77/17.32
eqt(a, ok) → F 65.77/17.32
eqt(a, pending) → F 65.77/17.32
eqt(a, release) → F 65.77/17.32
eqt(a, request) → F 65.77/17.32
eqt(a, resource) → F 65.77/17.32
eqt(a, tag) → F 65.77/17.32
eqt(a, true) → F 65.77/17.32
eqt(a, undefined) → F 65.77/17.32
eqt(a, pid(z0)) → F 65.77/17.32
eqt(a, int(z0)) → F 65.77/17.32
eqt(a, cons(z0, z1)) → F 65.77/17.32
eqt(a, tuple(z0, z1)) → F 65.77/17.32
eqt(a, tuplenil(z0)) → F 65.77/17.32
eqt(excl, nil) → F 65.77/17.32
eqt(excl, a) → F 65.77/17.32
eqt(excl, excl) → T 65.77/17.32
eqt(excl, false) → F 65.77/17.32
eqt(excl, lock) → F 65.77/17.32
eqt(excl, locker) → F 65.77/17.32
eqt(excl, mcrlrecord) → F 65.77/17.32
eqt(excl, ok) → F 65.77/17.32
eqt(excl, pending) → F 65.77/17.32
eqt(excl, release) → F 65.77/17.32
eqt(excl, request) → F 65.77/17.32
eqt(excl, resource) → F 65.77/17.32
eqt(excl, tag) → F 65.77/17.32
eqt(excl, true) → F 65.77/17.32
eqt(excl, undefined) → F 65.77/17.32
eqt(excl, pid(z0)) → F 65.77/17.32
eqt(excl, eqt(false, int(z0))) → F 65.77/17.32
eqt(false, cons(z0, z1)) → F 65.77/17.32
eqt(false, tuple(z0, z1)) → F 65.77/17.32
eqt(false, tuplenil(z0)) → F 65.77/17.32
eqt(lock, nil) → F 65.77/17.32
eqt(lock, a) → F 65.77/17.32
eqt(lock, excl) → F 65.77/17.32
eqt(lock, false) → F 65.77/17.32
eqt(lock, lock) → T 65.77/17.32
eqt(lock, locker) → F 65.77/17.32
eqt(lock, mcrlrecord) → F 65.77/17.32
eqt(lock, ok) → F 65.77/17.32
eqt(lock, pending) → F 65.77/17.32
eqt(lock, release) → F 65.77/17.32
eqt(lock, request) → F 65.77/17.32
eqt(lock, resource) → F 65.77/17.32
eqt(lock, tag) → F 65.77/17.32
eqt(lock, true) → F 65.77/17.32
eqt(lock, undefined) → F 65.77/17.32
eqt(lock, pid(z0)) → F 65.77/17.32
eqt(lock, int(z0)) → F 65.77/17.32
eqt(lock, cons(z0, z1)) → F 65.77/17.32
eqt(lock, tuple(z0, z1)) → F 65.77/17.32
eqt(lock, tuplenil(z0)) → F 65.77/17.32
eqt(locker, nil) → F 65.77/17.32
eqt(locker, a) → F 65.77/17.32
eqt(locker, excl) → F 65.77/17.32
eqt(locker, false) → F 65.77/17.32
eqt(locker, lock) → F 65.77/17.32
eqt(locker, locker) → T 65.77/17.32
eqt(locker, mcrlrecord) → F 65.77/17.32
eqt(locker, ok) → F 65.77/17.32
eqt(locker, pending) → F 65.77/17.32
eqt(locker, release) → F 65.77/17.32
eqt(locker, request) → F 65.77/17.32
eqt(locker, resource) → F 65.77/17.32
eqt(locker, tag) → F 65.77/17.32
eqt(locker, true) → F 65.77/17.32
eqt(locker, undefined) → F 65.77/17.32
eqt(locker, pid(z0)) → F 65.77/17.32
eqt(locker, int(z0)) → F 65.77/17.32
eqt(locker, cons(z0, z1)) → F 65.77/17.32
eqt(locker, tuple(z0, z1)) → F 65.77/17.32
eqt(locker, tuplenil(z0)) → F 65.77/17.32
eqt(mcrlrecord, nil) → F 65.77/17.32
eqt(mcrlrecord, a) → F 65.77/17.32
eqt(mcrlrecord, excl) → F 65.77/17.32
eqt(mcrlrecord, false) → F 65.77/17.32
eqt(mcrlrecord, lock) → F 65.77/17.32
eqt(mcrlrecord, locker) → F 65.77/17.32
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.32
eqt(mcrlrecord, ok) → F 65.77/17.32
eqt(mcrlrecord, pending) → F 65.77/17.32
eqt(mcrlrecord, release) → F 65.77/17.32
eqt(mcrlrecord, request) → F 65.77/17.32
eqt(mcrlrecord, resource) → F 65.77/17.32
eqt(ok, resource) → F 65.77/17.32
eqt(ok, tag) → F 65.77/17.32
eqt(ok, true) → F 65.77/17.32
eqt(ok, undefined) → F 65.77/17.32
eqt(ok, pid(z0)) → F 65.77/17.32
eqt(ok, int(z0)) → F 65.77/17.32
eqt(ok, cons(z0, z1)) → F 65.77/17.32
eqt(ok, tuple(z0, z1)) → F 65.77/17.32
eqt(ok, tuplenil(z0)) → F 65.77/17.32
eqt(pending, nil) → F 65.77/17.32
eqt(pending, a) → F 65.77/17.32
eqt(pending, excl) → F 65.77/17.32
eqt(pending, false) → F 65.77/17.32
eqt(pending, lock) → F 65.77/17.32
eqt(pending, locker) → F 65.77/17.32
eqt(pending, mcrlrecord) → F 65.77/17.32
eqt(pending, ok) → F 65.77/17.32
eqt(pending, pending) → T 65.77/17.32
eqt(pending, release) → F 65.77/17.32
eqt(pending, request) → F 65.77/17.32
eqt(pending, resource) → F 65.77/17.32
eqt(pending, tag) → F 65.77/17.32
eqt(pending, true) → F 65.77/17.32
eqt(pending, undefined) → F 65.77/17.32
eqt(pending, pid(z0)) → F 65.77/17.32
eqt(pending, int(z0)) → F 65.77/17.32
eqt(pending, cons(z0, z1)) → F 65.77/17.32
eqt(pending, tuple(z0, z1)) → F 65.77/17.32
eqt(pending, tuplenil(z0)) → F 65.77/17.32
eqt(release, nil) → F 65.77/17.32
eqt(release, a) → F 65.77/17.32
eqt(release, excl) → F 65.77/17.32
eqt(release, false) → F 65.77/17.32
eqt(release, lock) → F 65.77/17.32
eqt(release, locker) → F 65.77/17.32
eqt(release, mcrlrecord) → F 65.77/17.32
eqt(release, ok) → F 65.77/17.32
eqt(request, mcrlrecord) → F 65.77/17.32
eqt(request, ok) → F 65.77/17.32
eqt(request, pending) → F 65.77/17.32
eqt(request, release) → F 65.77/17.32
eqt(request, request) → T 65.77/17.32
eqt(request, resource) → F 65.77/17.32
eqt(request, tag) → F 65.77/17.32
eqt(request, true) → F 65.77/17.32
eqt(request, undefined) → F 65.77/17.32
eqt(request, pid(z0)) → F 65.77/17.32
eqt(request, int(z0)) → F 65.77/17.32
eqt(request, cons(z0, z1)) → F 65.77/17.32
eqt(request, tuple(z0, z1)) → F 65.77/17.32
eqt(request, tuplenil(z0)) → F 65.77/17.32
eqt(resource, nil) → F 65.77/17.32
eqt(resource, a) → F 65.77/17.32
eqt(resource, excl) → F 65.77/17.32
eqt(resource, false) → F 65.77/17.32
eqt(resource, lock) → F 65.77/17.32
eqt(resource, locker) → F 65.77/17.32
eqt(resource, mcrlrecord) → F 65.77/17.32
eqt(resource, ok) → F 65.77/17.32
eqt(resource, pending) → F 65.77/17.32
eqt(resource, release) → F 65.77/17.32
eqt(resource, request) → F 65.77/17.32
eqt(resource, resource) → T 65.77/17.32
eqt(resource, tag) → F 65.77/17.32
eqt(resource, true) → F 65.77/17.32
eqt(resource, undefined) → F 65.77/17.32
eqt(resource, pid(z0)) → F 65.77/17.32
eqt(resource, int(z0)) → F 65.77/17.32
eqt(resource, cons(z0, z1)) → F 65.77/17.32
eqt(resource, tuple(z0, z1)) → F 65.77/17.32
eqt(resource, tuplenil(z0)) → F 65.77/17.32
eqt(tag, nil) → F 65.77/17.32
eqt(tag, a) → F 65.77/17.32
eqt(tag, excl) → F 65.77/17.32
eqt(tag, false) → F 65.77/17.32
eqt(tag, lock) → F 65.77/17.32
eqt(tag, locker) → F 65.77/17.32
eqt(tag, mcrlrecord) → F 65.77/17.32
eqt(tag, ok) → F 65.77/17.32
eqt(tag, pending) → F 65.77/17.32
eqt(tag, release) → F 65.77/17.32
eqt(tag, request) → F 65.77/17.32
eqt(tag, resource) → F 65.77/17.32
eqt(tag, tag) → T 65.77/17.32
eqt(tag, true) → F 65.77/17.32
eqt(tag, undefined) → F 65.77/17.32
eqt(tag, pid(z0)) → F 65.77/17.32
eqt(tag, int(z0)) → F 65.77/17.32
eqt(tag, cons(z0, z1)) → F 65.77/17.32
eqt(tag, tuple(z0, z1)) → F 65.77/17.32
eqt(tag, tuplenil(z0)) → F 65.77/17.32
eqt(true, nil) → F 65.77/17.32
eqt(true, a) → F 65.77/17.32
eqt(true, excl) → F 65.77/17.32
eqt(true, false) → F 65.77/17.32
eqt(true, lock) → F 65.77/17.32
eqt(true, locker) → F 65.77/17.32
eqt(true, mcrlrecord) → F 65.77/17.32
eqt(true, ok) → F 65.77/17.32
eqt(true, pending) → F 65.77/17.32
eqt(true, release) → F 65.77/17.32
eqt(true, request) → F 65.77/17.32
eqt(true, resource) → F 65.77/17.32
eqt(true, tag) → F 65.77/17.32
eqt(true, true) → T 65.77/17.32
eqt(true, undefined) → F 65.77/17.32
eqt(true, pid(z0)) → F 65.77/17.32
eqt(true, int(z0)) → F 65.77/17.32
eqt(true, cons(z0, z1)) → F 65.77/17.32
eqt(true, tuple(z0, z1)) → F 65.77/17.32
eqt(true, tuplenil(z0)) → F 65.77/17.32
eqt(undefined, nil) → F 65.77/17.32
eqt(undefined, a) → F 65.77/17.32
eqt(undefined, tuplenil(z0)) → F 65.77/17.32
eqt(pid(z0), nil) → F 65.77/17.32
eqt(pid(z0), a) → F 65.77/17.32
eqt(pid(z0), excl) → F 65.77/17.32
eqt(pid(z0), false) → F 65.77/17.32
eqt(pid(z0), lock) → F 65.77/17.32
eqt(pid(z0), locker) → F 65.77/17.32
eqt(pid(z0), mcrlrecord) → F 65.77/17.32
eqt(pid(z0), ok) → F 65.77/17.32
eqt(pid(z0), pending) → F 65.77/17.32
eqt(pid(z0), release) → F 65.77/17.32
eqt(pid(z0), request) → F 65.77/17.32
eqt(pid(z0), resource) → F 65.77/17.32
eqt(pid(z0), tag) → F 65.77/17.32
eqt(pid(z0), true) → F 65.77/17.32
eqt(pid(z0), undefined) → F 65.77/17.32
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.32
eqt(pid(z0), int(z1)) → F 65.77/17.32
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.32
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.32
eqt(int(z0), nil) → F 65.77/17.32
eqt(int(z0), a) → F 65.77/17.32
eqt(int(z0), excl) → F 65.77/17.32
eqt(int(z0), false) → F 65.77/17.32
eqt(int(z0), lock) → F 65.77/17.32
eqt(int(z0), locker) → F 65.77/17.32
eqt(int(z0), mcrlrecord) → F 65.77/17.32
eqt(int(z0), ok) → F 65.77/17.32
eqt(int(z0), pending) → F 65.77/17.32
eqt(int(z0), release) → F 65.77/17.32
eqt(int(z0), request) → F 65.77/17.32
eqt(int(z0), resource) → F 65.77/17.32
eqt(int(z0), tag) → F 65.77/17.32
eqt(int(z0), true) → F 65.77/17.32
eqt(int(z0), undefined) → F 65.77/17.32
eqt(cons(z0, z1), resource) → F 65.77/17.32
eqt(cons(z0, z1), tag) → F 65.77/17.32
eqt(cons(z0, z1), true) → F 65.77/17.32
eqt(cons(z0, z1), undefined) → F 65.77/17.33
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.33
eqt(cons(z0, z1), int(z2)) → F 65.77/17.33
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.33
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), nil) → F 65.77/17.33
eqt(tuple(z0, z1), a) → F 65.77/17.33
eqt(tuple(z0, z1), excl) → F 65.77/17.33
eqt(tuple(z0, z1), false) → F 65.77/17.33
eqt(tuple(z0, z1), lock) → F 65.77/17.33
eqt(tuple(z0, z1), locker) → F 65.77/17.33
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.33
eqt(tuple(z0, z1), ok) → F 65.77/17.33
eqt(tuple(z0, z1), pending) → F 65.77/17.33
eqt(tuple(z0, z1), release) → F 65.77/17.33
eqt(tuple(z0, z1), request) → F 65.77/17.33
eqt(tuple(z0, z1), resource) → F 65.77/17.33
eqt(tuple(z0, z1), tag) → F 65.77/17.33
eqt(tuple(z0, z1), true) → F 65.77/17.33
eqt(tuple(z0, z1), undefined) → F 65.77/17.33
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.33
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuplenil(z0), nil) → F 65.77/17.33
eqt(tuplenil(z0), a) → F 65.77/17.33
eqt(tuplenil(z0), excl) → F 65.77/17.33
eqt(tuplenil(z0), false) → F 65.77/17.33
eqt(tuplenil(z0), lock) → F 65.77/17.33
eqt(tuplenil(z0), locker) → F 65.77/17.33
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.33
eqt(tuplenil(z0), ok) → F 65.77/17.33
eqt(tuplenil(z0), pending) → F 65.77/17.33
eqt(tuplenil(z0), release) → F 65.77/17.33
eqt(tuplenil(z0), request) → F 65.77/17.33
eqt(tuplenil(z0), resource) → F 65.77/17.33
eqt(tuplenil(z0), tag) → F 65.77/17.33
eqt(tuplenil(z0), true) → F 65.77/17.33
eqt(tuplenil(z0), undefined) → F 65.77/17.33
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.33
eqt(tuplenil(z0), int(z1)) → F 65.77/17.33
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.33
and(T, z0) → z0 65.77/17.33
and(z0, T) → z0 65.77/17.33
and(F, z0) → F 65.77/17.33
and(z0, F) → F 65.77/17.33
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.33
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.33
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.33
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.33
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.33
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352 65.77/17.33
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.33
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.33
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.33
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.33

POL(APPEND(x1, x2)) = x1    65.77/17.33
POL(CASE1(x1, x2, x3, x4)) = [3]x1 + [2]x2 + [3]x3    65.77/17.33
POL(CASE2(x1, x2, x3)) = [3]x1 + [3]x2    65.77/17.33
POL(DELETE(x1, x2)) = 0    65.77/17.33
POL(ELEMENT(x1, x2)) = 0    65.77/17.33
POL(EQC(x1, x2)) = x2    65.77/17.33
POL(EQS(x1, x2)) = 0    65.77/17.33
POL(EQT(x1, x2)) = 0    65.77/17.33
POL(F) = [3]    65.77/17.33
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [5] + [3]x1 + [3]x2 + [3]x3    65.77/17.33
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.33
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = 0    65.77/17.33
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.33
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    65.77/17.33
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [2]    65.77/17.33
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [4] + [5]x1 + [5]x2    65.77/17.33
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [2] + [3]x1 + [5]x2    65.77/17.33
POL(MEMBER(x1, x2)) = 0    65.77/17.33
POL(PUSH(x1, x2, x3)) = [2] + [3]x1 + [5]x2    65.77/17.33
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = x1 + [4]x2    65.77/17.33
POL(RECORD_UPDATES(x1, x2, x3)) = x2    65.77/17.33
POL(SUBTRACT(x1, x2)) = 0    65.77/17.33
POL(T) = [3]    65.77/17.33
POL(a) = [3]    65.77/17.33
POL(and(x1, x2)) = [3]    65.77/17.33
POL(append(x1, x2)) = [3]    65.77/17.33
POL(c(x1)) = x1    65.77/17.33
POL(c245(x1)) = x1    65.77/17.33
POL(c271(x1, x2)) = x1 + x2    65.77/17.33
POL(c292(x1, x2)) = x1 + x2    65.77/17.33
POL(c313(x1)) = x1    65.77/17.33
POL(c316(x1)) = x1    65.77/17.33
POL(c321(x1)) = x1    65.77/17.33
POL(c323(x1, x2)) = x1 + x2    65.77/17.33
POL(c325(x1)) = x1    65.77/17.33
POL(c327) = 0    65.77/17.33
POL(c332(x1)) = x1    65.77/17.33
POL(c334(x1)) = x1    65.77/17.33
POL(c335) = 0    65.77/17.33
POL(c342) = 0    65.77/17.33
POL(c346(x1, x2)) = x1 + x2    65.77/17.33
POL(c348(x1)) = x1    65.77/17.33
POL(c350(x1, x2)) = x1 + x2    65.77/17.33
POL(c352) = 0    65.77/17.33
POL(c358) = 0    65.77/17.33
POL(c364(x1, x2)) = x1 + x2    65.77/17.33
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.33
POL(c376) = 0    65.77/17.33
POL(calls(x1, x2, x3)) = x2 + x3    65.77/17.33
POL(case8(x1, x2, x3, x4)) = 0    65.77/17.33
POL(case9(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3    65.77/17.33
POL(cons(x1, x2)) = [4] + x2    65.77/17.33
POL(delete(x1, x2)) = [1]    65.77/17.33
POL(eqt(x1, x2)) = 0    65.77/17.33
POL(equal(x1, x2)) = 0    65.77/17.33
POL(excl) = 0    65.77/17.33
POL(false) = [5]    65.77/17.33
POL(gen_modtageq(x1, x2)) = [2]    65.77/17.33
POL(int(x1)) = [3]    65.77/17.33
POL(lock) = 0    65.77/17.33
POL(locker) = [3]    65.77/17.33
POL(mcrlrecord) = [1]    65.77/17.33
POL(member(x1, x2)) = 0    65.77/17.33
POL(nil) = 0    65.77/17.33
POL(ok) = [3]    65.77/17.33
POL(pending) = 0    65.77/17.33
POL(pid(x1)) = x1    65.77/17.33
POL(record_extract(x1, x2, x3)) = 0    65.77/17.33
POL(record_update(x1, x2, x3, x4)) = [4]    65.77/17.33
POL(release) = [3]    65.77/17.33
POL(request) = [3]    65.77/17.33
POL(resource) = 0    65.77/17.33
POL(s(x1)) = 0    65.77/17.33
POL(stack(x1, x2)) = x2    65.77/17.33
POL(subtract(x1, x2)) = [3] + [4]x1 + [2]x2    65.77/17.33
POL(tag) = [3]    65.77/17.33
POL(true) = 0    65.77/17.33
POL(tuple(x1, x2)) = 0    65.77/17.33
POL(tuplenil(x1)) = 0    65.77/17.33
POL(undefined) = [3]   
65.77/17.33
65.77/17.33

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.33
or(F, T) → T 65.77/17.33
or(T, F) → T 65.77/17.33
or(F, F) → F 65.77/17.33
and(T, z0) → z0 65.77/17.33
and(z0, T) → z0 65.77/17.33
and(F, z0) → F 65.77/17.33
and(z0, F) → F 65.77/17.33
imp(T, z0) → z0 65.77/17.33
imp(F, z0) → T 65.77/17.33
not(T) → F 65.77/17.33
not(F) → T 65.77/17.33
if(T, z0, z1) → z0 65.77/17.33
if(F, z0, z1) → z1 65.77/17.33
eq(T, T) → T 65.77/17.33
eq(F, F) → T 65.77/17.33
eq(T, F) → F 65.77/17.33
eq(F, T) → F 65.77/17.33
eqt(nil, undefined) → F 65.77/17.33
eqt(nil, pid(z0)) → F 65.77/17.33
eqt(nil, int(z0)) → F 65.77/17.33
eqt(nil, cons(z0, z1)) → F 65.77/17.33
eqt(nil, tuple(z0, z1)) → F 65.77/17.33
eqt(nil, tuplenil(z0)) → F 65.77/17.33
eqt(a, nil) → F 65.77/17.33
eqt(a, a) → T 65.77/17.33
eqt(a, excl) → F 65.77/17.33
eqt(a, false) → F 65.77/17.33
eqt(a, lock) → F 65.77/17.33
eqt(a, locker) → F 65.77/17.33
eqt(a, mcrlrecord) → F 65.77/17.33
eqt(a, ok) → F 65.77/17.33
eqt(a, pending) → F 65.77/17.33
eqt(a, release) → F 65.77/17.33
eqt(a, request) → F 65.77/17.33
eqt(a, resource) → F 65.77/17.33
eqt(a, tag) → F 65.77/17.33
eqt(a, true) → F 65.77/17.33
eqt(a, undefined) → F 65.77/17.33
eqt(a, pid(z0)) → F 65.77/17.33
eqt(a, int(z0)) → F 65.77/17.33
eqt(a, cons(z0, z1)) → F 65.77/17.33
eqt(a, tuple(z0, z1)) → F 65.77/17.33
eqt(a, tuplenil(z0)) → F 65.77/17.33
eqt(excl, nil) → F 65.77/17.33
eqt(excl, a) → F 65.77/17.33
eqt(excl, excl) → T 65.77/17.33
eqt(excl, false) → F 65.77/17.33
eqt(excl, lock) → F 65.77/17.33
eqt(excl, locker) → F 65.77/17.33
eqt(excl, mcrlrecord) → F 65.77/17.33
eqt(excl, ok) → F 65.77/17.33
eqt(excl, pending) → F 65.77/17.33
eqt(excl, release) → F 65.77/17.33
eqt(excl, request) → F 65.77/17.33
eqt(excl, resource) → F 65.77/17.33
eqt(excl, tag) → F 65.77/17.33
eqt(excl, true) → F 65.77/17.33
eqt(excl, undefined) → F 65.77/17.33
eqt(excl, pid(z0)) → F 65.77/17.33
eqt(excl, eqt(false, int(z0))) → F 65.77/17.33
eqt(false, cons(z0, z1)) → F 65.77/17.33
eqt(false, tuple(z0, z1)) → F 65.77/17.33
eqt(false, tuplenil(z0)) → F 65.77/17.33
eqt(lock, nil) → F 65.77/17.33
eqt(lock, a) → F 65.77/17.33
eqt(lock, excl) → F 65.77/17.33
eqt(lock, false) → F 65.77/17.33
eqt(lock, lock) → T 65.77/17.33
eqt(lock, locker) → F 65.77/17.33
eqt(lock, mcrlrecord) → F 65.77/17.33
eqt(lock, ok) → F 65.77/17.33
eqt(lock, pending) → F 65.77/17.33
eqt(lock, release) → F 65.77/17.33
eqt(lock, request) → F 65.77/17.33
eqt(lock, resource) → F 65.77/17.33
eqt(lock, tag) → F 65.77/17.33
eqt(lock, true) → F 65.77/17.33
eqt(lock, undefined) → F 65.77/17.33
eqt(lock, pid(z0)) → F 65.77/17.33
eqt(lock, int(z0)) → F 65.77/17.33
eqt(lock, cons(z0, z1)) → F 65.77/17.33
eqt(lock, tuple(z0, z1)) → F 65.77/17.33
eqt(lock, tuplenil(z0)) → F 65.77/17.33
eqt(locker, nil) → F 65.77/17.33
eqt(locker, a) → F 65.77/17.33
eqt(locker, excl) → F 65.77/17.33
eqt(locker, false) → F 65.77/17.33
eqt(locker, lock) → F 65.77/17.33
eqt(locker, locker) → T 65.77/17.33
eqt(locker, mcrlrecord) → F 65.77/17.33
eqt(locker, ok) → F 65.77/17.33
eqt(locker, pending) → F 65.77/17.33
eqt(locker, release) → F 65.77/17.33
eqt(locker, request) → F 65.77/17.33
eqt(locker, resource) → F 65.77/17.33
eqt(locker, tag) → F 65.77/17.33
eqt(locker, true) → F 65.77/17.33
eqt(locker, undefined) → F 65.77/17.33
eqt(locker, pid(z0)) → F 65.77/17.33
eqt(locker, int(z0)) → F 65.77/17.33
eqt(locker, cons(z0, z1)) → F 65.77/17.33
eqt(locker, tuple(z0, z1)) → F 65.77/17.33
eqt(locker, tuplenil(z0)) → F 65.77/17.33
eqt(mcrlrecord, nil) → F 65.77/17.33
eqt(mcrlrecord, a) → F 65.77/17.33
eqt(mcrlrecord, excl) → F 65.77/17.33
eqt(mcrlrecord, false) → F 65.77/17.33
eqt(mcrlrecord, lock) → F 65.77/17.33
eqt(mcrlrecord, locker) → F 65.77/17.33
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.33
eqt(mcrlrecord, ok) → F 65.77/17.33
eqt(mcrlrecord, pending) → F 65.77/17.33
eqt(mcrlrecord, release) → F 65.77/17.33
eqt(mcrlrecord, request) → F 65.77/17.33
eqt(mcrlrecord, resource) → F 65.77/17.33
eqt(ok, resource) → F 65.77/17.33
eqt(ok, tag) → F 65.77/17.33
eqt(ok, true) → F 65.77/17.33
eqt(ok, undefined) → F 65.77/17.33
eqt(ok, pid(z0)) → F 65.77/17.33
eqt(ok, int(z0)) → F 65.77/17.33
eqt(ok, cons(z0, z1)) → F 65.77/17.33
eqt(ok, tuple(z0, z1)) → F 65.77/17.33
eqt(ok, tuplenil(z0)) → F 65.77/17.33
eqt(pending, nil) → F 65.77/17.33
eqt(pending, a) → F 65.77/17.33
eqt(pending, excl) → F 65.77/17.33
eqt(pending, false) → F 65.77/17.33
eqt(pending, lock) → F 65.77/17.33
eqt(pending, locker) → F 65.77/17.33
eqt(pending, mcrlrecord) → F 65.77/17.33
eqt(pending, ok) → F 65.77/17.33
eqt(pending, pending) → T 65.77/17.33
eqt(pending, release) → F 65.77/17.33
eqt(pending, request) → F 65.77/17.33
eqt(pending, resource) → F 65.77/17.33
eqt(pending, tag) → F 65.77/17.33
eqt(pending, true) → F 65.77/17.33
eqt(pending, undefined) → F 65.77/17.33
eqt(pending, pid(z0)) → F 65.77/17.33
eqt(pending, int(z0)) → F 65.77/17.33
eqt(pending, cons(z0, z1)) → F 65.77/17.33
eqt(pending, tuple(z0, z1)) → F 65.77/17.33
eqt(pending, tuplenil(z0)) → F 65.77/17.33
eqt(release, nil) → F 65.77/17.33
eqt(release, a) → F 65.77/17.33
eqt(release, excl) → F 65.77/17.33
eqt(release, false) → F 65.77/17.33
eqt(release, lock) → F 65.77/17.33
eqt(release, locker) → F 65.77/17.33
eqt(release, mcrlrecord) → F 65.77/17.33
eqt(release, ok) → F 65.77/17.33
eqt(request, mcrlrecord) → F 65.77/17.33
eqt(request, ok) → F 65.77/17.33
eqt(request, pending) → F 65.77/17.33
eqt(request, release) → F 65.77/17.33
eqt(request, request) → T 65.77/17.33
eqt(request, resource) → F 65.77/17.33
eqt(request, tag) → F 65.77/17.33
eqt(request, true) → F 65.77/17.33
eqt(request, undefined) → F 65.77/17.33
eqt(request, pid(z0)) → F 65.77/17.33
eqt(request, int(z0)) → F 65.77/17.33
eqt(request, cons(z0, z1)) → F 65.77/17.33
eqt(request, tuple(z0, z1)) → F 65.77/17.33
eqt(request, tuplenil(z0)) → F 65.77/17.33
eqt(resource, nil) → F 65.77/17.33
eqt(resource, a) → F 65.77/17.33
eqt(resource, excl) → F 65.77/17.33
eqt(resource, false) → F 65.77/17.33
eqt(resource, lock) → F 65.77/17.33
eqt(resource, locker) → F 65.77/17.33
eqt(resource, mcrlrecord) → F 65.77/17.33
eqt(resource, ok) → F 65.77/17.33
eqt(resource, pending) → F 65.77/17.33
eqt(resource, release) → F 65.77/17.33
eqt(resource, request) → F 65.77/17.33
eqt(resource, resource) → T 65.77/17.33
eqt(resource, tag) → F 65.77/17.33
eqt(resource, true) → F 65.77/17.33
eqt(resource, undefined) → F 65.77/17.33
eqt(resource, pid(z0)) → F 65.77/17.33
eqt(resource, int(z0)) → F 65.77/17.33
eqt(resource, cons(z0, z1)) → F 65.77/17.33
eqt(resource, tuple(z0, z1)) → F 65.77/17.33
eqt(resource, tuplenil(z0)) → F 65.77/17.33
eqt(tag, nil) → F 65.77/17.33
eqt(tag, a) → F 65.77/17.33
eqt(tag, excl) → F 65.77/17.33
eqt(tag, false) → F 65.77/17.33
eqt(tag, lock) → F 65.77/17.33
eqt(tag, locker) → F 65.77/17.33
eqt(tag, mcrlrecord) → F 65.77/17.33
eqt(tag, ok) → F 65.77/17.33
eqt(tag, pending) → F 65.77/17.33
eqt(tag, release) → F 65.77/17.33
eqt(tag, request) → F 65.77/17.33
eqt(tag, resource) → F 65.77/17.33
eqt(tag, tag) → T 65.77/17.33
eqt(tag, true) → F 65.77/17.33
eqt(tag, undefined) → F 65.77/17.33
eqt(tag, pid(z0)) → F 65.77/17.33
eqt(tag, int(z0)) → F 65.77/17.33
eqt(tag, cons(z0, z1)) → F 65.77/17.33
eqt(tag, tuple(z0, z1)) → F 65.77/17.33
eqt(tag, tuplenil(z0)) → F 65.77/17.33
eqt(true, nil) → F 65.77/17.33
eqt(true, a) → F 65.77/17.33
eqt(true, excl) → F 65.77/17.33
eqt(true, false) → F 65.77/17.33
eqt(true, lock) → F 65.77/17.33
eqt(true, locker) → F 65.77/17.33
eqt(true, mcrlrecord) → F 65.77/17.33
eqt(true, ok) → F 65.77/17.33
eqt(true, pending) → F 65.77/17.33
eqt(true, release) → F 65.77/17.33
eqt(true, request) → F 65.77/17.33
eqt(true, resource) → F 65.77/17.33
eqt(true, tag) → F 65.77/17.33
eqt(true, true) → T 65.77/17.33
eqt(true, undefined) → F 65.77/17.33
eqt(true, pid(z0)) → F 65.77/17.33
eqt(true, int(z0)) → F 65.77/17.33
eqt(true, cons(z0, z1)) → F 65.77/17.33
eqt(true, tuple(z0, z1)) → F 65.77/17.33
eqt(true, tuplenil(z0)) → F 65.77/17.33
eqt(undefined, nil) → F 65.77/17.33
eqt(undefined, a) → F 65.77/17.33
eqt(undefined, tuplenil(z0)) → F 65.77/17.33
eqt(pid(z0), nil) → F 65.77/17.33
eqt(pid(z0), a) → F 65.77/17.33
eqt(pid(z0), excl) → F 65.77/17.33
eqt(pid(z0), false) → F 65.77/17.33
eqt(pid(z0), lock) → F 65.77/17.33
eqt(pid(z0), locker) → F 65.77/17.33
eqt(pid(z0), mcrlrecord) → F 65.77/17.33
eqt(pid(z0), ok) → F 65.77/17.33
eqt(pid(z0), pending) → F 65.77/17.33
eqt(pid(z0), release) → F 65.77/17.33
eqt(pid(z0), request) → F 65.77/17.33
eqt(pid(z0), resource) → F 65.77/17.33
eqt(pid(z0), tag) → F 65.77/17.33
eqt(pid(z0), true) → F 65.77/17.33
eqt(pid(z0), undefined) → F 65.77/17.33
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.33
eqt(pid(z0), int(z1)) → F 65.77/17.33
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.33
eqt(int(z0), nil) → F 65.77/17.33
eqt(int(z0), a) → F 65.77/17.33
eqt(int(z0), excl) → F 65.77/17.33
eqt(int(z0), false) → F 65.77/17.33
eqt(int(z0), lock) → F 65.77/17.33
eqt(int(z0), locker) → F 65.77/17.33
eqt(int(z0), mcrlrecord) → F 65.77/17.33
eqt(int(z0), ok) → F 65.77/17.33
eqt(int(z0), pending) → F 65.77/17.33
eqt(int(z0), release) → F 65.77/17.33
eqt(int(z0), request) → F 65.77/17.33
eqt(int(z0), resource) → F 65.77/17.33
eqt(int(z0), tag) → F 65.77/17.33
eqt(int(z0), true) → F 65.77/17.33
eqt(int(z0), undefined) → F 65.77/17.33
eqt(cons(z0, z1), resource) → F 65.77/17.33
eqt(cons(z0, z1), tag) → F 65.77/17.33
eqt(cons(z0, z1), true) → F 65.77/17.33
eqt(cons(z0, z1), undefined) → F 65.77/17.33
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.33
eqt(cons(z0, z1), int(z2)) → F 65.77/17.33
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.33
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), nil) → F 65.77/17.33
eqt(tuple(z0, z1), a) → F 65.77/17.33
eqt(tuple(z0, z1), excl) → F 65.77/17.33
eqt(tuple(z0, z1), false) → F 65.77/17.33
eqt(tuple(z0, z1), lock) → F 65.77/17.33
eqt(tuple(z0, z1), locker) → F 65.77/17.33
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.33
eqt(tuple(z0, z1), ok) → F 65.77/17.33
eqt(tuple(z0, z1), pending) → F 65.77/17.33
eqt(tuple(z0, z1), release) → F 65.77/17.33
eqt(tuple(z0, z1), request) → F 65.77/17.33
eqt(tuple(z0, z1), resource) → F 65.77/17.33
eqt(tuple(z0, z1), tag) → F 65.77/17.33
eqt(tuple(z0, z1), true) → F 65.77/17.33
eqt(tuple(z0, z1), undefined) → F 65.77/17.33
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.33
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuplenil(z0), nil) → F 65.77/17.33
eqt(tuplenil(z0), a) → F 65.77/17.33
eqt(tuplenil(z0), excl) → F 65.77/17.33
eqt(tuplenil(z0), false) → F 65.77/17.33
eqt(tuplenil(z0), lock) → F 65.77/17.33
eqt(tuplenil(z0), locker) → F 65.77/17.33
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.33
eqt(tuplenil(z0), ok) → F 65.77/17.33
eqt(tuplenil(z0), pending) → F 65.77/17.33
eqt(tuplenil(z0), release) → F 65.77/17.33
eqt(tuplenil(z0), request) → F 65.77/17.33
eqt(tuplenil(z0), resource) → F 65.77/17.33
eqt(tuplenil(z0), tag) → F 65.77/17.33
eqt(tuplenil(z0), true) → F 65.77/17.33
eqt(tuplenil(z0), undefined) → F 65.77/17.33
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.33
eqt(tuplenil(z0), int(z1)) → F 65.77/17.33
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.33
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.33
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.33
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.33
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.33
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.33
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.33
record_updates(z0, z1, nil) → z0 65.77/17.33
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.33
locker2_map_promote_pending(nil, z0) → nil 65.77/17.33
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.33
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.33
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.33
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.33
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.33
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.33
case0(z0, z1, z2) → z1 65.77/17.33
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.33
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.33
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.33
case1(z0, z1, z2, false) → z2 65.77/17.33
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.33
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.33
case4(z0, z1, z2) → false 65.77/17.33
locker2_obtainables(nil, z0) → true 65.77/17.33
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.33
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.33
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.33
locker2_check_available(z0, nil) → false 65.77/17.33
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.33
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.33
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.33
locker2_check_availables(nil, z0) → true 65.77/17.33
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.33
locker2_adduniq(nil, z0) → z0 65.77/17.33
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.33
subtract(z0, nil) → z0 65.77/17.33
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.33
delete(z0, nil) → nil 65.77/17.33
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.33
case8(z0, z1, z2, true) → z0 65.77/17.33
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.33
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.33
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.33
member(z0, nil) → false 65.77/17.33
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.33
case9(z0, z1, z2, true) → true 65.77/17.33
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.33
eqs(empty, empty) → T 65.77/17.33
eqs(empty, stack(z0, z1)) → F 65.77/17.33
eqs(stack(z0, z1), empty) → F 65.77/17.33
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.33
pushs(z0, z1) → stack(z0, z1) 65.77/17.33
pops(stack(z0, z1)) → z1 65.77/17.33
tops(stack(z0, z1)) → z0 65.77/17.33
istops(z0, empty) → F 65.77/17.33
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.33
eqc(nocalls, nocalls) → T 65.77/17.33
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.33
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.33
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.33
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.33
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.33
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.33
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.33
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.33
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.33
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352 65.77/17.33
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.33
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.33
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.33
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.33
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.33
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.33
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.33
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.33
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.33
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.33
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.33
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.33
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.33
65.77/17.33

(17) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.33
member(z0, nil) → false 65.77/17.33
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.33
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.33
subtract(z0, nil) → z0 65.77/17.33
delete(z0, nil) → nil 65.77/17.33
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.33
eqt(nil, undefined) → F 65.77/17.33
eqt(nil, pid(z0)) → F 65.77/17.33
eqt(nil, int(z0)) → F 65.77/17.33
eqt(nil, cons(z0, z1)) → F 65.77/17.33
eqt(nil, tuple(z0, z1)) → F 65.77/17.33
eqt(nil, tuplenil(z0)) → F 65.77/17.33
eqt(a, nil) → F 65.77/17.33
eqt(a, a) → T 65.77/17.33
eqt(a, excl) → F 65.77/17.33
eqt(a, false) → F 65.77/17.33
eqt(a, lock) → F 65.77/17.33
eqt(a, locker) → F 65.77/17.33
eqt(a, mcrlrecord) → F 65.77/17.33
eqt(a, ok) → F 65.77/17.33
eqt(a, pending) → F 65.77/17.33
eqt(a, release) → F 65.77/17.33
eqt(a, request) → F 65.77/17.33
eqt(a, resource) → F 65.77/17.33
eqt(a, tag) → F 65.77/17.33
eqt(a, true) → F 65.77/17.33
eqt(a, undefined) → F 65.77/17.33
eqt(a, pid(z0)) → F 65.77/17.33
eqt(a, int(z0)) → F 65.77/17.33
eqt(a, cons(z0, z1)) → F 65.77/17.33
eqt(a, tuple(z0, z1)) → F 65.77/17.33
eqt(a, tuplenil(z0)) → F 65.77/17.33
eqt(excl, nil) → F 65.77/17.33
eqt(excl, a) → F 65.77/17.33
eqt(excl, excl) → T 65.77/17.33
eqt(excl, false) → F 65.77/17.33
eqt(excl, lock) → F 65.77/17.33
eqt(excl, locker) → F 65.77/17.33
eqt(excl, mcrlrecord) → F 65.77/17.33
eqt(excl, ok) → F 65.77/17.33
eqt(excl, pending) → F 65.77/17.33
eqt(excl, release) → F 65.77/17.33
eqt(excl, request) → F 65.77/17.33
eqt(excl, resource) → F 65.77/17.33
eqt(excl, tag) → F 65.77/17.33
eqt(excl, true) → F 65.77/17.33
eqt(excl, undefined) → F 65.77/17.33
eqt(excl, pid(z0)) → F 65.77/17.33
eqt(excl, eqt(false, int(z0))) → F 65.77/17.33
eqt(false, cons(z0, z1)) → F 65.77/17.33
eqt(false, tuple(z0, z1)) → F 65.77/17.33
eqt(false, tuplenil(z0)) → F 65.77/17.33
eqt(lock, nil) → F 65.77/17.33
eqt(lock, a) → F 65.77/17.33
eqt(lock, excl) → F 65.77/17.33
eqt(lock, false) → F 65.77/17.33
eqt(lock, lock) → T 65.77/17.33
eqt(lock, locker) → F 65.77/17.33
eqt(lock, mcrlrecord) → F 65.77/17.33
eqt(lock, ok) → F 65.77/17.33
eqt(lock, pending) → F 65.77/17.33
eqt(lock, release) → F 65.77/17.33
eqt(lock, request) → F 65.77/17.33
eqt(lock, resource) → F 65.77/17.33
eqt(lock, tag) → F 65.77/17.33
eqt(lock, true) → F 65.77/17.33
eqt(lock, undefined) → F 65.77/17.33
eqt(lock, pid(z0)) → F 65.77/17.33
eqt(lock, int(z0)) → F 65.77/17.33
eqt(lock, cons(z0, z1)) → F 65.77/17.33
eqt(lock, tuple(z0, z1)) → F 65.77/17.33
eqt(lock, tuplenil(z0)) → F 65.77/17.33
eqt(locker, nil) → F 65.77/17.33
eqt(locker, a) → F 65.77/17.33
eqt(locker, excl) → F 65.77/17.33
eqt(locker, false) → F 65.77/17.33
eqt(locker, lock) → F 65.77/17.33
eqt(locker, locker) → T 65.77/17.33
eqt(locker, mcrlrecord) → F 65.77/17.33
eqt(locker, ok) → F 65.77/17.33
eqt(locker, pending) → F 65.77/17.33
eqt(locker, release) → F 65.77/17.33
eqt(locker, request) → F 65.77/17.33
eqt(locker, resource) → F 65.77/17.33
eqt(locker, tag) → F 65.77/17.33
eqt(locker, true) → F 65.77/17.33
eqt(locker, undefined) → F 65.77/17.33
eqt(locker, pid(z0)) → F 65.77/17.33
eqt(locker, int(z0)) → F 65.77/17.33
eqt(locker, cons(z0, z1)) → F 65.77/17.33
eqt(locker, tuple(z0, z1)) → F 65.77/17.33
eqt(locker, tuplenil(z0)) → F 65.77/17.33
eqt(mcrlrecord, nil) → F 65.77/17.33
eqt(mcrlrecord, a) → F 65.77/17.33
eqt(mcrlrecord, excl) → F 65.77/17.33
eqt(mcrlrecord, false) → F 65.77/17.33
eqt(mcrlrecord, lock) → F 65.77/17.33
eqt(mcrlrecord, locker) → F 65.77/17.33
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.33
eqt(mcrlrecord, ok) → F 65.77/17.33
eqt(mcrlrecord, pending) → F 65.77/17.33
eqt(mcrlrecord, release) → F 65.77/17.33
eqt(mcrlrecord, request) → F 65.77/17.33
eqt(mcrlrecord, resource) → F 65.77/17.33
eqt(ok, resource) → F 65.77/17.33
eqt(ok, tag) → F 65.77/17.33
eqt(ok, true) → F 65.77/17.33
eqt(ok, undefined) → F 65.77/17.33
eqt(ok, pid(z0)) → F 65.77/17.33
eqt(ok, int(z0)) → F 65.77/17.33
eqt(ok, cons(z0, z1)) → F 65.77/17.33
eqt(ok, tuple(z0, z1)) → F 65.77/17.33
eqt(ok, tuplenil(z0)) → F 65.77/17.33
eqt(pending, nil) → F 65.77/17.33
eqt(pending, a) → F 65.77/17.33
eqt(pending, excl) → F 65.77/17.33
eqt(pending, false) → F 65.77/17.33
eqt(pending, lock) → F 65.77/17.33
eqt(pending, locker) → F 65.77/17.33
eqt(pending, mcrlrecord) → F 65.77/17.33
eqt(pending, ok) → F 65.77/17.33
eqt(pending, pending) → T 65.77/17.33
eqt(pending, release) → F 65.77/17.33
eqt(pending, request) → F 65.77/17.33
eqt(pending, resource) → F 65.77/17.33
eqt(pending, tag) → F 65.77/17.33
eqt(pending, true) → F 65.77/17.33
eqt(pending, undefined) → F 65.77/17.33
eqt(pending, pid(z0)) → F 65.77/17.33
eqt(pending, int(z0)) → F 65.77/17.33
eqt(pending, cons(z0, z1)) → F 65.77/17.33
eqt(pending, tuple(z0, z1)) → F 65.77/17.33
eqt(pending, tuplenil(z0)) → F 65.77/17.33
eqt(release, nil) → F 65.77/17.33
eqt(release, a) → F 65.77/17.33
eqt(release, excl) → F 65.77/17.33
eqt(release, false) → F 65.77/17.33
eqt(release, lock) → F 65.77/17.33
eqt(release, locker) → F 65.77/17.33
eqt(release, mcrlrecord) → F 65.77/17.33
eqt(release, ok) → F 65.77/17.33
eqt(request, mcrlrecord) → F 65.77/17.33
eqt(request, ok) → F 65.77/17.33
eqt(request, pending) → F 65.77/17.33
eqt(request, release) → F 65.77/17.33
eqt(request, request) → T 65.77/17.33
eqt(request, resource) → F 65.77/17.33
eqt(request, tag) → F 65.77/17.33
eqt(request, true) → F 65.77/17.33
eqt(request, undefined) → F 65.77/17.33
eqt(request, pid(z0)) → F 65.77/17.33
eqt(request, int(z0)) → F 65.77/17.33
eqt(request, cons(z0, z1)) → F 65.77/17.33
eqt(request, tuple(z0, z1)) → F 65.77/17.33
eqt(request, tuplenil(z0)) → F 65.77/17.33
eqt(resource, nil) → F 65.77/17.33
eqt(resource, a) → F 65.77/17.33
eqt(resource, excl) → F 65.77/17.33
eqt(resource, false) → F 65.77/17.33
eqt(resource, lock) → F 65.77/17.33
eqt(resource, locker) → F 65.77/17.33
eqt(resource, mcrlrecord) → F 65.77/17.33
eqt(resource, ok) → F 65.77/17.33
eqt(resource, pending) → F 65.77/17.33
eqt(resource, release) → F 65.77/17.33
eqt(resource, request) → F 65.77/17.33
eqt(resource, resource) → T 65.77/17.33
eqt(resource, tag) → F 65.77/17.33
eqt(resource, true) → F 65.77/17.33
eqt(resource, undefined) → F 65.77/17.33
eqt(resource, pid(z0)) → F 65.77/17.33
eqt(resource, int(z0)) → F 65.77/17.33
eqt(resource, cons(z0, z1)) → F 65.77/17.33
eqt(resource, tuple(z0, z1)) → F 65.77/17.33
eqt(resource, tuplenil(z0)) → F 65.77/17.33
eqt(tag, nil) → F 65.77/17.33
eqt(tag, a) → F 65.77/17.33
eqt(tag, excl) → F 65.77/17.33
eqt(tag, false) → F 65.77/17.33
eqt(tag, lock) → F 65.77/17.33
eqt(tag, locker) → F 65.77/17.33
eqt(tag, mcrlrecord) → F 65.77/17.33
eqt(tag, ok) → F 65.77/17.33
eqt(tag, pending) → F 65.77/17.33
eqt(tag, release) → F 65.77/17.33
eqt(tag, request) → F 65.77/17.33
eqt(tag, resource) → F 65.77/17.33
eqt(tag, tag) → T 65.77/17.33
eqt(tag, true) → F 65.77/17.33
eqt(tag, undefined) → F 65.77/17.33
eqt(tag, pid(z0)) → F 65.77/17.33
eqt(tag, int(z0)) → F 65.77/17.33
eqt(tag, cons(z0, z1)) → F 65.77/17.33
eqt(tag, tuple(z0, z1)) → F 65.77/17.33
eqt(tag, tuplenil(z0)) → F 65.77/17.33
eqt(true, nil) → F 65.77/17.33
eqt(true, a) → F 65.77/17.33
eqt(true, excl) → F 65.77/17.33
eqt(true, false) → F 65.77/17.33
eqt(true, lock) → F 65.77/17.33
eqt(true, locker) → F 65.77/17.33
eqt(true, mcrlrecord) → F 65.77/17.33
eqt(true, ok) → F 65.77/17.33
eqt(true, pending) → F 65.77/17.33
eqt(true, release) → F 65.77/17.33
eqt(true, request) → F 65.77/17.33
eqt(true, resource) → F 65.77/17.33
eqt(true, tag) → F 65.77/17.33
eqt(true, true) → T 65.77/17.33
eqt(true, undefined) → F 65.77/17.33
eqt(true, pid(z0)) → F 65.77/17.33
eqt(true, int(z0)) → F 65.77/17.33
eqt(true, cons(z0, z1)) → F 65.77/17.33
eqt(true, tuple(z0, z1)) → F 65.77/17.33
eqt(true, tuplenil(z0)) → F 65.77/17.33
eqt(undefined, nil) → F 65.77/17.33
eqt(undefined, a) → F 65.77/17.33
eqt(undefined, tuplenil(z0)) → F 65.77/17.33
eqt(pid(z0), nil) → F 65.77/17.33
eqt(pid(z0), a) → F 65.77/17.33
eqt(pid(z0), excl) → F 65.77/17.33
eqt(pid(z0), false) → F 65.77/17.33
eqt(pid(z0), lock) → F 65.77/17.33
eqt(pid(z0), locker) → F 65.77/17.33
eqt(pid(z0), mcrlrecord) → F 65.77/17.33
eqt(pid(z0), ok) → F 65.77/17.33
eqt(pid(z0), pending) → F 65.77/17.33
eqt(pid(z0), release) → F 65.77/17.33
eqt(pid(z0), request) → F 65.77/17.33
eqt(pid(z0), resource) → F 65.77/17.33
eqt(pid(z0), tag) → F 65.77/17.33
eqt(pid(z0), true) → F 65.77/17.33
eqt(pid(z0), undefined) → F 65.77/17.33
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.33
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.33
eqt(pid(z0), int(z1)) → F 65.77/17.33
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.33
eqt(int(z0), nil) → F 65.77/17.33
eqt(int(z0), a) → F 65.77/17.33
eqt(int(z0), excl) → F 65.77/17.33
eqt(int(z0), false) → F 65.77/17.33
eqt(int(z0), lock) → F 65.77/17.33
eqt(int(z0), locker) → F 65.77/17.33
eqt(int(z0), mcrlrecord) → F 65.77/17.33
eqt(int(z0), ok) → F 65.77/17.33
eqt(int(z0), pending) → F 65.77/17.33
eqt(int(z0), release) → F 65.77/17.33
eqt(int(z0), request) → F 65.77/17.33
eqt(int(z0), resource) → F 65.77/17.33
eqt(int(z0), tag) → F 65.77/17.33
eqt(int(z0), true) → F 65.77/17.33
eqt(int(z0), undefined) → F 65.77/17.33
eqt(cons(z0, z1), resource) → F 65.77/17.33
eqt(cons(z0, z1), tag) → F 65.77/17.33
eqt(cons(z0, z1), true) → F 65.77/17.33
eqt(cons(z0, z1), undefined) → F 65.77/17.33
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.33
eqt(cons(z0, z1), int(z2)) → F 65.77/17.33
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.33
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), nil) → F 65.77/17.33
eqt(tuple(z0, z1), a) → F 65.77/17.33
eqt(tuple(z0, z1), excl) → F 65.77/17.33
eqt(tuple(z0, z1), false) → F 65.77/17.33
eqt(tuple(z0, z1), lock) → F 65.77/17.33
eqt(tuple(z0, z1), locker) → F 65.77/17.33
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.33
eqt(tuple(z0, z1), ok) → F 65.77/17.33
eqt(tuple(z0, z1), pending) → F 65.77/17.33
eqt(tuple(z0, z1), release) → F 65.77/17.33
eqt(tuple(z0, z1), request) → F 65.77/17.33
eqt(tuple(z0, z1), resource) → F 65.77/17.33
eqt(tuple(z0, z1), tag) → F 65.77/17.33
eqt(tuple(z0, z1), true) → F 65.77/17.33
eqt(tuple(z0, z1), undefined) → F 65.77/17.33
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.33
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuplenil(z0), nil) → F 65.77/17.33
eqt(tuplenil(z0), a) → F 65.77/17.33
eqt(tuplenil(z0), excl) → F 65.77/17.33
eqt(tuplenil(z0), false) → F 65.77/17.33
eqt(tuplenil(z0), lock) → F 65.77/17.33
eqt(tuplenil(z0), locker) → F 65.77/17.33
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.33
eqt(tuplenil(z0), ok) → F 65.77/17.33
eqt(tuplenil(z0), pending) → F 65.77/17.33
eqt(tuplenil(z0), release) → F 65.77/17.33
eqt(tuplenil(z0), request) → F 65.77/17.33
eqt(tuplenil(z0), resource) → F 65.77/17.33
eqt(tuplenil(z0), tag) → F 65.77/17.33
eqt(tuplenil(z0), true) → F 65.77/17.33
eqt(tuplenil(z0), undefined) → F 65.77/17.33
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.33
eqt(tuplenil(z0), int(z1)) → F 65.77/17.33
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.33
and(T, z0) → z0 65.77/17.33
and(z0, T) → z0 65.77/17.33
and(F, z0) → F 65.77/17.33
and(z0, F) → F 65.77/17.33
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.33
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.33
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.33
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.33
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.33
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352 65.77/17.33
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.33
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.33
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.33
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.33

POL(APPEND(x1, x2)) = [5]x1    65.77/17.33
POL(CASE1(x1, x2, x3, x4)) = [3]x1 + [5]x2    65.77/17.33
POL(CASE2(x1, x2, x3)) = [4]x1 + [3]x2    65.77/17.33
POL(DELETE(x1, x2)) = [1]    65.77/17.33
POL(ELEMENT(x1, x2)) = [5]x2    65.77/17.33
POL(EQC(x1, x2)) = [4]x1 + [4]x2    65.77/17.33
POL(EQS(x1, x2)) = [3] + [2]x1 + [2]x2    65.77/17.33
POL(EQT(x1, x2)) = 0    65.77/17.33
POL(F) = [3]    65.77/17.33
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [2] + [2]x1 + [5]x2 + [3]x3    65.77/17.33
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.33
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = 0    65.77/17.33
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.33
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    65.77/17.33
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [3]    65.77/17.33
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [4] + [5]x1 + [5]x2    65.77/17.33
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [5] + [3]x1 + [5]x2    65.77/17.33
POL(MEMBER(x1, x2)) = x2    65.77/17.33
POL(PUSH(x1, x2, x3)) = [1] + [3]x1 + [3]x2 + [4]x3    65.77/17.33
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [5] + x1 + [3]x2 + [4]x3 + [2]x4 + [2]x5    65.77/17.33
POL(RECORD_UPDATES(x1, x2, x3)) = 0    65.77/17.33
POL(SUBTRACT(x1, x2)) = x2    65.77/17.33
POL(T) = [3]    65.77/17.33
POL(a) = [3]    65.77/17.33
POL(and(x1, x2)) = [3]    65.77/17.33
POL(append(x1, x2)) = [3]    65.77/17.33
POL(c(x1)) = x1    65.77/17.33
POL(c245(x1)) = x1    65.77/17.33
POL(c271(x1, x2)) = x1 + x2    65.77/17.33
POL(c292(x1, x2)) = x1 + x2    65.77/17.33
POL(c313(x1)) = x1    65.77/17.33
POL(c316(x1)) = x1    65.77/17.33
POL(c321(x1)) = x1    65.77/17.33
POL(c323(x1, x2)) = x1 + x2    65.77/17.33
POL(c325(x1)) = x1    65.77/17.33
POL(c327) = 0    65.77/17.33
POL(c332(x1)) = x1    65.77/17.33
POL(c334(x1)) = x1    65.77/17.33
POL(c335) = 0    65.77/17.33
POL(c342) = 0    65.77/17.33
POL(c346(x1, x2)) = x1 + x2    65.77/17.33
POL(c348(x1)) = x1    65.77/17.33
POL(c350(x1, x2)) = x1 + x2    65.77/17.33
POL(c352) = 0    65.77/17.33
POL(c358) = 0    65.77/17.33
POL(c364(x1, x2)) = x1 + x2    65.77/17.33
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.33
POL(c376) = 0    65.77/17.33
POL(calls(x1, x2, x3)) = [4] + x1 + x2 + x3    65.77/17.33
POL(case8(x1, x2, x3, x4)) = 0    65.77/17.33
POL(case9(x1, x2, x3, x4)) = [4] + [4]x1 + x3 + [4]x4    65.77/17.33
POL(cons(x1, x2)) = [4] + x2    65.77/17.33
POL(delete(x1, x2)) = [4]x2    65.77/17.33
POL(eqt(x1, x2)) = 0    65.77/17.33
POL(equal(x1, x2)) = [2]    65.77/17.33
POL(excl) = 0    65.77/17.33
POL(false) = [1]    65.77/17.33
POL(gen_modtageq(x1, x2)) = x1    65.77/17.33
POL(int(x1)) = [3]    65.77/17.33
POL(lock) = [4]    65.77/17.33
POL(locker) = [3]    65.77/17.33
POL(mcrlrecord) = [4]    65.77/17.33
POL(member(x1, x2)) = [2] + [4]x1 + [4]x2    65.77/17.33
POL(nil) = [1]    65.77/17.33
POL(ok) = [3]    65.77/17.33
POL(pending) = 0    65.77/17.33
POL(pid(x1)) = x1    65.77/17.33
POL(record_extract(x1, x2, x3)) = [2] + [4]x1    65.77/17.33
POL(record_update(x1, x2, x3, x4)) = [4]x1    65.77/17.33
POL(release) = [3]    65.77/17.33
POL(request) = [3]    65.77/17.33
POL(resource) = 0    65.77/17.33
POL(s(x1)) = 0    65.77/17.33
POL(stack(x1, x2)) = x1 + x2    65.77/17.33
POL(subtract(x1, x2)) = [3]    65.77/17.33
POL(tag) = [3]    65.77/17.33
POL(true) = 0    65.77/17.33
POL(tuple(x1, x2)) = x1 + x2    65.77/17.33
POL(tuplenil(x1)) = [4]    65.77/17.33
POL(undefined) = [3]   
65.77/17.33
65.77/17.33

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.33
or(F, T) → T 65.77/17.33
or(T, F) → T 65.77/17.33
or(F, F) → F 65.77/17.33
and(T, z0) → z0 65.77/17.33
and(z0, T) → z0 65.77/17.33
and(F, z0) → F 65.77/17.33
and(z0, F) → F 65.77/17.33
imp(T, z0) → z0 65.77/17.33
imp(F, z0) → T 65.77/17.33
not(T) → F 65.77/17.33
not(F) → T 65.77/17.33
if(T, z0, z1) → z0 65.77/17.33
if(F, z0, z1) → z1 65.77/17.33
eq(T, T) → T 65.77/17.33
eq(F, F) → T 65.77/17.33
eq(T, F) → F 65.77/17.33
eq(F, T) → F 65.77/17.33
eqt(nil, undefined) → F 65.77/17.33
eqt(nil, pid(z0)) → F 65.77/17.33
eqt(nil, int(z0)) → F 65.77/17.33
eqt(nil, cons(z0, z1)) → F 65.77/17.33
eqt(nil, tuple(z0, z1)) → F 65.77/17.33
eqt(nil, tuplenil(z0)) → F 65.77/17.33
eqt(a, nil) → F 65.77/17.33
eqt(a, a) → T 65.77/17.33
eqt(a, excl) → F 65.77/17.33
eqt(a, false) → F 65.77/17.33
eqt(a, lock) → F 65.77/17.33
eqt(a, locker) → F 65.77/17.33
eqt(a, mcrlrecord) → F 65.77/17.33
eqt(a, ok) → F 65.77/17.33
eqt(a, pending) → F 65.77/17.33
eqt(a, release) → F 65.77/17.33
eqt(a, request) → F 65.77/17.33
eqt(a, resource) → F 65.77/17.33
eqt(a, tag) → F 65.77/17.33
eqt(a, true) → F 65.77/17.33
eqt(a, undefined) → F 65.77/17.33
eqt(a, pid(z0)) → F 65.77/17.33
eqt(a, int(z0)) → F 65.77/17.33
eqt(a, cons(z0, z1)) → F 65.77/17.33
eqt(a, tuple(z0, z1)) → F 65.77/17.33
eqt(a, tuplenil(z0)) → F 65.77/17.33
eqt(excl, nil) → F 65.77/17.33
eqt(excl, a) → F 65.77/17.33
eqt(excl, excl) → T 65.77/17.33
eqt(excl, false) → F 65.77/17.33
eqt(excl, lock) → F 65.77/17.33
eqt(excl, locker) → F 65.77/17.33
eqt(excl, mcrlrecord) → F 65.77/17.33
eqt(excl, ok) → F 65.77/17.33
eqt(excl, pending) → F 65.77/17.33
eqt(excl, release) → F 65.77/17.33
eqt(excl, request) → F 65.77/17.33
eqt(excl, resource) → F 65.77/17.33
eqt(excl, tag) → F 65.77/17.33
eqt(excl, true) → F 65.77/17.33
eqt(excl, undefined) → F 65.77/17.33
eqt(excl, pid(z0)) → F 65.77/17.33
eqt(excl, eqt(false, int(z0))) → F 65.77/17.33
eqt(false, cons(z0, z1)) → F 65.77/17.33
eqt(false, tuple(z0, z1)) → F 65.77/17.33
eqt(false, tuplenil(z0)) → F 65.77/17.33
eqt(lock, nil) → F 65.77/17.33
eqt(lock, a) → F 65.77/17.33
eqt(lock, excl) → F 65.77/17.33
eqt(lock, false) → F 65.77/17.33
eqt(lock, lock) → T 65.77/17.33
eqt(lock, locker) → F 65.77/17.33
eqt(lock, mcrlrecord) → F 65.77/17.33
eqt(lock, ok) → F 65.77/17.33
eqt(lock, pending) → F 65.77/17.33
eqt(lock, release) → F 65.77/17.33
eqt(lock, request) → F 65.77/17.33
eqt(lock, resource) → F 65.77/17.33
eqt(lock, tag) → F 65.77/17.33
eqt(lock, true) → F 65.77/17.33
eqt(lock, undefined) → F 65.77/17.33
eqt(lock, pid(z0)) → F 65.77/17.33
eqt(lock, int(z0)) → F 65.77/17.33
eqt(lock, cons(z0, z1)) → F 65.77/17.33
eqt(lock, tuple(z0, z1)) → F 65.77/17.33
eqt(lock, tuplenil(z0)) → F 65.77/17.33
eqt(locker, nil) → F 65.77/17.33
eqt(locker, a) → F 65.77/17.33
eqt(locker, excl) → F 65.77/17.33
eqt(locker, false) → F 65.77/17.33
eqt(locker, lock) → F 65.77/17.33
eqt(locker, locker) → T 65.77/17.33
eqt(locker, mcrlrecord) → F 65.77/17.33
eqt(locker, ok) → F 65.77/17.33
eqt(locker, pending) → F 65.77/17.33
eqt(locker, release) → F 65.77/17.33
eqt(locker, request) → F 65.77/17.33
eqt(locker, resource) → F 65.77/17.33
eqt(locker, tag) → F 65.77/17.33
eqt(locker, true) → F 65.77/17.33
eqt(locker, undefined) → F 65.77/17.33
eqt(locker, pid(z0)) → F 65.77/17.33
eqt(locker, int(z0)) → F 65.77/17.33
eqt(locker, cons(z0, z1)) → F 65.77/17.33
eqt(locker, tuple(z0, z1)) → F 65.77/17.33
eqt(locker, tuplenil(z0)) → F 65.77/17.33
eqt(mcrlrecord, nil) → F 65.77/17.33
eqt(mcrlrecord, a) → F 65.77/17.33
eqt(mcrlrecord, excl) → F 65.77/17.33
eqt(mcrlrecord, false) → F 65.77/17.33
eqt(mcrlrecord, lock) → F 65.77/17.33
eqt(mcrlrecord, locker) → F 65.77/17.33
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.33
eqt(mcrlrecord, ok) → F 65.77/17.33
eqt(mcrlrecord, pending) → F 65.77/17.33
eqt(mcrlrecord, release) → F 65.77/17.33
eqt(mcrlrecord, request) → F 65.77/17.33
eqt(mcrlrecord, resource) → F 65.77/17.33
eqt(ok, resource) → F 65.77/17.33
eqt(ok, tag) → F 65.77/17.33
eqt(ok, true) → F 65.77/17.33
eqt(ok, undefined) → F 65.77/17.33
eqt(ok, pid(z0)) → F 65.77/17.33
eqt(ok, int(z0)) → F 65.77/17.33
eqt(ok, cons(z0, z1)) → F 65.77/17.33
eqt(ok, tuple(z0, z1)) → F 65.77/17.33
eqt(ok, tuplenil(z0)) → F 65.77/17.33
eqt(pending, nil) → F 65.77/17.33
eqt(pending, a) → F 65.77/17.33
eqt(pending, excl) → F 65.77/17.33
eqt(pending, false) → F 65.77/17.33
eqt(pending, lock) → F 65.77/17.33
eqt(pending, locker) → F 65.77/17.33
eqt(pending, mcrlrecord) → F 65.77/17.33
eqt(pending, ok) → F 65.77/17.33
eqt(pending, pending) → T 65.77/17.33
eqt(pending, release) → F 65.77/17.33
eqt(pending, request) → F 65.77/17.33
eqt(pending, resource) → F 65.77/17.33
eqt(pending, tag) → F 65.77/17.33
eqt(pending, true) → F 65.77/17.33
eqt(pending, undefined) → F 65.77/17.33
eqt(pending, pid(z0)) → F 65.77/17.33
eqt(pending, int(z0)) → F 65.77/17.33
eqt(pending, cons(z0, z1)) → F 65.77/17.33
eqt(pending, tuple(z0, z1)) → F 65.77/17.33
eqt(pending, tuplenil(z0)) → F 65.77/17.33
eqt(release, nil) → F 65.77/17.33
eqt(release, a) → F 65.77/17.33
eqt(release, excl) → F 65.77/17.33
eqt(release, false) → F 65.77/17.33
eqt(release, lock) → F 65.77/17.33
eqt(release, locker) → F 65.77/17.33
eqt(release, mcrlrecord) → F 65.77/17.33
eqt(release, ok) → F 65.77/17.33
eqt(request, mcrlrecord) → F 65.77/17.33
eqt(request, ok) → F 65.77/17.33
eqt(request, pending) → F 65.77/17.33
eqt(request, release) → F 65.77/17.33
eqt(request, request) → T 65.77/17.33
eqt(request, resource) → F 65.77/17.33
eqt(request, tag) → F 65.77/17.33
eqt(request, true) → F 65.77/17.33
eqt(request, undefined) → F 65.77/17.33
eqt(request, pid(z0)) → F 65.77/17.33
eqt(request, int(z0)) → F 65.77/17.33
eqt(request, cons(z0, z1)) → F 65.77/17.33
eqt(request, tuple(z0, z1)) → F 65.77/17.33
eqt(request, tuplenil(z0)) → F 65.77/17.33
eqt(resource, nil) → F 65.77/17.33
eqt(resource, a) → F 65.77/17.33
eqt(resource, excl) → F 65.77/17.33
eqt(resource, false) → F 65.77/17.33
eqt(resource, lock) → F 65.77/17.33
eqt(resource, locker) → F 65.77/17.33
eqt(resource, mcrlrecord) → F 65.77/17.33
eqt(resource, ok) → F 65.77/17.33
eqt(resource, pending) → F 65.77/17.33
eqt(resource, release) → F 65.77/17.33
eqt(resource, request) → F 65.77/17.33
eqt(resource, resource) → T 65.77/17.33
eqt(resource, tag) → F 65.77/17.33
eqt(resource, true) → F 65.77/17.33
eqt(resource, undefined) → F 65.77/17.33
eqt(resource, pid(z0)) → F 65.77/17.33
eqt(resource, int(z0)) → F 65.77/17.33
eqt(resource, cons(z0, z1)) → F 65.77/17.33
eqt(resource, tuple(z0, z1)) → F 65.77/17.33
eqt(resource, tuplenil(z0)) → F 65.77/17.33
eqt(tag, nil) → F 65.77/17.33
eqt(tag, a) → F 65.77/17.33
eqt(tag, excl) → F 65.77/17.33
eqt(tag, false) → F 65.77/17.33
eqt(tag, lock) → F 65.77/17.33
eqt(tag, locker) → F 65.77/17.33
eqt(tag, mcrlrecord) → F 65.77/17.33
eqt(tag, ok) → F 65.77/17.33
eqt(tag, pending) → F 65.77/17.33
eqt(tag, release) → F 65.77/17.33
eqt(tag, request) → F 65.77/17.33
eqt(tag, resource) → F 65.77/17.33
eqt(tag, tag) → T 65.77/17.33
eqt(tag, true) → F 65.77/17.33
eqt(tag, undefined) → F 65.77/17.33
eqt(tag, pid(z0)) → F 65.77/17.33
eqt(tag, int(z0)) → F 65.77/17.33
eqt(tag, cons(z0, z1)) → F 65.77/17.33
eqt(tag, tuple(z0, z1)) → F 65.77/17.33
eqt(tag, tuplenil(z0)) → F 65.77/17.33
eqt(true, nil) → F 65.77/17.33
eqt(true, a) → F 65.77/17.33
eqt(true, excl) → F 65.77/17.33
eqt(true, false) → F 65.77/17.33
eqt(true, lock) → F 65.77/17.33
eqt(true, locker) → F 65.77/17.33
eqt(true, mcrlrecord) → F 65.77/17.33
eqt(true, ok) → F 65.77/17.33
eqt(true, pending) → F 65.77/17.33
eqt(true, release) → F 65.77/17.33
eqt(true, request) → F 65.77/17.33
eqt(true, resource) → F 65.77/17.33
eqt(true, tag) → F 65.77/17.33
eqt(true, true) → T 65.77/17.33
eqt(true, undefined) → F 65.77/17.33
eqt(true, pid(z0)) → F 65.77/17.33
eqt(true, int(z0)) → F 65.77/17.33
eqt(true, cons(z0, z1)) → F 65.77/17.33
eqt(true, tuple(z0, z1)) → F 65.77/17.33
eqt(true, tuplenil(z0)) → F 65.77/17.33
eqt(undefined, nil) → F 65.77/17.33
eqt(undefined, a) → F 65.77/17.33
eqt(undefined, tuplenil(z0)) → F 65.77/17.33
eqt(pid(z0), nil) → F 65.77/17.33
eqt(pid(z0), a) → F 65.77/17.33
eqt(pid(z0), excl) → F 65.77/17.33
eqt(pid(z0), false) → F 65.77/17.33
eqt(pid(z0), lock) → F 65.77/17.33
eqt(pid(z0), locker) → F 65.77/17.33
eqt(pid(z0), mcrlrecord) → F 65.77/17.33
eqt(pid(z0), ok) → F 65.77/17.33
eqt(pid(z0), pending) → F 65.77/17.33
eqt(pid(z0), release) → F 65.77/17.33
eqt(pid(z0), request) → F 65.77/17.33
eqt(pid(z0), resource) → F 65.77/17.33
eqt(pid(z0), tag) → F 65.77/17.33
eqt(pid(z0), true) → F 65.77/17.33
eqt(pid(z0), undefined) → F 65.77/17.33
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.33
eqt(pid(z0), int(z1)) → F 65.77/17.33
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.33
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.33
eqt(int(z0), nil) → F 65.77/17.33
eqt(int(z0), a) → F 65.77/17.33
eqt(int(z0), excl) → F 65.77/17.33
eqt(int(z0), false) → F 65.77/17.33
eqt(int(z0), lock) → F 65.77/17.33
eqt(int(z0), locker) → F 65.77/17.33
eqt(int(z0), mcrlrecord) → F 65.77/17.33
eqt(int(z0), ok) → F 65.77/17.33
eqt(int(z0), pending) → F 65.77/17.33
eqt(int(z0), release) → F 65.77/17.33
eqt(int(z0), request) → F 65.77/17.33
eqt(int(z0), resource) → F 65.77/17.33
eqt(int(z0), tag) → F 65.77/17.33
eqt(int(z0), true) → F 65.77/17.33
eqt(int(z0), undefined) → F 65.77/17.33
eqt(cons(z0, z1), resource) → F 65.77/17.33
eqt(cons(z0, z1), tag) → F 65.77/17.33
eqt(cons(z0, z1), true) → F 65.77/17.33
eqt(cons(z0, z1), undefined) → F 65.77/17.33
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.33
eqt(cons(z0, z1), int(z2)) → F 65.77/17.33
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.33
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), nil) → F 65.77/17.33
eqt(tuple(z0, z1), a) → F 65.77/17.33
eqt(tuple(z0, z1), excl) → F 65.77/17.33
eqt(tuple(z0, z1), false) → F 65.77/17.33
eqt(tuple(z0, z1), lock) → F 65.77/17.33
eqt(tuple(z0, z1), locker) → F 65.77/17.33
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.33
eqt(tuple(z0, z1), ok) → F 65.77/17.33
eqt(tuple(z0, z1), pending) → F 65.77/17.33
eqt(tuple(z0, z1), release) → F 65.77/17.33
eqt(tuple(z0, z1), request) → F 65.77/17.33
eqt(tuple(z0, z1), resource) → F 65.77/17.33
eqt(tuple(z0, z1), tag) → F 65.77/17.33
eqt(tuple(z0, z1), true) → F 65.77/17.33
eqt(tuple(z0, z1), undefined) → F 65.77/17.33
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.33
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.33
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.33
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.33
eqt(tuplenil(z0), nil) → F 65.77/17.33
eqt(tuplenil(z0), a) → F 65.77/17.33
eqt(tuplenil(z0), excl) → F 65.77/17.33
eqt(tuplenil(z0), false) → F 65.77/17.33
eqt(tuplenil(z0), lock) → F 65.77/17.33
eqt(tuplenil(z0), locker) → F 65.77/17.33
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.33
eqt(tuplenil(z0), ok) → F 65.77/17.33
eqt(tuplenil(z0), pending) → F 65.77/17.33
eqt(tuplenil(z0), release) → F 65.77/17.33
eqt(tuplenil(z0), request) → F 65.77/17.33
eqt(tuplenil(z0), resource) → F 65.77/17.33
eqt(tuplenil(z0), tag) → F 65.77/17.33
eqt(tuplenil(z0), true) → F 65.77/17.33
eqt(tuplenil(z0), undefined) → F 65.77/17.33
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.33
eqt(tuplenil(z0), int(z1)) → F 65.77/17.33
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.33
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.33
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.33
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.33
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.33
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.33
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.33
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.33
record_updates(z0, z1, nil) → z0 65.77/17.33
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.33
locker2_map_promote_pending(nil, z0) → nil 65.77/17.33
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.33
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.33
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.33
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.33
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.33
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.33
case0(z0, z1, z2) → z1 65.77/17.33
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.33
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.33
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.33
case1(z0, z1, z2, false) → z2 65.77/17.33
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.33
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.33
case4(z0, z1, z2) → false 65.77/17.33
locker2_obtainables(nil, z0) → true 65.77/17.33
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.33
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.33
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.33
locker2_check_available(z0, nil) → false 65.77/17.33
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.33
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.33
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.33
locker2_check_availables(nil, z0) → true 65.77/17.33
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.33
locker2_adduniq(nil, z0) → z0 65.77/17.33
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.33
subtract(z0, nil) → z0 65.77/17.33
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.33
delete(z0, nil) → nil 65.77/17.33
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.33
case8(z0, z1, z2, true) → z0 65.77/17.33
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.33
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.33
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.33
member(z0, nil) → false 65.77/17.33
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.33
case9(z0, z1, z2, true) → true 65.77/17.33
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.33
eqs(empty, empty) → T 65.77/17.33
eqs(empty, stack(z0, z1)) → F 65.77/17.33
eqs(stack(z0, z1), empty) → F 65.77/17.33
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.33
pushs(z0, z1) → stack(z0, z1) 65.77/17.33
pops(stack(z0, z1)) → z1 65.77/17.33
tops(stack(z0, z1)) → z0 65.77/17.33
istops(z0, empty) → F 65.77/17.33
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.33
eqc(nocalls, nocalls) → T 65.77/17.33
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.33
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.33
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.33
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.33
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.33
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.33
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.33
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.33
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.33
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.33
DELETE(z0, cons(z1, z2)) → c352 65.77/17.33
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.33
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.33
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.33
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.33
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.33
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.33
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.33
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.33
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.33
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.33
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.33
CASE2(z0, z1, true) → c335 65.77/17.33
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.33
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.34
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.34
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.34
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.34
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.34
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.34
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.34
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.34
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.34
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.34
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.34
DELETE(z0, cons(z1, z2)) → c352
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.34
65.77/17.34

(19) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.34
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.34
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.34
member(z0, nil) → false 65.77/17.34
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.34
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.34
subtract(z0, nil) → z0 65.77/17.34
delete(z0, nil) → nil 65.77/17.34
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.34
eqt(nil, undefined) → F 65.77/17.34
eqt(nil, pid(z0)) → F 65.77/17.34
eqt(nil, int(z0)) → F 65.77/17.34
eqt(nil, cons(z0, z1)) → F 65.77/17.34
eqt(nil, tuple(z0, z1)) → F 65.77/17.34
eqt(nil, tuplenil(z0)) → F 65.77/17.34
eqt(a, nil) → F 65.77/17.34
eqt(a, a) → T 65.77/17.34
eqt(a, excl) → F 65.77/17.34
eqt(a, false) → F 65.77/17.34
eqt(a, lock) → F 65.77/17.34
eqt(a, locker) → F 65.77/17.34
eqt(a, mcrlrecord) → F 65.77/17.34
eqt(a, ok) → F 65.77/17.34
eqt(a, pending) → F 65.77/17.34
eqt(a, release) → F 65.77/17.34
eqt(a, request) → F 65.77/17.34
eqt(a, resource) → F 65.77/17.34
eqt(a, tag) → F 65.77/17.34
eqt(a, true) → F 65.77/17.34
eqt(a, undefined) → F 65.77/17.34
eqt(a, pid(z0)) → F 65.77/17.34
eqt(a, int(z0)) → F 65.77/17.34
eqt(a, cons(z0, z1)) → F 65.77/17.34
eqt(a, tuple(z0, z1)) → F 65.77/17.34
eqt(a, tuplenil(z0)) → F 65.77/17.34
eqt(excl, nil) → F 65.77/17.34
eqt(excl, a) → F 65.77/17.34
eqt(excl, excl) → T 65.77/17.34
eqt(excl, false) → F 65.77/17.34
eqt(excl, lock) → F 65.77/17.34
eqt(excl, locker) → F 65.77/17.34
eqt(excl, mcrlrecord) → F 65.77/17.34
eqt(excl, ok) → F 65.77/17.34
eqt(excl, pending) → F 65.77/17.34
eqt(excl, release) → F 65.77/17.34
eqt(excl, request) → F 65.77/17.34
eqt(excl, resource) → F 65.77/17.34
eqt(excl, tag) → F 65.77/17.34
eqt(excl, true) → F 65.77/17.34
eqt(excl, undefined) → F 65.77/17.34
eqt(excl, pid(z0)) → F 65.77/17.34
eqt(excl, eqt(false, int(z0))) → F 65.77/17.34
eqt(false, cons(z0, z1)) → F 65.77/17.34
eqt(false, tuple(z0, z1)) → F 65.77/17.34
eqt(false, tuplenil(z0)) → F 65.77/17.34
eqt(lock, nil) → F 65.77/17.34
eqt(lock, a) → F 65.77/17.34
eqt(lock, excl) → F 65.77/17.34
eqt(lock, false) → F 65.77/17.34
eqt(lock, lock) → T 65.77/17.34
eqt(lock, locker) → F 65.77/17.34
eqt(lock, mcrlrecord) → F 65.77/17.34
eqt(lock, ok) → F 65.77/17.34
eqt(lock, pending) → F 65.77/17.34
eqt(lock, release) → F 65.77/17.34
eqt(lock, request) → F 65.77/17.34
eqt(lock, resource) → F 65.77/17.34
eqt(lock, tag) → F 65.77/17.34
eqt(lock, true) → F 65.77/17.34
eqt(lock, undefined) → F 65.77/17.34
eqt(lock, pid(z0)) → F 65.77/17.34
eqt(lock, int(z0)) → F 65.77/17.34
eqt(lock, cons(z0, z1)) → F 65.77/17.34
eqt(lock, tuple(z0, z1)) → F 65.77/17.34
eqt(lock, tuplenil(z0)) → F 65.77/17.34
eqt(locker, nil) → F 65.77/17.34
eqt(locker, a) → F 65.77/17.34
eqt(locker, excl) → F 65.77/17.34
eqt(locker, false) → F 65.77/17.34
eqt(locker, lock) → F 65.77/17.34
eqt(locker, locker) → T 65.77/17.34
eqt(locker, mcrlrecord) → F 65.77/17.34
eqt(locker, ok) → F 65.77/17.34
eqt(locker, pending) → F 65.77/17.34
eqt(locker, release) → F 65.77/17.34
eqt(locker, request) → F 65.77/17.34
eqt(locker, resource) → F 65.77/17.34
eqt(locker, tag) → F 65.77/17.34
eqt(locker, true) → F 65.77/17.34
eqt(locker, undefined) → F 65.77/17.34
eqt(locker, pid(z0)) → F 65.77/17.34
eqt(locker, int(z0)) → F 65.77/17.34
eqt(locker, cons(z0, z1)) → F 65.77/17.34
eqt(locker, tuple(z0, z1)) → F 65.77/17.34
eqt(locker, tuplenil(z0)) → F 65.77/17.34
eqt(mcrlrecord, nil) → F 65.77/17.34
eqt(mcrlrecord, a) → F 65.77/17.34
eqt(mcrlrecord, excl) → F 65.77/17.34
eqt(mcrlrecord, false) → F 65.77/17.34
eqt(mcrlrecord, lock) → F 65.77/17.34
eqt(mcrlrecord, locker) → F 65.77/17.34
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.34
eqt(mcrlrecord, ok) → F 65.77/17.34
eqt(mcrlrecord, pending) → F 65.77/17.34
eqt(mcrlrecord, release) → F 65.77/17.34
eqt(mcrlrecord, request) → F 65.77/17.34
eqt(mcrlrecord, resource) → F 65.77/17.34
eqt(ok, resource) → F 65.77/17.34
eqt(ok, tag) → F 65.77/17.34
eqt(ok, true) → F 65.77/17.34
eqt(ok, undefined) → F 65.77/17.34
eqt(ok, pid(z0)) → F 65.77/17.34
eqt(ok, int(z0)) → F 65.77/17.34
eqt(ok, cons(z0, z1)) → F 65.77/17.34
eqt(ok, tuple(z0, z1)) → F 65.77/17.34
eqt(ok, tuplenil(z0)) → F 65.77/17.34
eqt(pending, nil) → F 65.77/17.34
eqt(pending, a) → F 65.77/17.34
eqt(pending, excl) → F 65.77/17.34
eqt(pending, false) → F 65.77/17.34
eqt(pending, lock) → F 65.77/17.34
eqt(pending, locker) → F 65.77/17.34
eqt(pending, mcrlrecord) → F 65.77/17.34
eqt(pending, ok) → F 65.77/17.34
eqt(pending, pending) → T 65.77/17.34
eqt(pending, release) → F 65.77/17.34
eqt(pending, request) → F 65.77/17.34
eqt(pending, resource) → F 65.77/17.34
eqt(pending, tag) → F 65.77/17.34
eqt(pending, true) → F 65.77/17.34
eqt(pending, undefined) → F 65.77/17.34
eqt(pending, pid(z0)) → F 65.77/17.34
eqt(pending, int(z0)) → F 65.77/17.34
eqt(pending, cons(z0, z1)) → F 65.77/17.34
eqt(pending, tuple(z0, z1)) → F 65.77/17.34
eqt(pending, tuplenil(z0)) → F 65.77/17.34
eqt(release, nil) → F 65.77/17.34
eqt(release, a) → F 65.77/17.34
eqt(release, excl) → F 65.77/17.34
eqt(release, false) → F 65.77/17.34
eqt(release, lock) → F 65.77/17.34
eqt(release, locker) → F 65.77/17.34
eqt(release, mcrlrecord) → F 65.77/17.34
eqt(release, ok) → F 65.77/17.34
eqt(request, mcrlrecord) → F 65.77/17.34
eqt(request, ok) → F 65.77/17.34
eqt(request, pending) → F 65.77/17.34
eqt(request, release) → F 65.77/17.34
eqt(request, request) → T 65.77/17.34
eqt(request, resource) → F 65.77/17.34
eqt(request, tag) → F 65.77/17.34
eqt(request, true) → F 65.77/17.34
eqt(request, undefined) → F 65.77/17.34
eqt(request, pid(z0)) → F 65.77/17.34
eqt(request, int(z0)) → F 65.77/17.34
eqt(request, cons(z0, z1)) → F 65.77/17.34
eqt(request, tuple(z0, z1)) → F 65.77/17.34
eqt(request, tuplenil(z0)) → F 65.77/17.34
eqt(resource, nil) → F 65.77/17.34
eqt(resource, a) → F 65.77/17.34
eqt(resource, excl) → F 65.77/17.34
eqt(resource, false) → F 65.77/17.34
eqt(resource, lock) → F 65.77/17.34
eqt(resource, locker) → F 65.77/17.34
eqt(resource, mcrlrecord) → F 65.77/17.34
eqt(resource, ok) → F 65.77/17.34
eqt(resource, pending) → F 65.77/17.34
eqt(resource, release) → F 65.77/17.34
eqt(resource, request) → F 65.77/17.34
eqt(resource, resource) → T 65.77/17.34
eqt(resource, tag) → F 65.77/17.34
eqt(resource, true) → F 65.77/17.34
eqt(resource, undefined) → F 65.77/17.34
eqt(resource, pid(z0)) → F 65.77/17.34
eqt(resource, int(z0)) → F 65.77/17.34
eqt(resource, cons(z0, z1)) → F 65.77/17.34
eqt(resource, tuple(z0, z1)) → F 65.77/17.34
eqt(resource, tuplenil(z0)) → F 65.77/17.34
eqt(tag, nil) → F 65.77/17.34
eqt(tag, a) → F 65.77/17.34
eqt(tag, excl) → F 65.77/17.34
eqt(tag, false) → F 65.77/17.34
eqt(tag, lock) → F 65.77/17.34
eqt(tag, locker) → F 65.77/17.34
eqt(tag, mcrlrecord) → F 65.77/17.34
eqt(tag, ok) → F 65.77/17.34
eqt(tag, pending) → F 65.77/17.34
eqt(tag, release) → F 65.77/17.34
eqt(tag, request) → F 65.77/17.34
eqt(tag, resource) → F 65.77/17.34
eqt(tag, tag) → T 65.77/17.34
eqt(tag, true) → F 65.77/17.34
eqt(tag, undefined) → F 65.77/17.34
eqt(tag, pid(z0)) → F 65.77/17.34
eqt(tag, int(z0)) → F 65.77/17.34
eqt(tag, cons(z0, z1)) → F 65.77/17.34
eqt(tag, tuple(z0, z1)) → F 65.77/17.34
eqt(tag, tuplenil(z0)) → F 65.77/17.34
eqt(true, nil) → F 65.77/17.34
eqt(true, a) → F 65.77/17.34
eqt(true, excl) → F 65.77/17.34
eqt(true, false) → F 65.77/17.34
eqt(true, lock) → F 65.77/17.34
eqt(true, locker) → F 65.77/17.34
eqt(true, mcrlrecord) → F 65.77/17.34
eqt(true, ok) → F 65.77/17.34
eqt(true, pending) → F 65.77/17.34
eqt(true, release) → F 65.77/17.34
eqt(true, request) → F 65.77/17.34
eqt(true, resource) → F 65.77/17.34
eqt(true, tag) → F 65.77/17.34
eqt(true, true) → T 65.77/17.34
eqt(true, undefined) → F 65.77/17.34
eqt(true, pid(z0)) → F 65.77/17.34
eqt(true, int(z0)) → F 65.77/17.34
eqt(true, cons(z0, z1)) → F 65.77/17.34
eqt(true, tuple(z0, z1)) → F 65.77/17.34
eqt(true, tuplenil(z0)) → F 65.77/17.34
eqt(undefined, nil) → F 65.77/17.34
eqt(undefined, a) → F 65.77/17.34
eqt(undefined, tuplenil(z0)) → F 65.77/17.34
eqt(pid(z0), nil) → F 65.77/17.34
eqt(pid(z0), a) → F 65.77/17.34
eqt(pid(z0), excl) → F 65.77/17.34
eqt(pid(z0), false) → F 65.77/17.34
eqt(pid(z0), lock) → F 65.77/17.34
eqt(pid(z0), locker) → F 65.77/17.34
eqt(pid(z0), mcrlrecord) → F 65.77/17.34
eqt(pid(z0), ok) → F 65.77/17.34
eqt(pid(z0), pending) → F 65.77/17.34
eqt(pid(z0), release) → F 65.77/17.34
eqt(pid(z0), request) → F 65.77/17.34
eqt(pid(z0), resource) → F 65.77/17.34
eqt(pid(z0), tag) → F 65.77/17.34
eqt(pid(z0), true) → F 65.77/17.34
eqt(pid(z0), undefined) → F 65.77/17.34
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.34
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.34
eqt(pid(z0), int(z1)) → F 65.77/17.34
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.34
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.34
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.34
eqt(int(z0), nil) → F 65.77/17.34
eqt(int(z0), a) → F 65.77/17.34
eqt(int(z0), excl) → F 65.77/17.34
eqt(int(z0), false) → F 65.77/17.34
eqt(int(z0), lock) → F 65.77/17.34
eqt(int(z0), locker) → F 65.77/17.34
eqt(int(z0), mcrlrecord) → F 65.77/17.34
eqt(int(z0), ok) → F 65.77/17.34
eqt(int(z0), pending) → F 65.77/17.34
eqt(int(z0), release) → F 65.77/17.34
eqt(int(z0), request) → F 65.77/17.34
eqt(int(z0), resource) → F 65.77/17.34
eqt(int(z0), tag) → F 65.77/17.34
eqt(int(z0), true) → F 65.77/17.34
eqt(int(z0), undefined) → F 65.77/17.34
eqt(cons(z0, z1), resource) → F 65.77/17.34
eqt(cons(z0, z1), tag) → F 65.77/17.34
eqt(cons(z0, z1), true) → F 65.77/17.34
eqt(cons(z0, z1), undefined) → F 65.77/17.34
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.34
eqt(cons(z0, z1), int(z2)) → F 65.77/17.34
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.34
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.34
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), nil) → F 65.77/17.34
eqt(tuple(z0, z1), a) → F 65.77/17.34
eqt(tuple(z0, z1), excl) → F 65.77/17.34
eqt(tuple(z0, z1), false) → F 65.77/17.34
eqt(tuple(z0, z1), lock) → F 65.77/17.34
eqt(tuple(z0, z1), locker) → F 65.77/17.34
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.34
eqt(tuple(z0, z1), ok) → F 65.77/17.34
eqt(tuple(z0, z1), pending) → F 65.77/17.34
eqt(tuple(z0, z1), release) → F 65.77/17.34
eqt(tuple(z0, z1), request) → F 65.77/17.34
eqt(tuple(z0, z1), resource) → F 65.77/17.34
eqt(tuple(z0, z1), tag) → F 65.77/17.34
eqt(tuple(z0, z1), true) → F 65.77/17.34
eqt(tuple(z0, z1), undefined) → F 65.77/17.34
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.34
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.34
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.34
eqt(tuplenil(z0), nil) → F 65.77/17.34
eqt(tuplenil(z0), a) → F 65.77/17.34
eqt(tuplenil(z0), excl) → F 65.77/17.34
eqt(tuplenil(z0), false) → F 65.77/17.34
eqt(tuplenil(z0), lock) → F 65.77/17.34
eqt(tuplenil(z0), locker) → F 65.77/17.34
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.34
eqt(tuplenil(z0), ok) → F 65.77/17.34
eqt(tuplenil(z0), pending) → F 65.77/17.34
eqt(tuplenil(z0), release) → F 65.77/17.34
eqt(tuplenil(z0), request) → F 65.77/17.34
eqt(tuplenil(z0), resource) → F 65.77/17.34
eqt(tuplenil(z0), tag) → F 65.77/17.34
eqt(tuplenil(z0), true) → F 65.77/17.34
eqt(tuplenil(z0), undefined) → F 65.77/17.34
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.34
eqt(tuplenil(z0), int(z1)) → F 65.77/17.34
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.34
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.34
and(T, z0) → z0 65.77/17.34
and(z0, T) → z0 65.77/17.34
and(F, z0) → F 65.77/17.34
and(z0, F) → F 65.77/17.34
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.34
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.34
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.34
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.34
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.34
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.34
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.34
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.34
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.34
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.34
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.34
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.34
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.34
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.34
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.34
CASE2(z0, z1, true) → c335 65.77/17.34
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.34
DELETE(z0, cons(z1, z2)) → c352 65.77/17.34
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.34
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.34
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.34
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.34
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.34

POL(APPEND(x1, x2)) = [5]x1    65.77/17.34
POL(CASE1(x1, x2, x3, x4)) = [3]x1 + [4]x2 + x3    65.77/17.34
POL(CASE2(x1, x2, x3)) = [3]x1 + [3]x2    65.77/17.34
POL(DELETE(x1, x2)) = 0    65.77/17.34
POL(ELEMENT(x1, x2)) = [5]x2    65.77/17.34
POL(EQC(x1, x2)) = [4]x1    65.77/17.34
POL(EQS(x1, x2)) = [1] + [4]x1    65.77/17.34
POL(EQT(x1, x2)) = [4] + [4]x1    65.77/17.34
POL(F) = [3]    65.77/17.34
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [3] + [5]x1 + [5]x2 + [3]x3    65.77/17.34
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.34
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = 0    65.77/17.34
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.34
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    65.77/17.34
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [4] + [3]x1    65.77/17.34
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [2] + [3]x1 + [5]x2    65.77/17.34
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [5]x2    65.77/17.34
POL(MEMBER(x1, x2)) = 0    65.77/17.34
POL(PUSH(x1, x2, x3)) = [2] + [5]x1 + [3]x2 + [2]x3    65.77/17.34
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [4] + [4]x1 + [3]x2 + x3 + [2]x4 + [2]x5    65.77/17.34
POL(RECORD_UPDATES(x1, x2, x3)) = x2    65.77/17.34
POL(SUBTRACT(x1, x2)) = 0    65.77/17.34
POL(T) = [3]    65.77/17.34
POL(a) = [3]    65.77/17.34
POL(and(x1, x2)) = [3]    65.77/17.34
POL(append(x1, x2)) = 0    65.77/17.34
POL(c(x1)) = x1    65.77/17.34
POL(c245(x1)) = x1    65.77/17.34
POL(c271(x1, x2)) = x1 + x2    65.77/17.34
POL(c292(x1, x2)) = x1 + x2    65.77/17.34
POL(c313(x1)) = x1    65.77/17.34
POL(c316(x1)) = x1    65.77/17.34
POL(c321(x1)) = x1    65.77/17.34
POL(c323(x1, x2)) = x1 + x2    65.77/17.34
POL(c325(x1)) = x1    65.77/17.34
POL(c327) = 0    65.77/17.34
POL(c332(x1)) = x1    65.77/17.34
POL(c334(x1)) = x1    65.77/17.34
POL(c335) = 0    65.77/17.34
POL(c342) = 0    65.77/17.34
POL(c346(x1, x2)) = x1 + x2    65.77/17.34
POL(c348(x1)) = x1    65.77/17.34
POL(c350(x1, x2)) = x1 + x2    65.77/17.34
POL(c352) = 0    65.77/17.34
POL(c358) = 0    65.77/17.34
POL(c364(x1, x2)) = x1 + x2    65.77/17.34
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.34
POL(c376) = 0    65.77/17.34
POL(calls(x1, x2, x3)) = [4] + x1 + x2 + x3    65.77/17.34
POL(case8(x1, x2, x3, x4)) = [4] + [3]x1 + [2]x2 + [4]x4    65.77/17.34
POL(case9(x1, x2, x3, x4)) = [4] + [2]x2 + [4]x4    65.77/17.34
POL(cons(x1, x2)) = [4] + x1 + x2    65.77/17.34
POL(delete(x1, x2)) = [2] + [2]x1 + [4]x2    65.77/17.34
POL(eqt(x1, x2)) = 0    65.77/17.34
POL(equal(x1, x2)) = [2]    65.77/17.34
POL(excl) = 0    65.77/17.34
POL(false) = [1]    65.77/17.34
POL(gen_modtageq(x1, x2)) = 0    65.77/17.34
POL(int(x1)) = [3]    65.77/17.34
POL(lock) = 0    65.77/17.34
POL(locker) = [3]    65.77/17.34
POL(mcrlrecord) = [4]    65.77/17.34
POL(member(x1, x2)) = [2] + [2]x1 + [4]x2    65.77/17.34
POL(nil) = 0    65.77/17.34
POL(ok) = [3]    65.77/17.34
POL(pending) = 0    65.77/17.34
POL(pid(x1)) = x1    65.77/17.34
POL(record_extract(x1, x2, x3)) = [4] + [4]x1 + [2]x3    65.77/17.34
POL(record_update(x1, x2, x3, x4)) = 0    65.77/17.34
POL(release) = [3]    65.77/17.34
POL(request) = [3]    65.77/17.34
POL(resource) = [4]    65.77/17.34
POL(s(x1)) = 0    65.77/17.34
POL(stack(x1, x2)) = [4] + x1 + x2    65.77/17.34
POL(subtract(x1, x2)) = 0    65.77/17.34
POL(tag) = [3]    65.77/17.34
POL(true) = 0    65.77/17.34
POL(tuple(x1, x2)) = [2] + x1 + x2    65.77/17.34
POL(tuplenil(x1)) = [4] + x1    65.77/17.34
POL(undefined) = [3]   
65.77/17.34
65.77/17.34

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.34
or(F, T) → T 65.77/17.34
or(T, F) → T 65.77/17.34
or(F, F) → F 65.77/17.34
and(T, z0) → z0 65.77/17.34
and(z0, T) → z0 65.77/17.34
and(F, z0) → F 65.77/17.34
and(z0, F) → F 65.77/17.34
imp(T, z0) → z0 65.77/17.34
imp(F, z0) → T 65.77/17.34
not(T) → F 65.77/17.34
not(F) → T 65.77/17.34
if(T, z0, z1) → z0 65.77/17.34
if(F, z0, z1) → z1 65.77/17.34
eq(T, T) → T 65.77/17.34
eq(F, F) → T 65.77/17.34
eq(T, F) → F 65.77/17.34
eq(F, T) → F 65.77/17.34
eqt(nil, undefined) → F 65.77/17.34
eqt(nil, pid(z0)) → F 65.77/17.34
eqt(nil, int(z0)) → F 65.77/17.34
eqt(nil, cons(z0, z1)) → F 65.77/17.34
eqt(nil, tuple(z0, z1)) → F 65.77/17.34
eqt(nil, tuplenil(z0)) → F 65.77/17.34
eqt(a, nil) → F 65.77/17.34
eqt(a, a) → T 65.77/17.34
eqt(a, excl) → F 65.77/17.34
eqt(a, false) → F 65.77/17.34
eqt(a, lock) → F 65.77/17.34
eqt(a, locker) → F 65.77/17.34
eqt(a, mcrlrecord) → F 65.77/17.34
eqt(a, ok) → F 65.77/17.34
eqt(a, pending) → F 65.77/17.34
eqt(a, release) → F 65.77/17.34
eqt(a, request) → F 65.77/17.34
eqt(a, resource) → F 65.77/17.34
eqt(a, tag) → F 65.77/17.34
eqt(a, true) → F 65.77/17.34
eqt(a, undefined) → F 65.77/17.34
eqt(a, pid(z0)) → F 65.77/17.34
eqt(a, int(z0)) → F 65.77/17.34
eqt(a, cons(z0, z1)) → F 65.77/17.34
eqt(a, tuple(z0, z1)) → F 65.77/17.34
eqt(a, tuplenil(z0)) → F 65.77/17.34
eqt(excl, nil) → F 65.77/17.34
eqt(excl, a) → F 65.77/17.34
eqt(excl, excl) → T 65.77/17.34
eqt(excl, false) → F 65.77/17.34
eqt(excl, lock) → F 65.77/17.34
eqt(excl, locker) → F 65.77/17.34
eqt(excl, mcrlrecord) → F 65.77/17.34
eqt(excl, ok) → F 65.77/17.34
eqt(excl, pending) → F 65.77/17.34
eqt(excl, release) → F 65.77/17.34
eqt(excl, request) → F 65.77/17.34
eqt(excl, resource) → F 65.77/17.34
eqt(excl, tag) → F 65.77/17.34
eqt(excl, true) → F 65.77/17.34
eqt(excl, undefined) → F 65.77/17.34
eqt(excl, pid(z0)) → F 65.77/17.34
eqt(excl, eqt(false, int(z0))) → F 65.77/17.34
eqt(false, cons(z0, z1)) → F 65.77/17.34
eqt(false, tuple(z0, z1)) → F 65.77/17.34
eqt(false, tuplenil(z0)) → F 65.77/17.34
eqt(lock, nil) → F 65.77/17.34
eqt(lock, a) → F 65.77/17.34
eqt(lock, excl) → F 65.77/17.34
eqt(lock, false) → F 65.77/17.34
eqt(lock, lock) → T 65.77/17.34
eqt(lock, locker) → F 65.77/17.34
eqt(lock, mcrlrecord) → F 65.77/17.34
eqt(lock, ok) → F 65.77/17.34
eqt(lock, pending) → F 65.77/17.34
eqt(lock, release) → F 65.77/17.34
eqt(lock, request) → F 65.77/17.34
eqt(lock, resource) → F 65.77/17.34
eqt(lock, tag) → F 65.77/17.34
eqt(lock, true) → F 65.77/17.34
eqt(lock, undefined) → F 65.77/17.34
eqt(lock, pid(z0)) → F 65.77/17.34
eqt(lock, int(z0)) → F 65.77/17.34
eqt(lock, cons(z0, z1)) → F 65.77/17.34
eqt(lock, tuple(z0, z1)) → F 65.77/17.34
eqt(lock, tuplenil(z0)) → F 65.77/17.34
eqt(locker, nil) → F 65.77/17.34
eqt(locker, a) → F 65.77/17.34
eqt(locker, excl) → F 65.77/17.34
eqt(locker, false) → F 65.77/17.34
eqt(locker, lock) → F 65.77/17.34
eqt(locker, locker) → T 65.77/17.34
eqt(locker, mcrlrecord) → F 65.77/17.34
eqt(locker, ok) → F 65.77/17.34
eqt(locker, pending) → F 65.77/17.34
eqt(locker, release) → F 65.77/17.34
eqt(locker, request) → F 65.77/17.34
eqt(locker, resource) → F 65.77/17.34
eqt(locker, tag) → F 65.77/17.34
eqt(locker, true) → F 65.77/17.34
eqt(locker, undefined) → F 65.77/17.34
eqt(locker, pid(z0)) → F 65.77/17.34
eqt(locker, int(z0)) → F 65.77/17.34
eqt(locker, cons(z0, z1)) → F 65.77/17.34
eqt(locker, tuple(z0, z1)) → F 65.77/17.34
eqt(locker, tuplenil(z0)) → F 65.77/17.34
eqt(mcrlrecord, nil) → F 65.77/17.34
eqt(mcrlrecord, a) → F 65.77/17.34
eqt(mcrlrecord, excl) → F 65.77/17.34
eqt(mcrlrecord, false) → F 65.77/17.34
eqt(mcrlrecord, lock) → F 65.77/17.34
eqt(mcrlrecord, locker) → F 65.77/17.34
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.34
eqt(mcrlrecord, ok) → F 65.77/17.34
eqt(mcrlrecord, pending) → F 65.77/17.34
eqt(mcrlrecord, release) → F 65.77/17.34
eqt(mcrlrecord, request) → F 65.77/17.34
eqt(mcrlrecord, resource) → F 65.77/17.34
eqt(ok, resource) → F 65.77/17.34
eqt(ok, tag) → F 65.77/17.34
eqt(ok, true) → F 65.77/17.34
eqt(ok, undefined) → F 65.77/17.34
eqt(ok, pid(z0)) → F 65.77/17.34
eqt(ok, int(z0)) → F 65.77/17.34
eqt(ok, cons(z0, z1)) → F 65.77/17.34
eqt(ok, tuple(z0, z1)) → F 65.77/17.34
eqt(ok, tuplenil(z0)) → F 65.77/17.34
eqt(pending, nil) → F 65.77/17.34
eqt(pending, a) → F 65.77/17.34
eqt(pending, excl) → F 65.77/17.34
eqt(pending, false) → F 65.77/17.34
eqt(pending, lock) → F 65.77/17.34
eqt(pending, locker) → F 65.77/17.34
eqt(pending, mcrlrecord) → F 65.77/17.34
eqt(pending, ok) → F 65.77/17.34
eqt(pending, pending) → T 65.77/17.34
eqt(pending, release) → F 65.77/17.34
eqt(pending, request) → F 65.77/17.34
eqt(pending, resource) → F 65.77/17.34
eqt(pending, tag) → F 65.77/17.34
eqt(pending, true) → F 65.77/17.34
eqt(pending, undefined) → F 65.77/17.34
eqt(pending, pid(z0)) → F 65.77/17.34
eqt(pending, int(z0)) → F 65.77/17.34
eqt(pending, cons(z0, z1)) → F 65.77/17.34
eqt(pending, tuple(z0, z1)) → F 65.77/17.34
eqt(pending, tuplenil(z0)) → F 65.77/17.34
eqt(release, nil) → F 65.77/17.34
eqt(release, a) → F 65.77/17.34
eqt(release, excl) → F 65.77/17.34
eqt(release, false) → F 65.77/17.34
eqt(release, lock) → F 65.77/17.34
eqt(release, locker) → F 65.77/17.34
eqt(release, mcrlrecord) → F 65.77/17.34
eqt(release, ok) → F 65.77/17.34
eqt(request, mcrlrecord) → F 65.77/17.34
eqt(request, ok) → F 65.77/17.34
eqt(request, pending) → F 65.77/17.34
eqt(request, release) → F 65.77/17.34
eqt(request, request) → T 65.77/17.34
eqt(request, resource) → F 65.77/17.34
eqt(request, tag) → F 65.77/17.34
eqt(request, true) → F 65.77/17.34
eqt(request, undefined) → F 65.77/17.34
eqt(request, pid(z0)) → F 65.77/17.34
eqt(request, int(z0)) → F 65.77/17.34
eqt(request, cons(z0, z1)) → F 65.77/17.34
eqt(request, tuple(z0, z1)) → F 65.77/17.34
eqt(request, tuplenil(z0)) → F 65.77/17.34
eqt(resource, nil) → F 65.77/17.34
eqt(resource, a) → F 65.77/17.34
eqt(resource, excl) → F 65.77/17.34
eqt(resource, false) → F 65.77/17.34
eqt(resource, lock) → F 65.77/17.34
eqt(resource, locker) → F 65.77/17.34
eqt(resource, mcrlrecord) → F 65.77/17.34
eqt(resource, ok) → F 65.77/17.34
eqt(resource, pending) → F 65.77/17.34
eqt(resource, release) → F 65.77/17.34
eqt(resource, request) → F 65.77/17.34
eqt(resource, resource) → T 65.77/17.34
eqt(resource, tag) → F 65.77/17.34
eqt(resource, true) → F 65.77/17.34
eqt(resource, undefined) → F 65.77/17.34
eqt(resource, pid(z0)) → F 65.77/17.34
eqt(resource, int(z0)) → F 65.77/17.34
eqt(resource, cons(z0, z1)) → F 65.77/17.34
eqt(resource, tuple(z0, z1)) → F 65.77/17.34
eqt(resource, tuplenil(z0)) → F 65.77/17.34
eqt(tag, nil) → F 65.77/17.34
eqt(tag, a) → F 65.77/17.34
eqt(tag, excl) → F 65.77/17.34
eqt(tag, false) → F 65.77/17.34
eqt(tag, lock) → F 65.77/17.34
eqt(tag, locker) → F 65.77/17.34
eqt(tag, mcrlrecord) → F 65.77/17.34
eqt(tag, ok) → F 65.77/17.34
eqt(tag, pending) → F 65.77/17.34
eqt(tag, release) → F 65.77/17.34
eqt(tag, request) → F 65.77/17.34
eqt(tag, resource) → F 65.77/17.34
eqt(tag, tag) → T 65.77/17.34
eqt(tag, true) → F 65.77/17.34
eqt(tag, undefined) → F 65.77/17.34
eqt(tag, pid(z0)) → F 65.77/17.34
eqt(tag, int(z0)) → F 65.77/17.34
eqt(tag, cons(z0, z1)) → F 65.77/17.34
eqt(tag, tuple(z0, z1)) → F 65.77/17.34
eqt(tag, tuplenil(z0)) → F 65.77/17.34
eqt(true, nil) → F 65.77/17.34
eqt(true, a) → F 65.77/17.34
eqt(true, excl) → F 65.77/17.34
eqt(true, false) → F 65.77/17.34
eqt(true, lock) → F 65.77/17.34
eqt(true, locker) → F 65.77/17.34
eqt(true, mcrlrecord) → F 65.77/17.34
eqt(true, ok) → F 65.77/17.34
eqt(true, pending) → F 65.77/17.34
eqt(true, release) → F 65.77/17.34
eqt(true, request) → F 65.77/17.34
eqt(true, resource) → F 65.77/17.34
eqt(true, tag) → F 65.77/17.34
eqt(true, true) → T 65.77/17.34
eqt(true, undefined) → F 65.77/17.34
eqt(true, pid(z0)) → F 65.77/17.34
eqt(true, int(z0)) → F 65.77/17.34
eqt(true, cons(z0, z1)) → F 65.77/17.34
eqt(true, tuple(z0, z1)) → F 65.77/17.34
eqt(true, tuplenil(z0)) → F 65.77/17.34
eqt(undefined, nil) → F 65.77/17.34
eqt(undefined, a) → F 65.77/17.34
eqt(undefined, tuplenil(z0)) → F 65.77/17.34
eqt(pid(z0), nil) → F 65.77/17.34
eqt(pid(z0), a) → F 65.77/17.34
eqt(pid(z0), excl) → F 65.77/17.34
eqt(pid(z0), false) → F 65.77/17.34
eqt(pid(z0), lock) → F 65.77/17.34
eqt(pid(z0), locker) → F 65.77/17.34
eqt(pid(z0), mcrlrecord) → F 65.77/17.34
eqt(pid(z0), ok) → F 65.77/17.34
eqt(pid(z0), pending) → F 65.77/17.34
eqt(pid(z0), release) → F 65.77/17.34
eqt(pid(z0), request) → F 65.77/17.34
eqt(pid(z0), resource) → F 65.77/17.34
eqt(pid(z0), tag) → F 65.77/17.34
eqt(pid(z0), true) → F 65.77/17.34
eqt(pid(z0), undefined) → F 65.77/17.34
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.34
eqt(pid(z0), int(z1)) → F 65.77/17.34
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.34
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.34
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.34
eqt(int(z0), nil) → F 65.77/17.34
eqt(int(z0), a) → F 65.77/17.34
eqt(int(z0), excl) → F 65.77/17.34
eqt(int(z0), false) → F 65.77/17.34
eqt(int(z0), lock) → F 65.77/17.34
eqt(int(z0), locker) → F 65.77/17.34
eqt(int(z0), mcrlrecord) → F 65.77/17.34
eqt(int(z0), ok) → F 65.77/17.34
eqt(int(z0), pending) → F 65.77/17.34
eqt(int(z0), release) → F 65.77/17.34
eqt(int(z0), request) → F 65.77/17.34
eqt(int(z0), resource) → F 65.77/17.34
eqt(int(z0), tag) → F 65.77/17.34
eqt(int(z0), true) → F 65.77/17.34
eqt(int(z0), undefined) → F 65.77/17.34
eqt(cons(z0, z1), resource) → F 65.77/17.34
eqt(cons(z0, z1), tag) → F 65.77/17.34
eqt(cons(z0, z1), true) → F 65.77/17.34
eqt(cons(z0, z1), undefined) → F 65.77/17.34
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.34
eqt(cons(z0, z1), int(z2)) → F 65.77/17.34
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.34
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.34
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), nil) → F 65.77/17.34
eqt(tuple(z0, z1), a) → F 65.77/17.34
eqt(tuple(z0, z1), excl) → F 65.77/17.34
eqt(tuple(z0, z1), false) → F 65.77/17.34
eqt(tuple(z0, z1), lock) → F 65.77/17.34
eqt(tuple(z0, z1), locker) → F 65.77/17.34
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.34
eqt(tuple(z0, z1), ok) → F 65.77/17.34
eqt(tuple(z0, z1), pending) → F 65.77/17.34
eqt(tuple(z0, z1), release) → F 65.77/17.34
eqt(tuple(z0, z1), request) → F 65.77/17.34
eqt(tuple(z0, z1), resource) → F 65.77/17.34
eqt(tuple(z0, z1), tag) → F 65.77/17.34
eqt(tuple(z0, z1), true) → F 65.77/17.34
eqt(tuple(z0, z1), undefined) → F 65.77/17.34
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.34
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.34
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.34
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.34
eqt(tuplenil(z0), nil) → F 65.77/17.34
eqt(tuplenil(z0), a) → F 65.77/17.34
eqt(tuplenil(z0), excl) → F 65.77/17.34
eqt(tuplenil(z0), false) → F 65.77/17.34
eqt(tuplenil(z0), lock) → F 65.77/17.34
eqt(tuplenil(z0), locker) → F 65.77/17.34
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.34
eqt(tuplenil(z0), ok) → F 65.77/17.34
eqt(tuplenil(z0), pending) → F 65.77/17.34
eqt(tuplenil(z0), release) → F 65.77/17.34
eqt(tuplenil(z0), request) → F 65.77/17.34
eqt(tuplenil(z0), resource) → F 65.77/17.34
eqt(tuplenil(z0), tag) → F 65.77/17.34
eqt(tuplenil(z0), true) → F 65.77/17.34
eqt(tuplenil(z0), undefined) → F 65.77/17.34
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.34
eqt(tuplenil(z0), int(z1)) → F 65.77/17.34
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.34
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.34
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.34
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.34
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.34
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.34
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.34
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.34
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.34
record_updates(z0, z1, nil) → z0 65.77/17.34
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.34
locker2_map_promote_pending(nil, z0) → nil 65.77/17.34
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.34
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.34
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.34
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.34
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.34
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.34
case0(z0, z1, z2) → z1 65.77/17.34
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.34
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.34
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.34
case1(z0, z1, z2, false) → z2 65.77/17.34
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.34
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.34
case4(z0, z1, z2) → false 65.77/17.34
locker2_obtainables(nil, z0) → true 65.77/17.34
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.34
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.34
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.34
locker2_check_available(z0, nil) → false 65.77/17.34
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.34
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.34
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.34
locker2_check_availables(nil, z0) → true 65.77/17.34
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.34
locker2_adduniq(nil, z0) → z0 65.77/17.34
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.34
subtract(z0, nil) → z0 65.77/17.34
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.34
delete(z0, nil) → nil 65.77/17.34
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.34
case8(z0, z1, z2, true) → z0 65.77/17.34
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.34
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.34
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.34
member(z0, nil) → false 65.77/17.34
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.34
case9(z0, z1, z2, true) → true 65.77/17.34
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.34
eqs(empty, empty) → T 65.77/17.34
eqs(empty, stack(z0, z1)) → F 65.77/17.34
eqs(stack(z0, z1), empty) → F 65.77/17.34
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.34
pushs(z0, z1) → stack(z0, z1) 65.77/17.34
pops(stack(z0, z1)) → z1 65.77/17.34
tops(stack(z0, z1)) → z0 65.77/17.34
istops(z0, empty) → F 65.77/17.34
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.34
eqc(nocalls, nocalls) → T 65.77/17.34
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.34
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.34
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.34
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.34
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.34
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.34
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.34
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.34
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.34
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.34
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.34
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.34
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.34
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.34
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.34
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.34
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.34
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.34
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.34
CASE2(z0, z1, true) → c335 65.77/17.34
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.34
DELETE(z0, cons(z1, z2)) → c352 65.77/17.34
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.34
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.34
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.34
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.34
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.34
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.34
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.34
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.34
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.34
CASE2(z0, z1, true) → c335 65.77/17.34
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.34
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.34
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.34
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.35
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.35
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.35
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.35
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.35
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.35
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.35
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.35
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.35
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.35
DELETE(z0, cons(z1, z2)) → c352 65.77/17.35
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.35
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.35
65.77/17.35

(21) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.35
member(z0, nil) → false 65.77/17.35
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.35
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.35
subtract(z0, nil) → z0 65.77/17.35
delete(z0, nil) → nil 65.77/17.35
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.35
eqt(nil, undefined) → F 65.77/17.35
eqt(nil, pid(z0)) → F 65.77/17.35
eqt(nil, int(z0)) → F 65.77/17.35
eqt(nil, cons(z0, z1)) → F 65.77/17.35
eqt(nil, tuple(z0, z1)) → F 65.77/17.35
eqt(nil, tuplenil(z0)) → F 65.77/17.35
eqt(a, nil) → F 65.77/17.35
eqt(a, a) → T 65.77/17.35
eqt(a, excl) → F 65.77/17.35
eqt(a, false) → F 65.77/17.35
eqt(a, lock) → F 65.77/17.35
eqt(a, locker) → F 65.77/17.35
eqt(a, mcrlrecord) → F 65.77/17.35
eqt(a, ok) → F 65.77/17.35
eqt(a, pending) → F 65.77/17.35
eqt(a, release) → F 65.77/17.35
eqt(a, request) → F 65.77/17.35
eqt(a, resource) → F 65.77/17.35
eqt(a, tag) → F 65.77/17.35
eqt(a, true) → F 65.77/17.35
eqt(a, undefined) → F 65.77/17.35
eqt(a, pid(z0)) → F 65.77/17.35
eqt(a, int(z0)) → F 65.77/17.35
eqt(a, cons(z0, z1)) → F 65.77/17.35
eqt(a, tuple(z0, z1)) → F 65.77/17.35
eqt(a, tuplenil(z0)) → F 65.77/17.35
eqt(excl, nil) → F 65.77/17.35
eqt(excl, a) → F 65.77/17.35
eqt(excl, excl) → T 65.77/17.35
eqt(excl, false) → F 65.77/17.35
eqt(excl, lock) → F 65.77/17.35
eqt(excl, locker) → F 65.77/17.35
eqt(excl, mcrlrecord) → F 65.77/17.35
eqt(excl, ok) → F 65.77/17.35
eqt(excl, pending) → F 65.77/17.35
eqt(excl, release) → F 65.77/17.35
eqt(excl, request) → F 65.77/17.35
eqt(excl, resource) → F 65.77/17.35
eqt(excl, tag) → F 65.77/17.35
eqt(excl, true) → F 65.77/17.35
eqt(excl, undefined) → F 65.77/17.35
eqt(excl, pid(z0)) → F 65.77/17.35
eqt(excl, eqt(false, int(z0))) → F 65.77/17.35
eqt(false, cons(z0, z1)) → F 65.77/17.35
eqt(false, tuple(z0, z1)) → F 65.77/17.35
eqt(false, tuplenil(z0)) → F 65.77/17.35
eqt(lock, nil) → F 65.77/17.35
eqt(lock, a) → F 65.77/17.35
eqt(lock, excl) → F 65.77/17.35
eqt(lock, false) → F 65.77/17.35
eqt(lock, lock) → T 65.77/17.35
eqt(lock, locker) → F 65.77/17.35
eqt(lock, mcrlrecord) → F 65.77/17.35
eqt(lock, ok) → F 65.77/17.35
eqt(lock, pending) → F 65.77/17.35
eqt(lock, release) → F 65.77/17.35
eqt(lock, request) → F 65.77/17.35
eqt(lock, resource) → F 65.77/17.35
eqt(lock, tag) → F 65.77/17.35
eqt(lock, true) → F 65.77/17.35
eqt(lock, undefined) → F 65.77/17.35
eqt(lock, pid(z0)) → F 65.77/17.35
eqt(lock, int(z0)) → F 65.77/17.35
eqt(lock, cons(z0, z1)) → F 65.77/17.35
eqt(lock, tuple(z0, z1)) → F 65.77/17.35
eqt(lock, tuplenil(z0)) → F 65.77/17.35
eqt(locker, nil) → F 65.77/17.35
eqt(locker, a) → F 65.77/17.35
eqt(locker, excl) → F 65.77/17.35
eqt(locker, false) → F 65.77/17.35
eqt(locker, lock) → F 65.77/17.35
eqt(locker, locker) → T 65.77/17.35
eqt(locker, mcrlrecord) → F 65.77/17.35
eqt(locker, ok) → F 65.77/17.35
eqt(locker, pending) → F 65.77/17.35
eqt(locker, release) → F 65.77/17.35
eqt(locker, request) → F 65.77/17.35
eqt(locker, resource) → F 65.77/17.35
eqt(locker, tag) → F 65.77/17.35
eqt(locker, true) → F 65.77/17.35
eqt(locker, undefined) → F 65.77/17.35
eqt(locker, pid(z0)) → F 65.77/17.35
eqt(locker, int(z0)) → F 65.77/17.35
eqt(locker, cons(z0, z1)) → F 65.77/17.35
eqt(locker, tuple(z0, z1)) → F 65.77/17.35
eqt(locker, tuplenil(z0)) → F 65.77/17.35
eqt(mcrlrecord, nil) → F 65.77/17.35
eqt(mcrlrecord, a) → F 65.77/17.35
eqt(mcrlrecord, excl) → F 65.77/17.35
eqt(mcrlrecord, false) → F 65.77/17.35
eqt(mcrlrecord, lock) → F 65.77/17.35
eqt(mcrlrecord, locker) → F 65.77/17.35
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.35
eqt(mcrlrecord, ok) → F 65.77/17.35
eqt(mcrlrecord, pending) → F 65.77/17.35
eqt(mcrlrecord, release) → F 65.77/17.35
eqt(mcrlrecord, request) → F 65.77/17.35
eqt(mcrlrecord, resource) → F 65.77/17.35
eqt(ok, resource) → F 65.77/17.35
eqt(ok, tag) → F 65.77/17.35
eqt(ok, true) → F 65.77/17.35
eqt(ok, undefined) → F 65.77/17.35
eqt(ok, pid(z0)) → F 65.77/17.35
eqt(ok, int(z0)) → F 65.77/17.35
eqt(ok, cons(z0, z1)) → F 65.77/17.35
eqt(ok, tuple(z0, z1)) → F 65.77/17.35
eqt(ok, tuplenil(z0)) → F 65.77/17.35
eqt(pending, nil) → F 65.77/17.35
eqt(pending, a) → F 65.77/17.35
eqt(pending, excl) → F 65.77/17.35
eqt(pending, false) → F 65.77/17.35
eqt(pending, lock) → F 65.77/17.35
eqt(pending, locker) → F 65.77/17.35
eqt(pending, mcrlrecord) → F 65.77/17.35
eqt(pending, ok) → F 65.77/17.35
eqt(pending, pending) → T 65.77/17.35
eqt(pending, release) → F 65.77/17.35
eqt(pending, request) → F 65.77/17.35
eqt(pending, resource) → F 65.77/17.35
eqt(pending, tag) → F 65.77/17.35
eqt(pending, true) → F 65.77/17.35
eqt(pending, undefined) → F 65.77/17.35
eqt(pending, pid(z0)) → F 65.77/17.35
eqt(pending, int(z0)) → F 65.77/17.35
eqt(pending, cons(z0, z1)) → F 65.77/17.35
eqt(pending, tuple(z0, z1)) → F 65.77/17.35
eqt(pending, tuplenil(z0)) → F 65.77/17.35
eqt(release, nil) → F 65.77/17.35
eqt(release, a) → F 65.77/17.35
eqt(release, excl) → F 65.77/17.35
eqt(release, false) → F 65.77/17.35
eqt(release, lock) → F 65.77/17.35
eqt(release, locker) → F 65.77/17.35
eqt(release, mcrlrecord) → F 65.77/17.35
eqt(release, ok) → F 65.77/17.35
eqt(request, mcrlrecord) → F 65.77/17.35
eqt(request, ok) → F 65.77/17.35
eqt(request, pending) → F 65.77/17.35
eqt(request, release) → F 65.77/17.35
eqt(request, request) → T 65.77/17.35
eqt(request, resource) → F 65.77/17.35
eqt(request, tag) → F 65.77/17.35
eqt(request, true) → F 65.77/17.35
eqt(request, undefined) → F 65.77/17.35
eqt(request, pid(z0)) → F 65.77/17.35
eqt(request, int(z0)) → F 65.77/17.35
eqt(request, cons(z0, z1)) → F 65.77/17.35
eqt(request, tuple(z0, z1)) → F 65.77/17.35
eqt(request, tuplenil(z0)) → F 65.77/17.35
eqt(resource, nil) → F 65.77/17.35
eqt(resource, a) → F 65.77/17.35
eqt(resource, excl) → F 65.77/17.35
eqt(resource, false) → F 65.77/17.35
eqt(resource, lock) → F 65.77/17.35
eqt(resource, locker) → F 65.77/17.35
eqt(resource, mcrlrecord) → F 65.77/17.35
eqt(resource, ok) → F 65.77/17.35
eqt(resource, pending) → F 65.77/17.35
eqt(resource, release) → F 65.77/17.35
eqt(resource, request) → F 65.77/17.35
eqt(resource, resource) → T 65.77/17.35
eqt(resource, tag) → F 65.77/17.35
eqt(resource, true) → F 65.77/17.35
eqt(resource, undefined) → F 65.77/17.35
eqt(resource, pid(z0)) → F 65.77/17.35
eqt(resource, int(z0)) → F 65.77/17.35
eqt(resource, cons(z0, z1)) → F 65.77/17.35
eqt(resource, tuple(z0, z1)) → F 65.77/17.35
eqt(resource, tuplenil(z0)) → F 65.77/17.35
eqt(tag, nil) → F 65.77/17.35
eqt(tag, a) → F 65.77/17.35
eqt(tag, excl) → F 65.77/17.35
eqt(tag, false) → F 65.77/17.35
eqt(tag, lock) → F 65.77/17.35
eqt(tag, locker) → F 65.77/17.35
eqt(tag, mcrlrecord) → F 65.77/17.35
eqt(tag, ok) → F 65.77/17.35
eqt(tag, pending) → F 65.77/17.35
eqt(tag, release) → F 65.77/17.35
eqt(tag, request) → F 65.77/17.35
eqt(tag, resource) → F 65.77/17.35
eqt(tag, tag) → T 65.77/17.35
eqt(tag, true) → F 65.77/17.35
eqt(tag, undefined) → F 65.77/17.35
eqt(tag, pid(z0)) → F 65.77/17.35
eqt(tag, int(z0)) → F 65.77/17.35
eqt(tag, cons(z0, z1)) → F 65.77/17.35
eqt(tag, tuple(z0, z1)) → F 65.77/17.35
eqt(tag, tuplenil(z0)) → F 65.77/17.35
eqt(true, nil) → F 65.77/17.35
eqt(true, a) → F 65.77/17.35
eqt(true, excl) → F 65.77/17.35
eqt(true, false) → F 65.77/17.35
eqt(true, lock) → F 65.77/17.35
eqt(true, locker) → F 65.77/17.35
eqt(true, mcrlrecord) → F 65.77/17.35
eqt(true, ok) → F 65.77/17.35
eqt(true, pending) → F 65.77/17.35
eqt(true, release) → F 65.77/17.35
eqt(true, request) → F 65.77/17.35
eqt(true, resource) → F 65.77/17.35
eqt(true, tag) → F 65.77/17.35
eqt(true, true) → T 65.77/17.35
eqt(true, undefined) → F 65.77/17.35
eqt(true, pid(z0)) → F 65.77/17.35
eqt(true, int(z0)) → F 65.77/17.35
eqt(true, cons(z0, z1)) → F 65.77/17.35
eqt(true, tuple(z0, z1)) → F 65.77/17.35
eqt(true, tuplenil(z0)) → F 65.77/17.35
eqt(undefined, nil) → F 65.77/17.35
eqt(undefined, a) → F 65.77/17.35
eqt(undefined, tuplenil(z0)) → F 65.77/17.35
eqt(pid(z0), nil) → F 65.77/17.35
eqt(pid(z0), a) → F 65.77/17.35
eqt(pid(z0), excl) → F 65.77/17.35
eqt(pid(z0), false) → F 65.77/17.35
eqt(pid(z0), lock) → F 65.77/17.35
eqt(pid(z0), locker) → F 65.77/17.35
eqt(pid(z0), mcrlrecord) → F 65.77/17.35
eqt(pid(z0), ok) → F 65.77/17.35
eqt(pid(z0), pending) → F 65.77/17.35
eqt(pid(z0), release) → F 65.77/17.35
eqt(pid(z0), request) → F 65.77/17.35
eqt(pid(z0), resource) → F 65.77/17.35
eqt(pid(z0), tag) → F 65.77/17.35
eqt(pid(z0), true) → F 65.77/17.35
eqt(pid(z0), undefined) → F 65.77/17.35
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.35
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.35
eqt(pid(z0), int(z1)) → F 65.77/17.35
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.35
eqt(int(z0), nil) → F 65.77/17.35
eqt(int(z0), a) → F 65.77/17.35
eqt(int(z0), excl) → F 65.77/17.35
eqt(int(z0), false) → F 65.77/17.35
eqt(int(z0), lock) → F 65.77/17.35
eqt(int(z0), locker) → F 65.77/17.35
eqt(int(z0), mcrlrecord) → F 65.77/17.35
eqt(int(z0), ok) → F 65.77/17.35
eqt(int(z0), pending) → F 65.77/17.35
eqt(int(z0), release) → F 65.77/17.35
eqt(int(z0), request) → F 65.77/17.35
eqt(int(z0), resource) → F 65.77/17.35
eqt(int(z0), tag) → F 65.77/17.35
eqt(int(z0), true) → F 65.77/17.35
eqt(int(z0), undefined) → F 65.77/17.35
eqt(cons(z0, z1), resource) → F 65.77/17.35
eqt(cons(z0, z1), tag) → F 65.77/17.35
eqt(cons(z0, z1), true) → F 65.77/17.35
eqt(cons(z0, z1), undefined) → F 65.77/17.35
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.35
eqt(cons(z0, z1), int(z2)) → F 65.77/17.35
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.35
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), nil) → F 65.77/17.35
eqt(tuple(z0, z1), a) → F 65.77/17.35
eqt(tuple(z0, z1), excl) → F 65.77/17.35
eqt(tuple(z0, z1), false) → F 65.77/17.35
eqt(tuple(z0, z1), lock) → F 65.77/17.35
eqt(tuple(z0, z1), locker) → F 65.77/17.35
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.35
eqt(tuple(z0, z1), ok) → F 65.77/17.35
eqt(tuple(z0, z1), pending) → F 65.77/17.35
eqt(tuple(z0, z1), release) → F 65.77/17.35
eqt(tuple(z0, z1), request) → F 65.77/17.35
eqt(tuple(z0, z1), resource) → F 65.77/17.35
eqt(tuple(z0, z1), tag) → F 65.77/17.35
eqt(tuple(z0, z1), true) → F 65.77/17.35
eqt(tuple(z0, z1), undefined) → F 65.77/17.35
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.35
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuplenil(z0), nil) → F 65.77/17.35
eqt(tuplenil(z0), a) → F 65.77/17.35
eqt(tuplenil(z0), excl) → F 65.77/17.35
eqt(tuplenil(z0), false) → F 65.77/17.35
eqt(tuplenil(z0), lock) → F 65.77/17.35
eqt(tuplenil(z0), locker) → F 65.77/17.35
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.35
eqt(tuplenil(z0), ok) → F 65.77/17.35
eqt(tuplenil(z0), pending) → F 65.77/17.35
eqt(tuplenil(z0), release) → F 65.77/17.35
eqt(tuplenil(z0), request) → F 65.77/17.35
eqt(tuplenil(z0), resource) → F 65.77/17.35
eqt(tuplenil(z0), tag) → F 65.77/17.35
eqt(tuplenil(z0), true) → F 65.77/17.35
eqt(tuplenil(z0), undefined) → F 65.77/17.35
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.35
eqt(tuplenil(z0), int(z1)) → F 65.77/17.35
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.35
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.35
and(T, z0) → z0 65.77/17.35
and(z0, T) → z0 65.77/17.35
and(F, z0) → F 65.77/17.35
and(z0, F) → F 65.77/17.35
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.35
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.35
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.35
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.35
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.35
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.35
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.35
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.35
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.35
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.35
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.35
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.35
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.35
CASE2(z0, z1, true) → c335 65.77/17.35
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.35
DELETE(z0, cons(z1, z2)) → c352 65.77/17.35
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.35
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.35
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.35
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.35
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.35

POL(APPEND(x1, x2)) = [5]x1    65.77/17.35
POL(CASE1(x1, x2, x3, x4)) = [2]x1 + x2    65.77/17.35
POL(CASE2(x1, x2, x3)) = [5]x1 + [3]x2    65.77/17.35
POL(DELETE(x1, x2)) = [3]    65.77/17.35
POL(ELEMENT(x1, x2)) = [5]x2    65.77/17.35
POL(EQC(x1, x2)) = [2]x2    65.77/17.35
POL(EQS(x1, x2)) = [3] + [2]x2    65.77/17.35
POL(EQT(x1, x2)) = 0    65.77/17.35
POL(F) = [3]    65.77/17.35
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [3] + [5]x2 + [3]x3    65.77/17.35
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = 0    65.77/17.35
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = x1    65.77/17.35
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = 0    65.77/17.35
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    65.77/17.35
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [2]    65.77/17.35
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [2] + [3]x1 + [5]x2    65.77/17.35
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [5] + [4]x2    65.77/17.35
POL(MEMBER(x1, x2)) = 0    65.77/17.35
POL(PUSH(x1, x2, x3)) = [1] + [3]x1 + [3]x2    65.77/17.35
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [1] + [3]x1 + [3]x2    65.77/17.35
POL(RECORD_UPDATES(x1, x2, x3)) = 0    65.77/17.35
POL(SUBTRACT(x1, x2)) = x2    65.77/17.35
POL(T) = [3]    65.77/17.35
POL(a) = [3]    65.77/17.35
POL(and(x1, x2)) = [3]    65.77/17.35
POL(append(x1, x2)) = [3]    65.77/17.35
POL(c(x1)) = x1    65.77/17.35
POL(c245(x1)) = x1    65.77/17.35
POL(c271(x1, x2)) = x1 + x2    65.77/17.35
POL(c292(x1, x2)) = x1 + x2    65.77/17.35
POL(c313(x1)) = x1    65.77/17.35
POL(c316(x1)) = x1    65.77/17.35
POL(c321(x1)) = x1    65.77/17.35
POL(c323(x1, x2)) = x1 + x2    65.77/17.35
POL(c325(x1)) = x1    65.77/17.35
POL(c327) = 0    65.77/17.35
POL(c332(x1)) = x1    65.77/17.35
POL(c334(x1)) = x1    65.77/17.35
POL(c335) = 0    65.77/17.35
POL(c342) = 0    65.77/17.35
POL(c346(x1, x2)) = x1 + x2    65.77/17.35
POL(c348(x1)) = x1    65.77/17.35
POL(c350(x1, x2)) = x1 + x2    65.77/17.35
POL(c352) = 0    65.77/17.35
POL(c358) = 0    65.77/17.35
POL(c364(x1, x2)) = x1 + x2    65.77/17.35
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.35
POL(c376) = 0    65.77/17.35
POL(calls(x1, x2, x3)) = [2] + x1 + x2 + x3    65.77/17.35
POL(case8(x1, x2, x3, x4)) = [3]x1 + [5]x4    65.77/17.35
POL(case9(x1, x2, x3, x4)) = [4] + x1 + [4]x4    65.77/17.35
POL(cons(x1, x2)) = [4] + x2    65.77/17.35
POL(delete(x1, x2)) = [4]x2    65.77/17.35
POL(eqt(x1, x2)) = 0    65.77/17.35
POL(equal(x1, x2)) = [2]    65.77/17.35
POL(excl) = 0    65.77/17.35
POL(false) = [1]    65.77/17.35
POL(gen_modtageq(x1, x2)) = [4] + x1    65.77/17.35
POL(int(x1)) = [3]    65.77/17.35
POL(lock) = [4]    65.77/17.35
POL(locker) = [3]    65.77/17.35
POL(mcrlrecord) = [4]    65.77/17.35
POL(member(x1, x2)) = [2] + [4]x2    65.77/17.35
POL(nil) = [1]    65.77/17.35
POL(ok) = [3]    65.77/17.35
POL(pending) = [2]    65.77/17.35
POL(pid(x1)) = x1    65.77/17.35
POL(record_extract(x1, x2, x3)) = [2] + [4]x1    65.77/17.35
POL(record_update(x1, x2, x3, x4)) = [4]x1 + [2]x2 + [5]x3    65.77/17.35
POL(release) = [3]    65.77/17.35
POL(request) = [3]    65.77/17.35
POL(resource) = 0    65.77/17.35
POL(s(x1)) = 0    65.77/17.35
POL(stack(x1, x2)) = [3] + x2    65.77/17.35
POL(subtract(x1, x2)) = [3]    65.77/17.35
POL(tag) = [3]    65.77/17.35
POL(true) = 0    65.77/17.35
POL(tuple(x1, x2)) = x1 + x2    65.77/17.35
POL(tuplenil(x1)) = [4]    65.77/17.35
POL(undefined) = [3]   
65.77/17.35
65.77/17.35

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.35
or(F, T) → T 65.77/17.35
or(T, F) → T 65.77/17.35
or(F, F) → F 65.77/17.35
and(T, z0) → z0 65.77/17.35
and(z0, T) → z0 65.77/17.35
and(F, z0) → F 65.77/17.35
and(z0, F) → F 65.77/17.35
imp(T, z0) → z0 65.77/17.35
imp(F, z0) → T 65.77/17.35
not(T) → F 65.77/17.35
not(F) → T 65.77/17.35
if(T, z0, z1) → z0 65.77/17.35
if(F, z0, z1) → z1 65.77/17.35
eq(T, T) → T 65.77/17.35
eq(F, F) → T 65.77/17.35
eq(T, F) → F 65.77/17.35
eq(F, T) → F 65.77/17.35
eqt(nil, undefined) → F 65.77/17.35
eqt(nil, pid(z0)) → F 65.77/17.35
eqt(nil, int(z0)) → F 65.77/17.35
eqt(nil, cons(z0, z1)) → F 65.77/17.35
eqt(nil, tuple(z0, z1)) → F 65.77/17.35
eqt(nil, tuplenil(z0)) → F 65.77/17.35
eqt(a, nil) → F 65.77/17.35
eqt(a, a) → T 65.77/17.35
eqt(a, excl) → F 65.77/17.35
eqt(a, false) → F 65.77/17.35
eqt(a, lock) → F 65.77/17.35
eqt(a, locker) → F 65.77/17.35
eqt(a, mcrlrecord) → F 65.77/17.35
eqt(a, ok) → F 65.77/17.35
eqt(a, pending) → F 65.77/17.35
eqt(a, release) → F 65.77/17.35
eqt(a, request) → F 65.77/17.35
eqt(a, resource) → F 65.77/17.35
eqt(a, tag) → F 65.77/17.35
eqt(a, true) → F 65.77/17.35
eqt(a, undefined) → F 65.77/17.35
eqt(a, pid(z0)) → F 65.77/17.35
eqt(a, int(z0)) → F 65.77/17.35
eqt(a, cons(z0, z1)) → F 65.77/17.35
eqt(a, tuple(z0, z1)) → F 65.77/17.35
eqt(a, tuplenil(z0)) → F 65.77/17.35
eqt(excl, nil) → F 65.77/17.35
eqt(excl, a) → F 65.77/17.35
eqt(excl, excl) → T 65.77/17.35
eqt(excl, false) → F 65.77/17.35
eqt(excl, lock) → F 65.77/17.35
eqt(excl, locker) → F 65.77/17.35
eqt(excl, mcrlrecord) → F 65.77/17.35
eqt(excl, ok) → F 65.77/17.35
eqt(excl, pending) → F 65.77/17.35
eqt(excl, release) → F 65.77/17.35
eqt(excl, request) → F 65.77/17.35
eqt(excl, resource) → F 65.77/17.35
eqt(excl, tag) → F 65.77/17.35
eqt(excl, true) → F 65.77/17.35
eqt(excl, undefined) → F 65.77/17.35
eqt(excl, pid(z0)) → F 65.77/17.35
eqt(excl, eqt(false, int(z0))) → F 65.77/17.35
eqt(false, cons(z0, z1)) → F 65.77/17.35
eqt(false, tuple(z0, z1)) → F 65.77/17.35
eqt(false, tuplenil(z0)) → F 65.77/17.35
eqt(lock, nil) → F 65.77/17.35
eqt(lock, a) → F 65.77/17.35
eqt(lock, excl) → F 65.77/17.35
eqt(lock, false) → F 65.77/17.35
eqt(lock, lock) → T 65.77/17.35
eqt(lock, locker) → F 65.77/17.35
eqt(lock, mcrlrecord) → F 65.77/17.35
eqt(lock, ok) → F 65.77/17.35
eqt(lock, pending) → F 65.77/17.35
eqt(lock, release) → F 65.77/17.35
eqt(lock, request) → F 65.77/17.35
eqt(lock, resource) → F 65.77/17.35
eqt(lock, tag) → F 65.77/17.35
eqt(lock, true) → F 65.77/17.35
eqt(lock, undefined) → F 65.77/17.35
eqt(lock, pid(z0)) → F 65.77/17.35
eqt(lock, int(z0)) → F 65.77/17.35
eqt(lock, cons(z0, z1)) → F 65.77/17.35
eqt(lock, tuple(z0, z1)) → F 65.77/17.35
eqt(lock, tuplenil(z0)) → F 65.77/17.35
eqt(locker, nil) → F 65.77/17.35
eqt(locker, a) → F 65.77/17.35
eqt(locker, excl) → F 65.77/17.35
eqt(locker, false) → F 65.77/17.35
eqt(locker, lock) → F 65.77/17.35
eqt(locker, locker) → T 65.77/17.35
eqt(locker, mcrlrecord) → F 65.77/17.35
eqt(locker, ok) → F 65.77/17.35
eqt(locker, pending) → F 65.77/17.35
eqt(locker, release) → F 65.77/17.35
eqt(locker, request) → F 65.77/17.35
eqt(locker, resource) → F 65.77/17.35
eqt(locker, tag) → F 65.77/17.35
eqt(locker, true) → F 65.77/17.35
eqt(locker, undefined) → F 65.77/17.35
eqt(locker, pid(z0)) → F 65.77/17.35
eqt(locker, int(z0)) → F 65.77/17.35
eqt(locker, cons(z0, z1)) → F 65.77/17.35
eqt(locker, tuple(z0, z1)) → F 65.77/17.35
eqt(locker, tuplenil(z0)) → F 65.77/17.35
eqt(mcrlrecord, nil) → F 65.77/17.35
eqt(mcrlrecord, a) → F 65.77/17.35
eqt(mcrlrecord, excl) → F 65.77/17.35
eqt(mcrlrecord, false) → F 65.77/17.35
eqt(mcrlrecord, lock) → F 65.77/17.35
eqt(mcrlrecord, locker) → F 65.77/17.35
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.35
eqt(mcrlrecord, ok) → F 65.77/17.35
eqt(mcrlrecord, pending) → F 65.77/17.35
eqt(mcrlrecord, release) → F 65.77/17.35
eqt(mcrlrecord, request) → F 65.77/17.35
eqt(mcrlrecord, resource) → F 65.77/17.35
eqt(ok, resource) → F 65.77/17.35
eqt(ok, tag) → F 65.77/17.35
eqt(ok, true) → F 65.77/17.35
eqt(ok, undefined) → F 65.77/17.35
eqt(ok, pid(z0)) → F 65.77/17.35
eqt(ok, int(z0)) → F 65.77/17.35
eqt(ok, cons(z0, z1)) → F 65.77/17.35
eqt(ok, tuple(z0, z1)) → F 65.77/17.35
eqt(ok, tuplenil(z0)) → F 65.77/17.35
eqt(pending, nil) → F 65.77/17.35
eqt(pending, a) → F 65.77/17.35
eqt(pending, excl) → F 65.77/17.35
eqt(pending, false) → F 65.77/17.35
eqt(pending, lock) → F 65.77/17.35
eqt(pending, locker) → F 65.77/17.35
eqt(pending, mcrlrecord) → F 65.77/17.35
eqt(pending, ok) → F 65.77/17.35
eqt(pending, pending) → T 65.77/17.35
eqt(pending, release) → F 65.77/17.35
eqt(pending, request) → F 65.77/17.35
eqt(pending, resource) → F 65.77/17.35
eqt(pending, tag) → F 65.77/17.35
eqt(pending, true) → F 65.77/17.35
eqt(pending, undefined) → F 65.77/17.35
eqt(pending, pid(z0)) → F 65.77/17.35
eqt(pending, int(z0)) → F 65.77/17.35
eqt(pending, cons(z0, z1)) → F 65.77/17.35
eqt(pending, tuple(z0, z1)) → F 65.77/17.35
eqt(pending, tuplenil(z0)) → F 65.77/17.35
eqt(release, nil) → F 65.77/17.35
eqt(release, a) → F 65.77/17.35
eqt(release, excl) → F 65.77/17.35
eqt(release, false) → F 65.77/17.35
eqt(release, lock) → F 65.77/17.35
eqt(release, locker) → F 65.77/17.35
eqt(release, mcrlrecord) → F 65.77/17.35
eqt(release, ok) → F 65.77/17.35
eqt(request, mcrlrecord) → F 65.77/17.35
eqt(request, ok) → F 65.77/17.35
eqt(request, pending) → F 65.77/17.35
eqt(request, release) → F 65.77/17.35
eqt(request, request) → T 65.77/17.35
eqt(request, resource) → F 65.77/17.35
eqt(request, tag) → F 65.77/17.35
eqt(request, true) → F 65.77/17.35
eqt(request, undefined) → F 65.77/17.35
eqt(request, pid(z0)) → F 65.77/17.35
eqt(request, int(z0)) → F 65.77/17.35
eqt(request, cons(z0, z1)) → F 65.77/17.35
eqt(request, tuple(z0, z1)) → F 65.77/17.35
eqt(request, tuplenil(z0)) → F 65.77/17.35
eqt(resource, nil) → F 65.77/17.35
eqt(resource, a) → F 65.77/17.35
eqt(resource, excl) → F 65.77/17.35
eqt(resource, false) → F 65.77/17.35
eqt(resource, lock) → F 65.77/17.35
eqt(resource, locker) → F 65.77/17.35
eqt(resource, mcrlrecord) → F 65.77/17.35
eqt(resource, ok) → F 65.77/17.35
eqt(resource, pending) → F 65.77/17.35
eqt(resource, release) → F 65.77/17.35
eqt(resource, request) → F 65.77/17.35
eqt(resource, resource) → T 65.77/17.35
eqt(resource, tag) → F 65.77/17.35
eqt(resource, true) → F 65.77/17.35
eqt(resource, undefined) → F 65.77/17.35
eqt(resource, pid(z0)) → F 65.77/17.35
eqt(resource, int(z0)) → F 65.77/17.35
eqt(resource, cons(z0, z1)) → F 65.77/17.35
eqt(resource, tuple(z0, z1)) → F 65.77/17.35
eqt(resource, tuplenil(z0)) → F 65.77/17.35
eqt(tag, nil) → F 65.77/17.35
eqt(tag, a) → F 65.77/17.35
eqt(tag, excl) → F 65.77/17.35
eqt(tag, false) → F 65.77/17.35
eqt(tag, lock) → F 65.77/17.35
eqt(tag, locker) → F 65.77/17.35
eqt(tag, mcrlrecord) → F 65.77/17.35
eqt(tag, ok) → F 65.77/17.35
eqt(tag, pending) → F 65.77/17.35
eqt(tag, release) → F 65.77/17.35
eqt(tag, request) → F 65.77/17.35
eqt(tag, resource) → F 65.77/17.35
eqt(tag, tag) → T 65.77/17.35
eqt(tag, true) → F 65.77/17.35
eqt(tag, undefined) → F 65.77/17.35
eqt(tag, pid(z0)) → F 65.77/17.35
eqt(tag, int(z0)) → F 65.77/17.35
eqt(tag, cons(z0, z1)) → F 65.77/17.35
eqt(tag, tuple(z0, z1)) → F 65.77/17.35
eqt(tag, tuplenil(z0)) → F 65.77/17.35
eqt(true, nil) → F 65.77/17.35
eqt(true, a) → F 65.77/17.35
eqt(true, excl) → F 65.77/17.35
eqt(true, false) → F 65.77/17.35
eqt(true, lock) → F 65.77/17.35
eqt(true, locker) → F 65.77/17.35
eqt(true, mcrlrecord) → F 65.77/17.35
eqt(true, ok) → F 65.77/17.35
eqt(true, pending) → F 65.77/17.35
eqt(true, release) → F 65.77/17.35
eqt(true, request) → F 65.77/17.35
eqt(true, resource) → F 65.77/17.35
eqt(true, tag) → F 65.77/17.35
eqt(true, true) → T 65.77/17.35
eqt(true, undefined) → F 65.77/17.35
eqt(true, pid(z0)) → F 65.77/17.35
eqt(true, int(z0)) → F 65.77/17.35
eqt(true, cons(z0, z1)) → F 65.77/17.35
eqt(true, tuple(z0, z1)) → F 65.77/17.35
eqt(true, tuplenil(z0)) → F 65.77/17.35
eqt(undefined, nil) → F 65.77/17.35
eqt(undefined, a) → F 65.77/17.35
eqt(undefined, tuplenil(z0)) → F 65.77/17.35
eqt(pid(z0), nil) → F 65.77/17.35
eqt(pid(z0), a) → F 65.77/17.35
eqt(pid(z0), excl) → F 65.77/17.35
eqt(pid(z0), false) → F 65.77/17.35
eqt(pid(z0), lock) → F 65.77/17.35
eqt(pid(z0), locker) → F 65.77/17.35
eqt(pid(z0), mcrlrecord) → F 65.77/17.35
eqt(pid(z0), ok) → F 65.77/17.35
eqt(pid(z0), pending) → F 65.77/17.35
eqt(pid(z0), release) → F 65.77/17.35
eqt(pid(z0), request) → F 65.77/17.35
eqt(pid(z0), resource) → F 65.77/17.35
eqt(pid(z0), tag) → F 65.77/17.35
eqt(pid(z0), true) → F 65.77/17.35
eqt(pid(z0), undefined) → F 65.77/17.35
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.35
eqt(pid(z0), int(z1)) → F 65.77/17.35
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.35
eqt(int(z0), nil) → F 65.77/17.35
eqt(int(z0), a) → F 65.77/17.35
eqt(int(z0), excl) → F 65.77/17.35
eqt(int(z0), false) → F 65.77/17.35
eqt(int(z0), lock) → F 65.77/17.35
eqt(int(z0), locker) → F 65.77/17.35
eqt(int(z0), mcrlrecord) → F 65.77/17.35
eqt(int(z0), ok) → F 65.77/17.35
eqt(int(z0), pending) → F 65.77/17.35
eqt(int(z0), release) → F 65.77/17.35
eqt(int(z0), request) → F 65.77/17.35
eqt(int(z0), resource) → F 65.77/17.35
eqt(int(z0), tag) → F 65.77/17.35
eqt(int(z0), true) → F 65.77/17.35
eqt(int(z0), undefined) → F 65.77/17.35
eqt(cons(z0, z1), resource) → F 65.77/17.35
eqt(cons(z0, z1), tag) → F 65.77/17.35
eqt(cons(z0, z1), true) → F 65.77/17.35
eqt(cons(z0, z1), undefined) → F 65.77/17.35
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.35
eqt(cons(z0, z1), int(z2)) → F 65.77/17.35
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.35
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), nil) → F 65.77/17.35
eqt(tuple(z0, z1), a) → F 65.77/17.35
eqt(tuple(z0, z1), excl) → F 65.77/17.35
eqt(tuple(z0, z1), false) → F 65.77/17.35
eqt(tuple(z0, z1), lock) → F 65.77/17.35
eqt(tuple(z0, z1), locker) → F 65.77/17.35
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.35
eqt(tuple(z0, z1), ok) → F 65.77/17.35
eqt(tuple(z0, z1), pending) → F 65.77/17.35
eqt(tuple(z0, z1), release) → F 65.77/17.35
eqt(tuple(z0, z1), request) → F 65.77/17.35
eqt(tuple(z0, z1), resource) → F 65.77/17.35
eqt(tuple(z0, z1), tag) → F 65.77/17.35
eqt(tuple(z0, z1), true) → F 65.77/17.35
eqt(tuple(z0, z1), undefined) → F 65.77/17.35
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.35
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuplenil(z0), nil) → F 65.77/17.35
eqt(tuplenil(z0), a) → F 65.77/17.35
eqt(tuplenil(z0), excl) → F 65.77/17.35
eqt(tuplenil(z0), false) → F 65.77/17.35
eqt(tuplenil(z0), lock) → F 65.77/17.35
eqt(tuplenil(z0), locker) → F 65.77/17.35
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.35
eqt(tuplenil(z0), ok) → F 65.77/17.35
eqt(tuplenil(z0), pending) → F 65.77/17.35
eqt(tuplenil(z0), release) → F 65.77/17.35
eqt(tuplenil(z0), request) → F 65.77/17.35
eqt(tuplenil(z0), resource) → F 65.77/17.35
eqt(tuplenil(z0), tag) → F 65.77/17.35
eqt(tuplenil(z0), true) → F 65.77/17.35
eqt(tuplenil(z0), undefined) → F 65.77/17.35
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.35
eqt(tuplenil(z0), int(z1)) → F 65.77/17.35
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.35
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.35
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.35
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.35
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.35
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.35
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.35
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.35
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.35
record_updates(z0, z1, nil) → z0 65.77/17.35
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.35
locker2_map_promote_pending(nil, z0) → nil 65.77/17.35
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.35
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.35
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.35
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.35
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.35
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.35
case0(z0, z1, z2) → z1 65.77/17.35
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.35
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.35
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.35
case1(z0, z1, z2, false) → z2 65.77/17.35
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.35
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.35
case4(z0, z1, z2) → false 65.77/17.35
locker2_obtainables(nil, z0) → true 65.77/17.35
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.35
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.35
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.35
locker2_check_available(z0, nil) → false 65.77/17.35
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.35
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.35
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.35
locker2_check_availables(nil, z0) → true 65.77/17.35
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.35
locker2_adduniq(nil, z0) → z0 65.77/17.35
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.35
subtract(z0, nil) → z0 65.77/17.35
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.35
delete(z0, nil) → nil 65.77/17.35
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.35
case8(z0, z1, z2, true) → z0 65.77/17.35
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.35
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.35
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.35
member(z0, nil) → false 65.77/17.35
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.35
case9(z0, z1, z2, true) → true 65.77/17.35
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.35
eqs(empty, empty) → T 65.77/17.35
eqs(empty, stack(z0, z1)) → F 65.77/17.35
eqs(stack(z0, z1), empty) → F 65.77/17.35
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.35
pushs(z0, z1) → stack(z0, z1) 65.77/17.35
pops(stack(z0, z1)) → z1 65.77/17.35
tops(stack(z0, z1)) → z0 65.77/17.35
istops(z0, empty) → F 65.77/17.35
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.35
eqc(nocalls, nocalls) → T 65.77/17.35
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.35
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.35
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.35
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.35
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.35
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.35
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.35
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.35
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.35
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.35
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.35
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.35
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.35
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.35
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.35
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.35
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.35
CASE2(z0, z1, true) → c335 65.77/17.35
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.35
DELETE(z0, cons(z1, z2)) → c352 65.77/17.35
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.35
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.35
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.35
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.35
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.35
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.35
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.35
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.35
CASE2(z0, z1, true) → c335 65.77/17.35
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.35
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.35
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.35
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.35
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.35
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.35
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.35
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.35
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.35
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.35
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.35
DELETE(z0, cons(z1, z2)) → c352 65.77/17.35
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.35
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.35
65.77/17.35

(23) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342
65.77/17.35
65.77/17.35

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.35
or(F, T) → T 65.77/17.35
or(T, F) → T 65.77/17.35
or(F, F) → F 65.77/17.35
and(T, z0) → z0 65.77/17.35
and(z0, T) → z0 65.77/17.35
and(F, z0) → F 65.77/17.35
and(z0, F) → F 65.77/17.35
imp(T, z0) → z0 65.77/17.35
imp(F, z0) → T 65.77/17.35
not(T) → F 65.77/17.35
not(F) → T 65.77/17.35
if(T, z0, z1) → z0 65.77/17.35
if(F, z0, z1) → z1 65.77/17.35
eq(T, T) → T 65.77/17.35
eq(F, F) → T 65.77/17.35
eq(T, F) → F 65.77/17.35
eq(F, T) → F 65.77/17.35
eqt(nil, undefined) → F 65.77/17.35
eqt(nil, pid(z0)) → F 65.77/17.35
eqt(nil, int(z0)) → F 65.77/17.35
eqt(nil, cons(z0, z1)) → F 65.77/17.35
eqt(nil, tuple(z0, z1)) → F 65.77/17.35
eqt(nil, tuplenil(z0)) → F 65.77/17.35
eqt(a, nil) → F 65.77/17.35
eqt(a, a) → T 65.77/17.35
eqt(a, excl) → F 65.77/17.35
eqt(a, false) → F 65.77/17.35
eqt(a, lock) → F 65.77/17.35
eqt(a, locker) → F 65.77/17.35
eqt(a, mcrlrecord) → F 65.77/17.35
eqt(a, ok) → F 65.77/17.35
eqt(a, pending) → F 65.77/17.35
eqt(a, release) → F 65.77/17.35
eqt(a, request) → F 65.77/17.35
eqt(a, resource) → F 65.77/17.35
eqt(a, tag) → F 65.77/17.35
eqt(a, true) → F 65.77/17.35
eqt(a, undefined) → F 65.77/17.35
eqt(a, pid(z0)) → F 65.77/17.35
eqt(a, int(z0)) → F 65.77/17.35
eqt(a, cons(z0, z1)) → F 65.77/17.35
eqt(a, tuple(z0, z1)) → F 65.77/17.35
eqt(a, tuplenil(z0)) → F 65.77/17.35
eqt(excl, nil) → F 65.77/17.35
eqt(excl, a) → F 65.77/17.35
eqt(excl, excl) → T 65.77/17.35
eqt(excl, false) → F 65.77/17.35
eqt(excl, lock) → F 65.77/17.35
eqt(excl, locker) → F 65.77/17.35
eqt(excl, mcrlrecord) → F 65.77/17.35
eqt(excl, ok) → F 65.77/17.35
eqt(excl, pending) → F 65.77/17.35
eqt(excl, release) → F 65.77/17.35
eqt(excl, request) → F 65.77/17.35
eqt(excl, resource) → F 65.77/17.35
eqt(excl, tag) → F 65.77/17.35
eqt(excl, true) → F 65.77/17.35
eqt(excl, undefined) → F 65.77/17.35
eqt(excl, pid(z0)) → F 65.77/17.35
eqt(excl, eqt(false, int(z0))) → F 65.77/17.35
eqt(false, cons(z0, z1)) → F 65.77/17.35
eqt(false, tuple(z0, z1)) → F 65.77/17.35
eqt(false, tuplenil(z0)) → F 65.77/17.35
eqt(lock, nil) → F 65.77/17.35
eqt(lock, a) → F 65.77/17.35
eqt(lock, excl) → F 65.77/17.35
eqt(lock, false) → F 65.77/17.35
eqt(lock, lock) → T 65.77/17.35
eqt(lock, locker) → F 65.77/17.35
eqt(lock, mcrlrecord) → F 65.77/17.35
eqt(lock, ok) → F 65.77/17.35
eqt(lock, pending) → F 65.77/17.35
eqt(lock, release) → F 65.77/17.35
eqt(lock, request) → F 65.77/17.35
eqt(lock, resource) → F 65.77/17.35
eqt(lock, tag) → F 65.77/17.35
eqt(lock, true) → F 65.77/17.35
eqt(lock, undefined) → F 65.77/17.35
eqt(lock, pid(z0)) → F 65.77/17.35
eqt(lock, int(z0)) → F 65.77/17.35
eqt(lock, cons(z0, z1)) → F 65.77/17.35
eqt(lock, tuple(z0, z1)) → F 65.77/17.35
eqt(lock, tuplenil(z0)) → F 65.77/17.35
eqt(locker, nil) → F 65.77/17.35
eqt(locker, a) → F 65.77/17.35
eqt(locker, excl) → F 65.77/17.35
eqt(locker, false) → F 65.77/17.35
eqt(locker, lock) → F 65.77/17.35
eqt(locker, locker) → T 65.77/17.35
eqt(locker, mcrlrecord) → F 65.77/17.35
eqt(locker, ok) → F 65.77/17.35
eqt(locker, pending) → F 65.77/17.35
eqt(locker, release) → F 65.77/17.35
eqt(locker, request) → F 65.77/17.35
eqt(locker, resource) → F 65.77/17.35
eqt(locker, tag) → F 65.77/17.35
eqt(locker, true) → F 65.77/17.35
eqt(locker, undefined) → F 65.77/17.35
eqt(locker, pid(z0)) → F 65.77/17.35
eqt(locker, int(z0)) → F 65.77/17.35
eqt(locker, cons(z0, z1)) → F 65.77/17.35
eqt(locker, tuple(z0, z1)) → F 65.77/17.35
eqt(locker, tuplenil(z0)) → F 65.77/17.35
eqt(mcrlrecord, nil) → F 65.77/17.35
eqt(mcrlrecord, a) → F 65.77/17.35
eqt(mcrlrecord, excl) → F 65.77/17.35
eqt(mcrlrecord, false) → F 65.77/17.35
eqt(mcrlrecord, lock) → F 65.77/17.35
eqt(mcrlrecord, locker) → F 65.77/17.35
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.35
eqt(mcrlrecord, ok) → F 65.77/17.35
eqt(mcrlrecord, pending) → F 65.77/17.35
eqt(mcrlrecord, release) → F 65.77/17.35
eqt(mcrlrecord, request) → F 65.77/17.35
eqt(mcrlrecord, resource) → F 65.77/17.35
eqt(ok, resource) → F 65.77/17.35
eqt(ok, tag) → F 65.77/17.35
eqt(ok, true) → F 65.77/17.35
eqt(ok, undefined) → F 65.77/17.35
eqt(ok, pid(z0)) → F 65.77/17.35
eqt(ok, int(z0)) → F 65.77/17.35
eqt(ok, cons(z0, z1)) → F 65.77/17.35
eqt(ok, tuple(z0, z1)) → F 65.77/17.35
eqt(ok, tuplenil(z0)) → F 65.77/17.35
eqt(pending, nil) → F 65.77/17.35
eqt(pending, a) → F 65.77/17.35
eqt(pending, excl) → F 65.77/17.35
eqt(pending, false) → F 65.77/17.35
eqt(pending, lock) → F 65.77/17.35
eqt(pending, locker) → F 65.77/17.35
eqt(pending, mcrlrecord) → F 65.77/17.35
eqt(pending, ok) → F 65.77/17.35
eqt(pending, pending) → T 65.77/17.35
eqt(pending, release) → F 65.77/17.35
eqt(pending, request) → F 65.77/17.35
eqt(pending, resource) → F 65.77/17.35
eqt(pending, tag) → F 65.77/17.35
eqt(pending, true) → F 65.77/17.35
eqt(pending, undefined) → F 65.77/17.35
eqt(pending, pid(z0)) → F 65.77/17.35
eqt(pending, int(z0)) → F 65.77/17.35
eqt(pending, cons(z0, z1)) → F 65.77/17.35
eqt(pending, tuple(z0, z1)) → F 65.77/17.35
eqt(pending, tuplenil(z0)) → F 65.77/17.35
eqt(release, nil) → F 65.77/17.35
eqt(release, a) → F 65.77/17.35
eqt(release, excl) → F 65.77/17.35
eqt(release, false) → F 65.77/17.35
eqt(release, lock) → F 65.77/17.35
eqt(release, locker) → F 65.77/17.35
eqt(release, mcrlrecord) → F 65.77/17.35
eqt(release, ok) → F 65.77/17.35
eqt(request, mcrlrecord) → F 65.77/17.35
eqt(request, ok) → F 65.77/17.35
eqt(request, pending) → F 65.77/17.35
eqt(request, release) → F 65.77/17.35
eqt(request, request) → T 65.77/17.35
eqt(request, resource) → F 65.77/17.35
eqt(request, tag) → F 65.77/17.35
eqt(request, true) → F 65.77/17.35
eqt(request, undefined) → F 65.77/17.35
eqt(request, pid(z0)) → F 65.77/17.35
eqt(request, int(z0)) → F 65.77/17.35
eqt(request, cons(z0, z1)) → F 65.77/17.35
eqt(request, tuple(z0, z1)) → F 65.77/17.35
eqt(request, tuplenil(z0)) → F 65.77/17.35
eqt(resource, nil) → F 65.77/17.35
eqt(resource, a) → F 65.77/17.35
eqt(resource, excl) → F 65.77/17.35
eqt(resource, false) → F 65.77/17.35
eqt(resource, lock) → F 65.77/17.35
eqt(resource, locker) → F 65.77/17.35
eqt(resource, mcrlrecord) → F 65.77/17.35
eqt(resource, ok) → F 65.77/17.35
eqt(resource, pending) → F 65.77/17.35
eqt(resource, release) → F 65.77/17.35
eqt(resource, request) → F 65.77/17.35
eqt(resource, resource) → T 65.77/17.35
eqt(resource, tag) → F 65.77/17.35
eqt(resource, true) → F 65.77/17.35
eqt(resource, undefined) → F 65.77/17.35
eqt(resource, pid(z0)) → F 65.77/17.35
eqt(resource, int(z0)) → F 65.77/17.35
eqt(resource, cons(z0, z1)) → F 65.77/17.35
eqt(resource, tuple(z0, z1)) → F 65.77/17.35
eqt(resource, tuplenil(z0)) → F 65.77/17.35
eqt(tag, nil) → F 65.77/17.35
eqt(tag, a) → F 65.77/17.35
eqt(tag, excl) → F 65.77/17.35
eqt(tag, false) → F 65.77/17.35
eqt(tag, lock) → F 65.77/17.35
eqt(tag, locker) → F 65.77/17.35
eqt(tag, mcrlrecord) → F 65.77/17.35
eqt(tag, ok) → F 65.77/17.35
eqt(tag, pending) → F 65.77/17.35
eqt(tag, release) → F 65.77/17.35
eqt(tag, request) → F 65.77/17.35
eqt(tag, resource) → F 65.77/17.35
eqt(tag, tag) → T 65.77/17.35
eqt(tag, true) → F 65.77/17.35
eqt(tag, undefined) → F 65.77/17.35
eqt(tag, pid(z0)) → F 65.77/17.35
eqt(tag, int(z0)) → F 65.77/17.35
eqt(tag, cons(z0, z1)) → F 65.77/17.35
eqt(tag, tuple(z0, z1)) → F 65.77/17.35
eqt(tag, tuplenil(z0)) → F 65.77/17.35
eqt(true, nil) → F 65.77/17.35
eqt(true, a) → F 65.77/17.35
eqt(true, excl) → F 65.77/17.35
eqt(true, false) → F 65.77/17.35
eqt(true, lock) → F 65.77/17.35
eqt(true, locker) → F 65.77/17.35
eqt(true, mcrlrecord) → F 65.77/17.35
eqt(true, ok) → F 65.77/17.35
eqt(true, pending) → F 65.77/17.35
eqt(true, release) → F 65.77/17.35
eqt(true, request) → F 65.77/17.35
eqt(true, resource) → F 65.77/17.35
eqt(true, tag) → F 65.77/17.35
eqt(true, true) → T 65.77/17.35
eqt(true, undefined) → F 65.77/17.35
eqt(true, pid(z0)) → F 65.77/17.35
eqt(true, int(z0)) → F 65.77/17.35
eqt(true, cons(z0, z1)) → F 65.77/17.35
eqt(true, tuple(z0, z1)) → F 65.77/17.35
eqt(true, tuplenil(z0)) → F 65.77/17.35
eqt(undefined, nil) → F 65.77/17.35
eqt(undefined, a) → F 65.77/17.35
eqt(undefined, tuplenil(z0)) → F 65.77/17.35
eqt(pid(z0), nil) → F 65.77/17.35
eqt(pid(z0), a) → F 65.77/17.35
eqt(pid(z0), excl) → F 65.77/17.35
eqt(pid(z0), false) → F 65.77/17.35
eqt(pid(z0), lock) → F 65.77/17.35
eqt(pid(z0), locker) → F 65.77/17.35
eqt(pid(z0), mcrlrecord) → F 65.77/17.35
eqt(pid(z0), ok) → F 65.77/17.35
eqt(pid(z0), pending) → F 65.77/17.35
eqt(pid(z0), release) → F 65.77/17.35
eqt(pid(z0), request) → F 65.77/17.35
eqt(pid(z0), resource) → F 65.77/17.35
eqt(pid(z0), tag) → F 65.77/17.35
eqt(pid(z0), true) → F 65.77/17.35
eqt(pid(z0), undefined) → F 65.77/17.35
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.35
eqt(pid(z0), int(z1)) → F 65.77/17.35
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.35
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.35
eqt(int(z0), nil) → F 65.77/17.35
eqt(int(z0), a) → F 65.77/17.35
eqt(int(z0), excl) → F 65.77/17.35
eqt(int(z0), false) → F 65.77/17.35
eqt(int(z0), lock) → F 65.77/17.35
eqt(int(z0), locker) → F 65.77/17.35
eqt(int(z0), mcrlrecord) → F 65.77/17.35
eqt(int(z0), ok) → F 65.77/17.35
eqt(int(z0), pending) → F 65.77/17.35
eqt(int(z0), release) → F 65.77/17.35
eqt(int(z0), request) → F 65.77/17.35
eqt(int(z0), resource) → F 65.77/17.35
eqt(int(z0), tag) → F 65.77/17.35
eqt(int(z0), true) → F 65.77/17.35
eqt(int(z0), undefined) → F 65.77/17.35
eqt(cons(z0, z1), resource) → F 65.77/17.35
eqt(cons(z0, z1), tag) → F 65.77/17.35
eqt(cons(z0, z1), true) → F 65.77/17.35
eqt(cons(z0, z1), undefined) → F 65.77/17.35
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.35
eqt(cons(z0, z1), int(z2)) → F 65.77/17.35
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.35
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), nil) → F 65.77/17.35
eqt(tuple(z0, z1), a) → F 65.77/17.35
eqt(tuple(z0, z1), excl) → F 65.77/17.35
eqt(tuple(z0, z1), false) → F 65.77/17.35
eqt(tuple(z0, z1), lock) → F 65.77/17.35
eqt(tuple(z0, z1), locker) → F 65.77/17.35
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.35
eqt(tuple(z0, z1), ok) → F 65.77/17.35
eqt(tuple(z0, z1), pending) → F 65.77/17.35
eqt(tuple(z0, z1), release) → F 65.77/17.35
eqt(tuple(z0, z1), request) → F 65.77/17.35
eqt(tuple(z0, z1), resource) → F 65.77/17.35
eqt(tuple(z0, z1), tag) → F 65.77/17.35
eqt(tuple(z0, z1), true) → F 65.77/17.35
eqt(tuple(z0, z1), undefined) → F 65.77/17.35
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.35
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.35
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.35
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.35
eqt(tuplenil(z0), nil) → F 65.77/17.35
eqt(tuplenil(z0), a) → F 65.77/17.35
eqt(tuplenil(z0), excl) → F 65.77/17.35
eqt(tuplenil(z0), false) → F 65.77/17.35
eqt(tuplenil(z0), lock) → F 65.77/17.35
eqt(tuplenil(z0), locker) → F 65.77/17.35
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.35
eqt(tuplenil(z0), ok) → F 65.77/17.35
eqt(tuplenil(z0), pending) → F 65.77/17.35
eqt(tuplenil(z0), release) → F 65.77/17.35
eqt(tuplenil(z0), request) → F 65.77/17.35
eqt(tuplenil(z0), resource) → F 65.77/17.35
eqt(tuplenil(z0), tag) → F 65.77/17.35
eqt(tuplenil(z0), true) → F 65.77/17.35
eqt(tuplenil(z0), undefined) → F 65.77/17.35
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.35
eqt(tuplenil(z0), int(z1)) → F 65.77/17.35
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.35
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.35
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.35
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.35
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.35
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.35
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.35
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.35
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.35
record_updates(z0, z1, nil) → z0 65.77/17.35
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.35
locker2_map_promote_pending(nil, z0) → nil 65.77/17.35
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.35
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.35
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.35
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.35
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.35
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.35
case0(z0, z1, z2) → z1 65.77/17.35
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.35
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.35
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.35
case1(z0, z1, z2, false) → z2 65.77/17.35
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.35
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.35
case4(z0, z1, z2) → false 65.77/17.35
locker2_obtainables(nil, z0) → true 65.77/17.35
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.35
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.35
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.35
locker2_check_available(z0, nil) → false 65.77/17.35
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.35
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.35
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.35
locker2_check_availables(nil, z0) → true 65.77/17.35
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.35
locker2_adduniq(nil, z0) → z0 65.77/17.35
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.35
subtract(z0, nil) → z0 65.77/17.35
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.35
delete(z0, nil) → nil 65.77/17.35
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.35
case8(z0, z1, z2, true) → z0 65.77/17.35
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.35
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.35
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.35
member(z0, nil) → false 65.77/17.35
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.35
case9(z0, z1, z2, true) → true 65.77/17.35
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.35
eqs(empty, empty) → T 65.77/17.35
eqs(empty, stack(z0, z1)) → F 65.77/17.35
eqs(stack(z0, z1), empty) → F 65.77/17.35
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.35
pushs(z0, z1) → stack(z0, z1) 65.77/17.35
pops(stack(z0, z1)) → z1 65.77/17.35
tops(stack(z0, z1)) → z0 65.77/17.35
istops(z0, empty) → F 65.77/17.35
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.35
eqc(nocalls, nocalls) → T 65.77/17.35
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.35
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.35
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.35
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.35
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.35
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.35
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.35
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.35
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.35
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.35
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.35
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.35
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.35
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.35
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.35
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.35
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.35
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.35
CASE2(z0, z1, true) → c335 65.77/17.35
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.35
DELETE(z0, cons(z1, z2)) → c352 65.77/17.35
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.35
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.35
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.35
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.35
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.35
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.35
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4))
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.35
CASE2(z0, z1, true) → c335 65.77/17.35
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.35
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.35
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.35
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.37
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.37
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.37
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.37
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.37
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.37
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.37
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.37
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.37
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.37
DELETE(z0, cons(z1, z2)) → c352 65.77/17.37
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.37
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.37
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.37
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.37
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.37
65.77/17.37

(25) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.37
member(z0, nil) → false 65.77/17.37
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.37
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.37
subtract(z0, nil) → z0 65.77/17.37
delete(z0, nil) → nil 65.77/17.37
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.37
eqt(nil, undefined) → F 65.77/17.37
eqt(nil, pid(z0)) → F 65.77/17.37
eqt(nil, int(z0)) → F 65.77/17.37
eqt(nil, cons(z0, z1)) → F 65.77/17.37
eqt(nil, tuple(z0, z1)) → F 65.77/17.37
eqt(nil, tuplenil(z0)) → F 65.77/17.37
eqt(a, nil) → F 65.77/17.37
eqt(a, a) → T 65.77/17.37
eqt(a, excl) → F 65.77/17.37
eqt(a, false) → F 65.77/17.37
eqt(a, lock) → F 65.77/17.37
eqt(a, locker) → F 65.77/17.37
eqt(a, mcrlrecord) → F 65.77/17.37
eqt(a, ok) → F 65.77/17.37
eqt(a, pending) → F 65.77/17.37
eqt(a, release) → F 65.77/17.37
eqt(a, request) → F 65.77/17.37
eqt(a, resource) → F 65.77/17.37
eqt(a, tag) → F 65.77/17.37
eqt(a, true) → F 65.77/17.37
eqt(a, undefined) → F 65.77/17.37
eqt(a, pid(z0)) → F 65.77/17.37
eqt(a, int(z0)) → F 65.77/17.37
eqt(a, cons(z0, z1)) → F 65.77/17.37
eqt(a, tuple(z0, z1)) → F 65.77/17.37
eqt(a, tuplenil(z0)) → F 65.77/17.37
eqt(excl, nil) → F 65.77/17.37
eqt(excl, a) → F 65.77/17.37
eqt(excl, excl) → T 65.77/17.37
eqt(excl, false) → F 65.77/17.37
eqt(excl, lock) → F 65.77/17.37
eqt(excl, locker) → F 65.77/17.37
eqt(excl, mcrlrecord) → F 65.77/17.37
eqt(excl, ok) → F 65.77/17.37
eqt(excl, pending) → F 65.77/17.37
eqt(excl, release) → F 65.77/17.37
eqt(excl, request) → F 65.77/17.37
eqt(excl, resource) → F 65.77/17.37
eqt(excl, tag) → F 65.77/17.37
eqt(excl, true) → F 65.77/17.37
eqt(excl, undefined) → F 65.77/17.37
eqt(excl, pid(z0)) → F 65.77/17.37
eqt(excl, eqt(false, int(z0))) → F 65.77/17.37
eqt(false, cons(z0, z1)) → F 65.77/17.37
eqt(false, tuple(z0, z1)) → F 65.77/17.37
eqt(false, tuplenil(z0)) → F 65.77/17.37
eqt(lock, nil) → F 65.77/17.37
eqt(lock, a) → F 65.77/17.37
eqt(lock, excl) → F 65.77/17.37
eqt(lock, false) → F 65.77/17.37
eqt(lock, lock) → T 65.77/17.37
eqt(lock, locker) → F 65.77/17.37
eqt(lock, mcrlrecord) → F 65.77/17.37
eqt(lock, ok) → F 65.77/17.37
eqt(lock, pending) → F 65.77/17.37
eqt(lock, release) → F 65.77/17.37
eqt(lock, request) → F 65.77/17.37
eqt(lock, resource) → F 65.77/17.37
eqt(lock, tag) → F 65.77/17.37
eqt(lock, true) → F 65.77/17.37
eqt(lock, undefined) → F 65.77/17.37
eqt(lock, pid(z0)) → F 65.77/17.37
eqt(lock, int(z0)) → F 65.77/17.37
eqt(lock, cons(z0, z1)) → F 65.77/17.37
eqt(lock, tuple(z0, z1)) → F 65.77/17.37
eqt(lock, tuplenil(z0)) → F 65.77/17.37
eqt(locker, nil) → F 65.77/17.37
eqt(locker, a) → F 65.77/17.37
eqt(locker, excl) → F 65.77/17.37
eqt(locker, false) → F 65.77/17.37
eqt(locker, lock) → F 65.77/17.37
eqt(locker, locker) → T 65.77/17.37
eqt(locker, mcrlrecord) → F 65.77/17.37
eqt(locker, ok) → F 65.77/17.37
eqt(locker, pending) → F 65.77/17.37
eqt(locker, release) → F 65.77/17.37
eqt(locker, request) → F 65.77/17.37
eqt(locker, resource) → F 65.77/17.37
eqt(locker, tag) → F 65.77/17.37
eqt(locker, true) → F 65.77/17.37
eqt(locker, undefined) → F 65.77/17.37
eqt(locker, pid(z0)) → F 65.77/17.37
eqt(locker, int(z0)) → F 65.77/17.37
eqt(locker, cons(z0, z1)) → F 65.77/17.37
eqt(locker, tuple(z0, z1)) → F 65.77/17.37
eqt(locker, tuplenil(z0)) → F 65.77/17.37
eqt(mcrlrecord, nil) → F 65.77/17.37
eqt(mcrlrecord, a) → F 65.77/17.37
eqt(mcrlrecord, excl) → F 65.77/17.37
eqt(mcrlrecord, false) → F 65.77/17.37
eqt(mcrlrecord, lock) → F 65.77/17.37
eqt(mcrlrecord, locker) → F 65.77/17.37
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.37
eqt(mcrlrecord, ok) → F 65.77/17.37
eqt(mcrlrecord, pending) → F 65.77/17.37
eqt(mcrlrecord, release) → F 65.77/17.37
eqt(mcrlrecord, request) → F 65.77/17.37
eqt(mcrlrecord, resource) → F 65.77/17.37
eqt(ok, resource) → F 65.77/17.37
eqt(ok, tag) → F 65.77/17.37
eqt(ok, true) → F 65.77/17.37
eqt(ok, undefined) → F 65.77/17.37
eqt(ok, pid(z0)) → F 65.77/17.37
eqt(ok, int(z0)) → F 65.77/17.37
eqt(ok, cons(z0, z1)) → F 65.77/17.37
eqt(ok, tuple(z0, z1)) → F 65.77/17.37
eqt(ok, tuplenil(z0)) → F 65.77/17.37
eqt(pending, nil) → F 65.77/17.37
eqt(pending, a) → F 65.77/17.37
eqt(pending, excl) → F 65.77/17.37
eqt(pending, false) → F 65.77/17.37
eqt(pending, lock) → F 65.77/17.37
eqt(pending, locker) → F 65.77/17.37
eqt(pending, mcrlrecord) → F 65.77/17.37
eqt(pending, ok) → F 65.77/17.37
eqt(pending, pending) → T 65.77/17.37
eqt(pending, release) → F 65.77/17.37
eqt(pending, request) → F 65.77/17.37
eqt(pending, resource) → F 65.77/17.37
eqt(pending, tag) → F 65.77/17.37
eqt(pending, true) → F 65.77/17.37
eqt(pending, undefined) → F 65.77/17.37
eqt(pending, pid(z0)) → F 65.77/17.37
eqt(pending, int(z0)) → F 65.77/17.37
eqt(pending, cons(z0, z1)) → F 65.77/17.37
eqt(pending, tuple(z0, z1)) → F 65.77/17.37
eqt(pending, tuplenil(z0)) → F 65.77/17.37
eqt(release, nil) → F 65.77/17.37
eqt(release, a) → F 65.77/17.37
eqt(release, excl) → F 65.77/17.37
eqt(release, false) → F 65.77/17.37
eqt(release, lock) → F 65.77/17.37
eqt(release, locker) → F 65.77/17.37
eqt(release, mcrlrecord) → F 65.77/17.37
eqt(release, ok) → F 65.77/17.37
eqt(request, mcrlrecord) → F 65.77/17.37
eqt(request, ok) → F 65.77/17.37
eqt(request, pending) → F 65.77/17.37
eqt(request, release) → F 65.77/17.37
eqt(request, request) → T 65.77/17.37
eqt(request, resource) → F 65.77/17.37
eqt(request, tag) → F 65.77/17.37
eqt(request, true) → F 65.77/17.37
eqt(request, undefined) → F 65.77/17.37
eqt(request, pid(z0)) → F 65.77/17.37
eqt(request, int(z0)) → F 65.77/17.37
eqt(request, cons(z0, z1)) → F 65.77/17.37
eqt(request, tuple(z0, z1)) → F 65.77/17.37
eqt(request, tuplenil(z0)) → F 65.77/17.37
eqt(resource, nil) → F 65.77/17.37
eqt(resource, a) → F 65.77/17.37
eqt(resource, excl) → F 65.77/17.37
eqt(resource, false) → F 65.77/17.37
eqt(resource, lock) → F 65.77/17.37
eqt(resource, locker) → F 65.77/17.37
eqt(resource, mcrlrecord) → F 65.77/17.37
eqt(resource, ok) → F 65.77/17.37
eqt(resource, pending) → F 65.77/17.37
eqt(resource, release) → F 65.77/17.37
eqt(resource, request) → F 65.77/17.37
eqt(resource, resource) → T 65.77/17.37
eqt(resource, tag) → F 65.77/17.37
eqt(resource, true) → F 65.77/17.37
eqt(resource, undefined) → F 65.77/17.37
eqt(resource, pid(z0)) → F 65.77/17.37
eqt(resource, int(z0)) → F 65.77/17.37
eqt(resource, cons(z0, z1)) → F 65.77/17.37
eqt(resource, tuple(z0, z1)) → F 65.77/17.37
eqt(resource, tuplenil(z0)) → F 65.77/17.37
eqt(tag, nil) → F 65.77/17.37
eqt(tag, a) → F 65.77/17.37
eqt(tag, excl) → F 65.77/17.37
eqt(tag, false) → F 65.77/17.37
eqt(tag, lock) → F 65.77/17.37
eqt(tag, locker) → F 65.77/17.37
eqt(tag, mcrlrecord) → F 65.77/17.37
eqt(tag, ok) → F 65.77/17.37
eqt(tag, pending) → F 65.77/17.37
eqt(tag, release) → F 65.77/17.37
eqt(tag, request) → F 65.77/17.37
eqt(tag, resource) → F 65.77/17.37
eqt(tag, tag) → T 65.77/17.37
eqt(tag, true) → F 65.77/17.37
eqt(tag, undefined) → F 65.77/17.37
eqt(tag, pid(z0)) → F 65.77/17.37
eqt(tag, int(z0)) → F 65.77/17.37
eqt(tag, cons(z0, z1)) → F 65.77/17.37
eqt(tag, tuple(z0, z1)) → F 65.77/17.37
eqt(tag, tuplenil(z0)) → F 65.77/17.37
eqt(true, nil) → F 65.77/17.37
eqt(true, a) → F 65.77/17.37
eqt(true, excl) → F 65.77/17.37
eqt(true, false) → F 65.77/17.37
eqt(true, lock) → F 65.77/17.37
eqt(true, locker) → F 65.77/17.37
eqt(true, mcrlrecord) → F 65.77/17.37
eqt(true, ok) → F 65.77/17.37
eqt(true, pending) → F 65.77/17.37
eqt(true, release) → F 65.77/17.37
eqt(true, request) → F 65.77/17.37
eqt(true, resource) → F 65.77/17.37
eqt(true, tag) → F 65.77/17.37
eqt(true, true) → T 65.77/17.37
eqt(true, undefined) → F 65.77/17.37
eqt(true, pid(z0)) → F 65.77/17.37
eqt(true, int(z0)) → F 65.77/17.37
eqt(true, cons(z0, z1)) → F 65.77/17.37
eqt(true, tuple(z0, z1)) → F 65.77/17.37
eqt(true, tuplenil(z0)) → F 65.77/17.37
eqt(undefined, nil) → F 65.77/17.37
eqt(undefined, a) → F 65.77/17.37
eqt(undefined, tuplenil(z0)) → F 65.77/17.37
eqt(pid(z0), nil) → F 65.77/17.37
eqt(pid(z0), a) → F 65.77/17.37
eqt(pid(z0), excl) → F 65.77/17.37
eqt(pid(z0), false) → F 65.77/17.37
eqt(pid(z0), lock) → F 65.77/17.37
eqt(pid(z0), locker) → F 65.77/17.37
eqt(pid(z0), mcrlrecord) → F 65.77/17.37
eqt(pid(z0), ok) → F 65.77/17.37
eqt(pid(z0), pending) → F 65.77/17.37
eqt(pid(z0), release) → F 65.77/17.37
eqt(pid(z0), request) → F 65.77/17.37
eqt(pid(z0), resource) → F 65.77/17.37
eqt(pid(z0), tag) → F 65.77/17.37
eqt(pid(z0), true) → F 65.77/17.37
eqt(pid(z0), undefined) → F 65.77/17.37
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.37
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.37
eqt(pid(z0), int(z1)) → F 65.77/17.37
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.37
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.37
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.37
eqt(int(z0), nil) → F 65.77/17.37
eqt(int(z0), a) → F 65.77/17.37
eqt(int(z0), excl) → F 65.77/17.37
eqt(int(z0), false) → F 65.77/17.37
eqt(int(z0), lock) → F 65.77/17.37
eqt(int(z0), locker) → F 65.77/17.37
eqt(int(z0), mcrlrecord) → F 65.77/17.37
eqt(int(z0), ok) → F 65.77/17.37
eqt(int(z0), pending) → F 65.77/17.37
eqt(int(z0), release) → F 65.77/17.37
eqt(int(z0), request) → F 65.77/17.37
eqt(int(z0), resource) → F 65.77/17.37
eqt(int(z0), tag) → F 65.77/17.37
eqt(int(z0), true) → F 65.77/17.37
eqt(int(z0), undefined) → F 65.77/17.37
eqt(cons(z0, z1), resource) → F 65.77/17.37
eqt(cons(z0, z1), tag) → F 65.77/17.37
eqt(cons(z0, z1), true) → F 65.77/17.37
eqt(cons(z0, z1), undefined) → F 65.77/17.37
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.37
eqt(cons(z0, z1), int(z2)) → F 65.77/17.37
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.37
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.37
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.37
eqt(tuple(z0, z1), nil) → F 65.77/17.37
eqt(tuple(z0, z1), a) → F 65.77/17.37
eqt(tuple(z0, z1), excl) → F 65.77/17.37
eqt(tuple(z0, z1), false) → F 65.77/17.37
eqt(tuple(z0, z1), lock) → F 65.77/17.37
eqt(tuple(z0, z1), locker) → F 65.77/17.37
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.37
eqt(tuple(z0, z1), ok) → F 65.77/17.37
eqt(tuple(z0, z1), pending) → F 65.77/17.37
eqt(tuple(z0, z1), release) → F 65.77/17.37
eqt(tuple(z0, z1), request) → F 65.77/17.37
eqt(tuple(z0, z1), resource) → F 65.77/17.37
eqt(tuple(z0, z1), tag) → F 65.77/17.37
eqt(tuple(z0, z1), true) → F 65.77/17.37
eqt(tuple(z0, z1), undefined) → F 65.77/17.37
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.37
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.37
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.37
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.37
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.37
eqt(tuplenil(z0), nil) → F 65.77/17.37
eqt(tuplenil(z0), a) → F 65.77/17.37
eqt(tuplenil(z0), excl) → F 65.77/17.37
eqt(tuplenil(z0), false) → F 65.77/17.37
eqt(tuplenil(z0), lock) → F 65.77/17.37
eqt(tuplenil(z0), locker) → F 65.77/17.37
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.37
eqt(tuplenil(z0), ok) → F 65.77/17.37
eqt(tuplenil(z0), pending) → F 65.77/17.37
eqt(tuplenil(z0), release) → F 65.77/17.37
eqt(tuplenil(z0), request) → F 65.77/17.37
eqt(tuplenil(z0), resource) → F 65.77/17.37
eqt(tuplenil(z0), tag) → F 65.77/17.37
eqt(tuplenil(z0), true) → F 65.77/17.37
eqt(tuplenil(z0), undefined) → F 65.77/17.37
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.37
eqt(tuplenil(z0), int(z1)) → F 65.77/17.37
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.37
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.37
and(T, z0) → z0 65.77/17.37
and(z0, T) → z0 65.77/17.37
and(F, z0) → F 65.77/17.37
and(z0, F) → F 65.77/17.37
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.38
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.38
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.38
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.38
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.38
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.38
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.38
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.38
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.38
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.38
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.38
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.38
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.38
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.38
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.38
CASE2(z0, z1, true) → c335 65.77/17.38
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.38
DELETE(z0, cons(z1, z2)) → c352 65.77/17.38
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.38
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.38
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.38
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.38
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.38
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.38
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.38
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.38
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 65.77/17.38

POL(APPEND(x1, x2)) = [5]x1    65.77/17.38
POL(CASE1(x1, x2, x3, x4)) = x2 + x3    65.77/17.38
POL(CASE2(x1, x2, x3)) = x1 + [3]x2    65.77/17.38
POL(DELETE(x1, x2)) = 0    65.77/17.38
POL(ELEMENT(x1, x2)) = 0    65.77/17.38
POL(EQC(x1, x2)) = [4]x2    65.77/17.38
POL(EQS(x1, x2)) = [2]    65.77/17.38
POL(EQT(x1, x2)) = 0    65.77/17.38
POL(F) = [3]    65.77/17.38
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [5]x1 + [3]x2 + [2]x3    65.77/17.38
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = [3]    65.77/17.38
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = [5]x1    65.77/17.38
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = [4]x1    65.77/17.38
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    65.77/17.38
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [5]    65.77/17.38
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [3] + [5]x1 + [3]x2    65.77/17.38
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [3] + [5]x1 + [4]x2    65.77/17.38
POL(MEMBER(x1, x2)) = x2    65.77/17.38
POL(PUSH(x1, x2, x3)) = [5] + [5]x1 + [3]x2    65.77/17.38
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [1] + [5]x1 + [2]x2    65.77/17.38
POL(RECORD_UPDATES(x1, x2, x3)) = x2    65.77/17.38
POL(SUBTRACT(x1, x2)) = 0    65.77/17.38
POL(T) = [3]    65.77/17.38
POL(a) = [3]    65.77/17.38
POL(and(x1, x2)) = [3]    65.77/17.38
POL(append(x1, x2)) = [3]    65.77/17.38
POL(c(x1)) = x1    65.77/17.38
POL(c245(x1)) = x1    65.77/17.38
POL(c271(x1, x2)) = x1 + x2    65.77/17.38
POL(c292(x1, x2)) = x1 + x2    65.77/17.38
POL(c313(x1)) = x1    65.77/17.38
POL(c316(x1)) = x1    65.77/17.38
POL(c321(x1)) = x1    65.77/17.38
POL(c323(x1, x2)) = x1 + x2    65.77/17.38
POL(c325(x1)) = x1    65.77/17.38
POL(c327) = 0    65.77/17.38
POL(c332(x1)) = x1    65.77/17.38
POL(c334(x1)) = x1    65.77/17.38
POL(c335) = 0    65.77/17.38
POL(c342) = 0    65.77/17.38
POL(c346(x1, x2)) = x1 + x2    65.77/17.38
POL(c348(x1)) = x1    65.77/17.38
POL(c350(x1, x2)) = x1 + x2    65.77/17.38
POL(c352) = 0    65.77/17.38
POL(c358) = 0    65.77/17.38
POL(c364(x1, x2)) = x1 + x2    65.77/17.38
POL(c373(x1, x2, x3)) = x1 + x2 + x3    65.77/17.38
POL(c376) = 0    65.77/17.38
POL(calls(x1, x2, x3)) = [4] + x1 + x3    65.77/17.38
POL(case8(x1, x2, x3, x4)) = [2] + [2]x1 + [4]x4    65.77/17.38
POL(case9(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3    65.77/17.38
POL(cons(x1, x2)) = [4] + x2    65.77/17.38
POL(delete(x1, x2)) = [4] + [3]x2    65.77/17.38
POL(eqt(x1, x2)) = 0    65.77/17.38
POL(equal(x1, x2)) = [3]    65.77/17.38
POL(excl) = 0    65.77/17.38
POL(false) = [5]    65.77/17.38
POL(gen_modtageq(x1, x2)) = 0    65.77/17.38
POL(int(x1)) = [3]    65.77/17.38
POL(lock) = 0    65.77/17.38
POL(locker) = [3]    65.77/17.38
POL(mcrlrecord) = [1]    65.77/17.38
POL(member(x1, x2)) = 0    65.77/17.38
POL(nil) = [4]    65.77/17.38
POL(ok) = [3]    65.77/17.38
POL(pending) = 0    65.77/17.38
POL(pid(x1)) = x1    65.77/17.38
POL(record_extract(x1, x2, x3)) = 0    65.77/17.38
POL(record_update(x1, x2, x3, x4)) = 0    65.77/17.38
POL(release) = [3]    65.77/17.38
POL(request) = [3]    65.77/17.38
POL(resource) = 0    65.77/17.38
POL(s(x1)) = 0    65.77/17.38
POL(stack(x1, x2)) = x2    65.77/17.38
POL(subtract(x1, x2)) = [3]    65.77/17.38
POL(tag) = [3]    65.77/17.38
POL(true) = 0    65.77/17.38
POL(tuple(x1, x2)) = 0    65.77/17.38
POL(tuplenil(x1)) = 0    65.77/17.38
POL(undefined) = [3]   
65.77/17.38
65.77/17.38

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 65.77/17.38
or(F, T) → T 65.77/17.38
or(T, F) → T 65.77/17.38
or(F, F) → F 65.77/17.38
and(T, z0) → z0 65.77/17.38
and(z0, T) → z0 65.77/17.38
and(F, z0) → F 65.77/17.38
and(z0, F) → F 65.77/17.38
imp(T, z0) → z0 65.77/17.38
imp(F, z0) → T 65.77/17.38
not(T) → F 65.77/17.38
not(F) → T 65.77/17.38
if(T, z0, z1) → z0 65.77/17.38
if(F, z0, z1) → z1 65.77/17.38
eq(T, T) → T 65.77/17.38
eq(F, F) → T 65.77/17.38
eq(T, F) → F 65.77/17.38
eq(F, T) → F 65.77/17.38
eqt(nil, undefined) → F 65.77/17.38
eqt(nil, pid(z0)) → F 65.77/17.38
eqt(nil, int(z0)) → F 65.77/17.38
eqt(nil, cons(z0, z1)) → F 65.77/17.38
eqt(nil, tuple(z0, z1)) → F 65.77/17.38
eqt(nil, tuplenil(z0)) → F 65.77/17.38
eqt(a, nil) → F 65.77/17.38
eqt(a, a) → T 65.77/17.38
eqt(a, excl) → F 65.77/17.38
eqt(a, false) → F 65.77/17.38
eqt(a, lock) → F 65.77/17.38
eqt(a, locker) → F 65.77/17.38
eqt(a, mcrlrecord) → F 65.77/17.38
eqt(a, ok) → F 65.77/17.38
eqt(a, pending) → F 65.77/17.38
eqt(a, release) → F 65.77/17.38
eqt(a, request) → F 65.77/17.38
eqt(a, resource) → F 65.77/17.38
eqt(a, tag) → F 65.77/17.38
eqt(a, true) → F 65.77/17.38
eqt(a, undefined) → F 65.77/17.38
eqt(a, pid(z0)) → F 65.77/17.38
eqt(a, int(z0)) → F 65.77/17.38
eqt(a, cons(z0, z1)) → F 65.77/17.38
eqt(a, tuple(z0, z1)) → F 65.77/17.38
eqt(a, tuplenil(z0)) → F 65.77/17.38
eqt(excl, nil) → F 65.77/17.38
eqt(excl, a) → F 65.77/17.38
eqt(excl, excl) → T 65.77/17.38
eqt(excl, false) → F 65.77/17.38
eqt(excl, lock) → F 65.77/17.38
eqt(excl, locker) → F 65.77/17.38
eqt(excl, mcrlrecord) → F 65.77/17.38
eqt(excl, ok) → F 65.77/17.38
eqt(excl, pending) → F 65.77/17.38
eqt(excl, release) → F 65.77/17.38
eqt(excl, request) → F 65.77/17.38
eqt(excl, resource) → F 65.77/17.38
eqt(excl, tag) → F 65.77/17.38
eqt(excl, true) → F 65.77/17.38
eqt(excl, undefined) → F 65.77/17.38
eqt(excl, pid(z0)) → F 65.77/17.38
eqt(excl, eqt(false, int(z0))) → F 65.77/17.38
eqt(false, cons(z0, z1)) → F 65.77/17.38
eqt(false, tuple(z0, z1)) → F 65.77/17.38
eqt(false, tuplenil(z0)) → F 65.77/17.38
eqt(lock, nil) → F 65.77/17.38
eqt(lock, a) → F 65.77/17.38
eqt(lock, excl) → F 65.77/17.38
eqt(lock, false) → F 65.77/17.38
eqt(lock, lock) → T 65.77/17.38
eqt(lock, locker) → F 65.77/17.38
eqt(lock, mcrlrecord) → F 65.77/17.38
eqt(lock, ok) → F 65.77/17.38
eqt(lock, pending) → F 65.77/17.38
eqt(lock, release) → F 65.77/17.38
eqt(lock, request) → F 65.77/17.38
eqt(lock, resource) → F 65.77/17.38
eqt(lock, tag) → F 65.77/17.38
eqt(lock, true) → F 65.77/17.38
eqt(lock, undefined) → F 65.77/17.38
eqt(lock, pid(z0)) → F 65.77/17.38
eqt(lock, int(z0)) → F 65.77/17.38
eqt(lock, cons(z0, z1)) → F 65.77/17.38
eqt(lock, tuple(z0, z1)) → F 65.77/17.38
eqt(lock, tuplenil(z0)) → F 65.77/17.38
eqt(locker, nil) → F 65.77/17.38
eqt(locker, a) → F 65.77/17.38
eqt(locker, excl) → F 65.77/17.38
eqt(locker, false) → F 65.77/17.38
eqt(locker, lock) → F 65.77/17.38
eqt(locker, locker) → T 65.77/17.38
eqt(locker, mcrlrecord) → F 65.77/17.38
eqt(locker, ok) → F 65.77/17.38
eqt(locker, pending) → F 65.77/17.38
eqt(locker, release) → F 65.77/17.38
eqt(locker, request) → F 65.77/17.38
eqt(locker, resource) → F 65.77/17.38
eqt(locker, tag) → F 65.77/17.38
eqt(locker, true) → F 65.77/17.38
eqt(locker, undefined) → F 65.77/17.38
eqt(locker, pid(z0)) → F 65.77/17.38
eqt(locker, int(z0)) → F 65.77/17.38
eqt(locker, cons(z0, z1)) → F 65.77/17.38
eqt(locker, tuple(z0, z1)) → F 65.77/17.38
eqt(locker, tuplenil(z0)) → F 65.77/17.38
eqt(mcrlrecord, nil) → F 65.77/17.38
eqt(mcrlrecord, a) → F 65.77/17.38
eqt(mcrlrecord, excl) → F 65.77/17.38
eqt(mcrlrecord, false) → F 65.77/17.38
eqt(mcrlrecord, lock) → F 65.77/17.38
eqt(mcrlrecord, locker) → F 65.77/17.38
eqt(mcrlrecord, mcrlrecord) → T 65.77/17.38
eqt(mcrlrecord, ok) → F 65.77/17.38
eqt(mcrlrecord, pending) → F 65.77/17.38
eqt(mcrlrecord, release) → F 65.77/17.38
eqt(mcrlrecord, request) → F 65.77/17.38
eqt(mcrlrecord, resource) → F 65.77/17.38
eqt(ok, resource) → F 65.77/17.38
eqt(ok, tag) → F 65.77/17.38
eqt(ok, true) → F 65.77/17.38
eqt(ok, undefined) → F 65.77/17.38
eqt(ok, pid(z0)) → F 65.77/17.38
eqt(ok, int(z0)) → F 65.77/17.38
eqt(ok, cons(z0, z1)) → F 65.77/17.38
eqt(ok, tuple(z0, z1)) → F 65.77/17.38
eqt(ok, tuplenil(z0)) → F 65.77/17.38
eqt(pending, nil) → F 65.77/17.38
eqt(pending, a) → F 65.77/17.38
eqt(pending, excl) → F 65.77/17.38
eqt(pending, false) → F 65.77/17.38
eqt(pending, lock) → F 65.77/17.38
eqt(pending, locker) → F 65.77/17.38
eqt(pending, mcrlrecord) → F 65.77/17.38
eqt(pending, ok) → F 65.77/17.38
eqt(pending, pending) → T 65.77/17.38
eqt(pending, release) → F 65.77/17.38
eqt(pending, request) → F 65.77/17.38
eqt(pending, resource) → F 65.77/17.38
eqt(pending, tag) → F 65.77/17.38
eqt(pending, true) → F 65.77/17.38
eqt(pending, undefined) → F 65.77/17.38
eqt(pending, pid(z0)) → F 65.77/17.38
eqt(pending, int(z0)) → F 65.77/17.38
eqt(pending, cons(z0, z1)) → F 65.77/17.38
eqt(pending, tuple(z0, z1)) → F 65.77/17.38
eqt(pending, tuplenil(z0)) → F 65.77/17.38
eqt(release, nil) → F 65.77/17.38
eqt(release, a) → F 65.77/17.38
eqt(release, excl) → F 65.77/17.38
eqt(release, false) → F 65.77/17.38
eqt(release, lock) → F 65.77/17.38
eqt(release, locker) → F 65.77/17.38
eqt(release, mcrlrecord) → F 65.77/17.38
eqt(release, ok) → F 65.77/17.38
eqt(request, mcrlrecord) → F 65.77/17.38
eqt(request, ok) → F 65.77/17.38
eqt(request, pending) → F 65.77/17.38
eqt(request, release) → F 65.77/17.38
eqt(request, request) → T 65.77/17.38
eqt(request, resource) → F 65.77/17.38
eqt(request, tag) → F 65.77/17.38
eqt(request, true) → F 65.77/17.38
eqt(request, undefined) → F 65.77/17.38
eqt(request, pid(z0)) → F 65.77/17.38
eqt(request, int(z0)) → F 65.77/17.38
eqt(request, cons(z0, z1)) → F 65.77/17.38
eqt(request, tuple(z0, z1)) → F 65.77/17.38
eqt(request, tuplenil(z0)) → F 65.77/17.38
eqt(resource, nil) → F 65.77/17.38
eqt(resource, a) → F 65.77/17.38
eqt(resource, excl) → F 65.77/17.38
eqt(resource, false) → F 65.77/17.38
eqt(resource, lock) → F 65.77/17.38
eqt(resource, locker) → F 65.77/17.38
eqt(resource, mcrlrecord) → F 65.77/17.38
eqt(resource, ok) → F 65.77/17.38
eqt(resource, pending) → F 65.77/17.38
eqt(resource, release) → F 65.77/17.38
eqt(resource, request) → F 65.77/17.38
eqt(resource, resource) → T 65.77/17.38
eqt(resource, tag) → F 65.77/17.38
eqt(resource, true) → F 65.77/17.38
eqt(resource, undefined) → F 65.77/17.38
eqt(resource, pid(z0)) → F 65.77/17.38
eqt(resource, int(z0)) → F 65.77/17.38
eqt(resource, cons(z0, z1)) → F 65.77/17.38
eqt(resource, tuple(z0, z1)) → F 65.77/17.38
eqt(resource, tuplenil(z0)) → F 65.77/17.38
eqt(tag, nil) → F 65.77/17.38
eqt(tag, a) → F 65.77/17.38
eqt(tag, excl) → F 65.77/17.38
eqt(tag, false) → F 65.77/17.38
eqt(tag, lock) → F 65.77/17.38
eqt(tag, locker) → F 65.77/17.38
eqt(tag, mcrlrecord) → F 65.77/17.38
eqt(tag, ok) → F 65.77/17.38
eqt(tag, pending) → F 65.77/17.38
eqt(tag, release) → F 65.77/17.38
eqt(tag, request) → F 65.77/17.38
eqt(tag, resource) → F 65.77/17.38
eqt(tag, tag) → T 65.77/17.38
eqt(tag, true) → F 65.77/17.38
eqt(tag, undefined) → F 65.77/17.38
eqt(tag, pid(z0)) → F 65.77/17.38
eqt(tag, int(z0)) → F 65.77/17.38
eqt(tag, cons(z0, z1)) → F 65.77/17.38
eqt(tag, tuple(z0, z1)) → F 65.77/17.38
eqt(tag, tuplenil(z0)) → F 65.77/17.38
eqt(true, nil) → F 65.77/17.38
eqt(true, a) → F 65.77/17.38
eqt(true, excl) → F 65.77/17.38
eqt(true, false) → F 65.77/17.38
eqt(true, lock) → F 65.77/17.38
eqt(true, locker) → F 65.77/17.38
eqt(true, mcrlrecord) → F 65.77/17.38
eqt(true, ok) → F 65.77/17.38
eqt(true, pending) → F 65.77/17.38
eqt(true, release) → F 65.77/17.38
eqt(true, request) → F 65.77/17.38
eqt(true, resource) → F 65.77/17.38
eqt(true, tag) → F 65.77/17.38
eqt(true, true) → T 65.77/17.38
eqt(true, undefined) → F 65.77/17.38
eqt(true, pid(z0)) → F 65.77/17.38
eqt(true, int(z0)) → F 65.77/17.38
eqt(true, cons(z0, z1)) → F 65.77/17.38
eqt(true, tuple(z0, z1)) → F 65.77/17.38
eqt(true, tuplenil(z0)) → F 65.77/17.38
eqt(undefined, nil) → F 65.77/17.38
eqt(undefined, a) → F 65.77/17.38
eqt(undefined, tuplenil(z0)) → F 65.77/17.38
eqt(pid(z0), nil) → F 65.77/17.38
eqt(pid(z0), a) → F 65.77/17.38
eqt(pid(z0), excl) → F 65.77/17.38
eqt(pid(z0), false) → F 65.77/17.38
eqt(pid(z0), lock) → F 65.77/17.38
eqt(pid(z0), locker) → F 65.77/17.38
eqt(pid(z0), mcrlrecord) → F 65.77/17.38
eqt(pid(z0), ok) → F 65.77/17.38
eqt(pid(z0), pending) → F 65.77/17.38
eqt(pid(z0), release) → F 65.77/17.38
eqt(pid(z0), request) → F 65.77/17.38
eqt(pid(z0), resource) → F 65.77/17.38
eqt(pid(z0), tag) → F 65.77/17.38
eqt(pid(z0), true) → F 65.77/17.38
eqt(pid(z0), undefined) → F 65.77/17.38
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 65.77/17.38
eqt(pid(z0), int(z1)) → F 65.77/17.38
eqt(pid(z0), cons(z1, z2)) → F 65.77/17.38
eqt(pid(z0), tuple(z1, z2)) → F 65.77/17.38
eqt(pid(z0), tuplenil(z1)) → F 65.77/17.38
eqt(int(z0), nil) → F 65.77/17.38
eqt(int(z0), a) → F 65.77/17.38
eqt(int(z0), excl) → F 65.77/17.38
eqt(int(z0), false) → F 65.77/17.38
eqt(int(z0), lock) → F 65.77/17.38
eqt(int(z0), locker) → F 65.77/17.38
eqt(int(z0), mcrlrecord) → F 65.77/17.38
eqt(int(z0), ok) → F 65.77/17.38
eqt(int(z0), pending) → F 65.77/17.38
eqt(int(z0), release) → F 65.77/17.38
eqt(int(z0), request) → F 65.77/17.38
eqt(int(z0), resource) → F 65.77/17.38
eqt(int(z0), tag) → F 65.77/17.39
eqt(int(z0), true) → F 65.77/17.39
eqt(int(z0), undefined) → F 65.77/17.39
eqt(cons(z0, z1), resource) → F 65.77/17.39
eqt(cons(z0, z1), tag) → F 65.77/17.39
eqt(cons(z0, z1), true) → F 65.77/17.39
eqt(cons(z0, z1), undefined) → F 65.77/17.39
eqt(cons(z0, z1), pid(z2)) → F 65.77/17.39
eqt(cons(z0, z1), int(z2)) → F 65.77/17.39
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.39
eqt(cons(z0, z1), tuple(z2, z3)) → F 65.77/17.39
eqt(cons(z0, z1), tuplenil(z2)) → F 65.77/17.39
eqt(tuple(z0, z1), nil) → F 65.77/17.39
eqt(tuple(z0, z1), a) → F 65.77/17.39
eqt(tuple(z0, z1), excl) → F 65.77/17.39
eqt(tuple(z0, z1), false) → F 65.77/17.39
eqt(tuple(z0, z1), lock) → F 65.77/17.39
eqt(tuple(z0, z1), locker) → F 65.77/17.39
eqt(tuple(z0, z1), mcrlrecord) → F 65.77/17.39
eqt(tuple(z0, z1), ok) → F 65.77/17.39
eqt(tuple(z0, z1), pending) → F 65.77/17.39
eqt(tuple(z0, z1), release) → F 65.77/17.39
eqt(tuple(z0, z1), request) → F 65.77/17.39
eqt(tuple(z0, z1), resource) → F 65.77/17.39
eqt(tuple(z0, z1), tag) → F 65.77/17.39
eqt(tuple(z0, z1), true) → F 65.77/17.39
eqt(tuple(z0, z1), undefined) → F 65.77/17.39
eqt(tuple(z0, z1), pid(z2)) → F 65.77/17.39
eqt(tuple(z0, z1), int(z2)) → F 65.77/17.39
eqt(tuple(z0, z1), cons(z2, z3)) → F 65.77/17.39
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 65.77/17.39
eqt(tuple(z0, z1), tuplenil(z2)) → F 65.77/17.39
eqt(tuplenil(z0), nil) → F 65.77/17.39
eqt(tuplenil(z0), a) → F 65.77/17.39
eqt(tuplenil(z0), excl) → F 65.77/17.39
eqt(tuplenil(z0), false) → F 65.77/17.39
eqt(tuplenil(z0), lock) → F 65.77/17.39
eqt(tuplenil(z0), locker) → F 65.77/17.39
eqt(tuplenil(z0), mcrlrecord) → F 65.77/17.39
eqt(tuplenil(z0), ok) → F 65.77/17.39
eqt(tuplenil(z0), pending) → F 65.77/17.39
eqt(tuplenil(z0), release) → F 65.77/17.39
eqt(tuplenil(z0), request) → F 65.77/17.39
eqt(tuplenil(z0), resource) → F 65.77/17.39
eqt(tuplenil(z0), tag) → F 65.77/17.39
eqt(tuplenil(z0), true) → F 65.77/17.39
eqt(tuplenil(z0), undefined) → F 65.77/17.39
eqt(tuplenil(z0), pid(z1)) → F 65.77/17.39
eqt(tuplenil(z0), int(z1)) → F 65.77/17.39
eqt(tuplenil(z0), cons(z1, z2)) → F 65.77/17.39
eqt(tuplenil(z0), tuple(z1, z2)) → F 65.77/17.39
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 65.77/17.39
element(int(s(0)), tuplenil(z0)) → z0 65.77/17.39
element(int(s(0)), tuple(z0, z1)) → z0 65.77/17.39
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 65.77/17.39
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 65.77/17.39
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.39
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 65.77/17.39
record_updates(z0, z1, nil) → z0 65.77/17.39
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 65.77/17.39
locker2_map_promote_pending(nil, z0) → nil 65.77/17.39
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 65.77/17.39
locker2_map_claim_lock(nil, z0, z1) → nil 65.77/17.39
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 65.77/17.39
locker2_map_add_pending(nil, z0, z1) → nil 65.77/17.39
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 65.77/17.39
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 65.77/17.39
case0(z0, z1, z2) → z1 65.77/17.39
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 65.77/17.39
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 65.77/17.39
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 65.77/17.39
case1(z0, z1, z2, false) → z2 65.77/17.39
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 65.77/17.39
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 65.77/17.39
case4(z0, z1, z2) → false 65.77/17.39
locker2_obtainables(nil, z0) → true 65.77/17.39
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 65.77/17.39
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 65.77/17.39
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 65.77/17.39
locker2_check_available(z0, nil) → false 65.77/17.39
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 65.77/17.39
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 65.77/17.39
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 65.77/17.39
locker2_check_availables(nil, z0) → true 65.77/17.39
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 65.77/17.39
locker2_adduniq(nil, z0) → z0 65.77/17.39
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 65.77/17.39
subtract(z0, nil) → z0 65.77/17.39
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.39
delete(z0, nil) → nil 65.77/17.39
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.39
case8(z0, z1, z2, true) → z0 65.77/17.39
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 65.77/17.39
gen_tag(z0) → tuple(z0, tuplenil(tag)) 65.77/17.39
gen_modtageq(z0, z1) → equal(z0, z1) 65.77/17.39
member(z0, nil) → false 65.77/17.39
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.39
case9(z0, z1, z2, true) → true 65.77/17.39
case9(z0, z1, z2, false) → member(z2, z0) 65.77/17.39
eqs(empty, empty) → T 65.77/17.39
eqs(empty, stack(z0, z1)) → F 65.77/17.39
eqs(stack(z0, z1), empty) → F 65.77/17.39
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 65.77/17.39
pushs(z0, z1) → stack(z0, z1) 65.77/17.39
pops(stack(z0, z1)) → z1 65.77/17.39
tops(stack(z0, z1)) → z0 65.77/17.39
istops(z0, empty) → F 65.77/17.39
istops(z0, stack(z1, z2)) → eqt(z0, z1) 65.77/17.39
eqc(nocalls, nocalls) → T 65.77/17.39
eqc(nocalls, calls(z0, z1, z2)) → F 65.77/17.39
eqc(calls(z0, z1, z2), nocalls) → F 65.77/17.39
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 65.77/17.39
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 65.77/17.39
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 65.77/17.39
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.39
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.39
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.39
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.39
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 65.77/17.39
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.39
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.39
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.39
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.39
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.39
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 65.77/17.39
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.39
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.39
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.39
CASE2(z0, z1, true) → c335 65.77/17.39
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.39
DELETE(z0, cons(z1, z2)) → c352 65.77/17.39
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.39
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.39
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.39
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.39
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.39
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.39
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.39
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.39
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 65.77/17.39
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4))
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 65.77/17.39
CASE2(z0, z1, true) → c335 65.77/17.39
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 65.77/17.39
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 65.77/17.39
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 65.77/17.39
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 65.77/17.39
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 65.77/17.39
PUSH1(z0, z1, z2, z3, z4, T) → c376 65.77/17.39
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 65.77/17.39
MEMBER(z0, cons(z1, z2)) → c358 65.77/17.39
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 65.77/17.39
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 65.77/17.39
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 65.77/17.39
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 65.77/17.39
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 65.77/17.39
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 65.77/17.39
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 65.77/17.39
DELETE(z0, cons(z1, z2)) → c352 65.77/17.39
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 65.77/17.39
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 65.77/17.39
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 65.77/17.39
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 65.77/17.39
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 65.77/17.39
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

65.77/17.39
65.77/17.39

(27) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 65.77/17.39
member(z0, nil) → false 65.77/17.39
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 65.77/17.39
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 65.77/17.39
subtract(z0, nil) → z0 65.77/17.39
delete(z0, nil) → nil 65.77/17.39
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 65.77/17.39
eqt(nil, undefined) → F 65.77/17.39
eqt(nil, pid(z0)) → F 65.77/17.39
eqt(nil, int(z0)) → F 65.77/17.39
eqt(nil, cons(z0, z1)) → F 65.77/17.39
eqt(nil, tuple(z0, z1)) → F 65.77/17.39
eqt(nil, tuplenil(z0)) → F 65.77/17.39
eqt(a, nil) → F 65.77/17.39
eqt(a, a) → T 65.77/17.39
eqt(a, excl) → F 65.77/17.39
eqt(a, false) → F 65.77/17.39
eqt(a, lock) → F 66.09/17.40
eqt(a, locker) → F 66.09/17.40
eqt(a, mcrlrecord) → F 66.09/17.40
eqt(a, ok) → F 66.09/17.40
eqt(a, pending) → F 66.09/17.40
eqt(a, release) → F 66.09/17.40
eqt(a, request) → F 66.09/17.40
eqt(a, resource) → F 66.09/17.40
eqt(a, tag) → F 66.09/17.40
eqt(a, true) → F 66.09/17.40
eqt(a, undefined) → F 66.09/17.40
eqt(a, pid(z0)) → F 66.09/17.40
eqt(a, int(z0)) → F 66.09/17.40
eqt(a, cons(z0, z1)) → F 66.09/17.40
eqt(a, tuple(z0, z1)) → F 66.09/17.40
eqt(a, tuplenil(z0)) → F 66.09/17.40
eqt(excl, nil) → F 66.09/17.40
eqt(excl, a) → F 66.09/17.40
eqt(excl, excl) → T 66.09/17.40
eqt(excl, false) → F 66.09/17.40
eqt(excl, lock) → F 66.09/17.40
eqt(excl, locker) → F 66.09/17.40
eqt(excl, mcrlrecord) → F 66.09/17.40
eqt(excl, ok) → F 66.09/17.40
eqt(excl, pending) → F 66.09/17.40
eqt(excl, release) → F 66.09/17.40
eqt(excl, request) → F 66.09/17.41
eqt(excl, resource) → F 66.09/17.41
eqt(excl, tag) → F 66.09/17.41
eqt(excl, true) → F 66.09/17.41
eqt(excl, undefined) → F 66.09/17.41
eqt(excl, pid(z0)) → F 66.09/17.41
eqt(excl, eqt(false, int(z0))) → F 66.09/17.41
eqt(false, cons(z0, z1)) → F 66.09/17.41
eqt(false, tuple(z0, z1)) → F 66.09/17.41
eqt(false, tuplenil(z0)) → F 66.09/17.41
eqt(lock, nil) → F 66.09/17.41
eqt(lock, a) → F 66.09/17.41
eqt(lock, excl) → F 66.09/17.41
eqt(lock, false) → F 66.09/17.41
eqt(lock, lock) → T 66.09/17.41
eqt(lock, locker) → F 66.09/17.41
eqt(lock, mcrlrecord) → F 66.09/17.41
eqt(lock, ok) → F 66.09/17.41
eqt(lock, pending) → F 66.09/17.41
eqt(lock, release) → F 66.09/17.41
eqt(lock, request) → F 66.09/17.41
eqt(lock, resource) → F 66.09/17.41
eqt(lock, tag) → F 66.09/17.41
eqt(lock, true) → F 66.09/17.41
eqt(lock, undefined) → F 66.09/17.41
eqt(lock, pid(z0)) → F 66.09/17.41
eqt(lock, int(z0)) → F 66.09/17.41
eqt(lock, cons(z0, z1)) → F 66.09/17.41
eqt(lock, tuple(z0, z1)) → F 66.09/17.41
eqt(lock, tuplenil(z0)) → F 66.09/17.41
eqt(locker, nil) → F 66.09/17.41
eqt(locker, a) → F 66.09/17.41
eqt(locker, excl) → F 66.09/17.41
eqt(locker, false) → F 66.09/17.41
eqt(locker, lock) → F 66.09/17.41
eqt(locker, locker) → T 66.09/17.41
eqt(locker, mcrlrecord) → F 66.09/17.41
eqt(locker, ok) → F 66.09/17.41
eqt(locker, pending) → F 66.09/17.41
eqt(locker, release) → F 66.09/17.41
eqt(locker, request) → F 66.09/17.41
eqt(locker, resource) → F 66.09/17.41
eqt(locker, tag) → F 66.09/17.41
eqt(locker, true) → F 66.09/17.41
eqt(locker, undefined) → F 66.09/17.41
eqt(locker, pid(z0)) → F 66.09/17.41
eqt(locker, int(z0)) → F 66.09/17.41
eqt(locker, cons(z0, z1)) → F 66.09/17.41
eqt(locker, tuple(z0, z1)) → F 66.09/17.41
eqt(locker, tuplenil(z0)) → F 66.09/17.41
eqt(mcrlrecord, nil) → F 66.09/17.41
eqt(mcrlrecord, a) → F 66.09/17.41
eqt(mcrlrecord, excl) → F 66.09/17.41
eqt(mcrlrecord, false) → F 66.09/17.41
eqt(mcrlrecord, lock) → F 66.09/17.41
eqt(mcrlrecord, locker) → F 66.09/17.41
eqt(mcrlrecord, mcrlrecord) → T 66.09/17.41
eqt(mcrlrecord, ok) → F 66.09/17.41
eqt(mcrlrecord, pending) → F 66.09/17.41
eqt(mcrlrecord, release) → F 66.09/17.41
eqt(mcrlrecord, request) → F 66.09/17.41
eqt(mcrlrecord, resource) → F 66.09/17.41
eqt(ok, resource) → F 66.09/17.41
eqt(ok, tag) → F 66.09/17.41
eqt(ok, true) → F 66.09/17.41
eqt(ok, undefined) → F 66.09/17.41
eqt(ok, pid(z0)) → F 66.09/17.41
eqt(ok, int(z0)) → F 66.09/17.41
eqt(ok, cons(z0, z1)) → F 66.09/17.41
eqt(ok, tuple(z0, z1)) → F 66.09/17.41
eqt(ok, tuplenil(z0)) → F 66.09/17.41
eqt(pending, nil) → F 66.09/17.41
eqt(pending, a) → F 66.09/17.41
eqt(pending, excl) → F 66.09/17.41
eqt(pending, false) → F 66.09/17.41
eqt(pending, lock) → F 66.09/17.41
eqt(pending, locker) → F 66.09/17.41
eqt(pending, mcrlrecord) → F 66.09/17.41
eqt(pending, ok) → F 66.09/17.41
eqt(pending, pending) → T 66.09/17.41
eqt(pending, release) → F 66.09/17.41
eqt(pending, request) → F 66.09/17.41
eqt(pending, resource) → F 66.09/17.41
eqt(pending, tag) → F 66.09/17.41
eqt(pending, true) → F 66.09/17.41
eqt(pending, undefined) → F 66.09/17.41
eqt(pending, pid(z0)) → F 66.09/17.41
eqt(pending, int(z0)) → F 66.09/17.41
eqt(pending, cons(z0, z1)) → F 66.09/17.41
eqt(pending, tuple(z0, z1)) → F 66.09/17.41
eqt(pending, tuplenil(z0)) → F 66.09/17.41
eqt(release, nil) → F 66.09/17.41
eqt(release, a) → F 66.09/17.41
eqt(release, excl) → F 66.09/17.41
eqt(release, false) → F 66.09/17.41
eqt(release, lock) → F 66.09/17.41
eqt(release, locker) → F 66.09/17.41
eqt(release, mcrlrecord) → F 66.09/17.41
eqt(release, ok) → F 66.09/17.41
eqt(request, mcrlrecord) → F 66.09/17.41
eqt(request, ok) → F 66.09/17.41
eqt(request, pending) → F 66.09/17.41
eqt(request, release) → F 66.09/17.41
eqt(request, request) → T 66.09/17.41
eqt(request, resource) → F 66.09/17.41
eqt(request, tag) → F 66.09/17.41
eqt(request, true) → F 66.09/17.41
eqt(request, undefined) → F 66.09/17.41
eqt(request, pid(z0)) → F 66.09/17.41
eqt(request, int(z0)) → F 66.09/17.41
eqt(request, cons(z0, z1)) → F 66.09/17.41
eqt(request, tuple(z0, z1)) → F 66.09/17.41
eqt(request, tuplenil(z0)) → F 66.09/17.41
eqt(resource, nil) → F 66.09/17.41
eqt(resource, a) → F 66.09/17.41
eqt(resource, excl) → F 66.09/17.41
eqt(resource, false) → F 66.09/17.41
eqt(resource, lock) → F 66.09/17.41
eqt(resource, locker) → F 66.09/17.41
eqt(resource, mcrlrecord) → F 66.09/17.41
eqt(resource, ok) → F 66.09/17.41
eqt(resource, pending) → F 66.09/17.41
eqt(resource, release) → F 66.09/17.41
eqt(resource, request) → F 66.09/17.41
eqt(resource, resource) → T 66.09/17.41
eqt(resource, tag) → F 66.09/17.41
eqt(resource, true) → F 66.09/17.41
eqt(resource, undefined) → F 66.09/17.41
eqt(resource, pid(z0)) → F 66.09/17.41
eqt(resource, int(z0)) → F 66.09/17.41
eqt(resource, cons(z0, z1)) → F 66.09/17.41
eqt(resource, tuple(z0, z1)) → F 66.09/17.41
eqt(resource, tuplenil(z0)) → F 66.09/17.41
eqt(tag, nil) → F 66.09/17.41
eqt(tag, a) → F 66.09/17.41
eqt(tag, excl) → F 66.09/17.41
eqt(tag, false) → F 66.09/17.41
eqt(tag, lock) → F 66.09/17.41
eqt(tag, locker) → F 66.09/17.41
eqt(tag, mcrlrecord) → F 66.09/17.41
eqt(tag, ok) → F 66.09/17.41
eqt(tag, pending) → F 66.09/17.41
eqt(tag, release) → F 66.09/17.41
eqt(tag, request) → F 66.09/17.41
eqt(tag, resource) → F 66.09/17.41
eqt(tag, tag) → T 66.09/17.41
eqt(tag, true) → F 66.09/17.41
eqt(tag, undefined) → F 66.09/17.41
eqt(tag, pid(z0)) → F 66.09/17.41
eqt(tag, int(z0)) → F 66.09/17.41
eqt(tag, cons(z0, z1)) → F 66.09/17.41
eqt(tag, tuple(z0, z1)) → F 66.09/17.41
eqt(tag, tuplenil(z0)) → F 66.09/17.41
eqt(true, nil) → F 66.09/17.41
eqt(true, a) → F 66.09/17.41
eqt(true, excl) → F 66.09/17.41
eqt(true, false) → F 66.09/17.41
eqt(true, lock) → F 66.09/17.41
eqt(true, locker) → F 66.09/17.41
eqt(true, mcrlrecord) → F 66.09/17.41
eqt(true, ok) → F 66.09/17.41
eqt(true, pending) → F 66.09/17.41
eqt(true, release) → F 66.09/17.41
eqt(true, request) → F 66.09/17.41
eqt(true, resource) → F 66.09/17.41
eqt(true, tag) → F 66.09/17.41
eqt(true, true) → T 66.09/17.41
eqt(true, undefined) → F 66.09/17.41
eqt(true, pid(z0)) → F 66.09/17.41
eqt(true, int(z0)) → F 66.09/17.41
eqt(true, cons(z0, z1)) → F 66.09/17.41
eqt(true, tuple(z0, z1)) → F 66.09/17.41
eqt(true, tuplenil(z0)) → F 66.09/17.41
eqt(undefined, nil) → F 66.09/17.41
eqt(undefined, a) → F 66.09/17.41
eqt(undefined, tuplenil(z0)) → F 66.09/17.41
eqt(pid(z0), nil) → F 66.09/17.41
eqt(pid(z0), a) → F 66.09/17.41
eqt(pid(z0), excl) → F 66.09/17.41
eqt(pid(z0), false) → F 66.09/17.41
eqt(pid(z0), lock) → F 66.09/17.41
eqt(pid(z0), locker) → F 66.09/17.41
eqt(pid(z0), mcrlrecord) → F 66.09/17.41
eqt(pid(z0), ok) → F 66.09/17.41
eqt(pid(z0), pending) → F 66.09/17.41
eqt(pid(z0), release) → F 66.09/17.41
eqt(pid(z0), request) → F 66.09/17.41
eqt(pid(z0), resource) → F 66.09/17.41
eqt(pid(z0), tag) → F 66.09/17.41
eqt(pid(z0), true) → F 66.09/17.41
eqt(pid(z0), undefined) → F 66.09/17.41
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 66.09/17.41
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 66.09/17.41
eqt(pid(z0), int(z1)) → F 66.09/17.41
eqt(pid(z0), cons(z1, z2)) → F 66.09/17.41
eqt(pid(z0), tuple(z1, z2)) → F 66.09/17.41
eqt(pid(z0), tuplenil(z1)) → F 66.09/17.41
eqt(int(z0), nil) → F 66.09/17.41
eqt(int(z0), a) → F 66.09/17.41
eqt(int(z0), excl) → F 66.09/17.41
eqt(int(z0), false) → F 66.09/17.41
eqt(int(z0), lock) → F 66.09/17.41
eqt(int(z0), locker) → F 66.09/17.41
eqt(int(z0), mcrlrecord) → F 66.09/17.41
eqt(int(z0), ok) → F 66.09/17.41
eqt(int(z0), pending) → F 66.09/17.41
eqt(int(z0), release) → F 66.09/17.41
eqt(int(z0), request) → F 66.09/17.41
eqt(int(z0), resource) → F 66.09/17.41
eqt(int(z0), tag) → F 66.09/17.41
eqt(int(z0), true) → F 66.09/17.41
eqt(int(z0), undefined) → F 66.09/17.41
eqt(cons(z0, z1), resource) → F 66.09/17.41
eqt(cons(z0, z1), tag) → F 66.09/17.41
eqt(cons(z0, z1), true) → F 66.09/17.41
eqt(cons(z0, z1), undefined) → F 66.09/17.41
eqt(cons(z0, z1), pid(z2)) → F 66.09/17.41
eqt(cons(z0, z1), int(z2)) → F 66.09/17.41
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.41
eqt(cons(z0, z1), tuple(z2, z3)) → F 66.09/17.41
eqt(cons(z0, z1), tuplenil(z2)) → F 66.09/17.41
eqt(tuple(z0, z1), nil) → F 66.09/17.41
eqt(tuple(z0, z1), a) → F 66.09/17.41
eqt(tuple(z0, z1), excl) → F 66.09/17.41
eqt(tuple(z0, z1), false) → F 66.09/17.41
eqt(tuple(z0, z1), lock) → F 66.09/17.41
eqt(tuple(z0, z1), locker) → F 66.09/17.41
eqt(tuple(z0, z1), mcrlrecord) → F 66.09/17.41
eqt(tuple(z0, z1), ok) → F 66.09/17.41
eqt(tuple(z0, z1), pending) → F 66.09/17.41
eqt(tuple(z0, z1), release) → F 66.09/17.41
eqt(tuple(z0, z1), request) → F 66.09/17.41
eqt(tuple(z0, z1), resource) → F 66.09/17.41
eqt(tuple(z0, z1), tag) → F 66.09/17.41
eqt(tuple(z0, z1), true) → F 66.09/17.41
eqt(tuple(z0, z1), undefined) → F 66.09/17.41
eqt(tuple(z0, z1), pid(z2)) → F 66.09/17.41
eqt(tuple(z0, z1), int(z2)) → F 66.09/17.41
eqt(tuple(z0, z1), cons(z2, z3)) → F 66.09/17.41
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.41
eqt(tuple(z0, z1), tuplenil(z2)) → F 66.09/17.41
eqt(tuplenil(z0), nil) → F 66.09/17.41
eqt(tuplenil(z0), a) → F 66.09/17.41
eqt(tuplenil(z0), excl) → F 66.09/17.41
eqt(tuplenil(z0), false) → F 66.09/17.41
eqt(tuplenil(z0), lock) → F 66.09/17.41
eqt(tuplenil(z0), locker) → F 66.09/17.41
eqt(tuplenil(z0), mcrlrecord) → F 66.09/17.41
eqt(tuplenil(z0), ok) → F 66.09/17.41
eqt(tuplenil(z0), pending) → F 66.09/17.41
eqt(tuplenil(z0), release) → F 66.09/17.41
eqt(tuplenil(z0), request) → F 66.09/17.41
eqt(tuplenil(z0), resource) → F 66.09/17.41
eqt(tuplenil(z0), tag) → F 66.09/17.41
eqt(tuplenil(z0), true) → F 66.09/17.41
eqt(tuplenil(z0), undefined) → F 66.09/17.41
eqt(tuplenil(z0), pid(z1)) → F 66.09/17.41
eqt(tuplenil(z0), int(z1)) → F 66.09/17.41
eqt(tuplenil(z0), cons(z1, z2)) → F 66.09/17.41
eqt(tuplenil(z0), tuple(z1, z2)) → F 66.09/17.41
and(T, z0) → z0 66.09/17.41
and(z0, T) → z0 66.09/17.41
and(F, z0) → F 66.09/17.41
and(z0, F) → F 66.09/17.41
gen_modtageq(z0, z1) → equal(z0, z1) 66.09/17.41
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 66.09/17.41
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.41
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.41
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.41
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.41
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.41
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.41
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.41
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.41
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.41
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 66.09/17.41
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.41
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.41
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.41
CASE2(z0, z1, true) → c335 66.09/17.41
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.41
DELETE(z0, cons(z1, z2)) → c352 66.09/17.41
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.41
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.41
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.41
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.41
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.41
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.41
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.41
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.41
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 66.09/17.41

POL(APPEND(x1, x2)) = [3]x1    66.09/17.41
POL(CASE1(x1, x2, x3, x4)) = [4]x1 + x4    66.09/17.41
POL(CASE2(x1, x2, x3)) = [5]x1 + [3]x2    66.09/17.41
POL(DELETE(x1, x2)) = 0    66.09/17.41
POL(ELEMENT(x1, x2)) = 0    66.09/17.41
POL(EQC(x1, x2)) = 0    66.09/17.41
POL(EQS(x1, x2)) = 0    66.09/17.41
POL(EQT(x1, x2)) = 0    66.09/17.41
POL(F) = [3]    66.09/17.41
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [3] + [5]x2 + [5]x3    66.09/17.41
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = [4]    66.09/17.41
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = [5]x1    66.09/17.41
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = [3]x1    66.09/17.41
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    66.09/17.41
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [5]    66.09/17.41
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [4] + [5]x1 + [5]x2    66.09/17.41
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [5] + [2]x1    66.09/17.42
POL(MEMBER(x1, x2)) = [4]x2    66.09/17.42
POL(PUSH(x1, x2, x3)) = [1] + [3]x1 + [5]x2 + [4]x3    66.09/17.42
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [1] + x1 + [5]x2 + x3 + [2]x5    66.09/17.42
POL(RECORD_UPDATES(x1, x2, x3)) = x2 + x3    66.09/17.42
POL(SUBTRACT(x1, x2)) = 0    66.09/17.42
POL(T) = [3]    66.09/17.42
POL(a) = [3]    66.09/17.42
POL(and(x1, x2)) = [3]    66.09/17.42
POL(append(x1, x2)) = [3]    66.09/17.42
POL(c(x1)) = x1    66.09/17.42
POL(c245(x1)) = x1    66.09/17.42
POL(c271(x1, x2)) = x1 + x2    66.09/17.42
POL(c292(x1, x2)) = x1 + x2    66.09/17.42
POL(c313(x1)) = x1    66.09/17.42
POL(c316(x1)) = x1    66.09/17.42
POL(c321(x1)) = x1    66.09/17.42
POL(c323(x1, x2)) = x1 + x2    66.09/17.42
POL(c325(x1)) = x1    66.09/17.42
POL(c327) = 0    66.09/17.42
POL(c332(x1)) = x1    66.09/17.42
POL(c334(x1)) = x1    66.09/17.42
POL(c335) = 0    66.09/17.42
POL(c342) = 0    66.09/17.42
POL(c346(x1, x2)) = x1 + x2    66.09/17.42
POL(c348(x1)) = x1    66.09/17.42
POL(c350(x1, x2)) = x1 + x2    66.09/17.42
POL(c352) = 0    66.09/17.42
POL(c358) = 0    66.09/17.42
POL(c364(x1, x2)) = x1 + x2    66.09/17.42
POL(c373(x1, x2, x3)) = x1 + x2 + x3    66.09/17.42
POL(c376) = 0    66.09/17.42
POL(calls(x1, x2, x3)) = x1 + x3    66.09/17.42
POL(case8(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3    66.09/17.42
POL(case9(x1, x2, x3, x4)) = [4]x1 + [4]x4    66.09/17.42
POL(cons(x1, x2)) = [4] + x2    66.09/17.42
POL(delete(x1, x2)) = [3]    66.09/17.42
POL(eqt(x1, x2)) = 0    66.09/17.42
POL(equal(x1, x2)) = [2]    66.09/17.42
POL(excl) = 0    66.09/17.42
POL(false) = 0    66.09/17.42
POL(gen_modtageq(x1, x2)) = x1    66.09/17.42
POL(int(x1)) = [3]    66.09/17.42
POL(lock) = 0    66.09/17.42
POL(locker) = [3]    66.09/17.42
POL(mcrlrecord) = [1]    66.09/17.42
POL(member(x1, x2)) = [4]x2    66.09/17.42
POL(nil) = 0    66.09/17.42
POL(ok) = [3]    66.09/17.42
POL(pending) = 0    66.09/17.42
POL(pid(x1)) = x1    66.09/17.42
POL(record_extract(x1, x2, x3)) = 0    66.09/17.42
POL(record_update(x1, x2, x3, x4)) = 0    66.09/17.42
POL(release) = [3]    66.09/17.42
POL(request) = [3]    66.09/17.42
POL(resource) = 0    66.09/17.42
POL(s(x1)) = 0    66.09/17.42
POL(stack(x1, x2)) = x2    66.09/17.42
POL(subtract(x1, x2)) = [3] + [4]x1 + [4]x2    66.09/17.42
POL(tag) = [3]    66.09/17.42
POL(true) = [5]    66.09/17.42
POL(tuple(x1, x2)) = 0    66.09/17.42
POL(tuplenil(x1)) = 0    66.09/17.42
POL(undefined) = [3]   
66.09/17.42
66.09/17.42

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 66.09/17.42
or(F, T) → T 66.09/17.42
or(T, F) → T 66.09/17.42
or(F, F) → F 66.09/17.42
and(T, z0) → z0 66.09/17.42
and(z0, T) → z0 66.09/17.42
and(F, z0) → F 66.09/17.42
and(z0, F) → F 66.09/17.42
imp(T, z0) → z0 66.09/17.42
imp(F, z0) → T 66.09/17.42
not(T) → F 66.09/17.42
not(F) → T 66.09/17.42
if(T, z0, z1) → z0 66.09/17.42
if(F, z0, z1) → z1 66.09/17.42
eq(T, T) → T 66.09/17.42
eq(F, F) → T 66.09/17.42
eq(T, F) → F 66.09/17.42
eq(F, T) → F 66.09/17.42
eqt(nil, undefined) → F 66.09/17.42
eqt(nil, pid(z0)) → F 66.09/17.42
eqt(nil, int(z0)) → F 66.09/17.42
eqt(nil, cons(z0, z1)) → F 66.09/17.42
eqt(nil, tuple(z0, z1)) → F 66.09/17.42
eqt(nil, tuplenil(z0)) → F 66.09/17.42
eqt(a, nil) → F 66.09/17.42
eqt(a, a) → T 66.09/17.42
eqt(a, excl) → F 66.09/17.42
eqt(a, false) → F 66.09/17.42
eqt(a, lock) → F 66.09/17.42
eqt(a, locker) → F 66.09/17.42
eqt(a, mcrlrecord) → F 66.09/17.42
eqt(a, ok) → F 66.09/17.42
eqt(a, pending) → F 66.09/17.42
eqt(a, release) → F 66.09/17.42
eqt(a, request) → F 66.09/17.42
eqt(a, resource) → F 66.09/17.42
eqt(a, tag) → F 66.09/17.42
eqt(a, true) → F 66.09/17.42
eqt(a, undefined) → F 66.09/17.42
eqt(a, pid(z0)) → F 66.09/17.42
eqt(a, int(z0)) → F 66.09/17.42
eqt(a, cons(z0, z1)) → F 66.09/17.42
eqt(a, tuple(z0, z1)) → F 66.09/17.42
eqt(a, tuplenil(z0)) → F 66.09/17.42
eqt(excl, nil) → F 66.09/17.42
eqt(excl, a) → F 66.09/17.42
eqt(excl, excl) → T 66.09/17.42
eqt(excl, false) → F 66.09/17.42
eqt(excl, lock) → F 66.09/17.42
eqt(excl, locker) → F 66.09/17.42
eqt(excl, mcrlrecord) → F 66.09/17.42
eqt(excl, ok) → F 66.09/17.42
eqt(excl, pending) → F 66.09/17.42
eqt(excl, release) → F 66.09/17.42
eqt(excl, request) → F 66.09/17.42
eqt(excl, resource) → F 66.09/17.42
eqt(excl, tag) → F 66.09/17.42
eqt(excl, true) → F 66.09/17.42
eqt(excl, undefined) → F 66.09/17.42
eqt(excl, pid(z0)) → F 66.09/17.42
eqt(excl, eqt(false, int(z0))) → F 66.09/17.42
eqt(false, cons(z0, z1)) → F 66.09/17.42
eqt(false, tuple(z0, z1)) → F 66.09/17.42
eqt(false, tuplenil(z0)) → F 66.09/17.42
eqt(lock, nil) → F 66.09/17.42
eqt(lock, a) → F 66.09/17.42
eqt(lock, excl) → F 66.09/17.42
eqt(lock, false) → F 66.09/17.42
eqt(lock, lock) → T 66.09/17.42
eqt(lock, locker) → F 66.09/17.42
eqt(lock, mcrlrecord) → F 66.09/17.42
eqt(lock, ok) → F 66.09/17.42
eqt(lock, pending) → F 66.09/17.42
eqt(lock, release) → F 66.09/17.42
eqt(lock, request) → F 66.09/17.42
eqt(lock, resource) → F 66.09/17.42
eqt(lock, tag) → F 66.09/17.42
eqt(lock, true) → F 66.09/17.42
eqt(lock, undefined) → F 66.09/17.42
eqt(lock, pid(z0)) → F 66.09/17.42
eqt(lock, int(z0)) → F 66.09/17.42
eqt(lock, cons(z0, z1)) → F 66.09/17.42
eqt(lock, tuple(z0, z1)) → F 66.09/17.42
eqt(lock, tuplenil(z0)) → F 66.09/17.42
eqt(locker, nil) → F 66.09/17.42
eqt(locker, a) → F 66.09/17.42
eqt(locker, excl) → F 66.09/17.42
eqt(locker, false) → F 66.09/17.42
eqt(locker, lock) → F 66.09/17.42
eqt(locker, locker) → T 66.09/17.42
eqt(locker, mcrlrecord) → F 66.09/17.42
eqt(locker, ok) → F 66.09/17.42
eqt(locker, pending) → F 66.09/17.42
eqt(locker, release) → F 66.09/17.42
eqt(locker, request) → F 66.09/17.42
eqt(locker, resource) → F 66.09/17.42
eqt(locker, tag) → F 66.09/17.42
eqt(locker, true) → F 66.09/17.42
eqt(locker, undefined) → F 66.09/17.42
eqt(locker, pid(z0)) → F 66.09/17.42
eqt(locker, int(z0)) → F 66.09/17.42
eqt(locker, cons(z0, z1)) → F 66.09/17.42
eqt(locker, tuple(z0, z1)) → F 66.09/17.42
eqt(locker, tuplenil(z0)) → F 66.09/17.42
eqt(mcrlrecord, nil) → F 66.09/17.42
eqt(mcrlrecord, a) → F 66.09/17.42
eqt(mcrlrecord, excl) → F 66.09/17.42
eqt(mcrlrecord, false) → F 66.09/17.42
eqt(mcrlrecord, lock) → F 66.09/17.42
eqt(mcrlrecord, locker) → F 66.09/17.42
eqt(mcrlrecord, mcrlrecord) → T 66.09/17.42
eqt(mcrlrecord, ok) → F 66.09/17.42
eqt(mcrlrecord, pending) → F 66.09/17.42
eqt(mcrlrecord, release) → F 66.09/17.42
eqt(mcrlrecord, request) → F 66.09/17.42
eqt(mcrlrecord, resource) → F 66.09/17.42
eqt(ok, resource) → F 66.09/17.42
eqt(ok, tag) → F 66.09/17.42
eqt(ok, true) → F 66.09/17.42
eqt(ok, undefined) → F 66.09/17.42
eqt(ok, pid(z0)) → F 66.09/17.42
eqt(ok, int(z0)) → F 66.09/17.42
eqt(ok, cons(z0, z1)) → F 66.09/17.42
eqt(ok, tuple(z0, z1)) → F 66.09/17.42
eqt(ok, tuplenil(z0)) → F 66.09/17.42
eqt(pending, nil) → F 66.09/17.42
eqt(pending, a) → F 66.09/17.42
eqt(pending, excl) → F 66.09/17.42
eqt(pending, false) → F 66.09/17.42
eqt(pending, lock) → F 66.09/17.42
eqt(pending, locker) → F 66.09/17.42
eqt(pending, mcrlrecord) → F 66.09/17.42
eqt(pending, ok) → F 66.09/17.42
eqt(pending, pending) → T 66.09/17.42
eqt(pending, release) → F 66.09/17.42
eqt(pending, request) → F 66.09/17.42
eqt(pending, resource) → F 66.09/17.42
eqt(pending, tag) → F 66.09/17.42
eqt(pending, true) → F 66.09/17.42
eqt(pending, undefined) → F 66.09/17.42
eqt(pending, pid(z0)) → F 66.09/17.42
eqt(pending, int(z0)) → F 66.09/17.42
eqt(pending, cons(z0, z1)) → F 66.09/17.42
eqt(pending, tuple(z0, z1)) → F 66.09/17.42
eqt(pending, tuplenil(z0)) → F 66.09/17.42
eqt(release, nil) → F 66.09/17.42
eqt(release, a) → F 66.09/17.42
eqt(release, excl) → F 66.09/17.42
eqt(release, false) → F 66.09/17.42
eqt(release, lock) → F 66.09/17.42
eqt(release, locker) → F 66.09/17.42
eqt(release, mcrlrecord) → F 66.09/17.42
eqt(release, ok) → F 66.09/17.42
eqt(request, mcrlrecord) → F 66.09/17.42
eqt(request, ok) → F 66.09/17.42
eqt(request, pending) → F 66.09/17.42
eqt(request, release) → F 66.09/17.42
eqt(request, request) → T 66.09/17.42
eqt(request, resource) → F 66.09/17.42
eqt(request, tag) → F 66.09/17.42
eqt(request, true) → F 66.09/17.42
eqt(request, undefined) → F 66.09/17.42
eqt(request, pid(z0)) → F 66.09/17.42
eqt(request, int(z0)) → F 66.09/17.42
eqt(request, cons(z0, z1)) → F 66.09/17.42
eqt(request, tuple(z0, z1)) → F 66.09/17.42
eqt(request, tuplenil(z0)) → F 66.09/17.42
eqt(resource, nil) → F 66.09/17.42
eqt(resource, a) → F 66.09/17.42
eqt(resource, excl) → F 66.09/17.42
eqt(resource, false) → F 66.09/17.42
eqt(resource, lock) → F 66.09/17.42
eqt(resource, locker) → F 66.09/17.42
eqt(resource, mcrlrecord) → F 66.09/17.42
eqt(resource, ok) → F 66.09/17.42
eqt(resource, pending) → F 66.09/17.42
eqt(resource, release) → F 66.09/17.42
eqt(resource, request) → F 66.09/17.42
eqt(resource, resource) → T 66.09/17.42
eqt(resource, tag) → F 66.09/17.42
eqt(resource, true) → F 66.09/17.42
eqt(resource, undefined) → F 66.09/17.42
eqt(resource, pid(z0)) → F 66.09/17.42
eqt(resource, int(z0)) → F 66.09/17.42
eqt(resource, cons(z0, z1)) → F 66.09/17.42
eqt(resource, tuple(z0, z1)) → F 66.09/17.42
eqt(resource, tuplenil(z0)) → F 66.09/17.42
eqt(tag, nil) → F 66.09/17.42
eqt(tag, a) → F 66.09/17.42
eqt(tag, excl) → F 66.09/17.42
eqt(tag, false) → F 66.09/17.42
eqt(tag, lock) → F 66.09/17.42
eqt(tag, locker) → F 66.09/17.42
eqt(tag, mcrlrecord) → F 66.09/17.42
eqt(tag, ok) → F 66.09/17.42
eqt(tag, pending) → F 66.09/17.42
eqt(tag, release) → F 66.09/17.42
eqt(tag, request) → F 66.09/17.42
eqt(tag, resource) → F 66.09/17.42
eqt(tag, tag) → T 66.09/17.42
eqt(tag, true) → F 66.09/17.42
eqt(tag, undefined) → F 66.09/17.42
eqt(tag, pid(z0)) → F 66.09/17.42
eqt(tag, int(z0)) → F 66.09/17.42
eqt(tag, cons(z0, z1)) → F 66.09/17.42
eqt(tag, tuple(z0, z1)) → F 66.09/17.42
eqt(tag, tuplenil(z0)) → F 66.09/17.42
eqt(true, nil) → F 66.09/17.42
eqt(true, a) → F 66.09/17.42
eqt(true, excl) → F 66.09/17.42
eqt(true, false) → F 66.09/17.42
eqt(true, lock) → F 66.09/17.42
eqt(true, locker) → F 66.09/17.42
eqt(true, mcrlrecord) → F 66.09/17.42
eqt(true, ok) → F 66.09/17.42
eqt(true, pending) → F 66.09/17.42
eqt(true, release) → F 66.09/17.42
eqt(true, request) → F 66.09/17.42
eqt(true, resource) → F 66.09/17.42
eqt(true, tag) → F 66.09/17.42
eqt(true, true) → T 66.09/17.42
eqt(true, undefined) → F 66.09/17.42
eqt(true, pid(z0)) → F 66.09/17.42
eqt(true, int(z0)) → F 66.09/17.42
eqt(true, cons(z0, z1)) → F 66.09/17.42
eqt(true, tuple(z0, z1)) → F 66.09/17.42
eqt(true, tuplenil(z0)) → F 66.09/17.42
eqt(undefined, nil) → F 66.09/17.42
eqt(undefined, a) → F 66.09/17.42
eqt(undefined, tuplenil(z0)) → F 66.09/17.42
eqt(pid(z0), nil) → F 66.09/17.42
eqt(pid(z0), a) → F 66.09/17.42
eqt(pid(z0), excl) → F 66.09/17.42
eqt(pid(z0), false) → F 66.09/17.42
eqt(pid(z0), lock) → F 66.09/17.42
eqt(pid(z0), locker) → F 66.09/17.42
eqt(pid(z0), mcrlrecord) → F 66.09/17.42
eqt(pid(z0), ok) → F 66.09/17.42
eqt(pid(z0), pending) → F 66.09/17.42
eqt(pid(z0), release) → F 66.09/17.42
eqt(pid(z0), request) → F 66.09/17.42
eqt(pid(z0), resource) → F 66.09/17.42
eqt(pid(z0), tag) → F 66.09/17.42
eqt(pid(z0), true) → F 66.09/17.42
eqt(pid(z0), undefined) → F 66.09/17.42
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 66.09/17.42
eqt(pid(z0), int(z1)) → F 66.09/17.42
eqt(pid(z0), cons(z1, z2)) → F 66.09/17.42
eqt(pid(z0), tuple(z1, z2)) → F 66.09/17.42
eqt(pid(z0), tuplenil(z1)) → F 66.09/17.42
eqt(int(z0), nil) → F 66.09/17.42
eqt(int(z0), a) → F 66.09/17.42
eqt(int(z0), excl) → F 66.09/17.42
eqt(int(z0), false) → F 66.09/17.42
eqt(int(z0), lock) → F 66.09/17.42
eqt(int(z0), locker) → F 66.09/17.42
eqt(int(z0), mcrlrecord) → F 66.09/17.42
eqt(int(z0), ok) → F 66.09/17.42
eqt(int(z0), pending) → F 66.09/17.42
eqt(int(z0), release) → F 66.09/17.42
eqt(int(z0), request) → F 66.09/17.42
eqt(int(z0), resource) → F 66.09/17.42
eqt(int(z0), tag) → F 66.09/17.42
eqt(int(z0), true) → F 66.09/17.42
eqt(int(z0), undefined) → F 66.09/17.42
eqt(cons(z0, z1), resource) → F 66.09/17.42
eqt(cons(z0, z1), tag) → F 66.09/17.42
eqt(cons(z0, z1), true) → F 66.09/17.42
eqt(cons(z0, z1), undefined) → F 66.09/17.42
eqt(cons(z0, z1), pid(z2)) → F 66.09/17.42
eqt(cons(z0, z1), int(z2)) → F 66.09/17.42
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.42
eqt(cons(z0, z1), tuple(z2, z3)) → F 66.09/17.42
eqt(cons(z0, z1), tuplenil(z2)) → F 66.09/17.42
eqt(tuple(z0, z1), nil) → F 66.09/17.42
eqt(tuple(z0, z1), a) → F 66.09/17.42
eqt(tuple(z0, z1), excl) → F 66.09/17.42
eqt(tuple(z0, z1), false) → F 66.09/17.42
eqt(tuple(z0, z1), lock) → F 66.09/17.42
eqt(tuple(z0, z1), locker) → F 66.09/17.42
eqt(tuple(z0, z1), mcrlrecord) → F 66.09/17.42
eqt(tuple(z0, z1), ok) → F 66.09/17.42
eqt(tuple(z0, z1), pending) → F 66.09/17.42
eqt(tuple(z0, z1), release) → F 66.09/17.42
eqt(tuple(z0, z1), request) → F 66.09/17.42
eqt(tuple(z0, z1), resource) → F 66.09/17.42
eqt(tuple(z0, z1), tag) → F 66.09/17.42
eqt(tuple(z0, z1), true) → F 66.09/17.42
eqt(tuple(z0, z1), undefined) → F 66.09/17.42
eqt(tuple(z0, z1), pid(z2)) → F 66.09/17.42
eqt(tuple(z0, z1), int(z2)) → F 66.09/17.42
eqt(tuple(z0, z1), cons(z2, z3)) → F 66.09/17.42
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.42
eqt(tuple(z0, z1), tuplenil(z2)) → F 66.09/17.42
eqt(tuplenil(z0), nil) → F 66.09/17.42
eqt(tuplenil(z0), a) → F 66.09/17.42
eqt(tuplenil(z0), excl) → F 66.09/17.42
eqt(tuplenil(z0), false) → F 66.09/17.42
eqt(tuplenil(z0), lock) → F 66.09/17.42
eqt(tuplenil(z0), locker) → F 66.09/17.42
eqt(tuplenil(z0), mcrlrecord) → F 66.09/17.42
eqt(tuplenil(z0), ok) → F 66.09/17.42
eqt(tuplenil(z0), pending) → F 66.09/17.42
eqt(tuplenil(z0), release) → F 66.09/17.42
eqt(tuplenil(z0), request) → F 66.09/17.42
eqt(tuplenil(z0), resource) → F 66.09/17.42
eqt(tuplenil(z0), tag) → F 66.09/17.42
eqt(tuplenil(z0), true) → F 66.09/17.42
eqt(tuplenil(z0), undefined) → F 66.09/17.42
eqt(tuplenil(z0), pid(z1)) → F 66.09/17.42
eqt(tuplenil(z0), int(z1)) → F 66.09/17.42
eqt(tuplenil(z0), cons(z1, z2)) → F 66.09/17.42
eqt(tuplenil(z0), tuple(z1, z2)) → F 66.09/17.42
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 66.09/17.42
element(int(s(0)), tuplenil(z0)) → z0 66.09/17.42
element(int(s(0)), tuple(z0, z1)) → z0 66.09/17.42
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 66.09/17.42
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 66.09/17.42
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 66.09/17.42
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 66.09/17.42
record_updates(z0, z1, nil) → z0 66.09/17.42
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 66.09/17.43
locker2_map_promote_pending(nil, z0) → nil 66.09/17.43
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 66.09/17.43
locker2_map_claim_lock(nil, z0, z1) → nil 66.09/17.43
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 66.09/17.43
locker2_map_add_pending(nil, z0, z1) → nil 66.09/17.43
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 66.09/17.43
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 66.09/17.43
case0(z0, z1, z2) → z1 66.09/17.43
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 66.09/17.43
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 66.09/17.43
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 66.09/17.43
case1(z0, z1, z2, false) → z2 66.09/17.43
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 66.09/17.43
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 66.09/17.43
case4(z0, z1, z2) → false 66.09/17.43
locker2_obtainables(nil, z0) → true 66.09/17.43
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 66.09/17.43
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 66.09/17.43
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 66.09/17.43
locker2_check_available(z0, nil) → false 66.09/17.43
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 66.09/17.43
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 66.09/17.43
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 66.09/17.43
locker2_check_availables(nil, z0) → true 66.09/17.43
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 66.09/17.43
locker2_adduniq(nil, z0) → z0 66.09/17.43
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 66.09/17.43
subtract(z0, nil) → z0 66.09/17.43
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 66.09/17.43
delete(z0, nil) → nil 66.09/17.43
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 66.09/17.43
case8(z0, z1, z2, true) → z0 66.09/17.43
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 66.09/17.43
gen_tag(z0) → tuple(z0, tuplenil(tag)) 66.09/17.43
gen_modtageq(z0, z1) → equal(z0, z1) 66.09/17.43
member(z0, nil) → false 66.09/17.43
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 66.09/17.43
case9(z0, z1, z2, true) → true 66.09/17.43
case9(z0, z1, z2, false) → member(z2, z0) 66.09/17.43
eqs(empty, empty) → T 66.09/17.43
eqs(empty, stack(z0, z1)) → F 66.09/17.43
eqs(stack(z0, z1), empty) → F 66.09/17.43
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 66.09/17.43
pushs(z0, z1) → stack(z0, z1) 66.09/17.43
pops(stack(z0, z1)) → z1 66.09/17.43
tops(stack(z0, z1)) → z0 66.09/17.43
istops(z0, empty) → F 66.09/17.43
istops(z0, stack(z1, z2)) → eqt(z0, z1) 66.09/17.43
eqc(nocalls, nocalls) → T 66.09/17.43
eqc(nocalls, calls(z0, z1, z2)) → F 66.09/17.43
eqc(calls(z0, z1, z2), nocalls) → F 66.09/17.43
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 66.09/17.43
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 66.09/17.43
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 66.09/17.43
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 66.09/17.43
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.43
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.43
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.43
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.43
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.43
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.43
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.43
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.43
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.43
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 66.09/17.43
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.43
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.43
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.43
CASE2(z0, z1, true) → c335 66.09/17.43
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.43
DELETE(z0, cons(z1, z2)) → c352 66.09/17.43
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.43
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.43
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.43
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.43
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.43
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.43
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.43
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.43
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1))
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.43
CASE2(z0, z1, true) → c335 66.09/17.43
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.43
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.43
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.43
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.43
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 66.09/17.43
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.43
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.43
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.43
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.43
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.43
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.43
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.43
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.43
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.43
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.43
DELETE(z0, cons(z1, z2)) → c352 66.09/17.43
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.43
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.43
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.43
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.43
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.43
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.43
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

66.09/17.43
66.09/17.43

(29) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1))
We considered the (Usable) Rules:

record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 66.09/17.43
member(z0, nil) → false 66.09/17.43
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 66.09/17.43
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 66.09/17.43
subtract(z0, nil) → z0 66.09/17.43
delete(z0, nil) → nil 66.09/17.43
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 66.09/17.43
eqt(nil, undefined) → F 66.09/17.43
eqt(nil, pid(z0)) → F 66.09/17.43
eqt(nil, int(z0)) → F 66.09/17.43
eqt(nil, cons(z0, z1)) → F 66.09/17.43
eqt(nil, tuple(z0, z1)) → F 66.09/17.43
eqt(nil, tuplenil(z0)) → F 66.09/17.43
eqt(a, nil) → F 66.09/17.43
eqt(a, a) → T 66.09/17.43
eqt(a, excl) → F 66.09/17.43
eqt(a, false) → F 66.09/17.43
eqt(a, lock) → F 66.09/17.43
eqt(a, locker) → F 66.09/17.43
eqt(a, mcrlrecord) → F 66.09/17.43
eqt(a, ok) → F 66.09/17.43
eqt(a, pending) → F 66.09/17.43
eqt(a, release) → F 66.09/17.43
eqt(a, request) → F 66.09/17.43
eqt(a, resource) → F 66.09/17.43
eqt(a, tag) → F 66.09/17.43
eqt(a, true) → F 66.09/17.43
eqt(a, undefined) → F 66.09/17.43
eqt(a, pid(z0)) → F 66.09/17.43
eqt(a, int(z0)) → F 66.09/17.43
eqt(a, cons(z0, z1)) → F 66.09/17.43
eqt(a, tuple(z0, z1)) → F 66.09/17.43
eqt(a, tuplenil(z0)) → F 66.09/17.43
eqt(excl, nil) → F 66.09/17.43
eqt(excl, a) → F 66.09/17.43
eqt(excl, excl) → T 66.09/17.43
eqt(excl, false) → F 66.09/17.43
eqt(excl, lock) → F 66.09/17.43
eqt(excl, locker) → F 66.09/17.43
eqt(excl, mcrlrecord) → F 66.09/17.43
eqt(excl, ok) → F 66.09/17.43
eqt(excl, pending) → F 66.09/17.43
eqt(excl, release) → F 66.09/17.43
eqt(excl, request) → F 66.09/17.43
eqt(excl, resource) → F 66.09/17.43
eqt(excl, tag) → F 66.09/17.43
eqt(excl, true) → F 66.09/17.43
eqt(excl, undefined) → F 66.09/17.43
eqt(excl, pid(z0)) → F 66.09/17.43
eqt(excl, eqt(false, int(z0))) → F 66.09/17.43
eqt(false, cons(z0, z1)) → F 66.09/17.43
eqt(false, tuple(z0, z1)) → F 66.09/17.43
eqt(false, tuplenil(z0)) → F 66.09/17.43
eqt(lock, nil) → F 66.09/17.43
eqt(lock, a) → F 66.09/17.43
eqt(lock, excl) → F 66.09/17.43
eqt(lock, false) → F 66.09/17.43
eqt(lock, lock) → T 66.09/17.43
eqt(lock, locker) → F 66.09/17.43
eqt(lock, mcrlrecord) → F 66.09/17.43
eqt(lock, ok) → F 66.09/17.43
eqt(lock, pending) → F 66.09/17.43
eqt(lock, release) → F 66.09/17.43
eqt(lock, request) → F 66.09/17.43
eqt(lock, resource) → F 66.09/17.43
eqt(lock, tag) → F 66.09/17.43
eqt(lock, true) → F 66.09/17.43
eqt(lock, undefined) → F 66.09/17.43
eqt(lock, pid(z0)) → F 66.09/17.43
eqt(lock, int(z0)) → F 66.09/17.43
eqt(lock, cons(z0, z1)) → F 66.09/17.43
eqt(lock, tuple(z0, z1)) → F 66.09/17.43
eqt(lock, tuplenil(z0)) → F 66.09/17.43
eqt(locker, nil) → F 66.09/17.43
eqt(locker, a) → F 66.09/17.43
eqt(locker, excl) → F 66.09/17.43
eqt(locker, false) → F 66.09/17.43
eqt(locker, lock) → F 66.09/17.43
eqt(locker, locker) → T 66.09/17.43
eqt(locker, mcrlrecord) → F 66.09/17.43
eqt(locker, ok) → F 66.09/17.43
eqt(locker, pending) → F 66.09/17.43
eqt(locker, release) → F 66.09/17.43
eqt(locker, request) → F 66.09/17.43
eqt(locker, resource) → F 66.09/17.43
eqt(locker, tag) → F 66.09/17.43
eqt(locker, true) → F 66.09/17.43
eqt(locker, undefined) → F 66.09/17.43
eqt(locker, pid(z0)) → F 66.09/17.43
eqt(locker, int(z0)) → F 66.09/17.43
eqt(locker, cons(z0, z1)) → F 66.09/17.43
eqt(locker, tuple(z0, z1)) → F 66.09/17.43
eqt(locker, tuplenil(z0)) → F 66.09/17.43
eqt(mcrlrecord, nil) → F 66.09/17.43
eqt(mcrlrecord, a) → F 66.09/17.43
eqt(mcrlrecord, excl) → F 66.09/17.43
eqt(mcrlrecord, false) → F 66.09/17.43
eqt(mcrlrecord, lock) → F 66.09/17.43
eqt(mcrlrecord, locker) → F 66.09/17.43
eqt(mcrlrecord, mcrlrecord) → T 66.09/17.43
eqt(mcrlrecord, ok) → F 66.09/17.43
eqt(mcrlrecord, pending) → F 66.09/17.43
eqt(mcrlrecord, release) → F 66.09/17.43
eqt(mcrlrecord, request) → F 66.09/17.43
eqt(mcrlrecord, resource) → F 66.09/17.43
eqt(ok, resource) → F 66.09/17.43
eqt(ok, tag) → F 66.09/17.43
eqt(ok, true) → F 66.09/17.43
eqt(ok, undefined) → F 66.09/17.43
eqt(ok, pid(z0)) → F 66.09/17.43
eqt(ok, int(z0)) → F 66.09/17.43
eqt(ok, cons(z0, z1)) → F 66.09/17.43
eqt(ok, tuple(z0, z1)) → F 66.09/17.44
eqt(ok, tuplenil(z0)) → F 66.09/17.44
eqt(pending, nil) → F 66.09/17.44
eqt(pending, a) → F 66.09/17.44
eqt(pending, excl) → F 66.09/17.44
eqt(pending, false) → F 66.09/17.44
eqt(pending, lock) → F 66.09/17.44
eqt(pending, locker) → F 66.09/17.44
eqt(pending, mcrlrecord) → F 66.09/17.44
eqt(pending, ok) → F 66.09/17.44
eqt(pending, pending) → T 66.09/17.44
eqt(pending, release) → F 66.09/17.44
eqt(pending, request) → F 66.09/17.44
eqt(pending, resource) → F 66.09/17.44
eqt(pending, tag) → F 66.09/17.44
eqt(pending, true) → F 66.09/17.44
eqt(pending, undefined) → F 66.09/17.44
eqt(pending, pid(z0)) → F 66.09/17.44
eqt(pending, int(z0)) → F 66.09/17.44
eqt(pending, cons(z0, z1)) → F 66.09/17.44
eqt(pending, tuple(z0, z1)) → F 66.09/17.44
eqt(pending, tuplenil(z0)) → F 66.09/17.44
eqt(release, nil) → F 66.09/17.44
eqt(release, a) → F 66.09/17.44
eqt(release, excl) → F 66.09/17.44
eqt(release, false) → F 66.09/17.44
eqt(release, lock) → F 66.09/17.44
eqt(release, locker) → F 66.09/17.44
eqt(release, mcrlrecord) → F 66.09/17.44
eqt(release, ok) → F 66.09/17.44
eqt(request, mcrlrecord) → F 66.09/17.44
eqt(request, ok) → F 66.09/17.44
eqt(request, pending) → F 66.09/17.44
eqt(request, release) → F 66.09/17.44
eqt(request, request) → T 66.09/17.44
eqt(request, resource) → F 66.09/17.44
eqt(request, tag) → F 66.09/17.44
eqt(request, true) → F 66.09/17.44
eqt(request, undefined) → F 66.09/17.44
eqt(request, pid(z0)) → F 66.09/17.44
eqt(request, int(z0)) → F 66.09/17.44
eqt(request, cons(z0, z1)) → F 66.09/17.44
eqt(request, tuple(z0, z1)) → F 66.09/17.44
eqt(request, tuplenil(z0)) → F 66.09/17.44
eqt(resource, nil) → F 66.09/17.44
eqt(resource, a) → F 66.09/17.44
eqt(resource, excl) → F 66.09/17.44
eqt(resource, false) → F 66.09/17.44
eqt(resource, lock) → F 66.09/17.44
eqt(resource, locker) → F 66.09/17.44
eqt(resource, mcrlrecord) → F 66.09/17.44
eqt(resource, ok) → F 66.09/17.44
eqt(resource, pending) → F 66.09/17.44
eqt(resource, release) → F 66.09/17.44
eqt(resource, request) → F 66.09/17.44
eqt(resource, resource) → T 66.09/17.44
eqt(resource, tag) → F 66.09/17.44
eqt(resource, true) → F 66.09/17.44
eqt(resource, undefined) → F 66.09/17.44
eqt(resource, pid(z0)) → F 66.09/17.44
eqt(resource, int(z0)) → F 66.09/17.44
eqt(resource, cons(z0, z1)) → F 66.09/17.44
eqt(resource, tuple(z0, z1)) → F 66.09/17.44
eqt(resource, tuplenil(z0)) → F 66.09/17.44
eqt(tag, nil) → F 66.09/17.44
eqt(tag, a) → F 66.09/17.44
eqt(tag, excl) → F 66.09/17.44
eqt(tag, false) → F 66.09/17.44
eqt(tag, lock) → F 66.09/17.44
eqt(tag, locker) → F 66.09/17.44
eqt(tag, mcrlrecord) → F 66.09/17.44
eqt(tag, ok) → F 66.09/17.44
eqt(tag, pending) → F 66.09/17.44
eqt(tag, release) → F 66.09/17.44
eqt(tag, request) → F 66.09/17.44
eqt(tag, resource) → F 66.09/17.44
eqt(tag, tag) → T 66.09/17.44
eqt(tag, true) → F 66.09/17.44
eqt(tag, undefined) → F 66.09/17.44
eqt(tag, pid(z0)) → F 66.09/17.44
eqt(tag, int(z0)) → F 66.09/17.44
eqt(tag, cons(z0, z1)) → F 66.09/17.44
eqt(tag, tuple(z0, z1)) → F 66.09/17.44
eqt(tag, tuplenil(z0)) → F 66.09/17.44
eqt(true, nil) → F 66.09/17.44
eqt(true, a) → F 66.09/17.44
eqt(true, excl) → F 66.09/17.44
eqt(true, false) → F 66.09/17.44
eqt(true, lock) → F 66.09/17.44
eqt(true, locker) → F 66.09/17.44
eqt(true, mcrlrecord) → F 66.09/17.44
eqt(true, ok) → F 66.09/17.44
eqt(true, pending) → F 66.09/17.44
eqt(true, release) → F 66.09/17.44
eqt(true, request) → F 66.09/17.44
eqt(true, resource) → F 66.09/17.44
eqt(true, tag) → F 66.09/17.44
eqt(true, true) → T 66.09/17.44
eqt(true, undefined) → F 66.09/17.44
eqt(true, pid(z0)) → F 66.09/17.44
eqt(true, int(z0)) → F 66.09/17.44
eqt(true, cons(z0, z1)) → F 66.09/17.44
eqt(true, tuple(z0, z1)) → F 66.09/17.44
eqt(true, tuplenil(z0)) → F 66.09/17.44
eqt(undefined, nil) → F 66.09/17.44
eqt(undefined, a) → F 66.09/17.44
eqt(undefined, tuplenil(z0)) → F 66.09/17.44
eqt(pid(z0), nil) → F 66.09/17.44
eqt(pid(z0), a) → F 66.09/17.44
eqt(pid(z0), excl) → F 66.09/17.44
eqt(pid(z0), false) → F 66.09/17.44
eqt(pid(z0), lock) → F 66.09/17.44
eqt(pid(z0), locker) → F 66.09/17.44
eqt(pid(z0), mcrlrecord) → F 66.09/17.44
eqt(pid(z0), ok) → F 66.09/17.44
eqt(pid(z0), pending) → F 66.09/17.44
eqt(pid(z0), release) → F 66.09/17.44
eqt(pid(z0), request) → F 66.09/17.44
eqt(pid(z0), resource) → F 66.09/17.44
eqt(pid(z0), tag) → F 66.09/17.44
eqt(pid(z0), true) → F 66.09/17.44
eqt(pid(z0), undefined) → F 66.09/17.44
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 66.09/17.44
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 66.09/17.44
eqt(pid(z0), int(z1)) → F 66.09/17.44
eqt(pid(z0), cons(z1, z2)) → F 66.09/17.44
eqt(pid(z0), tuple(z1, z2)) → F 66.09/17.44
eqt(pid(z0), tuplenil(z1)) → F 66.09/17.44
eqt(int(z0), nil) → F 66.09/17.44
eqt(int(z0), a) → F 66.09/17.44
eqt(int(z0), excl) → F 66.09/17.44
eqt(int(z0), false) → F 66.09/17.44
eqt(int(z0), lock) → F 66.09/17.44
eqt(int(z0), locker) → F 66.09/17.44
eqt(int(z0), mcrlrecord) → F 66.09/17.44
eqt(int(z0), ok) → F 66.09/17.44
eqt(int(z0), pending) → F 66.09/17.44
eqt(int(z0), release) → F 66.09/17.44
eqt(int(z0), request) → F 66.09/17.44
eqt(int(z0), resource) → F 66.09/17.44
eqt(int(z0), tag) → F 66.09/17.44
eqt(int(z0), true) → F 66.09/17.44
eqt(int(z0), undefined) → F 66.09/17.44
eqt(cons(z0, z1), resource) → F 66.09/17.44
eqt(cons(z0, z1), tag) → F 66.09/17.44
eqt(cons(z0, z1), true) → F 66.09/17.44
eqt(cons(z0, z1), undefined) → F 66.09/17.44
eqt(cons(z0, z1), pid(z2)) → F 66.09/17.44
eqt(cons(z0, z1), int(z2)) → F 66.09/17.44
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.44
eqt(cons(z0, z1), tuple(z2, z3)) → F 66.09/17.44
eqt(cons(z0, z1), tuplenil(z2)) → F 66.09/17.44
eqt(tuple(z0, z1), nil) → F 66.09/17.44
eqt(tuple(z0, z1), a) → F 66.09/17.44
eqt(tuple(z0, z1), excl) → F 66.09/17.44
eqt(tuple(z0, z1), false) → F 66.09/17.44
eqt(tuple(z0, z1), lock) → F 66.09/17.44
eqt(tuple(z0, z1), locker) → F 66.09/17.44
eqt(tuple(z0, z1), mcrlrecord) → F 66.09/17.44
eqt(tuple(z0, z1), ok) → F 66.09/17.44
eqt(tuple(z0, z1), pending) → F 66.09/17.44
eqt(tuple(z0, z1), release) → F 66.09/17.44
eqt(tuple(z0, z1), request) → F 66.09/17.44
eqt(tuple(z0, z1), resource) → F 66.09/17.44
eqt(tuple(z0, z1), tag) → F 66.09/17.44
eqt(tuple(z0, z1), true) → F 66.09/17.44
eqt(tuple(z0, z1), undefined) → F 66.09/17.44
eqt(tuple(z0, z1), pid(z2)) → F 66.09/17.44
eqt(tuple(z0, z1), int(z2)) → F 66.09/17.44
eqt(tuple(z0, z1), cons(z2, z3)) → F 66.09/17.44
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.44
eqt(tuple(z0, z1), tuplenil(z2)) → F 66.09/17.44
eqt(tuplenil(z0), nil) → F 66.09/17.44
eqt(tuplenil(z0), a) → F 66.09/17.44
eqt(tuplenil(z0), excl) → F 66.09/17.44
eqt(tuplenil(z0), false) → F 66.09/17.44
eqt(tuplenil(z0), lock) → F 66.09/17.44
eqt(tuplenil(z0), locker) → F 66.09/17.44
eqt(tuplenil(z0), mcrlrecord) → F 66.09/17.44
eqt(tuplenil(z0), ok) → F 66.09/17.44
eqt(tuplenil(z0), pending) → F 66.09/17.44
eqt(tuplenil(z0), release) → F 66.09/17.44
eqt(tuplenil(z0), request) → F 66.09/17.44
eqt(tuplenil(z0), resource) → F 66.09/17.44
eqt(tuplenil(z0), tag) → F 66.09/17.44
eqt(tuplenil(z0), true) → F 66.09/17.44
eqt(tuplenil(z0), undefined) → F 66.09/17.44
eqt(tuplenil(z0), pid(z1)) → F 66.09/17.44
eqt(tuplenil(z0), int(z1)) → F 66.09/17.44
eqt(tuplenil(z0), cons(z1, z2)) → F 66.09/17.44
eqt(tuplenil(z0), tuple(z1, z2)) → F 66.09/17.44
and(T, z0) → z0 66.09/17.44
and(z0, T) → z0 66.09/17.44
and(F, z0) → F 66.09/17.44
and(z0, F) → F 66.09/17.44
gen_modtageq(z0, z1) → equal(z0, z1) 66.09/17.44
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3)))))
And the Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 66.09/17.44
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.44
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.44
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.44
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.44
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.44
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.44
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.44
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.44
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.44
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 66.09/17.44
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.44
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.44
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.44
CASE2(z0, z1, true) → c335 66.09/17.44
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.44
DELETE(z0, cons(z1, z2)) → c352 66.09/17.44
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.44
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.44
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.44
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.44
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.44
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.44
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.44
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.44
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
The order we found is given by the following interpretation:
Polynomial interpretation : 66.09/17.44

POL(APPEND(x1, x2)) = [5]x1    66.09/17.44
POL(CASE1(x1, x2, x3, x4)) = [2]x1 + x2    66.09/17.44
POL(CASE2(x1, x2, x3)) = x1 + [3]x2    66.09/17.44
POL(DELETE(x1, x2)) = 0    66.09/17.44
POL(ELEMENT(x1, x2)) = x1 + [3]x2    66.09/17.44
POL(EQC(x1, x2)) = [3]x2    66.09/17.44
POL(EQS(x1, x2)) = [3]x2    66.09/17.44
POL(EQT(x1, x2)) = x2    66.09/17.44
POL(F) = [3]    66.09/17.44
POL(LOCKER2_ADD_PENDING(x1, x2, x3)) = [2] + [3]x2 + [3]x3    66.09/17.44
POL(LOCKER2_CHECK_AVAILABLE(x1, x2)) = [5] + x1    66.09/17.44
POL(LOCKER2_CHECK_AVAILABLES(x1, x2)) = [5]x1    66.09/17.44
POL(LOCKER2_MAP_CLAIM_LOCK(x1, x2, x3)) = [5]x1    66.09/17.44
POL(LOCKER2_MAP_PROMOTE_PENDING(x1, x2)) = [5]x1    66.09/17.44
POL(LOCKER2_PROMOTE_PENDING(x1, x2)) = [2] + [4]x1    66.09/17.44
POL(LOCKER2_RELEASE_LOCK(x1, x2)) = [5] + [3]x1 + [5]x2    66.09/17.44
POL(LOCKER2_REMOVE_PENDING(x1, x2)) = [2] + [3]x1 + [5]x2    66.09/17.44
POL(MEMBER(x1, x2)) = [3]x2    66.09/17.44
POL(PUSH(x1, x2, x3)) = [3] + [3]x1 + [3]x2    66.09/17.44
POL(PUSH1(x1, x2, x3, x4, x5, x6)) = [1] + x1 + [3]x2    66.09/17.44
POL(RECORD_UPDATES(x1, x2, x3)) = 0    66.09/17.44
POL(SUBTRACT(x1, x2)) = 0    66.09/17.44
POL(T) = [3]    66.09/17.44
POL(a) = [3]    66.09/17.44
POL(and(x1, x2)) = [3]    66.09/17.44
POL(append(x1, x2)) = 0    66.09/17.44
POL(c(x1)) = x1    66.09/17.44
POL(c245(x1)) = x1    66.09/17.44
POL(c271(x1, x2)) = x1 + x2    66.09/17.44
POL(c292(x1, x2)) = x1 + x2    66.09/17.44
POL(c313(x1)) = x1    66.09/17.44
POL(c316(x1)) = x1    66.09/17.44
POL(c321(x1)) = x1    66.09/17.44
POL(c323(x1, x2)) = x1 + x2    66.09/17.44
POL(c325(x1)) = x1    66.09/17.44
POL(c327) = 0    66.09/17.44
POL(c332(x1)) = x1    66.09/17.44
POL(c334(x1)) = x1    66.09/17.44
POL(c335) = 0    66.09/17.44
POL(c342) = 0    66.09/17.44
POL(c346(x1, x2)) = x1 + x2    66.09/17.44
POL(c348(x1)) = x1    66.09/17.44
POL(c350(x1, x2)) = x1 + x2    66.09/17.44
POL(c352) = 0    66.09/17.44
POL(c358) = 0    66.09/17.44
POL(c364(x1, x2)) = x1 + x2    66.09/17.44
POL(c373(x1, x2, x3)) = x1 + x2 + x3    66.09/17.44
POL(c376) = 0    66.09/17.44
POL(calls(x1, x2, x3)) = x1 + x2 + x3    66.09/17.44
POL(case8(x1, x2, x3, x4)) = 0    66.09/17.44
POL(case9(x1, x2, x3, x4)) = [4] + [4]x1 + [2]x2 + [4]x4    66.09/17.44
POL(cons(x1, x2)) = [4] + x1 + x2    66.09/17.44
POL(delete(x1, x2)) = [2] + x2    66.09/17.44
POL(eqt(x1, x2)) = 0    66.09/17.44
POL(equal(x1, x2)) = [2]    66.09/17.44
POL(excl) = 0    66.09/17.44
POL(false) = [2]    66.09/17.44
POL(gen_modtageq(x1, x2)) = x1    66.09/17.44
POL(int(x1)) = [3]    66.09/17.44
POL(lock) = [4]    66.09/17.44
POL(locker) = [3]    66.09/17.44
POL(mcrlrecord) = [4]    66.09/17.44
POL(member(x1, x2)) = [2] + [2]x1 + [4]x2    66.09/17.44
POL(nil) = 0    66.09/17.44
POL(ok) = [3]    66.09/17.44
POL(pending) = 0    66.09/17.44
POL(pid(x1)) = [1] + x1    66.09/17.44
POL(record_extract(x1, x2, x3)) = [2]x1 + [5]x2    66.09/17.44
POL(record_update(x1, x2, x3, x4)) = 0    66.09/17.44
POL(release) = [3]    66.09/17.44
POL(request) = [3]    66.09/17.44
POL(resource) = 0    66.09/17.44
POL(s(x1)) = 0    66.09/17.44
POL(stack(x1, x2)) = x1 + x2    66.09/17.44
POL(subtract(x1, x2)) = 0    66.09/17.44
POL(tag) = [3]    66.09/17.44
POL(true) = 0    66.09/17.44
POL(tuple(x1, x2)) = [4] + x1 + x2    66.09/17.44
POL(tuplenil(x1)) = x1    66.09/17.44
POL(undefined) = [3]   
66.09/17.44
66.09/17.44

(30) Obligation:

Complexity Dependency Tuples Problem
Rules:

or(T, T) → T 66.09/17.44
or(F, T) → T 66.09/17.44
or(T, F) → T 66.09/17.44
or(F, F) → F 66.09/17.44
and(T, z0) → z0 66.09/17.44
and(z0, T) → z0 66.09/17.44
and(F, z0) → F 66.09/17.44
and(z0, F) → F 66.09/17.44
imp(T, z0) → z0 66.09/17.44
imp(F, z0) → T 66.09/17.44
not(T) → F 66.09/17.44
not(F) → T 66.09/17.44
if(T, z0, z1) → z0 66.09/17.44
if(F, z0, z1) → z1 66.09/17.44
eq(T, T) → T 66.09/17.44
eq(F, F) → T 66.09/17.44
eq(T, F) → F 66.09/17.44
eq(F, T) → F 66.09/17.44
eqt(nil, undefined) → F 66.09/17.44
eqt(nil, pid(z0)) → F 66.09/17.44
eqt(nil, int(z0)) → F 66.09/17.44
eqt(nil, cons(z0, z1)) → F 66.09/17.44
eqt(nil, tuple(z0, z1)) → F 66.09/17.44
eqt(nil, tuplenil(z0)) → F 66.09/17.44
eqt(a, nil) → F 66.09/17.44
eqt(a, a) → T 66.09/17.44
eqt(a, excl) → F 66.09/17.44
eqt(a, false) → F 66.09/17.44
eqt(a, lock) → F 66.09/17.44
eqt(a, locker) → F 66.09/17.44
eqt(a, mcrlrecord) → F 66.09/17.44
eqt(a, ok) → F 66.09/17.44
eqt(a, pending) → F 66.09/17.44
eqt(a, release) → F 66.09/17.44
eqt(a, request) → F 66.09/17.44
eqt(a, resource) → F 66.09/17.44
eqt(a, tag) → F 66.09/17.44
eqt(a, true) → F 66.09/17.44
eqt(a, undefined) → F 66.09/17.44
eqt(a, pid(z0)) → F 66.09/17.44
eqt(a, int(z0)) → F 66.09/17.44
eqt(a, cons(z0, z1)) → F 66.09/17.44
eqt(a, tuple(z0, z1)) → F 66.09/17.44
eqt(a, tuplenil(z0)) → F 66.09/17.44
eqt(excl, nil) → F 66.09/17.44
eqt(excl, a) → F 66.09/17.44
eqt(excl, excl) → T 66.09/17.45
eqt(excl, false) → F 66.09/17.45
eqt(excl, lock) → F 66.09/17.45
eqt(excl, locker) → F 66.09/17.45
eqt(excl, mcrlrecord) → F 66.09/17.45
eqt(excl, ok) → F 66.09/17.45
eqt(excl, pending) → F 66.09/17.45
eqt(excl, release) → F 66.09/17.45
eqt(excl, request) → F 66.09/17.45
eqt(excl, resource) → F 66.09/17.45
eqt(excl, tag) → F 66.09/17.45
eqt(excl, true) → F 66.09/17.45
eqt(excl, undefined) → F 66.09/17.45
eqt(excl, pid(z0)) → F 66.09/17.45
eqt(excl, eqt(false, int(z0))) → F 66.09/17.45
eqt(false, cons(z0, z1)) → F 66.09/17.45
eqt(false, tuple(z0, z1)) → F 66.09/17.45
eqt(false, tuplenil(z0)) → F 66.09/17.45
eqt(lock, nil) → F 66.09/17.45
eqt(lock, a) → F 66.09/17.45
eqt(lock, excl) → F 66.09/17.45
eqt(lock, false) → F 66.09/17.45
eqt(lock, lock) → T 66.09/17.45
eqt(lock, locker) → F 66.09/17.45
eqt(lock, mcrlrecord) → F 66.09/17.45
eqt(lock, ok) → F 66.09/17.45
eqt(lock, pending) → F 66.09/17.45
eqt(lock, release) → F 66.09/17.45
eqt(lock, request) → F 66.09/17.45
eqt(lock, resource) → F 66.09/17.45
eqt(lock, tag) → F 66.09/17.45
eqt(lock, true) → F 66.09/17.45
eqt(lock, undefined) → F 66.09/17.45
eqt(lock, pid(z0)) → F 66.09/17.45
eqt(lock, int(z0)) → F 66.09/17.45
eqt(lock, cons(z0, z1)) → F 66.09/17.45
eqt(lock, tuple(z0, z1)) → F 66.09/17.45
eqt(lock, tuplenil(z0)) → F 66.09/17.45
eqt(locker, nil) → F 66.09/17.45
eqt(locker, a) → F 66.09/17.45
eqt(locker, excl) → F 66.09/17.45
eqt(locker, false) → F 66.09/17.45
eqt(locker, lock) → F 66.09/17.45
eqt(locker, locker) → T 66.09/17.45
eqt(locker, mcrlrecord) → F 66.09/17.45
eqt(locker, ok) → F 66.09/17.45
eqt(locker, pending) → F 66.09/17.45
eqt(locker, release) → F 66.09/17.45
eqt(locker, request) → F 66.09/17.45
eqt(locker, resource) → F 66.09/17.45
eqt(locker, tag) → F 66.09/17.45
eqt(locker, true) → F 66.09/17.45
eqt(locker, undefined) → F 66.09/17.45
eqt(locker, pid(z0)) → F 66.09/17.45
eqt(locker, int(z0)) → F 66.09/17.45
eqt(locker, cons(z0, z1)) → F 66.09/17.45
eqt(locker, tuple(z0, z1)) → F 66.09/17.45
eqt(locker, tuplenil(z0)) → F 66.09/17.45
eqt(mcrlrecord, nil) → F 66.09/17.45
eqt(mcrlrecord, a) → F 66.09/17.45
eqt(mcrlrecord, excl) → F 66.09/17.45
eqt(mcrlrecord, false) → F 66.09/17.45
eqt(mcrlrecord, lock) → F 66.09/17.45
eqt(mcrlrecord, locker) → F 66.09/17.45
eqt(mcrlrecord, mcrlrecord) → T 66.09/17.45
eqt(mcrlrecord, ok) → F 66.09/17.45
eqt(mcrlrecord, pending) → F 66.09/17.45
eqt(mcrlrecord, release) → F 66.09/17.45
eqt(mcrlrecord, request) → F 66.09/17.45
eqt(mcrlrecord, resource) → F 66.09/17.45
eqt(ok, resource) → F 66.09/17.45
eqt(ok, tag) → F 66.09/17.45
eqt(ok, true) → F 66.09/17.45
eqt(ok, undefined) → F 66.09/17.45
eqt(ok, pid(z0)) → F 66.09/17.45
eqt(ok, int(z0)) → F 66.09/17.45
eqt(ok, cons(z0, z1)) → F 66.09/17.45
eqt(ok, tuple(z0, z1)) → F 66.09/17.45
eqt(ok, tuplenil(z0)) → F 66.09/17.45
eqt(pending, nil) → F 66.09/17.45
eqt(pending, a) → F 66.09/17.45
eqt(pending, excl) → F 66.09/17.45
eqt(pending, false) → F 66.09/17.45
eqt(pending, lock) → F 66.09/17.45
eqt(pending, locker) → F 66.09/17.45
eqt(pending, mcrlrecord) → F 66.09/17.45
eqt(pending, ok) → F 66.09/17.45
eqt(pending, pending) → T 66.09/17.45
eqt(pending, release) → F 66.09/17.45
eqt(pending, request) → F 66.09/17.45
eqt(pending, resource) → F 66.09/17.45
eqt(pending, tag) → F 66.09/17.45
eqt(pending, true) → F 66.09/17.45
eqt(pending, undefined) → F 66.09/17.45
eqt(pending, pid(z0)) → F 66.09/17.45
eqt(pending, int(z0)) → F 66.09/17.45
eqt(pending, cons(z0, z1)) → F 66.09/17.45
eqt(pending, tuple(z0, z1)) → F 66.09/17.45
eqt(pending, tuplenil(z0)) → F 66.09/17.45
eqt(release, nil) → F 66.09/17.45
eqt(release, a) → F 66.09/17.45
eqt(release, excl) → F 66.09/17.45
eqt(release, false) → F 66.09/17.45
eqt(release, lock) → F 66.09/17.45
eqt(release, locker) → F 66.09/17.45
eqt(release, mcrlrecord) → F 66.09/17.45
eqt(release, ok) → F 66.09/17.45
eqt(request, mcrlrecord) → F 66.09/17.45
eqt(request, ok) → F 66.09/17.45
eqt(request, pending) → F 66.09/17.45
eqt(request, release) → F 66.09/17.45
eqt(request, request) → T 66.09/17.45
eqt(request, resource) → F 66.09/17.45
eqt(request, tag) → F 66.09/17.45
eqt(request, true) → F 66.09/17.45
eqt(request, undefined) → F 66.09/17.45
eqt(request, pid(z0)) → F 66.09/17.45
eqt(request, int(z0)) → F 66.09/17.45
eqt(request, cons(z0, z1)) → F 66.09/17.45
eqt(request, tuple(z0, z1)) → F 66.09/17.45
eqt(request, tuplenil(z0)) → F 66.09/17.45
eqt(resource, nil) → F 66.09/17.45
eqt(resource, a) → F 66.09/17.45
eqt(resource, excl) → F 66.09/17.45
eqt(resource, false) → F 66.09/17.45
eqt(resource, lock) → F 66.09/17.45
eqt(resource, locker) → F 66.09/17.45
eqt(resource, mcrlrecord) → F 66.09/17.45
eqt(resource, ok) → F 66.09/17.45
eqt(resource, pending) → F 66.09/17.45
eqt(resource, release) → F 66.09/17.45
eqt(resource, request) → F 66.09/17.45
eqt(resource, resource) → T 66.09/17.45
eqt(resource, tag) → F 66.09/17.45
eqt(resource, true) → F 66.09/17.45
eqt(resource, undefined) → F 66.09/17.45
eqt(resource, pid(z0)) → F 66.09/17.45
eqt(resource, int(z0)) → F 66.09/17.45
eqt(resource, cons(z0, z1)) → F 66.09/17.45
eqt(resource, tuple(z0, z1)) → F 66.09/17.45
eqt(resource, tuplenil(z0)) → F 66.09/17.45
eqt(tag, nil) → F 66.09/17.45
eqt(tag, a) → F 66.09/17.45
eqt(tag, excl) → F 66.09/17.45
eqt(tag, false) → F 66.09/17.45
eqt(tag, lock) → F 66.09/17.45
eqt(tag, locker) → F 66.09/17.45
eqt(tag, mcrlrecord) → F 66.09/17.45
eqt(tag, ok) → F 66.09/17.45
eqt(tag, pending) → F 66.09/17.45
eqt(tag, release) → F 66.09/17.45
eqt(tag, request) → F 66.09/17.45
eqt(tag, resource) → F 66.09/17.45
eqt(tag, tag) → T 66.09/17.45
eqt(tag, true) → F 66.09/17.45
eqt(tag, undefined) → F 66.09/17.45
eqt(tag, pid(z0)) → F 66.09/17.45
eqt(tag, int(z0)) → F 66.09/17.45
eqt(tag, cons(z0, z1)) → F 66.09/17.45
eqt(tag, tuple(z0, z1)) → F 66.09/17.45
eqt(tag, tuplenil(z0)) → F 66.09/17.45
eqt(true, nil) → F 66.09/17.45
eqt(true, a) → F 66.09/17.45
eqt(true, excl) → F 66.09/17.45
eqt(true, false) → F 66.09/17.45
eqt(true, lock) → F 66.09/17.45
eqt(true, locker) → F 66.09/17.45
eqt(true, mcrlrecord) → F 66.09/17.45
eqt(true, ok) → F 66.09/17.45
eqt(true, pending) → F 66.09/17.45
eqt(true, release) → F 66.09/17.45
eqt(true, request) → F 66.09/17.45
eqt(true, resource) → F 66.09/17.45
eqt(true, tag) → F 66.09/17.45
eqt(true, true) → T 66.09/17.45
eqt(true, undefined) → F 66.09/17.45
eqt(true, pid(z0)) → F 66.09/17.45
eqt(true, int(z0)) → F 66.09/17.45
eqt(true, cons(z0, z1)) → F 66.09/17.45
eqt(true, tuple(z0, z1)) → F 66.09/17.45
eqt(true, tuplenil(z0)) → F 66.09/17.45
eqt(undefined, nil) → F 66.09/17.45
eqt(undefined, a) → F 66.09/17.45
eqt(undefined, tuplenil(z0)) → F 66.09/17.45
eqt(pid(z0), nil) → F 66.09/17.45
eqt(pid(z0), a) → F 66.09/17.45
eqt(pid(z0), excl) → F 66.09/17.45
eqt(pid(z0), false) → F 66.09/17.45
eqt(pid(z0), lock) → F 66.09/17.45
eqt(pid(z0), locker) → F 66.09/17.45
eqt(pid(z0), mcrlrecord) → F 66.09/17.45
eqt(pid(z0), ok) → F 66.09/17.45
eqt(pid(z0), pending) → F 66.09/17.45
eqt(pid(z0), release) → F 66.09/17.45
eqt(pid(z0), request) → F 66.09/17.45
eqt(pid(z0), resource) → F 66.09/17.45
eqt(pid(z0), tag) → F 66.09/17.45
eqt(pid(z0), true) → F 66.09/17.45
eqt(pid(z0), undefined) → F 66.09/17.45
eqt(pid(z0), pid(z1)) → eqt(z0, z1) 66.09/17.45
eqt(pid(z0), int(z1)) → F 66.09/17.45
eqt(pid(z0), cons(z1, z2)) → F 66.09/17.45
eqt(pid(z0), tuple(z1, z2)) → F 66.09/17.45
eqt(pid(z0), tuplenil(z1)) → F 66.09/17.45
eqt(int(z0), nil) → F 66.09/17.45
eqt(int(z0), a) → F 66.09/17.45
eqt(int(z0), excl) → F 66.09/17.45
eqt(int(z0), false) → F 66.09/17.45
eqt(int(z0), lock) → F 66.09/17.45
eqt(int(z0), locker) → F 66.09/17.45
eqt(int(z0), mcrlrecord) → F 66.09/17.45
eqt(int(z0), ok) → F 66.09/17.45
eqt(int(z0), pending) → F 66.09/17.45
eqt(int(z0), release) → F 66.09/17.45
eqt(int(z0), request) → F 66.09/17.45
eqt(int(z0), resource) → F 66.09/17.45
eqt(int(z0), tag) → F 66.09/17.45
eqt(int(z0), true) → F 66.09/17.45
eqt(int(z0), undefined) → F 66.09/17.45
eqt(cons(z0, z1), resource) → F 66.09/17.45
eqt(cons(z0, z1), tag) → F 66.09/17.45
eqt(cons(z0, z1), true) → F 66.09/17.45
eqt(cons(z0, z1), undefined) → F 66.09/17.45
eqt(cons(z0, z1), pid(z2)) → F 66.09/17.45
eqt(cons(z0, z1), int(z2)) → F 66.09/17.45
eqt(cons(z0, z1), cons(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.45
eqt(cons(z0, z1), tuple(z2, z3)) → F 66.09/17.45
eqt(cons(z0, z1), tuplenil(z2)) → F 66.09/17.45
eqt(tuple(z0, z1), nil) → F 66.09/17.45
eqt(tuple(z0, z1), a) → F 66.09/17.45
eqt(tuple(z0, z1), excl) → F 66.09/17.45
eqt(tuple(z0, z1), false) → F 66.09/17.45
eqt(tuple(z0, z1), lock) → F 66.09/17.45
eqt(tuple(z0, z1), locker) → F 66.09/17.45
eqt(tuple(z0, z1), mcrlrecord) → F 66.09/17.45
eqt(tuple(z0, z1), ok) → F 66.09/17.45
eqt(tuple(z0, z1), pending) → F 66.09/17.45
eqt(tuple(z0, z1), release) → F 66.09/17.45
eqt(tuple(z0, z1), request) → F 66.09/17.45
eqt(tuple(z0, z1), resource) → F 66.09/17.45
eqt(tuple(z0, z1), tag) → F 66.09/17.45
eqt(tuple(z0, z1), true) → F 66.09/17.45
eqt(tuple(z0, z1), undefined) → F 66.09/17.45
eqt(tuple(z0, z1), pid(z2)) → F 66.09/17.45
eqt(tuple(z0, z1), int(z2)) → F 66.09/17.45
eqt(tuple(z0, z1), cons(z2, z3)) → F 66.09/17.45
eqt(tuple(z0, z1), tuple(z2, z3)) → and(eqt(z0, z2), eqt(z1, z3)) 66.09/17.45
eqt(tuple(z0, z1), tuplenil(z2)) → F 66.09/17.45
eqt(tuplenil(z0), nil) → F 66.09/17.45
eqt(tuplenil(z0), a) → F 66.09/17.45
eqt(tuplenil(z0), excl) → F 66.09/17.45
eqt(tuplenil(z0), false) → F 66.09/17.45
eqt(tuplenil(z0), lock) → F 66.09/17.45
eqt(tuplenil(z0), locker) → F 66.09/17.45
eqt(tuplenil(z0), mcrlrecord) → F 66.09/17.45
eqt(tuplenil(z0), ok) → F 66.09/17.45
eqt(tuplenil(z0), pending) → F 66.09/17.45
eqt(tuplenil(z0), release) → F 66.09/17.45
eqt(tuplenil(z0), request) → F 66.09/17.45
eqt(tuplenil(z0), resource) → F 66.09/17.45
eqt(tuplenil(z0), tag) → F 66.09/17.45
eqt(tuplenil(z0), true) → F 66.09/17.45
eqt(tuplenil(z0), undefined) → F 66.09/17.45
eqt(tuplenil(z0), pid(z1)) → F 66.09/17.45
eqt(tuplenil(z0), int(z1)) → F 66.09/17.45
eqt(tuplenil(z0), cons(z1, z2)) → F 66.09/17.45
eqt(tuplenil(z0), tuple(z1, z2)) → F 66.09/17.45
eqt(tuplenil(z0), tuplenil(z1)) → eqt(z0, z1) 66.09/17.45
element(int(s(0)), tuplenil(z0)) → z0 66.09/17.45
element(int(s(0)), tuple(z0, z1)) → z0 66.09/17.45
element(int(s(s(z0))), tuple(z1, z2)) → element(int(s(z0)), z2) 66.09/17.45
record_new(lock) → tuple(mcrlrecord, tuple(lock, tuple(undefined, tuple(nil, tuplenil(nil))))) 66.09/17.45
record_extract(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, resource) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))) 66.09/17.45
record_update(tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z2))))), lock, pending, z3) → tuple(mcrlrecord, tuple(lock, tuple(z0, tuple(z1, tuplenil(z3))))) 66.09/17.45
record_updates(z0, z1, nil) → z0 66.09/17.45
record_updates(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → record_updates(record_update(z0, z1, z2, z3), z1, z4) 66.09/17.45
locker2_map_promote_pending(nil, z0) → nil 66.09/17.45
locker2_map_promote_pending(cons(z0, z1), z2) → cons(locker2_promote_pending(z0, z2), locker2_map_promote_pending(z1, z2)) 66.09/17.45
locker2_map_claim_lock(nil, z0, z1) → nil 66.09/17.45
locker2_map_claim_lock(cons(z0, z1), z2, z3) → cons(locker2_claim_lock(z0, z2, z3), locker2_map_claim_lock(z1, z2, z3)) 66.09/17.45
locker2_map_add_pending(nil, z0, z1) → nil 66.09/17.45
locker2_promote_pending(z0, z1) → case0(z1, z0, record_extract(z0, lock, pending)) 66.09/17.45
case0(z0, z1, cons(z0, z2)) → record_updates(z1, lock, cons(tuple(excl, tuplenil(z0)), cons(tuple(pending, tuplenil(z2)), nil))) 66.09/17.45
case0(z0, z1, z2) → z1 66.09/17.45
locker2_remove_pending(z0, z1) → record_updates(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil)) 66.09/17.45
locker2_add_pending(z0, z1, z2) → case1(z2, z1, z0, member(record_extract(z0, lock, resource), z1)) 66.09/17.45
case1(z0, z1, z2, true) → record_updates(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil)) 66.09/17.45
case1(z0, z1, z2, false) → z2 66.09/17.45
locker2_release_lock(z0, z1) → case2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl))) 66.09/17.45
case2(z0, z1, true) → record_updates(z1, lock, cons(tuple(excllock, excl), nil)) 66.09/17.45
case4(z0, z1, z2) → false 66.09/17.45
locker2_obtainables(nil, z0) → true 66.09/17.45
locker2_obtainables(cons(z0, z1), z2) → case5(z2, z1, z0, member(z2, record_extract(z0, lock, pending))) 66.09/17.45
case5(z0, z1, z2, true) → andt(locker2_obtainable(z2, z0), locker2_obtainables(z1, z0)) 66.09/17.45
case5(z0, z1, z2, false) → locker2_obtainables(z1, z0) 66.09/17.45
locker2_check_available(z0, nil) → false 66.09/17.45
locker2_check_available(z0, cons(z1, z2)) → case6(z2, z1, z0, equal(z0, record_extract(z1, lock, resource))) 66.09/17.45
case6(z0, z1, z2, true) → andt(equal(record_extract(z1, lock, excl), nil), equal(record_extract(z1, lock, pending), nil)) 66.09/17.45
case6(z0, z1, z2, false) → locker2_check_available(z2, z0) 66.09/17.45
locker2_check_availables(nil, z0) → true 66.09/17.45
locker2_check_availables(cons(z0, z1), z2) → andt(locker2_check_available(z0, z2), locker2_check_availables(z1, z2)) 66.09/17.45
locker2_adduniq(nil, z0) → z0 66.09/17.45
append(cons(z0, z1), z2) → cons(z0, append(z1, z2)) 66.09/17.45
subtract(z0, nil) → z0 66.09/17.45
subtract(z0, cons(z1, z2)) → subtract(delete(z1, z0), z2) 66.09/17.45
delete(z0, nil) → nil 66.09/17.45
delete(z0, cons(z1, z2)) → case8(z2, z1, z0, equal(z0, z1)) 66.09/17.45
case8(z0, z1, z2, true) → z0 66.09/17.45
case8(z0, z1, z2, false) → cons(z1, delete(z2, z0)) 66.09/17.45
gen_tag(z0) → tuple(z0, tuplenil(tag)) 66.09/17.45
gen_modtageq(z0, z1) → equal(z0, z1) 66.09/17.45
member(z0, nil) → false 66.09/17.45
member(z0, cons(z1, z2)) → case9(z2, z1, z0, equal(z0, z1)) 66.09/17.45
case9(z0, z1, z2, true) → true 66.09/17.45
case9(z0, z1, z2, false) → member(z2, z0) 66.09/17.45
eqs(empty, empty) → T 66.09/17.45
eqs(empty, stack(z0, z1)) → F 66.09/17.45
eqs(stack(z0, z1), empty) → F 66.09/17.45
eqs(stack(z0, z1), stack(z2, z3)) → and(eqt(z0, z2), eqs(z1, z3)) 66.09/17.45
pushs(z0, z1) → stack(z0, z1) 66.09/17.45
pops(stack(z0, z1)) → z1 66.09/17.45
tops(stack(z0, z1)) → z0 66.09/17.45
istops(z0, empty) → F 66.09/17.45
istops(z0, stack(z1, z2)) → eqt(z0, z1) 66.09/17.45
eqc(nocalls, nocalls) → T 66.09/17.45
eqc(nocalls, calls(z0, z1, z2)) → F 66.09/17.45
eqc(calls(z0, z1, z2), nocalls) → F 66.09/17.45
eqc(calls(z0, z1, z2), calls(z3, z4, z5)) → and(eqt(z0, z3), and(eqs(z1, z4), eqc(z2, z5))) 66.09/17.45
push(z0, z1, nocalls) → calls(z0, stack(z1, empty), nocalls) 66.09/17.45
push(z0, z1, calls(z2, z3, z4)) → push1(z0, z1, z2, z3, z4, eqt(z0, z2)) 66.09/17.45
push1(z0, z1, z2, z3, z4, T) → calls(z2, pushs(z1, z3), z4)
Tuples:

EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1)) 66.09/17.45
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.45
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.45
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.45
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.45
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.45
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.45
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.45
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.45
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.45
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 66.09/17.46
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.46
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.46
LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.46
CASE2(z0, z1, true) → c335 66.09/17.46
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.46
DELETE(z0, cons(z1, z2)) → c352 66.09/17.46
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.46
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.46
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.46
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.46
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.46
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.46
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.46
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.46
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1))
S tuples:none
K tuples:

LOCKER2_RELEASE_LOCK(z0, z1) → c334(CASE2(z1, z0, gen_modtageq(z1, record_extract(z0, lock, excl)))) 66.09/17.46
CASE2(z0, z1, true) → c335 66.09/17.46
PUSH(z0, z1, calls(z2, z3, z4)) → c(PUSH1(z0, z1, z2, z3, z4, eqt(z0, z2))) 66.09/17.46
LOCKER2_REMOVE_PENDING(z0, z1) → c(RECORD_UPDATES(z0, lock, cons(tuple(pending, tuplenil(subtract(record_extract(z0, lock, pending), cons(z1, nil)))), nil))) 66.09/17.46
LOCKER2_REMOVE_PENDING(z0, z1) → c(SUBTRACT(record_extract(z0, lock, pending), cons(z1, nil))) 66.09/17.46
LOCKER2_ADD_PENDING(z0, z1, z2) → c(CASE1(z2, z1, z0, member(record_extract(z0, lock, resource), z1))) 66.09/17.46
LOCKER2_ADD_PENDING(z0, z1, z2) → c(MEMBER(record_extract(z0, lock, resource), z1)) 66.09/17.46
PUSH1(z0, z1, z2, z3, z4, T) → c376 66.09/17.46
CASE1(z0, z1, z2, true) → c332(RECORD_UPDATES(z2, lock, cons(tuple(pending, tuplenil(append(record_extract(z2, lock, pending), cons(z0, nil)))), nil))) 66.09/17.46
MEMBER(z0, cons(z1, z2)) → c358 66.09/17.46
ELEMENT(int(s(s(z0))), tuple(z1, z2)) → c316(ELEMENT(int(s(z0)), z2)) 66.09/17.46
EQC(calls(z0, z1, z2), calls(z3, z4, z5)) → c373(EQT(z0, z3), EQS(z1, z4), EQC(z2, z5)) 66.09/17.46
LOCKER2_MAP_PROMOTE_PENDING(cons(z0, z1), z2) → c323(LOCKER2_PROMOTE_PENDING(z0, z2), LOCKER2_MAP_PROMOTE_PENDING(z1, z2)) 66.09/17.46
LOCKER2_PROMOTE_PENDING(z0, z1) → c327 66.09/17.46
EQS(stack(z0, z1), stack(z2, z3)) → c364(EQT(z0, z2), EQS(z1, z3)) 66.09/17.46
APPEND(cons(z0, z1), z2) → c348(APPEND(z1, z2)) 66.09/17.46
SUBTRACT(z0, cons(z1, z2)) → c350(SUBTRACT(delete(z1, z0), z2), DELETE(z1, z0)) 66.09/17.46
DELETE(z0, cons(z1, z2)) → c352 66.09/17.46
EQT(tuplenil(z0), tuplenil(z1)) → c313(EQT(z0, z1)) 66.09/17.46
EQT(cons(z0, z1), cons(z2, z3)) → c271(EQT(z0, z2), EQT(z1, z3)) 66.09/17.46
EQT(tuple(z0, z1), tuple(z2, z3)) → c292(EQT(z0, z2), EQT(z1, z3)) 66.09/17.46
LOCKER2_CHECK_AVAILABLES(cons(z0, z1), z2) → c346(LOCKER2_CHECK_AVAILABLE(z0, z2), LOCKER2_CHECK_AVAILABLES(z1, z2)) 66.09/17.46
LOCKER2_CHECK_AVAILABLE(z0, cons(z1, z2)) → c342 66.09/17.46
LOCKER2_MAP_CLAIM_LOCK(cons(z0, z1), z2, z3) → c325(LOCKER2_MAP_CLAIM_LOCK(z1, z2, z3)) 66.09/17.46
RECORD_UPDATES(z0, z1, cons(tuple(z2, tuplenil(z3)), z4)) → c321(RECORD_UPDATES(record_update(z0, z1, z2, z3), z1, z4)) 66.09/17.46
EQT(pid(z0), pid(z1)) → c245(EQT(z0, z1))
Defined Rule Symbols:

or, and, imp, not, if, eq, eqt, element, record_new, record_extract, record_update, record_updates, locker2_map_promote_pending, locker2_map_claim_lock, locker2_map_add_pending, locker2_promote_pending, case0, locker2_remove_pending, locker2_add_pending, case1, locker2_release_lock, case2, case4, locker2_obtainables, case5, locker2_check_available, case6, locker2_check_availables, locker2_adduniq, append, subtract, delete, case8, gen_tag, gen_modtageq, member, case9, eqs, pushs, pops, tops, istops, eqc, push, push1

Defined Pair Symbols:

EQT, ELEMENT, LOCKER2_MAP_PROMOTE_PENDING, LOCKER2_MAP_CLAIM_LOCK, LOCKER2_CHECK_AVAILABLES, APPEND, SUBTRACT, RECORD_UPDATES, LOCKER2_PROMOTE_PENDING, CASE1, LOCKER2_RELEASE_LOCK, CASE2, LOCKER2_CHECK_AVAILABLE, DELETE, MEMBER, EQS, EQC, PUSH1, PUSH, LOCKER2_REMOVE_PENDING, LOCKER2_ADD_PENDING

Compound Symbols:

c245, c313, c316, c323, c325, c346, c348, c350, c271, c292, c321, c327, c332, c334, c335, c342, c352, c358, c364, c373, c376, c

66.09/17.46
66.09/17.46

(31) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)

The set S is empty
66.09/17.46
66.09/17.46

(32) BOUNDS(O(1), O(1))

66.09/17.46
66.09/17.46
66.43/17.52 EOF