YES(O(1),O(n^1)) 1009.56/291.63 YES(O(1),O(n^1)) 1009.56/291.63 1009.56/291.63 We are left with following problem, upon which TcT provides the 1009.56/291.63 certificate YES(O(1),O(n^1)). 1009.56/291.63 1009.56/291.63 Strict Trs: 1009.56/291.63 { or(T(), T()) -> T() 1009.56/291.63 , or(T(), F()) -> T() 1009.56/291.63 , or(F(), T()) -> T() 1009.56/291.63 , or(F(), F()) -> F() 1009.56/291.63 , and(B, T()) -> B 1009.56/291.63 , and(B, F()) -> F() 1009.56/291.63 , and(T(), B) -> B 1009.56/291.63 , and(F(), B) -> F() 1009.56/291.63 , imp(T(), B) -> B 1009.56/291.63 , imp(F(), B) -> T() 1009.56/291.63 , not(T()) -> F() 1009.56/291.63 , not(F()) -> T() 1009.56/291.63 , if(T(), B1, B2) -> B1 1009.56/291.63 , if(F(), B1, B2) -> B2 1009.56/291.63 , eq(T(), T()) -> T() 1009.56/291.63 , eq(T(), F()) -> F() 1009.56/291.63 , eq(F(), T()) -> F() 1009.56/291.63 , eq(F(), F()) -> T() 1009.56/291.63 , eqt(nil(), undefined()) -> F() 1009.56/291.63 , eqt(nil(), pid(N2)) -> F() 1009.56/291.63 , eqt(nil(), int(N2)) -> F() 1009.56/291.63 , eqt(nil(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(nil(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(nil(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(undefined(), nil()) -> F() 1009.56/291.63 , eqt(undefined(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(undefined(), a()) -> F() 1009.56/291.63 , eqt(pid(N1), nil()) -> F() 1009.56/291.63 , eqt(pid(N1), undefined()) -> F() 1009.56/291.63 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.56/291.63 , eqt(pid(N1), int(N2)) -> F() 1009.56/291.63 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(pid(N1), a()) -> F() 1009.56/291.63 , eqt(pid(N1), excl()) -> F() 1009.56/291.63 , eqt(pid(N1), false()) -> F() 1009.56/291.63 , eqt(pid(N1), lock()) -> F() 1009.56/291.63 , eqt(pid(N1), locker()) -> F() 1009.56/291.63 , eqt(pid(N1), mcrlrecord()) -> F() 1009.56/291.63 , eqt(pid(N1), ok()) -> F() 1009.56/291.63 , eqt(pid(N1), pending()) -> F() 1009.56/291.63 , eqt(pid(N1), release()) -> F() 1009.56/291.63 , eqt(pid(N1), request()) -> F() 1009.56/291.63 , eqt(pid(N1), resource()) -> F() 1009.56/291.63 , eqt(pid(N1), tag()) -> F() 1009.56/291.63 , eqt(pid(N1), true()) -> F() 1009.56/291.63 , eqt(int(N1), nil()) -> F() 1009.56/291.63 , eqt(int(N1), undefined()) -> F() 1009.56/291.63 , eqt(int(N1), a()) -> F() 1009.56/291.63 , eqt(int(N1), excl()) -> F() 1009.56/291.63 , eqt(int(N1), false()) -> F() 1009.56/291.63 , eqt(int(N1), lock()) -> F() 1009.56/291.63 , eqt(int(N1), locker()) -> F() 1009.56/291.63 , eqt(int(N1), mcrlrecord()) -> F() 1009.56/291.63 , eqt(int(N1), ok()) -> F() 1009.56/291.63 , eqt(int(N1), pending()) -> F() 1009.56/291.63 , eqt(int(N1), release()) -> F() 1009.56/291.63 , eqt(int(N1), request()) -> F() 1009.56/291.63 , eqt(int(N1), resource()) -> F() 1009.56/291.63 , eqt(int(N1), tag()) -> F() 1009.56/291.63 , eqt(int(N1), true()) -> F() 1009.56/291.63 , eqt(cons(H1, T1), undefined()) -> F() 1009.56/291.63 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.56/291.63 , eqt(cons(H1, T1), int(N2)) -> F() 1009.56/291.63 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.63 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(cons(H1, T1), resource()) -> F() 1009.56/291.63 , eqt(cons(H1, T1), tag()) -> F() 1009.56/291.63 , eqt(cons(H1, T1), true()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), nil()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), undefined()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.63 and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.63 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), a()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), excl()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), false()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), lock()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), locker()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), ok()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), pending()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), release()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), request()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), resource()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), tag()) -> F() 1009.56/291.63 , eqt(tuple(H1, T1), true()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), nil()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), undefined()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.56/291.63 , eqt(tuplenil(H1), int(N2)) -> F() 1009.56/291.63 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.56/291.63 , eqt(tuplenil(H1), a()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), excl()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), false()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), lock()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), locker()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), ok()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), pending()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), release()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), request()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), resource()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), tag()) -> F() 1009.56/291.63 , eqt(tuplenil(H1), true()) -> F() 1009.56/291.63 , eqt(a(), nil()) -> F() 1009.56/291.63 , eqt(a(), undefined()) -> F() 1009.56/291.63 , eqt(a(), pid(N2)) -> F() 1009.56/291.63 , eqt(a(), int(N2)) -> F() 1009.56/291.63 , eqt(a(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(a(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(a(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(a(), a()) -> T() 1009.56/291.63 , eqt(a(), excl()) -> F() 1009.56/291.63 , eqt(a(), false()) -> F() 1009.56/291.63 , eqt(a(), lock()) -> F() 1009.56/291.63 , eqt(a(), locker()) -> F() 1009.56/291.63 , eqt(a(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(a(), ok()) -> F() 1009.56/291.63 , eqt(a(), pending()) -> F() 1009.56/291.63 , eqt(a(), release()) -> F() 1009.56/291.63 , eqt(a(), request()) -> F() 1009.56/291.63 , eqt(a(), resource()) -> F() 1009.56/291.63 , eqt(a(), tag()) -> F() 1009.56/291.63 , eqt(a(), true()) -> F() 1009.56/291.63 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.56/291.63 , eqt(excl(), nil()) -> F() 1009.56/291.63 , eqt(excl(), undefined()) -> F() 1009.56/291.63 , eqt(excl(), pid(N2)) -> F() 1009.56/291.63 , eqt(excl(), a()) -> F() 1009.56/291.63 , eqt(excl(), excl()) -> T() 1009.56/291.63 , eqt(excl(), false()) -> F() 1009.56/291.63 , eqt(excl(), lock()) -> F() 1009.56/291.63 , eqt(excl(), locker()) -> F() 1009.56/291.63 , eqt(excl(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(excl(), ok()) -> F() 1009.56/291.63 , eqt(excl(), pending()) -> F() 1009.56/291.63 , eqt(excl(), release()) -> F() 1009.56/291.63 , eqt(excl(), request()) -> F() 1009.56/291.63 , eqt(excl(), resource()) -> F() 1009.56/291.63 , eqt(excl(), tag()) -> F() 1009.56/291.63 , eqt(excl(), true()) -> F() 1009.56/291.63 , eqt(false(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(false(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(false(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(lock(), nil()) -> F() 1009.56/291.63 , eqt(lock(), undefined()) -> F() 1009.56/291.63 , eqt(lock(), pid(N2)) -> F() 1009.56/291.63 , eqt(lock(), int(N2)) -> F() 1009.56/291.63 , eqt(lock(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(lock(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(lock(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(lock(), a()) -> F() 1009.56/291.63 , eqt(lock(), excl()) -> F() 1009.56/291.63 , eqt(lock(), false()) -> F() 1009.56/291.63 , eqt(lock(), lock()) -> T() 1009.56/291.63 , eqt(lock(), locker()) -> F() 1009.56/291.63 , eqt(lock(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(lock(), ok()) -> F() 1009.56/291.63 , eqt(lock(), pending()) -> F() 1009.56/291.63 , eqt(lock(), release()) -> F() 1009.56/291.63 , eqt(lock(), request()) -> F() 1009.56/291.63 , eqt(lock(), resource()) -> F() 1009.56/291.63 , eqt(lock(), tag()) -> F() 1009.56/291.63 , eqt(lock(), true()) -> F() 1009.56/291.63 , eqt(locker(), nil()) -> F() 1009.56/291.63 , eqt(locker(), undefined()) -> F() 1009.56/291.63 , eqt(locker(), pid(N2)) -> F() 1009.56/291.63 , eqt(locker(), int(N2)) -> F() 1009.56/291.63 , eqt(locker(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(locker(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(locker(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(locker(), a()) -> F() 1009.56/291.63 , eqt(locker(), excl()) -> F() 1009.56/291.63 , eqt(locker(), false()) -> F() 1009.56/291.63 , eqt(locker(), lock()) -> F() 1009.56/291.63 , eqt(locker(), locker()) -> T() 1009.56/291.63 , eqt(locker(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(locker(), ok()) -> F() 1009.56/291.63 , eqt(locker(), pending()) -> F() 1009.56/291.63 , eqt(locker(), release()) -> F() 1009.56/291.63 , eqt(locker(), request()) -> F() 1009.56/291.63 , eqt(locker(), resource()) -> F() 1009.56/291.63 , eqt(locker(), tag()) -> F() 1009.56/291.63 , eqt(locker(), true()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), nil()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), a()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), excl()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), false()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), lock()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), locker()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.56/291.63 , eqt(mcrlrecord(), ok()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), pending()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), release()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), request()) -> F() 1009.56/291.63 , eqt(mcrlrecord(), resource()) -> F() 1009.56/291.63 , eqt(ok(), undefined()) -> F() 1009.56/291.63 , eqt(ok(), pid(N2)) -> F() 1009.56/291.63 , eqt(ok(), int(N2)) -> F() 1009.56/291.63 , eqt(ok(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(ok(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(ok(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(ok(), resource()) -> F() 1009.56/291.63 , eqt(ok(), tag()) -> F() 1009.56/291.63 , eqt(ok(), true()) -> F() 1009.56/291.63 , eqt(pending(), nil()) -> F() 1009.56/291.63 , eqt(pending(), undefined()) -> F() 1009.56/291.63 , eqt(pending(), pid(N2)) -> F() 1009.56/291.63 , eqt(pending(), int(N2)) -> F() 1009.56/291.63 , eqt(pending(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(pending(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(pending(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(pending(), a()) -> F() 1009.56/291.63 , eqt(pending(), excl()) -> F() 1009.56/291.63 , eqt(pending(), false()) -> F() 1009.56/291.63 , eqt(pending(), lock()) -> F() 1009.56/291.63 , eqt(pending(), locker()) -> F() 1009.56/291.63 , eqt(pending(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(pending(), ok()) -> F() 1009.56/291.63 , eqt(pending(), pending()) -> T() 1009.56/291.63 , eqt(pending(), release()) -> F() 1009.56/291.63 , eqt(pending(), request()) -> F() 1009.56/291.63 , eqt(pending(), resource()) -> F() 1009.56/291.63 , eqt(pending(), tag()) -> F() 1009.56/291.63 , eqt(pending(), true()) -> F() 1009.56/291.63 , eqt(release(), nil()) -> F() 1009.56/291.63 , eqt(release(), a()) -> F() 1009.56/291.63 , eqt(release(), excl()) -> F() 1009.56/291.63 , eqt(release(), false()) -> F() 1009.56/291.63 , eqt(release(), lock()) -> F() 1009.56/291.63 , eqt(release(), locker()) -> F() 1009.56/291.63 , eqt(release(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(release(), ok()) -> F() 1009.56/291.63 , eqt(request(), undefined()) -> F() 1009.56/291.63 , eqt(request(), pid(N2)) -> F() 1009.56/291.63 , eqt(request(), int(N2)) -> F() 1009.56/291.63 , eqt(request(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(request(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(request(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(request(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(request(), ok()) -> F() 1009.56/291.63 , eqt(request(), pending()) -> F() 1009.56/291.63 , eqt(request(), release()) -> F() 1009.56/291.63 , eqt(request(), request()) -> T() 1009.56/291.63 , eqt(request(), resource()) -> F() 1009.56/291.63 , eqt(request(), tag()) -> F() 1009.56/291.63 , eqt(request(), true()) -> F() 1009.56/291.63 , eqt(resource(), nil()) -> F() 1009.56/291.63 , eqt(resource(), undefined()) -> F() 1009.56/291.63 , eqt(resource(), pid(N2)) -> F() 1009.56/291.63 , eqt(resource(), int(N2)) -> F() 1009.56/291.63 , eqt(resource(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(resource(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(resource(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(resource(), a()) -> F() 1009.56/291.63 , eqt(resource(), excl()) -> F() 1009.56/291.63 , eqt(resource(), false()) -> F() 1009.56/291.63 , eqt(resource(), lock()) -> F() 1009.56/291.63 , eqt(resource(), locker()) -> F() 1009.56/291.63 , eqt(resource(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(resource(), ok()) -> F() 1009.56/291.63 , eqt(resource(), pending()) -> F() 1009.56/291.63 , eqt(resource(), release()) -> F() 1009.56/291.63 , eqt(resource(), request()) -> F() 1009.56/291.63 , eqt(resource(), resource()) -> T() 1009.56/291.63 , eqt(resource(), tag()) -> F() 1009.56/291.63 , eqt(resource(), true()) -> F() 1009.56/291.63 , eqt(tag(), nil()) -> F() 1009.56/291.63 , eqt(tag(), undefined()) -> F() 1009.56/291.63 , eqt(tag(), pid(N2)) -> F() 1009.56/291.63 , eqt(tag(), int(N2)) -> F() 1009.56/291.63 , eqt(tag(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(tag(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(tag(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(tag(), a()) -> F() 1009.56/291.63 , eqt(tag(), excl()) -> F() 1009.56/291.63 , eqt(tag(), false()) -> F() 1009.56/291.63 , eqt(tag(), lock()) -> F() 1009.56/291.63 , eqt(tag(), locker()) -> F() 1009.56/291.63 , eqt(tag(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(tag(), ok()) -> F() 1009.56/291.63 , eqt(tag(), pending()) -> F() 1009.56/291.63 , eqt(tag(), release()) -> F() 1009.56/291.63 , eqt(tag(), request()) -> F() 1009.56/291.63 , eqt(tag(), resource()) -> F() 1009.56/291.63 , eqt(tag(), tag()) -> T() 1009.56/291.63 , eqt(tag(), true()) -> F() 1009.56/291.63 , eqt(true(), nil()) -> F() 1009.56/291.63 , eqt(true(), undefined()) -> F() 1009.56/291.63 , eqt(true(), pid(N2)) -> F() 1009.56/291.63 , eqt(true(), int(N2)) -> F() 1009.56/291.63 , eqt(true(), cons(H2, T2)) -> F() 1009.56/291.63 , eqt(true(), tuple(H2, T2)) -> F() 1009.56/291.63 , eqt(true(), tuplenil(H2)) -> F() 1009.56/291.63 , eqt(true(), a()) -> F() 1009.56/291.63 , eqt(true(), excl()) -> F() 1009.56/291.63 , eqt(true(), false()) -> F() 1009.56/291.63 , eqt(true(), lock()) -> F() 1009.56/291.63 , eqt(true(), locker()) -> F() 1009.56/291.63 , eqt(true(), mcrlrecord()) -> F() 1009.56/291.63 , eqt(true(), ok()) -> F() 1009.56/291.63 , eqt(true(), pending()) -> F() 1009.56/291.63 , eqt(true(), release()) -> F() 1009.56/291.63 , eqt(true(), request()) -> F() 1009.56/291.63 , eqt(true(), resource()) -> F() 1009.56/291.63 , eqt(true(), tag()) -> F() 1009.56/291.63 , eqt(true(), true()) -> T() 1009.56/291.63 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.56/291.63 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.56/291.63 , element(int(s(0())), tuplenil(T1)) -> T1 1009.56/291.63 , record_new(lock()) -> 1009.56/291.63 tuple(mcrlrecord(), 1009.56/291.63 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.56/291.63 , record_extract(tuple(mcrlrecord(), 1009.56/291.63 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.63 lock(), 1009.56/291.63 resource()) 1009.56/291.63 -> 1009.56/291.63 tuple(mcrlrecord(), 1009.56/291.63 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.56/291.63 , record_update(tuple(mcrlrecord(), 1009.56/291.63 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.63 lock(), 1009.56/291.63 pending(), 1009.56/291.63 NewF) 1009.56/291.63 -> 1009.56/291.63 tuple(mcrlrecord(), 1009.56/291.63 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.56/291.63 , record_updates(Record, Name, nil()) -> Record 1009.56/291.63 , record_updates(Record, 1009.56/291.63 Name, 1009.56/291.63 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.63 -> 1009.56/291.63 record_updates(record_update(Record, Name, Field, NewF), 1009.56/291.63 Name, 1009.56/291.63 Fields) 1009.56/291.63 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.56/291.63 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.56/291.63 cons(locker2_promote_pending(Lock, Pending), 1009.56/291.63 locker2_map_promote_pending(Locks, Pending)) 1009.56/291.63 , locker2_promote_pending(Lock, Client) -> 1009.56/291.63 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.56/291.63 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.56/291.63 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.56/291.63 cons(locker2_claim_lock(Lock, Resources, Client), 1009.56/291.63 locker2_map_claim_lock(Locks, Resources, Client)) 1009.56/291.63 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.56/291.63 , case0(Client, Lock, MCRLFree0) -> Lock 1009.56/291.63 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.63 record_updates(Lock, 1009.56/291.63 lock(), 1009.56/291.63 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.63 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.56/291.63 , locker2_remove_pending(Lock, Client) -> 1009.56/291.63 record_updates(Lock, 1009.56/291.63 lock(), 1009.56/291.63 cons(tuple(pending(), 1009.56/291.63 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.63 cons(Client, nil())))), 1009.56/291.63 nil())) 1009.56/291.63 , subtract(List, nil()) -> List 1009.56/291.63 , subtract(List, cons(Head, Tail)) -> 1009.56/291.63 subtract(delete(Head, List), Tail) 1009.56/291.63 , locker2_add_pending(Lock, Resources, Client) -> 1009.56/291.63 case1(Client, 1009.56/291.63 Resources, 1009.56/291.63 Lock, 1009.56/291.63 member(record_extract(Lock, lock(), resource()), Resources)) 1009.56/291.63 , case1(Client, Resources, Lock, false()) -> Lock 1009.56/291.63 , case1(Client, Resources, Lock, true()) -> 1009.56/291.63 record_updates(Lock, 1009.56/291.63 lock(), 1009.56/291.63 cons(tuple(pending(), 1009.56/291.63 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.63 cons(Client, nil())))), 1009.56/291.63 nil())) 1009.56/291.63 , member(E, nil()) -> false() 1009.56/291.63 , member(E, cons(Head, Tail)) -> 1009.56/291.63 case9(Tail, Head, E, equal(E, Head)) 1009.56/291.63 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.56/291.63 , locker2_release_lock(Lock, Client) -> 1009.56/291.63 case2(Client, 1009.56/291.63 Lock, 1009.56/291.63 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.56/291.63 , case2(Client, Lock, true()) -> 1009.56/291.63 record_updates(Lock, 1009.56/291.63 lock(), 1009.56/291.63 cons(tuple(excllock(), excl()), nil())) 1009.56/291.63 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.56/291.63 , case4(Client, Lock, MCRLFree1) -> false() 1009.56/291.63 , locker2_obtainables(nil(), Client) -> true() 1009.56/291.63 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.56/291.63 case5(Client, 1009.56/291.63 Locks, 1009.56/291.63 Lock, 1009.56/291.63 member(Client, record_extract(Lock, lock(), pending()))) 1009.56/291.63 , case5(Client, Locks, Lock, false()) -> 1009.56/291.63 locker2_obtainables(Locks, Client) 1009.56/291.63 , case5(Client, Locks, Lock, true()) -> 1009.56/291.63 andt(locker2_obtainable(Lock, Client), 1009.56/291.63 locker2_obtainables(Locks, Client)) 1009.56/291.63 , locker2_check_available(Resource, nil()) -> false() 1009.56/291.63 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.56/291.63 case6(Locks, 1009.56/291.63 Lock, 1009.56/291.63 Resource, 1009.56/291.63 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.56/291.63 , case6(Locks, Lock, Resource, false()) -> 1009.56/291.63 locker2_check_available(Resource, Locks) 1009.56/291.63 , case6(Locks, Lock, Resource, true()) -> 1009.56/291.63 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.56/291.63 equal(record_extract(Lock, lock(), pending()), nil())) 1009.56/291.63 , locker2_check_availables(nil(), Locks) -> true() 1009.56/291.63 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.56/291.63 andt(locker2_check_available(Resource, Locks), 1009.56/291.63 locker2_check_availables(Resources, Locks)) 1009.56/291.63 , locker2_adduniq(nil(), List) -> List 1009.56/291.63 , delete(E, nil()) -> nil() 1009.56/291.63 , delete(E, cons(Head, Tail)) -> 1009.56/291.63 case8(Tail, Head, E, equal(E, Head)) 1009.56/291.63 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.56/291.63 , case8(Tail, Head, E, true()) -> Tail 1009.56/291.63 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.56/291.63 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.56/291.63 , case9(Tail, Head, E, true()) -> true() 1009.56/291.63 , eqs(empty(), empty()) -> T() 1009.56/291.64 , eqs(empty(), stack(E2, S2)) -> F() 1009.56/291.64 , eqs(stack(E1, S1), empty()) -> F() 1009.56/291.64 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.64 and(eqt(E1, E2), eqs(S1, S2)) 1009.56/291.64 , pushs(E1, S1) -> stack(E1, S1) 1009.56/291.64 , pops(stack(E1, S1)) -> S1 1009.56/291.64 , tops(stack(E1, S1)) -> E1 1009.56/291.64 , istops(E1, empty()) -> F() 1009.56/291.64 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.56/291.64 , eqc(nocalls(), nocalls()) -> T() 1009.56/291.64 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.56/291.64 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.56/291.64 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.64 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.56/291.64 , push(E1, E2, nocalls()) -> 1009.56/291.64 calls(E1, stack(E2, empty()), nocalls()) 1009.56/291.64 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.64 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.56/291.64 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.56/291.64 calls(E3, pushs(E2, S1), CS1) } 1009.56/291.64 Obligation: 1009.56/291.64 innermost runtime complexity 1009.56/291.64 Answer: 1009.56/291.64 YES(O(1),O(n^1)) 1009.56/291.64 1009.56/291.64 We add the following dependency tuples: 1009.56/291.64 1009.56/291.64 Strict DPs: 1009.56/291.64 { or^#(T(), T()) -> c_1() 1009.56/291.64 , or^#(T(), F()) -> c_2() 1009.56/291.64 , or^#(F(), T()) -> c_3() 1009.56/291.64 , or^#(F(), F()) -> c_4() 1009.56/291.64 , and^#(B, T()) -> c_5() 1009.56/291.64 , and^#(B, F()) -> c_6() 1009.56/291.64 , and^#(T(), B) -> c_7() 1009.56/291.64 , and^#(F(), B) -> c_8() 1009.56/291.64 , imp^#(T(), B) -> c_9() 1009.56/291.64 , imp^#(F(), B) -> c_10() 1009.56/291.64 , not^#(T()) -> c_11() 1009.56/291.64 , not^#(F()) -> c_12() 1009.56/291.64 , if^#(T(), B1, B2) -> c_13() 1009.56/291.64 , if^#(F(), B1, B2) -> c_14() 1009.56/291.64 , eq^#(T(), T()) -> c_15() 1009.56/291.64 , eq^#(T(), F()) -> c_16() 1009.56/291.64 , eq^#(F(), T()) -> c_17() 1009.56/291.64 , eq^#(F(), F()) -> c_18() 1009.56/291.64 , eqt^#(nil(), undefined()) -> c_19() 1009.56/291.64 , eqt^#(nil(), pid(N2)) -> c_20() 1009.56/291.64 , eqt^#(nil(), int(N2)) -> c_21() 1009.56/291.64 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.56/291.64 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.56/291.64 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.56/291.64 , eqt^#(undefined(), nil()) -> c_25() 1009.56/291.64 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.56/291.64 , eqt^#(undefined(), a()) -> c_27() 1009.56/291.64 , eqt^#(pid(N1), nil()) -> c_28() 1009.56/291.64 , eqt^#(pid(N1), undefined()) -> c_29() 1009.56/291.64 , eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.56/291.64 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.56/291.64 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.56/291.64 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.56/291.64 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.56/291.64 , eqt^#(pid(N1), a()) -> c_35() 1009.56/291.64 , eqt^#(pid(N1), excl()) -> c_36() 1009.56/291.64 , eqt^#(pid(N1), false()) -> c_37() 1009.56/291.64 , eqt^#(pid(N1), lock()) -> c_38() 1009.56/291.64 , eqt^#(pid(N1), locker()) -> c_39() 1009.56/291.64 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.56/291.64 , eqt^#(pid(N1), ok()) -> c_41() 1009.56/291.64 , eqt^#(pid(N1), pending()) -> c_42() 1009.56/291.64 , eqt^#(pid(N1), release()) -> c_43() 1009.56/291.64 , eqt^#(pid(N1), request()) -> c_44() 1009.56/291.64 , eqt^#(pid(N1), resource()) -> c_45() 1009.56/291.64 , eqt^#(pid(N1), tag()) -> c_46() 1009.56/291.64 , eqt^#(pid(N1), true()) -> c_47() 1009.56/291.64 , eqt^#(int(N1), nil()) -> c_48() 1009.56/291.64 , eqt^#(int(N1), undefined()) -> c_49() 1009.56/291.64 , eqt^#(int(N1), a()) -> c_50() 1009.56/291.64 , eqt^#(int(N1), excl()) -> c_51() 1009.56/291.64 , eqt^#(int(N1), false()) -> c_52() 1009.56/291.64 , eqt^#(int(N1), lock()) -> c_53() 1009.56/291.64 , eqt^#(int(N1), locker()) -> c_54() 1009.56/291.64 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.56/291.64 , eqt^#(int(N1), ok()) -> c_56() 1009.56/291.64 , eqt^#(int(N1), pending()) -> c_57() 1009.56/291.64 , eqt^#(int(N1), release()) -> c_58() 1009.56/291.64 , eqt^#(int(N1), request()) -> c_59() 1009.56/291.64 , eqt^#(int(N1), resource()) -> c_60() 1009.56/291.64 , eqt^#(int(N1), tag()) -> c_61() 1009.56/291.64 , eqt^#(int(N1), true()) -> c_62() 1009.56/291.64 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.56/291.64 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.56/291.64 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.56/291.64 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.56/291.64 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.64 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.56/291.64 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.56/291.64 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.56/291.64 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.56/291.64 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.56/291.64 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.56/291.64 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.56/291.64 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.56/291.64 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.56/291.64 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.56/291.64 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.64 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.64 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.56/291.64 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.56/291.64 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.56/291.64 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.56/291.64 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.56/291.64 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.56/291.64 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.56/291.64 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.56/291.64 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.56/291.64 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.56/291.64 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.56/291.64 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.56/291.64 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.56/291.64 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.56/291.64 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.56/291.64 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.56/291.64 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.56/291.64 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.56/291.64 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.56/291.64 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.56/291.64 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.56/291.64 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.56/291.64 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.56/291.64 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.56/291.64 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.56/291.64 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.56/291.64 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.56/291.64 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.56/291.64 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.56/291.64 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.56/291.64 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.56/291.64 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.56/291.64 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.56/291.64 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.56/291.64 , eqt^#(a(), nil()) -> c_112() 1009.56/291.64 , eqt^#(a(), undefined()) -> c_113() 1009.56/291.64 , eqt^#(a(), pid(N2)) -> c_114() 1009.56/291.64 , eqt^#(a(), int(N2)) -> c_115() 1009.56/291.64 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.56/291.64 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.56/291.64 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.56/291.64 , eqt^#(a(), a()) -> c_119() 1009.56/291.64 , eqt^#(a(), excl()) -> c_120() 1009.56/291.64 , eqt^#(a(), false()) -> c_121() 1009.56/291.64 , eqt^#(a(), lock()) -> c_122() 1009.56/291.64 , eqt^#(a(), locker()) -> c_123() 1009.56/291.64 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.56/291.64 , eqt^#(a(), ok()) -> c_125() 1009.56/291.64 , eqt^#(a(), pending()) -> c_126() 1009.56/291.64 , eqt^#(a(), release()) -> c_127() 1009.56/291.64 , eqt^#(a(), request()) -> c_128() 1009.56/291.64 , eqt^#(a(), resource()) -> c_129() 1009.56/291.64 , eqt^#(a(), tag()) -> c_130() 1009.56/291.64 , eqt^#(a(), true()) -> c_131() 1009.56/291.64 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.56/291.64 , eqt^#(excl(), nil()) -> c_133() 1009.56/291.64 , eqt^#(excl(), undefined()) -> c_134() 1009.56/291.64 , eqt^#(excl(), pid(N2)) -> c_135() 1009.56/291.64 , eqt^#(excl(), a()) -> c_136() 1009.56/291.64 , eqt^#(excl(), excl()) -> c_137() 1009.56/291.64 , eqt^#(excl(), false()) -> c_138() 1009.56/291.64 , eqt^#(excl(), lock()) -> c_139() 1009.56/291.64 , eqt^#(excl(), locker()) -> c_140() 1009.56/291.64 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.56/291.64 , eqt^#(excl(), ok()) -> c_142() 1009.56/291.64 , eqt^#(excl(), pending()) -> c_143() 1009.56/291.64 , eqt^#(excl(), release()) -> c_144() 1009.56/291.64 , eqt^#(excl(), request()) -> c_145() 1009.56/291.64 , eqt^#(excl(), resource()) -> c_146() 1009.56/291.64 , eqt^#(excl(), tag()) -> c_147() 1009.56/291.64 , eqt^#(excl(), true()) -> c_148() 1009.56/291.64 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.56/291.64 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.56/291.64 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.56/291.64 , eqt^#(lock(), nil()) -> c_152() 1009.56/291.64 , eqt^#(lock(), undefined()) -> c_153() 1009.56/291.64 , eqt^#(lock(), pid(N2)) -> c_154() 1009.56/291.64 , eqt^#(lock(), int(N2)) -> c_155() 1009.56/291.64 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.56/291.64 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.56/291.64 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.56/291.64 , eqt^#(lock(), a()) -> c_159() 1009.56/291.64 , eqt^#(lock(), excl()) -> c_160() 1009.56/291.64 , eqt^#(lock(), false()) -> c_161() 1009.56/291.64 , eqt^#(lock(), lock()) -> c_162() 1009.56/291.64 , eqt^#(lock(), locker()) -> c_163() 1009.56/291.64 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.56/291.64 , eqt^#(lock(), ok()) -> c_165() 1009.56/291.64 , eqt^#(lock(), pending()) -> c_166() 1009.56/291.64 , eqt^#(lock(), release()) -> c_167() 1009.56/291.64 , eqt^#(lock(), request()) -> c_168() 1009.56/291.64 , eqt^#(lock(), resource()) -> c_169() 1009.56/291.64 , eqt^#(lock(), tag()) -> c_170() 1009.56/291.64 , eqt^#(lock(), true()) -> c_171() 1009.56/291.64 , eqt^#(locker(), nil()) -> c_172() 1009.56/291.64 , eqt^#(locker(), undefined()) -> c_173() 1009.56/291.64 , eqt^#(locker(), pid(N2)) -> c_174() 1009.56/291.64 , eqt^#(locker(), int(N2)) -> c_175() 1009.56/291.64 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.56/291.64 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.56/291.64 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.56/291.64 , eqt^#(locker(), a()) -> c_179() 1009.56/291.64 , eqt^#(locker(), excl()) -> c_180() 1009.56/291.64 , eqt^#(locker(), false()) -> c_181() 1009.56/291.64 , eqt^#(locker(), lock()) -> c_182() 1009.56/291.64 , eqt^#(locker(), locker()) -> c_183() 1009.56/291.64 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.56/291.64 , eqt^#(locker(), ok()) -> c_185() 1009.56/291.64 , eqt^#(locker(), pending()) -> c_186() 1009.56/291.64 , eqt^#(locker(), release()) -> c_187() 1009.56/291.64 , eqt^#(locker(), request()) -> c_188() 1009.56/291.64 , eqt^#(locker(), resource()) -> c_189() 1009.56/291.64 , eqt^#(locker(), tag()) -> c_190() 1009.56/291.64 , eqt^#(locker(), true()) -> c_191() 1009.56/291.64 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.56/291.64 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.56/291.64 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.56/291.64 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.56/291.64 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.56/291.64 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.56/291.64 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.56/291.64 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.56/291.64 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.56/291.64 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.56/291.64 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.56/291.64 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.56/291.64 , eqt^#(ok(), undefined()) -> c_204() 1009.56/291.64 , eqt^#(ok(), pid(N2)) -> c_205() 1009.56/291.64 , eqt^#(ok(), int(N2)) -> c_206() 1009.56/291.64 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.56/291.64 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.56/291.64 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.56/291.64 , eqt^#(ok(), resource()) -> c_210() 1009.56/291.64 , eqt^#(ok(), tag()) -> c_211() 1009.56/291.64 , eqt^#(ok(), true()) -> c_212() 1009.56/291.64 , eqt^#(pending(), nil()) -> c_213() 1009.56/291.64 , eqt^#(pending(), undefined()) -> c_214() 1009.56/291.64 , eqt^#(pending(), pid(N2)) -> c_215() 1009.56/291.64 , eqt^#(pending(), int(N2)) -> c_216() 1009.56/291.64 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.56/291.64 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.56/291.64 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.56/291.64 , eqt^#(pending(), a()) -> c_220() 1009.56/291.64 , eqt^#(pending(), excl()) -> c_221() 1009.56/291.64 , eqt^#(pending(), false()) -> c_222() 1009.56/291.64 , eqt^#(pending(), lock()) -> c_223() 1009.56/291.64 , eqt^#(pending(), locker()) -> c_224() 1009.56/291.64 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.56/291.64 , eqt^#(pending(), ok()) -> c_226() 1009.56/291.64 , eqt^#(pending(), pending()) -> c_227() 1009.56/291.64 , eqt^#(pending(), release()) -> c_228() 1009.56/291.64 , eqt^#(pending(), request()) -> c_229() 1009.56/291.64 , eqt^#(pending(), resource()) -> c_230() 1009.56/291.64 , eqt^#(pending(), tag()) -> c_231() 1009.56/291.64 , eqt^#(pending(), true()) -> c_232() 1009.56/291.64 , eqt^#(release(), nil()) -> c_233() 1009.56/291.64 , eqt^#(release(), a()) -> c_234() 1009.56/291.64 , eqt^#(release(), excl()) -> c_235() 1009.56/291.64 , eqt^#(release(), false()) -> c_236() 1009.56/291.64 , eqt^#(release(), lock()) -> c_237() 1009.56/291.64 , eqt^#(release(), locker()) -> c_238() 1009.56/291.64 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.56/291.64 , eqt^#(release(), ok()) -> c_240() 1009.56/291.64 , eqt^#(request(), undefined()) -> c_241() 1009.56/291.64 , eqt^#(request(), pid(N2)) -> c_242() 1009.56/291.64 , eqt^#(request(), int(N2)) -> c_243() 1009.56/291.64 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.56/291.64 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.56/291.64 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.56/291.64 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.56/291.64 , eqt^#(request(), ok()) -> c_248() 1009.56/291.64 , eqt^#(request(), pending()) -> c_249() 1009.56/291.64 , eqt^#(request(), release()) -> c_250() 1009.56/291.64 , eqt^#(request(), request()) -> c_251() 1009.56/291.64 , eqt^#(request(), resource()) -> c_252() 1009.56/291.64 , eqt^#(request(), tag()) -> c_253() 1009.56/291.64 , eqt^#(request(), true()) -> c_254() 1009.56/291.64 , eqt^#(resource(), nil()) -> c_255() 1009.56/291.64 , eqt^#(resource(), undefined()) -> c_256() 1009.56/291.64 , eqt^#(resource(), pid(N2)) -> c_257() 1009.56/291.64 , eqt^#(resource(), int(N2)) -> c_258() 1009.56/291.64 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.56/291.64 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.56/291.64 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.56/291.64 , eqt^#(resource(), a()) -> c_262() 1009.56/291.64 , eqt^#(resource(), excl()) -> c_263() 1009.56/291.64 , eqt^#(resource(), false()) -> c_264() 1009.56/291.64 , eqt^#(resource(), lock()) -> c_265() 1009.56/291.64 , eqt^#(resource(), locker()) -> c_266() 1009.56/291.64 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.56/291.64 , eqt^#(resource(), ok()) -> c_268() 1009.56/291.64 , eqt^#(resource(), pending()) -> c_269() 1009.56/291.64 , eqt^#(resource(), release()) -> c_270() 1009.56/291.64 , eqt^#(resource(), request()) -> c_271() 1009.56/291.64 , eqt^#(resource(), resource()) -> c_272() 1009.56/291.64 , eqt^#(resource(), tag()) -> c_273() 1009.56/291.64 , eqt^#(resource(), true()) -> c_274() 1009.56/291.64 , eqt^#(tag(), nil()) -> c_275() 1009.56/291.64 , eqt^#(tag(), undefined()) -> c_276() 1009.56/291.64 , eqt^#(tag(), pid(N2)) -> c_277() 1009.56/291.64 , eqt^#(tag(), int(N2)) -> c_278() 1009.56/291.64 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.56/291.64 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.56/291.64 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.56/291.64 , eqt^#(tag(), a()) -> c_282() 1009.56/291.64 , eqt^#(tag(), excl()) -> c_283() 1009.56/291.64 , eqt^#(tag(), false()) -> c_284() 1009.56/291.64 , eqt^#(tag(), lock()) -> c_285() 1009.56/291.64 , eqt^#(tag(), locker()) -> c_286() 1009.56/291.64 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.56/291.64 , eqt^#(tag(), ok()) -> c_288() 1009.56/291.64 , eqt^#(tag(), pending()) -> c_289() 1009.56/291.64 , eqt^#(tag(), release()) -> c_290() 1009.56/291.64 , eqt^#(tag(), request()) -> c_291() 1009.56/291.64 , eqt^#(tag(), resource()) -> c_292() 1009.56/291.64 , eqt^#(tag(), tag()) -> c_293() 1009.56/291.64 , eqt^#(tag(), true()) -> c_294() 1009.56/291.64 , eqt^#(true(), nil()) -> c_295() 1009.56/291.64 , eqt^#(true(), undefined()) -> c_296() 1009.56/291.64 , eqt^#(true(), pid(N2)) -> c_297() 1009.56/291.64 , eqt^#(true(), int(N2)) -> c_298() 1009.56/291.64 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.56/291.64 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.56/291.64 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.56/291.64 , eqt^#(true(), a()) -> c_302() 1009.56/291.64 , eqt^#(true(), excl()) -> c_303() 1009.56/291.64 , eqt^#(true(), false()) -> c_304() 1009.56/291.64 , eqt^#(true(), lock()) -> c_305() 1009.56/291.64 , eqt^#(true(), locker()) -> c_306() 1009.56/291.64 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.56/291.64 , eqt^#(true(), ok()) -> c_308() 1009.56/291.64 , eqt^#(true(), pending()) -> c_309() 1009.56/291.64 , eqt^#(true(), release()) -> c_310() 1009.56/291.64 , eqt^#(true(), request()) -> c_311() 1009.56/291.64 , eqt^#(true(), resource()) -> c_312() 1009.56/291.64 , eqt^#(true(), tag()) -> c_313() 1009.56/291.64 , eqt^#(true(), true()) -> c_314() 1009.56/291.64 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.56/291.64 c_315(element^#(int(s(N1)), T2)) 1009.56/291.64 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.56/291.64 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.56/291.64 , record_new^#(lock()) -> c_318() 1009.56/291.64 , record_extract^#(tuple(mcrlrecord(), 1009.56/291.64 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.64 lock(), 1009.56/291.64 resource()) 1009.56/291.64 -> c_319() 1009.56/291.64 , record_update^#(tuple(mcrlrecord(), 1009.56/291.64 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.64 lock(), 1009.56/291.64 pending(), 1009.56/291.64 NewF) 1009.56/291.64 -> c_320() 1009.56/291.64 , record_updates^#(Record, Name, nil()) -> c_321() 1009.56/291.64 , record_updates^#(Record, 1009.56/291.64 Name, 1009.56/291.64 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.64 -> 1009.56/291.64 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.56/291.64 Name, 1009.56/291.64 Fields), 1009.56/291.64 record_update^#(Record, Name, Field, NewF)) 1009.56/291.64 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.56/291.64 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.56/291.64 c_324(locker2_promote_pending^#(Lock, Pending), 1009.56/291.64 locker2_map_promote_pending^#(Locks, Pending)) 1009.56/291.64 , locker2_promote_pending^#(Lock, Client) -> 1009.56/291.64 c_325(case0^#(Client, 1009.56/291.64 Lock, 1009.56/291.64 record_extract(Lock, lock(), pending())), 1009.56/291.64 record_extract^#(Lock, lock(), pending())) 1009.56/291.64 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.56/291.64 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.64 c_330(record_updates^#(Lock, 1009.56/291.64 lock(), 1009.56/291.64 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.64 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.56/291.64 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.56/291.64 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.56/291.64 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.56/291.64 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.56/291.64 , locker2_remove_pending^#(Lock, Client) -> 1009.56/291.64 c_331(record_updates^#(Lock, 1009.56/291.64 lock(), 1009.56/291.64 cons(tuple(pending(), 1009.56/291.64 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.64 cons(Client, nil())))), 1009.56/291.64 nil())), 1009.56/291.64 subtract^#(record_extract(Lock, lock(), pending()), 1009.56/291.64 cons(Client, nil())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , subtract^#(List, nil()) -> c_332() 1009.56/291.65 , subtract^#(List, cons(Head, Tail)) -> 1009.56/291.65 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.56/291.65 , delete^#(E, nil()) -> c_355() 1009.56/291.65 , delete^#(E, cons(Head, Tail)) -> 1009.56/291.65 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.56/291.65 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.56/291.65 c_334(case1^#(Client, 1009.56/291.65 Resources, 1009.56/291.65 Lock, 1009.56/291.65 member(record_extract(Lock, lock(), resource()), Resources)), 1009.56/291.65 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.56/291.65 record_extract^#(Lock, lock(), resource())) 1009.56/291.65 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.56/291.65 , case1^#(Client, Resources, Lock, true()) -> 1009.56/291.65 c_336(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(pending(), 1009.56/291.65 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())))), 1009.56/291.65 nil())), 1009.56/291.65 append^#(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , member^#(E, nil()) -> c_337() 1009.56/291.65 , member^#(E, cons(Head, Tail)) -> 1009.56/291.65 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.56/291.65 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.56/291.65 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.56/291.65 , case9^#(Tail, Head, E, true()) -> c_361() 1009.56/291.65 , locker2_release_lock^#(Lock, Client) -> 1009.56/291.65 c_340(case2^#(Client, 1009.56/291.65 Lock, 1009.56/291.65 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.56/291.65 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.56/291.65 record_extract^#(Lock, lock(), excl())) 1009.56/291.65 , case2^#(Client, Lock, true()) -> 1009.56/291.65 c_341(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(excllock(), excl()), nil()))) 1009.56/291.65 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.56/291.65 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.56/291.65 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.56/291.65 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.56/291.65 c_345(case5^#(Client, 1009.56/291.65 Locks, 1009.56/291.65 Lock, 1009.56/291.65 member(Client, record_extract(Lock, lock(), pending()))), 1009.56/291.65 member^#(Client, record_extract(Lock, lock(), pending())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , case5^#(Client, Locks, Lock, false()) -> 1009.56/291.65 c_346(locker2_obtainables^#(Locks, Client)) 1009.56/291.65 , case5^#(Client, Locks, Lock, true()) -> 1009.56/291.65 c_347(locker2_obtainables^#(Locks, Client)) 1009.56/291.65 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.56/291.65 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.56/291.65 c_349(case6^#(Locks, 1009.56/291.65 Lock, 1009.56/291.65 Resource, 1009.56/291.65 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.56/291.65 record_extract^#(Lock, lock(), resource())) 1009.56/291.65 , case6^#(Locks, Lock, Resource, false()) -> 1009.56/291.65 c_350(locker2_check_available^#(Resource, Locks)) 1009.56/291.65 , case6^#(Locks, Lock, Resource, true()) -> 1009.56/291.65 c_351(record_extract^#(Lock, lock(), excl()), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.56/291.65 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.56/291.65 c_353(locker2_check_available^#(Resource, Locks), 1009.56/291.65 locker2_check_availables^#(Resources, Locks)) 1009.56/291.65 , locker2_adduniq^#(nil(), List) -> c_354() 1009.56/291.65 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.56/291.65 , case8^#(Tail, Head, E, true()) -> c_358() 1009.56/291.65 , gen_tag^#(Pid) -> c_359() 1009.56/291.65 , eqs^#(empty(), empty()) -> c_362() 1009.56/291.65 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.56/291.65 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.56/291.65 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.65 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.56/291.65 eqt^#(E1, E2), 1009.56/291.65 eqs^#(S1, S2)) 1009.56/291.65 , pushs^#(E1, S1) -> c_366() 1009.56/291.65 , pops^#(stack(E1, S1)) -> c_367() 1009.56/291.65 , tops^#(stack(E1, S1)) -> c_368() 1009.56/291.65 , istops^#(E1, empty()) -> c_369() 1009.56/291.65 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.56/291.65 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.56/291.65 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.56/291.65 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.56/291.65 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.65 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.56/291.65 eqt^#(E1, E2), 1009.56/291.65 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.56/291.65 eqs^#(S1, S2), 1009.56/291.65 eqc^#(CS1, CS2)) 1009.56/291.65 , push^#(E1, E2, nocalls()) -> c_375() 1009.56/291.65 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.65 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.56/291.65 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.56/291.65 1009.56/291.65 and mark the set of starting terms. 1009.56/291.65 1009.56/291.65 We are left with following problem, upon which TcT provides the 1009.56/291.65 certificate YES(O(1),O(n^1)). 1009.56/291.65 1009.56/291.65 Strict DPs: 1009.56/291.65 { or^#(T(), T()) -> c_1() 1009.56/291.65 , or^#(T(), F()) -> c_2() 1009.56/291.65 , or^#(F(), T()) -> c_3() 1009.56/291.65 , or^#(F(), F()) -> c_4() 1009.56/291.65 , and^#(B, T()) -> c_5() 1009.56/291.65 , and^#(B, F()) -> c_6() 1009.56/291.65 , and^#(T(), B) -> c_7() 1009.56/291.65 , and^#(F(), B) -> c_8() 1009.56/291.65 , imp^#(T(), B) -> c_9() 1009.56/291.65 , imp^#(F(), B) -> c_10() 1009.56/291.65 , not^#(T()) -> c_11() 1009.56/291.65 , not^#(F()) -> c_12() 1009.56/291.65 , if^#(T(), B1, B2) -> c_13() 1009.56/291.65 , if^#(F(), B1, B2) -> c_14() 1009.56/291.65 , eq^#(T(), T()) -> c_15() 1009.56/291.65 , eq^#(T(), F()) -> c_16() 1009.56/291.65 , eq^#(F(), T()) -> c_17() 1009.56/291.65 , eq^#(F(), F()) -> c_18() 1009.56/291.65 , eqt^#(nil(), undefined()) -> c_19() 1009.56/291.65 , eqt^#(nil(), pid(N2)) -> c_20() 1009.56/291.65 , eqt^#(nil(), int(N2)) -> c_21() 1009.56/291.65 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.56/291.65 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.56/291.65 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.56/291.65 , eqt^#(undefined(), nil()) -> c_25() 1009.56/291.65 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.56/291.65 , eqt^#(undefined(), a()) -> c_27() 1009.56/291.65 , eqt^#(pid(N1), nil()) -> c_28() 1009.56/291.65 , eqt^#(pid(N1), undefined()) -> c_29() 1009.56/291.65 , eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.56/291.65 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.56/291.65 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.56/291.65 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.56/291.65 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.56/291.65 , eqt^#(pid(N1), a()) -> c_35() 1009.56/291.65 , eqt^#(pid(N1), excl()) -> c_36() 1009.56/291.65 , eqt^#(pid(N1), false()) -> c_37() 1009.56/291.65 , eqt^#(pid(N1), lock()) -> c_38() 1009.56/291.65 , eqt^#(pid(N1), locker()) -> c_39() 1009.56/291.65 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.56/291.65 , eqt^#(pid(N1), ok()) -> c_41() 1009.56/291.65 , eqt^#(pid(N1), pending()) -> c_42() 1009.56/291.65 , eqt^#(pid(N1), release()) -> c_43() 1009.56/291.65 , eqt^#(pid(N1), request()) -> c_44() 1009.56/291.65 , eqt^#(pid(N1), resource()) -> c_45() 1009.56/291.65 , eqt^#(pid(N1), tag()) -> c_46() 1009.56/291.65 , eqt^#(pid(N1), true()) -> c_47() 1009.56/291.65 , eqt^#(int(N1), nil()) -> c_48() 1009.56/291.65 , eqt^#(int(N1), undefined()) -> c_49() 1009.56/291.65 , eqt^#(int(N1), a()) -> c_50() 1009.56/291.65 , eqt^#(int(N1), excl()) -> c_51() 1009.56/291.65 , eqt^#(int(N1), false()) -> c_52() 1009.56/291.65 , eqt^#(int(N1), lock()) -> c_53() 1009.56/291.65 , eqt^#(int(N1), locker()) -> c_54() 1009.56/291.65 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.56/291.65 , eqt^#(int(N1), ok()) -> c_56() 1009.56/291.65 , eqt^#(int(N1), pending()) -> c_57() 1009.56/291.65 , eqt^#(int(N1), release()) -> c_58() 1009.56/291.65 , eqt^#(int(N1), request()) -> c_59() 1009.56/291.65 , eqt^#(int(N1), resource()) -> c_60() 1009.56/291.65 , eqt^#(int(N1), tag()) -> c_61() 1009.56/291.65 , eqt^#(int(N1), true()) -> c_62() 1009.56/291.65 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.56/291.65 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.56/291.65 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.56/291.65 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.56/291.65 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.65 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.56/291.65 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.56/291.65 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.56/291.65 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.56/291.65 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.56/291.65 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.56/291.65 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.56/291.65 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.56/291.65 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.56/291.65 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.56/291.65 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.65 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.65 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.56/291.65 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.56/291.65 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.56/291.65 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.56/291.65 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.56/291.65 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.56/291.65 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.56/291.65 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.56/291.65 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.56/291.65 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.56/291.65 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.56/291.65 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.56/291.65 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.56/291.65 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.56/291.65 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.56/291.65 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.56/291.65 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.56/291.65 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.56/291.65 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.56/291.65 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.56/291.65 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.56/291.65 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.56/291.65 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.56/291.65 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.56/291.65 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.56/291.65 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.56/291.65 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.56/291.65 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.56/291.65 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.56/291.65 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.56/291.65 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.56/291.65 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.56/291.65 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.56/291.65 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.56/291.65 , eqt^#(a(), nil()) -> c_112() 1009.56/291.65 , eqt^#(a(), undefined()) -> c_113() 1009.56/291.65 , eqt^#(a(), pid(N2)) -> c_114() 1009.56/291.65 , eqt^#(a(), int(N2)) -> c_115() 1009.56/291.65 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.56/291.65 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.56/291.65 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.56/291.65 , eqt^#(a(), a()) -> c_119() 1009.56/291.65 , eqt^#(a(), excl()) -> c_120() 1009.56/291.65 , eqt^#(a(), false()) -> c_121() 1009.56/291.65 , eqt^#(a(), lock()) -> c_122() 1009.56/291.65 , eqt^#(a(), locker()) -> c_123() 1009.56/291.65 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.56/291.65 , eqt^#(a(), ok()) -> c_125() 1009.56/291.65 , eqt^#(a(), pending()) -> c_126() 1009.56/291.65 , eqt^#(a(), release()) -> c_127() 1009.56/291.65 , eqt^#(a(), request()) -> c_128() 1009.56/291.65 , eqt^#(a(), resource()) -> c_129() 1009.56/291.65 , eqt^#(a(), tag()) -> c_130() 1009.56/291.65 , eqt^#(a(), true()) -> c_131() 1009.56/291.65 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.56/291.65 , eqt^#(excl(), nil()) -> c_133() 1009.56/291.65 , eqt^#(excl(), undefined()) -> c_134() 1009.56/291.65 , eqt^#(excl(), pid(N2)) -> c_135() 1009.56/291.65 , eqt^#(excl(), a()) -> c_136() 1009.56/291.65 , eqt^#(excl(), excl()) -> c_137() 1009.56/291.65 , eqt^#(excl(), false()) -> c_138() 1009.56/291.65 , eqt^#(excl(), lock()) -> c_139() 1009.56/291.65 , eqt^#(excl(), locker()) -> c_140() 1009.56/291.65 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.56/291.65 , eqt^#(excl(), ok()) -> c_142() 1009.56/291.65 , eqt^#(excl(), pending()) -> c_143() 1009.56/291.65 , eqt^#(excl(), release()) -> c_144() 1009.56/291.65 , eqt^#(excl(), request()) -> c_145() 1009.56/291.65 , eqt^#(excl(), resource()) -> c_146() 1009.56/291.65 , eqt^#(excl(), tag()) -> c_147() 1009.56/291.65 , eqt^#(excl(), true()) -> c_148() 1009.56/291.65 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.56/291.65 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.56/291.65 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.56/291.65 , eqt^#(lock(), nil()) -> c_152() 1009.56/291.65 , eqt^#(lock(), undefined()) -> c_153() 1009.56/291.65 , eqt^#(lock(), pid(N2)) -> c_154() 1009.56/291.65 , eqt^#(lock(), int(N2)) -> c_155() 1009.56/291.65 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.56/291.65 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.56/291.65 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.56/291.65 , eqt^#(lock(), a()) -> c_159() 1009.56/291.65 , eqt^#(lock(), excl()) -> c_160() 1009.56/291.65 , eqt^#(lock(), false()) -> c_161() 1009.56/291.65 , eqt^#(lock(), lock()) -> c_162() 1009.56/291.65 , eqt^#(lock(), locker()) -> c_163() 1009.56/291.65 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.56/291.65 , eqt^#(lock(), ok()) -> c_165() 1009.56/291.65 , eqt^#(lock(), pending()) -> c_166() 1009.56/291.65 , eqt^#(lock(), release()) -> c_167() 1009.56/291.65 , eqt^#(lock(), request()) -> c_168() 1009.56/291.65 , eqt^#(lock(), resource()) -> c_169() 1009.56/291.65 , eqt^#(lock(), tag()) -> c_170() 1009.56/291.65 , eqt^#(lock(), true()) -> c_171() 1009.56/291.65 , eqt^#(locker(), nil()) -> c_172() 1009.56/291.65 , eqt^#(locker(), undefined()) -> c_173() 1009.56/291.65 , eqt^#(locker(), pid(N2)) -> c_174() 1009.56/291.65 , eqt^#(locker(), int(N2)) -> c_175() 1009.56/291.65 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.56/291.65 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.56/291.65 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.56/291.65 , eqt^#(locker(), a()) -> c_179() 1009.56/291.65 , eqt^#(locker(), excl()) -> c_180() 1009.56/291.65 , eqt^#(locker(), false()) -> c_181() 1009.56/291.65 , eqt^#(locker(), lock()) -> c_182() 1009.56/291.65 , eqt^#(locker(), locker()) -> c_183() 1009.56/291.65 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.56/291.65 , eqt^#(locker(), ok()) -> c_185() 1009.56/291.65 , eqt^#(locker(), pending()) -> c_186() 1009.56/291.65 , eqt^#(locker(), release()) -> c_187() 1009.56/291.65 , eqt^#(locker(), request()) -> c_188() 1009.56/291.65 , eqt^#(locker(), resource()) -> c_189() 1009.56/291.65 , eqt^#(locker(), tag()) -> c_190() 1009.56/291.65 , eqt^#(locker(), true()) -> c_191() 1009.56/291.65 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.56/291.65 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.56/291.65 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.56/291.65 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.56/291.65 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.56/291.65 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.56/291.65 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.56/291.65 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.56/291.65 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.56/291.65 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.56/291.65 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.56/291.65 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.56/291.65 , eqt^#(ok(), undefined()) -> c_204() 1009.56/291.65 , eqt^#(ok(), pid(N2)) -> c_205() 1009.56/291.65 , eqt^#(ok(), int(N2)) -> c_206() 1009.56/291.65 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.56/291.65 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.56/291.65 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.56/291.65 , eqt^#(ok(), resource()) -> c_210() 1009.56/291.65 , eqt^#(ok(), tag()) -> c_211() 1009.56/291.65 , eqt^#(ok(), true()) -> c_212() 1009.56/291.65 , eqt^#(pending(), nil()) -> c_213() 1009.56/291.65 , eqt^#(pending(), undefined()) -> c_214() 1009.56/291.65 , eqt^#(pending(), pid(N2)) -> c_215() 1009.56/291.65 , eqt^#(pending(), int(N2)) -> c_216() 1009.56/291.65 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.56/291.65 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.56/291.65 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.56/291.65 , eqt^#(pending(), a()) -> c_220() 1009.56/291.65 , eqt^#(pending(), excl()) -> c_221() 1009.56/291.65 , eqt^#(pending(), false()) -> c_222() 1009.56/291.65 , eqt^#(pending(), lock()) -> c_223() 1009.56/291.65 , eqt^#(pending(), locker()) -> c_224() 1009.56/291.65 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.56/291.65 , eqt^#(pending(), ok()) -> c_226() 1009.56/291.65 , eqt^#(pending(), pending()) -> c_227() 1009.56/291.65 , eqt^#(pending(), release()) -> c_228() 1009.56/291.65 , eqt^#(pending(), request()) -> c_229() 1009.56/291.65 , eqt^#(pending(), resource()) -> c_230() 1009.56/291.65 , eqt^#(pending(), tag()) -> c_231() 1009.56/291.65 , eqt^#(pending(), true()) -> c_232() 1009.56/291.65 , eqt^#(release(), nil()) -> c_233() 1009.56/291.65 , eqt^#(release(), a()) -> c_234() 1009.56/291.65 , eqt^#(release(), excl()) -> c_235() 1009.56/291.65 , eqt^#(release(), false()) -> c_236() 1009.56/291.65 , eqt^#(release(), lock()) -> c_237() 1009.56/291.65 , eqt^#(release(), locker()) -> c_238() 1009.56/291.65 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.56/291.65 , eqt^#(release(), ok()) -> c_240() 1009.56/291.65 , eqt^#(request(), undefined()) -> c_241() 1009.56/291.65 , eqt^#(request(), pid(N2)) -> c_242() 1009.56/291.65 , eqt^#(request(), int(N2)) -> c_243() 1009.56/291.65 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.56/291.65 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.56/291.65 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.56/291.65 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.56/291.65 , eqt^#(request(), ok()) -> c_248() 1009.56/291.65 , eqt^#(request(), pending()) -> c_249() 1009.56/291.65 , eqt^#(request(), release()) -> c_250() 1009.56/291.65 , eqt^#(request(), request()) -> c_251() 1009.56/291.65 , eqt^#(request(), resource()) -> c_252() 1009.56/291.65 , eqt^#(request(), tag()) -> c_253() 1009.56/291.65 , eqt^#(request(), true()) -> c_254() 1009.56/291.65 , eqt^#(resource(), nil()) -> c_255() 1009.56/291.65 , eqt^#(resource(), undefined()) -> c_256() 1009.56/291.65 , eqt^#(resource(), pid(N2)) -> c_257() 1009.56/291.65 , eqt^#(resource(), int(N2)) -> c_258() 1009.56/291.65 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.56/291.65 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.56/291.65 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.56/291.65 , eqt^#(resource(), a()) -> c_262() 1009.56/291.65 , eqt^#(resource(), excl()) -> c_263() 1009.56/291.65 , eqt^#(resource(), false()) -> c_264() 1009.56/291.65 , eqt^#(resource(), lock()) -> c_265() 1009.56/291.65 , eqt^#(resource(), locker()) -> c_266() 1009.56/291.65 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.56/291.65 , eqt^#(resource(), ok()) -> c_268() 1009.56/291.65 , eqt^#(resource(), pending()) -> c_269() 1009.56/291.65 , eqt^#(resource(), release()) -> c_270() 1009.56/291.65 , eqt^#(resource(), request()) -> c_271() 1009.56/291.65 , eqt^#(resource(), resource()) -> c_272() 1009.56/291.65 , eqt^#(resource(), tag()) -> c_273() 1009.56/291.65 , eqt^#(resource(), true()) -> c_274() 1009.56/291.65 , eqt^#(tag(), nil()) -> c_275() 1009.56/291.65 , eqt^#(tag(), undefined()) -> c_276() 1009.56/291.65 , eqt^#(tag(), pid(N2)) -> c_277() 1009.56/291.65 , eqt^#(tag(), int(N2)) -> c_278() 1009.56/291.65 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.56/291.65 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.56/291.65 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.56/291.65 , eqt^#(tag(), a()) -> c_282() 1009.56/291.65 , eqt^#(tag(), excl()) -> c_283() 1009.56/291.65 , eqt^#(tag(), false()) -> c_284() 1009.56/291.65 , eqt^#(tag(), lock()) -> c_285() 1009.56/291.65 , eqt^#(tag(), locker()) -> c_286() 1009.56/291.65 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.56/291.65 , eqt^#(tag(), ok()) -> c_288() 1009.56/291.65 , eqt^#(tag(), pending()) -> c_289() 1009.56/291.65 , eqt^#(tag(), release()) -> c_290() 1009.56/291.65 , eqt^#(tag(), request()) -> c_291() 1009.56/291.65 , eqt^#(tag(), resource()) -> c_292() 1009.56/291.65 , eqt^#(tag(), tag()) -> c_293() 1009.56/291.65 , eqt^#(tag(), true()) -> c_294() 1009.56/291.65 , eqt^#(true(), nil()) -> c_295() 1009.56/291.65 , eqt^#(true(), undefined()) -> c_296() 1009.56/291.65 , eqt^#(true(), pid(N2)) -> c_297() 1009.56/291.65 , eqt^#(true(), int(N2)) -> c_298() 1009.56/291.65 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.56/291.65 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.56/291.65 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.56/291.65 , eqt^#(true(), a()) -> c_302() 1009.56/291.65 , eqt^#(true(), excl()) -> c_303() 1009.56/291.65 , eqt^#(true(), false()) -> c_304() 1009.56/291.65 , eqt^#(true(), lock()) -> c_305() 1009.56/291.65 , eqt^#(true(), locker()) -> c_306() 1009.56/291.65 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.56/291.65 , eqt^#(true(), ok()) -> c_308() 1009.56/291.65 , eqt^#(true(), pending()) -> c_309() 1009.56/291.65 , eqt^#(true(), release()) -> c_310() 1009.56/291.65 , eqt^#(true(), request()) -> c_311() 1009.56/291.65 , eqt^#(true(), resource()) -> c_312() 1009.56/291.65 , eqt^#(true(), tag()) -> c_313() 1009.56/291.65 , eqt^#(true(), true()) -> c_314() 1009.56/291.65 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.56/291.65 c_315(element^#(int(s(N1)), T2)) 1009.56/291.65 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.56/291.65 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.56/291.65 , record_new^#(lock()) -> c_318() 1009.56/291.65 , record_extract^#(tuple(mcrlrecord(), 1009.56/291.65 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.65 lock(), 1009.56/291.65 resource()) 1009.56/291.65 -> c_319() 1009.56/291.65 , record_update^#(tuple(mcrlrecord(), 1009.56/291.65 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.65 lock(), 1009.56/291.65 pending(), 1009.56/291.65 NewF) 1009.56/291.65 -> c_320() 1009.56/291.65 , record_updates^#(Record, Name, nil()) -> c_321() 1009.56/291.65 , record_updates^#(Record, 1009.56/291.65 Name, 1009.56/291.65 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.65 -> 1009.56/291.65 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.56/291.65 Name, 1009.56/291.65 Fields), 1009.56/291.65 record_update^#(Record, Name, Field, NewF)) 1009.56/291.65 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.56/291.65 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.56/291.65 c_324(locker2_promote_pending^#(Lock, Pending), 1009.56/291.65 locker2_map_promote_pending^#(Locks, Pending)) 1009.56/291.65 , locker2_promote_pending^#(Lock, Client) -> 1009.56/291.65 c_325(case0^#(Client, 1009.56/291.65 Lock, 1009.56/291.65 record_extract(Lock, lock(), pending())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.56/291.65 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.65 c_330(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.65 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.56/291.65 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.56/291.65 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.56/291.65 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.56/291.65 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.56/291.65 , locker2_remove_pending^#(Lock, Client) -> 1009.56/291.65 c_331(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(pending(), 1009.56/291.65 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())))), 1009.56/291.65 nil())), 1009.56/291.65 subtract^#(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , subtract^#(List, nil()) -> c_332() 1009.56/291.65 , subtract^#(List, cons(Head, Tail)) -> 1009.56/291.65 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.56/291.65 , delete^#(E, nil()) -> c_355() 1009.56/291.65 , delete^#(E, cons(Head, Tail)) -> 1009.56/291.65 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.56/291.65 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.56/291.65 c_334(case1^#(Client, 1009.56/291.65 Resources, 1009.56/291.65 Lock, 1009.56/291.65 member(record_extract(Lock, lock(), resource()), Resources)), 1009.56/291.65 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.56/291.65 record_extract^#(Lock, lock(), resource())) 1009.56/291.65 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.56/291.65 , case1^#(Client, Resources, Lock, true()) -> 1009.56/291.65 c_336(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(pending(), 1009.56/291.65 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())))), 1009.56/291.65 nil())), 1009.56/291.65 append^#(record_extract(Lock, lock(), pending()), 1009.56/291.65 cons(Client, nil())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , member^#(E, nil()) -> c_337() 1009.56/291.65 , member^#(E, cons(Head, Tail)) -> 1009.56/291.65 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.56/291.65 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.56/291.65 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.56/291.65 , case9^#(Tail, Head, E, true()) -> c_361() 1009.56/291.65 , locker2_release_lock^#(Lock, Client) -> 1009.56/291.65 c_340(case2^#(Client, 1009.56/291.65 Lock, 1009.56/291.65 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.56/291.65 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.56/291.65 record_extract^#(Lock, lock(), excl())) 1009.56/291.65 , case2^#(Client, Lock, true()) -> 1009.56/291.65 c_341(record_updates^#(Lock, 1009.56/291.65 lock(), 1009.56/291.65 cons(tuple(excllock(), excl()), nil()))) 1009.56/291.65 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.56/291.65 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.56/291.65 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.56/291.65 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.56/291.65 c_345(case5^#(Client, 1009.56/291.65 Locks, 1009.56/291.65 Lock, 1009.56/291.65 member(Client, record_extract(Lock, lock(), pending()))), 1009.56/291.65 member^#(Client, record_extract(Lock, lock(), pending())), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , case5^#(Client, Locks, Lock, false()) -> 1009.56/291.65 c_346(locker2_obtainables^#(Locks, Client)) 1009.56/291.65 , case5^#(Client, Locks, Lock, true()) -> 1009.56/291.65 c_347(locker2_obtainables^#(Locks, Client)) 1009.56/291.65 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.56/291.65 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.56/291.65 c_349(case6^#(Locks, 1009.56/291.65 Lock, 1009.56/291.65 Resource, 1009.56/291.65 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.56/291.65 record_extract^#(Lock, lock(), resource())) 1009.56/291.65 , case6^#(Locks, Lock, Resource, false()) -> 1009.56/291.65 c_350(locker2_check_available^#(Resource, Locks)) 1009.56/291.65 , case6^#(Locks, Lock, Resource, true()) -> 1009.56/291.65 c_351(record_extract^#(Lock, lock(), excl()), 1009.56/291.65 record_extract^#(Lock, lock(), pending())) 1009.56/291.65 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.56/291.65 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.56/291.65 c_353(locker2_check_available^#(Resource, Locks), 1009.56/291.65 locker2_check_availables^#(Resources, Locks)) 1009.56/291.65 , locker2_adduniq^#(nil(), List) -> c_354() 1009.56/291.65 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.56/291.65 , case8^#(Tail, Head, E, true()) -> c_358() 1009.56/291.65 , gen_tag^#(Pid) -> c_359() 1009.56/291.65 , eqs^#(empty(), empty()) -> c_362() 1009.56/291.65 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.56/291.65 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.56/291.65 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.65 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.56/291.65 eqt^#(E1, E2), 1009.56/291.65 eqs^#(S1, S2)) 1009.56/291.65 , pushs^#(E1, S1) -> c_366() 1009.56/291.65 , pops^#(stack(E1, S1)) -> c_367() 1009.56/291.65 , tops^#(stack(E1, S1)) -> c_368() 1009.56/291.65 , istops^#(E1, empty()) -> c_369() 1009.56/291.65 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.56/291.66 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.56/291.66 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.56/291.66 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.56/291.66 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.66 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.56/291.66 eqt^#(E1, E2), 1009.56/291.66 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.56/291.66 eqs^#(S1, S2), 1009.56/291.66 eqc^#(CS1, CS2)) 1009.56/291.66 , push^#(E1, E2, nocalls()) -> c_375() 1009.56/291.66 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.66 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.56/291.66 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.56/291.66 Weak Trs: 1009.56/291.66 { or(T(), T()) -> T() 1009.56/291.66 , or(T(), F()) -> T() 1009.56/291.66 , or(F(), T()) -> T() 1009.56/291.66 , or(F(), F()) -> F() 1009.56/291.66 , and(B, T()) -> B 1009.56/291.66 , and(B, F()) -> F() 1009.56/291.66 , and(T(), B) -> B 1009.56/291.66 , and(F(), B) -> F() 1009.56/291.66 , imp(T(), B) -> B 1009.56/291.66 , imp(F(), B) -> T() 1009.56/291.66 , not(T()) -> F() 1009.56/291.66 , not(F()) -> T() 1009.56/291.66 , if(T(), B1, B2) -> B1 1009.56/291.66 , if(F(), B1, B2) -> B2 1009.56/291.66 , eq(T(), T()) -> T() 1009.56/291.66 , eq(T(), F()) -> F() 1009.56/291.66 , eq(F(), T()) -> F() 1009.56/291.66 , eq(F(), F()) -> T() 1009.56/291.66 , eqt(nil(), undefined()) -> F() 1009.56/291.66 , eqt(nil(), pid(N2)) -> F() 1009.56/291.66 , eqt(nil(), int(N2)) -> F() 1009.56/291.66 , eqt(nil(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(nil(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(nil(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(undefined(), nil()) -> F() 1009.56/291.66 , eqt(undefined(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(undefined(), a()) -> F() 1009.56/291.66 , eqt(pid(N1), nil()) -> F() 1009.56/291.66 , eqt(pid(N1), undefined()) -> F() 1009.56/291.66 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.56/291.66 , eqt(pid(N1), int(N2)) -> F() 1009.56/291.66 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(pid(N1), a()) -> F() 1009.56/291.66 , eqt(pid(N1), excl()) -> F() 1009.56/291.66 , eqt(pid(N1), false()) -> F() 1009.56/291.66 , eqt(pid(N1), lock()) -> F() 1009.56/291.66 , eqt(pid(N1), locker()) -> F() 1009.56/291.66 , eqt(pid(N1), mcrlrecord()) -> F() 1009.56/291.66 , eqt(pid(N1), ok()) -> F() 1009.56/291.66 , eqt(pid(N1), pending()) -> F() 1009.56/291.66 , eqt(pid(N1), release()) -> F() 1009.56/291.66 , eqt(pid(N1), request()) -> F() 1009.56/291.66 , eqt(pid(N1), resource()) -> F() 1009.56/291.66 , eqt(pid(N1), tag()) -> F() 1009.56/291.66 , eqt(pid(N1), true()) -> F() 1009.56/291.66 , eqt(int(N1), nil()) -> F() 1009.56/291.66 , eqt(int(N1), undefined()) -> F() 1009.56/291.66 , eqt(int(N1), a()) -> F() 1009.56/291.66 , eqt(int(N1), excl()) -> F() 1009.56/291.66 , eqt(int(N1), false()) -> F() 1009.56/291.66 , eqt(int(N1), lock()) -> F() 1009.56/291.66 , eqt(int(N1), locker()) -> F() 1009.56/291.66 , eqt(int(N1), mcrlrecord()) -> F() 1009.56/291.66 , eqt(int(N1), ok()) -> F() 1009.56/291.66 , eqt(int(N1), pending()) -> F() 1009.56/291.66 , eqt(int(N1), release()) -> F() 1009.56/291.66 , eqt(int(N1), request()) -> F() 1009.56/291.66 , eqt(int(N1), resource()) -> F() 1009.56/291.66 , eqt(int(N1), tag()) -> F() 1009.56/291.66 , eqt(int(N1), true()) -> F() 1009.56/291.66 , eqt(cons(H1, T1), undefined()) -> F() 1009.56/291.66 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.56/291.66 , eqt(cons(H1, T1), int(N2)) -> F() 1009.56/291.66 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.66 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(cons(H1, T1), resource()) -> F() 1009.56/291.66 , eqt(cons(H1, T1), tag()) -> F() 1009.56/291.66 , eqt(cons(H1, T1), true()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), nil()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), undefined()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.66 and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.66 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), a()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), excl()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), false()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), lock()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), locker()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), ok()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), pending()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), release()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), request()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), resource()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), tag()) -> F() 1009.56/291.66 , eqt(tuple(H1, T1), true()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), nil()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), undefined()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.56/291.66 , eqt(tuplenil(H1), int(N2)) -> F() 1009.56/291.66 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.56/291.66 , eqt(tuplenil(H1), a()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), excl()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), false()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), lock()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), locker()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), ok()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), pending()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), release()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), request()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), resource()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), tag()) -> F() 1009.56/291.66 , eqt(tuplenil(H1), true()) -> F() 1009.56/291.66 , eqt(a(), nil()) -> F() 1009.56/291.66 , eqt(a(), undefined()) -> F() 1009.56/291.66 , eqt(a(), pid(N2)) -> F() 1009.56/291.66 , eqt(a(), int(N2)) -> F() 1009.56/291.66 , eqt(a(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(a(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(a(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(a(), a()) -> T() 1009.56/291.66 , eqt(a(), excl()) -> F() 1009.56/291.66 , eqt(a(), false()) -> F() 1009.56/291.66 , eqt(a(), lock()) -> F() 1009.56/291.66 , eqt(a(), locker()) -> F() 1009.56/291.66 , eqt(a(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(a(), ok()) -> F() 1009.56/291.66 , eqt(a(), pending()) -> F() 1009.56/291.66 , eqt(a(), release()) -> F() 1009.56/291.66 , eqt(a(), request()) -> F() 1009.56/291.66 , eqt(a(), resource()) -> F() 1009.56/291.66 , eqt(a(), tag()) -> F() 1009.56/291.66 , eqt(a(), true()) -> F() 1009.56/291.66 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.56/291.66 , eqt(excl(), nil()) -> F() 1009.56/291.66 , eqt(excl(), undefined()) -> F() 1009.56/291.66 , eqt(excl(), pid(N2)) -> F() 1009.56/291.66 , eqt(excl(), a()) -> F() 1009.56/291.66 , eqt(excl(), excl()) -> T() 1009.56/291.66 , eqt(excl(), false()) -> F() 1009.56/291.66 , eqt(excl(), lock()) -> F() 1009.56/291.66 , eqt(excl(), locker()) -> F() 1009.56/291.66 , eqt(excl(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(excl(), ok()) -> F() 1009.56/291.66 , eqt(excl(), pending()) -> F() 1009.56/291.66 , eqt(excl(), release()) -> F() 1009.56/291.66 , eqt(excl(), request()) -> F() 1009.56/291.66 , eqt(excl(), resource()) -> F() 1009.56/291.66 , eqt(excl(), tag()) -> F() 1009.56/291.66 , eqt(excl(), true()) -> F() 1009.56/291.66 , eqt(false(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(false(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(false(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(lock(), nil()) -> F() 1009.56/291.66 , eqt(lock(), undefined()) -> F() 1009.56/291.66 , eqt(lock(), pid(N2)) -> F() 1009.56/291.66 , eqt(lock(), int(N2)) -> F() 1009.56/291.66 , eqt(lock(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(lock(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(lock(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(lock(), a()) -> F() 1009.56/291.66 , eqt(lock(), excl()) -> F() 1009.56/291.66 , eqt(lock(), false()) -> F() 1009.56/291.66 , eqt(lock(), lock()) -> T() 1009.56/291.66 , eqt(lock(), locker()) -> F() 1009.56/291.66 , eqt(lock(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(lock(), ok()) -> F() 1009.56/291.66 , eqt(lock(), pending()) -> F() 1009.56/291.66 , eqt(lock(), release()) -> F() 1009.56/291.66 , eqt(lock(), request()) -> F() 1009.56/291.66 , eqt(lock(), resource()) -> F() 1009.56/291.66 , eqt(lock(), tag()) -> F() 1009.56/291.66 , eqt(lock(), true()) -> F() 1009.56/291.66 , eqt(locker(), nil()) -> F() 1009.56/291.66 , eqt(locker(), undefined()) -> F() 1009.56/291.66 , eqt(locker(), pid(N2)) -> F() 1009.56/291.66 , eqt(locker(), int(N2)) -> F() 1009.56/291.66 , eqt(locker(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(locker(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(locker(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(locker(), a()) -> F() 1009.56/291.66 , eqt(locker(), excl()) -> F() 1009.56/291.66 , eqt(locker(), false()) -> F() 1009.56/291.66 , eqt(locker(), lock()) -> F() 1009.56/291.66 , eqt(locker(), locker()) -> T() 1009.56/291.66 , eqt(locker(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(locker(), ok()) -> F() 1009.56/291.66 , eqt(locker(), pending()) -> F() 1009.56/291.66 , eqt(locker(), release()) -> F() 1009.56/291.66 , eqt(locker(), request()) -> F() 1009.56/291.66 , eqt(locker(), resource()) -> F() 1009.56/291.66 , eqt(locker(), tag()) -> F() 1009.56/291.66 , eqt(locker(), true()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), nil()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), a()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), excl()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), false()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), lock()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), locker()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.56/291.66 , eqt(mcrlrecord(), ok()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), pending()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), release()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), request()) -> F() 1009.56/291.66 , eqt(mcrlrecord(), resource()) -> F() 1009.56/291.66 , eqt(ok(), undefined()) -> F() 1009.56/291.66 , eqt(ok(), pid(N2)) -> F() 1009.56/291.66 , eqt(ok(), int(N2)) -> F() 1009.56/291.66 , eqt(ok(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(ok(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(ok(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(ok(), resource()) -> F() 1009.56/291.66 , eqt(ok(), tag()) -> F() 1009.56/291.66 , eqt(ok(), true()) -> F() 1009.56/291.66 , eqt(pending(), nil()) -> F() 1009.56/291.66 , eqt(pending(), undefined()) -> F() 1009.56/291.66 , eqt(pending(), pid(N2)) -> F() 1009.56/291.66 , eqt(pending(), int(N2)) -> F() 1009.56/291.66 , eqt(pending(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(pending(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(pending(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(pending(), a()) -> F() 1009.56/291.66 , eqt(pending(), excl()) -> F() 1009.56/291.66 , eqt(pending(), false()) -> F() 1009.56/291.66 , eqt(pending(), lock()) -> F() 1009.56/291.66 , eqt(pending(), locker()) -> F() 1009.56/291.66 , eqt(pending(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(pending(), ok()) -> F() 1009.56/291.66 , eqt(pending(), pending()) -> T() 1009.56/291.66 , eqt(pending(), release()) -> F() 1009.56/291.66 , eqt(pending(), request()) -> F() 1009.56/291.66 , eqt(pending(), resource()) -> F() 1009.56/291.66 , eqt(pending(), tag()) -> F() 1009.56/291.66 , eqt(pending(), true()) -> F() 1009.56/291.66 , eqt(release(), nil()) -> F() 1009.56/291.66 , eqt(release(), a()) -> F() 1009.56/291.66 , eqt(release(), excl()) -> F() 1009.56/291.66 , eqt(release(), false()) -> F() 1009.56/291.66 , eqt(release(), lock()) -> F() 1009.56/291.66 , eqt(release(), locker()) -> F() 1009.56/291.66 , eqt(release(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(release(), ok()) -> F() 1009.56/291.66 , eqt(request(), undefined()) -> F() 1009.56/291.66 , eqt(request(), pid(N2)) -> F() 1009.56/291.66 , eqt(request(), int(N2)) -> F() 1009.56/291.66 , eqt(request(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(request(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(request(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(request(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(request(), ok()) -> F() 1009.56/291.66 , eqt(request(), pending()) -> F() 1009.56/291.66 , eqt(request(), release()) -> F() 1009.56/291.66 , eqt(request(), request()) -> T() 1009.56/291.66 , eqt(request(), resource()) -> F() 1009.56/291.66 , eqt(request(), tag()) -> F() 1009.56/291.66 , eqt(request(), true()) -> F() 1009.56/291.66 , eqt(resource(), nil()) -> F() 1009.56/291.66 , eqt(resource(), undefined()) -> F() 1009.56/291.66 , eqt(resource(), pid(N2)) -> F() 1009.56/291.66 , eqt(resource(), int(N2)) -> F() 1009.56/291.66 , eqt(resource(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(resource(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(resource(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(resource(), a()) -> F() 1009.56/291.66 , eqt(resource(), excl()) -> F() 1009.56/291.66 , eqt(resource(), false()) -> F() 1009.56/291.66 , eqt(resource(), lock()) -> F() 1009.56/291.66 , eqt(resource(), locker()) -> F() 1009.56/291.66 , eqt(resource(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(resource(), ok()) -> F() 1009.56/291.66 , eqt(resource(), pending()) -> F() 1009.56/291.66 , eqt(resource(), release()) -> F() 1009.56/291.66 , eqt(resource(), request()) -> F() 1009.56/291.66 , eqt(resource(), resource()) -> T() 1009.56/291.66 , eqt(resource(), tag()) -> F() 1009.56/291.66 , eqt(resource(), true()) -> F() 1009.56/291.66 , eqt(tag(), nil()) -> F() 1009.56/291.66 , eqt(tag(), undefined()) -> F() 1009.56/291.66 , eqt(tag(), pid(N2)) -> F() 1009.56/291.66 , eqt(tag(), int(N2)) -> F() 1009.56/291.66 , eqt(tag(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(tag(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(tag(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(tag(), a()) -> F() 1009.56/291.66 , eqt(tag(), excl()) -> F() 1009.56/291.66 , eqt(tag(), false()) -> F() 1009.56/291.66 , eqt(tag(), lock()) -> F() 1009.56/291.66 , eqt(tag(), locker()) -> F() 1009.56/291.66 , eqt(tag(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(tag(), ok()) -> F() 1009.56/291.66 , eqt(tag(), pending()) -> F() 1009.56/291.66 , eqt(tag(), release()) -> F() 1009.56/291.66 , eqt(tag(), request()) -> F() 1009.56/291.66 , eqt(tag(), resource()) -> F() 1009.56/291.66 , eqt(tag(), tag()) -> T() 1009.56/291.66 , eqt(tag(), true()) -> F() 1009.56/291.66 , eqt(true(), nil()) -> F() 1009.56/291.66 , eqt(true(), undefined()) -> F() 1009.56/291.66 , eqt(true(), pid(N2)) -> F() 1009.56/291.66 , eqt(true(), int(N2)) -> F() 1009.56/291.66 , eqt(true(), cons(H2, T2)) -> F() 1009.56/291.66 , eqt(true(), tuple(H2, T2)) -> F() 1009.56/291.66 , eqt(true(), tuplenil(H2)) -> F() 1009.56/291.66 , eqt(true(), a()) -> F() 1009.56/291.66 , eqt(true(), excl()) -> F() 1009.56/291.66 , eqt(true(), false()) -> F() 1009.56/291.66 , eqt(true(), lock()) -> F() 1009.56/291.66 , eqt(true(), locker()) -> F() 1009.56/291.66 , eqt(true(), mcrlrecord()) -> F() 1009.56/291.66 , eqt(true(), ok()) -> F() 1009.56/291.66 , eqt(true(), pending()) -> F() 1009.56/291.66 , eqt(true(), release()) -> F() 1009.56/291.66 , eqt(true(), request()) -> F() 1009.56/291.66 , eqt(true(), resource()) -> F() 1009.56/291.66 , eqt(true(), tag()) -> F() 1009.56/291.66 , eqt(true(), true()) -> T() 1009.56/291.66 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.56/291.66 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.56/291.66 , element(int(s(0())), tuplenil(T1)) -> T1 1009.56/291.66 , record_new(lock()) -> 1009.56/291.66 tuple(mcrlrecord(), 1009.56/291.66 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.56/291.66 , record_extract(tuple(mcrlrecord(), 1009.56/291.66 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.66 lock(), 1009.56/291.66 resource()) 1009.56/291.66 -> 1009.56/291.66 tuple(mcrlrecord(), 1009.56/291.66 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.56/291.66 , record_update(tuple(mcrlrecord(), 1009.56/291.66 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.66 lock(), 1009.56/291.66 pending(), 1009.56/291.66 NewF) 1009.56/291.66 -> 1009.56/291.66 tuple(mcrlrecord(), 1009.56/291.66 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.56/291.66 , record_updates(Record, Name, nil()) -> Record 1009.56/291.66 , record_updates(Record, 1009.56/291.66 Name, 1009.56/291.66 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.66 -> 1009.56/291.66 record_updates(record_update(Record, Name, Field, NewF), 1009.56/291.66 Name, 1009.56/291.66 Fields) 1009.56/291.66 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.56/291.66 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.56/291.66 cons(locker2_promote_pending(Lock, Pending), 1009.56/291.66 locker2_map_promote_pending(Locks, Pending)) 1009.56/291.66 , locker2_promote_pending(Lock, Client) -> 1009.56/291.66 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.56/291.66 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.56/291.66 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.56/291.66 cons(locker2_claim_lock(Lock, Resources, Client), 1009.56/291.66 locker2_map_claim_lock(Locks, Resources, Client)) 1009.56/291.67 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.56/291.67 , case0(Client, Lock, MCRLFree0) -> Lock 1009.56/291.67 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.67 record_updates(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.67 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.56/291.67 , locker2_remove_pending(Lock, Client) -> 1009.56/291.67 record_updates(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(pending(), 1009.56/291.67 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.67 cons(Client, nil())))), 1009.56/291.67 nil())) 1009.56/291.67 , subtract(List, nil()) -> List 1009.56/291.67 , subtract(List, cons(Head, Tail)) -> 1009.56/291.67 subtract(delete(Head, List), Tail) 1009.56/291.67 , locker2_add_pending(Lock, Resources, Client) -> 1009.56/291.67 case1(Client, 1009.56/291.67 Resources, 1009.56/291.67 Lock, 1009.56/291.67 member(record_extract(Lock, lock(), resource()), Resources)) 1009.56/291.67 , case1(Client, Resources, Lock, false()) -> Lock 1009.56/291.67 , case1(Client, Resources, Lock, true()) -> 1009.56/291.67 record_updates(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(pending(), 1009.56/291.67 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.67 cons(Client, nil())))), 1009.56/291.67 nil())) 1009.56/291.67 , member(E, nil()) -> false() 1009.56/291.67 , member(E, cons(Head, Tail)) -> 1009.56/291.67 case9(Tail, Head, E, equal(E, Head)) 1009.56/291.67 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.56/291.67 , locker2_release_lock(Lock, Client) -> 1009.56/291.67 case2(Client, 1009.56/291.67 Lock, 1009.56/291.67 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.56/291.67 , case2(Client, Lock, true()) -> 1009.56/291.67 record_updates(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(excllock(), excl()), nil())) 1009.56/291.67 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.56/291.67 , case4(Client, Lock, MCRLFree1) -> false() 1009.56/291.67 , locker2_obtainables(nil(), Client) -> true() 1009.56/291.67 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.56/291.67 case5(Client, 1009.56/291.67 Locks, 1009.56/291.67 Lock, 1009.56/291.67 member(Client, record_extract(Lock, lock(), pending()))) 1009.56/291.67 , case5(Client, Locks, Lock, false()) -> 1009.56/291.67 locker2_obtainables(Locks, Client) 1009.56/291.67 , case5(Client, Locks, Lock, true()) -> 1009.56/291.67 andt(locker2_obtainable(Lock, Client), 1009.56/291.67 locker2_obtainables(Locks, Client)) 1009.56/291.67 , locker2_check_available(Resource, nil()) -> false() 1009.56/291.67 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.56/291.67 case6(Locks, 1009.56/291.67 Lock, 1009.56/291.67 Resource, 1009.56/291.67 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.56/291.67 , case6(Locks, Lock, Resource, false()) -> 1009.56/291.67 locker2_check_available(Resource, Locks) 1009.56/291.67 , case6(Locks, Lock, Resource, true()) -> 1009.56/291.67 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.56/291.67 equal(record_extract(Lock, lock(), pending()), nil())) 1009.56/291.67 , locker2_check_availables(nil(), Locks) -> true() 1009.56/291.67 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.56/291.67 andt(locker2_check_available(Resource, Locks), 1009.56/291.67 locker2_check_availables(Resources, Locks)) 1009.56/291.67 , locker2_adduniq(nil(), List) -> List 1009.56/291.67 , delete(E, nil()) -> nil() 1009.56/291.67 , delete(E, cons(Head, Tail)) -> 1009.56/291.67 case8(Tail, Head, E, equal(E, Head)) 1009.56/291.67 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.56/291.67 , case8(Tail, Head, E, true()) -> Tail 1009.56/291.67 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.56/291.67 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.56/291.67 , case9(Tail, Head, E, true()) -> true() 1009.56/291.67 , eqs(empty(), empty()) -> T() 1009.56/291.67 , eqs(empty(), stack(E2, S2)) -> F() 1009.56/291.67 , eqs(stack(E1, S1), empty()) -> F() 1009.56/291.67 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.67 and(eqt(E1, E2), eqs(S1, S2)) 1009.56/291.67 , pushs(E1, S1) -> stack(E1, S1) 1009.56/291.67 , pops(stack(E1, S1)) -> S1 1009.56/291.67 , tops(stack(E1, S1)) -> E1 1009.56/291.67 , istops(E1, empty()) -> F() 1009.56/291.67 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.56/291.67 , eqc(nocalls(), nocalls()) -> T() 1009.56/291.67 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.56/291.67 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.56/291.67 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.67 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.56/291.67 , push(E1, E2, nocalls()) -> 1009.56/291.67 calls(E1, stack(E2, empty()), nocalls()) 1009.56/291.67 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.67 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.56/291.67 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.56/291.67 calls(E3, pushs(E2, S1), CS1) } 1009.56/291.67 Obligation: 1009.56/291.67 innermost runtime complexity 1009.56/291.67 Answer: 1009.56/291.67 YES(O(1),O(n^1)) 1009.56/291.67 1009.56/291.67 We estimate the number of application of 1009.56/291.67 {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,316,317,318,319,320,321,323,326,328,330,332,334,335,337,339,340,343,345,346,347,348,349,352,355,356,358,360,361,362,363,364,366,367,368,369,371,372,373,375} 1009.56/291.67 by applications of 1009.56/291.67 Pre({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,316,317,318,319,320,321,323,326,328,330,332,334,335,337,339,340,343,345,346,347,348,349,352,355,356,358,360,361,362,363,364,366,367,368,369,371,372,373,375}) 1009.56/291.67 = 1009.56/291.67 {30,66,77,98,315,322,324,325,329,333,336,342,344,350,351,353,354,357,359,365,370,374,376,377}. 1009.56/291.67 Here rules are labeled as follows: 1009.56/291.67 1009.56/291.67 DPs: 1009.56/291.67 { 1: or^#(T(), T()) -> c_1() 1009.56/291.67 , 2: or^#(T(), F()) -> c_2() 1009.56/291.67 , 3: or^#(F(), T()) -> c_3() 1009.56/291.67 , 4: or^#(F(), F()) -> c_4() 1009.56/291.67 , 5: and^#(B, T()) -> c_5() 1009.56/291.67 , 6: and^#(B, F()) -> c_6() 1009.56/291.67 , 7: and^#(T(), B) -> c_7() 1009.56/291.67 , 8: and^#(F(), B) -> c_8() 1009.56/291.67 , 9: imp^#(T(), B) -> c_9() 1009.56/291.67 , 10: imp^#(F(), B) -> c_10() 1009.56/291.67 , 11: not^#(T()) -> c_11() 1009.56/291.67 , 12: not^#(F()) -> c_12() 1009.56/291.67 , 13: if^#(T(), B1, B2) -> c_13() 1009.56/291.67 , 14: if^#(F(), B1, B2) -> c_14() 1009.56/291.67 , 15: eq^#(T(), T()) -> c_15() 1009.56/291.67 , 16: eq^#(T(), F()) -> c_16() 1009.56/291.67 , 17: eq^#(F(), T()) -> c_17() 1009.56/291.67 , 18: eq^#(F(), F()) -> c_18() 1009.56/291.67 , 19: eqt^#(nil(), undefined()) -> c_19() 1009.56/291.67 , 20: eqt^#(nil(), pid(N2)) -> c_20() 1009.56/291.67 , 21: eqt^#(nil(), int(N2)) -> c_21() 1009.56/291.67 , 22: eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.56/291.67 , 23: eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.56/291.67 , 24: eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.56/291.67 , 25: eqt^#(undefined(), nil()) -> c_25() 1009.56/291.67 , 26: eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.56/291.67 , 27: eqt^#(undefined(), a()) -> c_27() 1009.56/291.67 , 28: eqt^#(pid(N1), nil()) -> c_28() 1009.56/291.67 , 29: eqt^#(pid(N1), undefined()) -> c_29() 1009.56/291.67 , 30: eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.56/291.67 , 31: eqt^#(pid(N1), int(N2)) -> c_31() 1009.56/291.67 , 32: eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.56/291.67 , 33: eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.56/291.67 , 34: eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.56/291.67 , 35: eqt^#(pid(N1), a()) -> c_35() 1009.56/291.67 , 36: eqt^#(pid(N1), excl()) -> c_36() 1009.56/291.67 , 37: eqt^#(pid(N1), false()) -> c_37() 1009.56/291.67 , 38: eqt^#(pid(N1), lock()) -> c_38() 1009.56/291.67 , 39: eqt^#(pid(N1), locker()) -> c_39() 1009.56/291.67 , 40: eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.56/291.67 , 41: eqt^#(pid(N1), ok()) -> c_41() 1009.56/291.67 , 42: eqt^#(pid(N1), pending()) -> c_42() 1009.56/291.67 , 43: eqt^#(pid(N1), release()) -> c_43() 1009.56/291.67 , 44: eqt^#(pid(N1), request()) -> c_44() 1009.56/291.67 , 45: eqt^#(pid(N1), resource()) -> c_45() 1009.56/291.67 , 46: eqt^#(pid(N1), tag()) -> c_46() 1009.56/291.67 , 47: eqt^#(pid(N1), true()) -> c_47() 1009.56/291.67 , 48: eqt^#(int(N1), nil()) -> c_48() 1009.56/291.67 , 49: eqt^#(int(N1), undefined()) -> c_49() 1009.56/291.67 , 50: eqt^#(int(N1), a()) -> c_50() 1009.56/291.67 , 51: eqt^#(int(N1), excl()) -> c_51() 1009.56/291.67 , 52: eqt^#(int(N1), false()) -> c_52() 1009.56/291.67 , 53: eqt^#(int(N1), lock()) -> c_53() 1009.56/291.67 , 54: eqt^#(int(N1), locker()) -> c_54() 1009.56/291.67 , 55: eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.56/291.67 , 56: eqt^#(int(N1), ok()) -> c_56() 1009.56/291.67 , 57: eqt^#(int(N1), pending()) -> c_57() 1009.56/291.67 , 58: eqt^#(int(N1), release()) -> c_58() 1009.56/291.67 , 59: eqt^#(int(N1), request()) -> c_59() 1009.56/291.67 , 60: eqt^#(int(N1), resource()) -> c_60() 1009.56/291.67 , 61: eqt^#(int(N1), tag()) -> c_61() 1009.56/291.67 , 62: eqt^#(int(N1), true()) -> c_62() 1009.56/291.67 , 63: eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.56/291.67 , 64: eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.56/291.67 , 65: eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.56/291.67 , 66: eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.56/291.67 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.67 , 67: eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.56/291.67 , 68: eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.56/291.67 , 69: eqt^#(cons(H1, T1), resource()) -> c_69() 1009.56/291.67 , 70: eqt^#(cons(H1, T1), tag()) -> c_70() 1009.56/291.67 , 71: eqt^#(cons(H1, T1), true()) -> c_71() 1009.56/291.67 , 72: eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.56/291.67 , 73: eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.56/291.67 , 74: eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.56/291.67 , 75: eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.56/291.67 , 76: eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.56/291.67 , 77: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.67 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.67 , 78: eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.56/291.67 , 79: eqt^#(tuple(H1, T1), a()) -> c_79() 1009.56/291.67 , 80: eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.56/291.67 , 81: eqt^#(tuple(H1, T1), false()) -> c_81() 1009.56/291.67 , 82: eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.56/291.67 , 83: eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.56/291.67 , 84: eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.56/291.67 , 85: eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.56/291.67 , 86: eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.56/291.67 , 87: eqt^#(tuple(H1, T1), release()) -> c_87() 1009.56/291.67 , 88: eqt^#(tuple(H1, T1), request()) -> c_88() 1009.56/291.67 , 89: eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.56/291.67 , 90: eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.56/291.67 , 91: eqt^#(tuple(H1, T1), true()) -> c_91() 1009.56/291.67 , 92: eqt^#(tuplenil(H1), nil()) -> c_92() 1009.56/291.67 , 93: eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.56/291.67 , 94: eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.56/291.67 , 95: eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.56/291.67 , 96: eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.56/291.67 , 97: eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.56/291.67 , 98: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.56/291.67 , 99: eqt^#(tuplenil(H1), a()) -> c_99() 1009.56/291.67 , 100: eqt^#(tuplenil(H1), excl()) -> c_100() 1009.56/291.67 , 101: eqt^#(tuplenil(H1), false()) -> c_101() 1009.56/291.67 , 102: eqt^#(tuplenil(H1), lock()) -> c_102() 1009.56/291.67 , 103: eqt^#(tuplenil(H1), locker()) -> c_103() 1009.56/291.67 , 104: eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.56/291.67 , 105: eqt^#(tuplenil(H1), ok()) -> c_105() 1009.56/291.67 , 106: eqt^#(tuplenil(H1), pending()) -> c_106() 1009.56/291.67 , 107: eqt^#(tuplenil(H1), release()) -> c_107() 1009.56/291.67 , 108: eqt^#(tuplenil(H1), request()) -> c_108() 1009.56/291.67 , 109: eqt^#(tuplenil(H1), resource()) -> c_109() 1009.56/291.67 , 110: eqt^#(tuplenil(H1), tag()) -> c_110() 1009.56/291.67 , 111: eqt^#(tuplenil(H1), true()) -> c_111() 1009.56/291.67 , 112: eqt^#(a(), nil()) -> c_112() 1009.56/291.67 , 113: eqt^#(a(), undefined()) -> c_113() 1009.56/291.67 , 114: eqt^#(a(), pid(N2)) -> c_114() 1009.56/291.67 , 115: eqt^#(a(), int(N2)) -> c_115() 1009.56/291.67 , 116: eqt^#(a(), cons(H2, T2)) -> c_116() 1009.56/291.67 , 117: eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.56/291.67 , 118: eqt^#(a(), tuplenil(H2)) -> c_118() 1009.56/291.67 , 119: eqt^#(a(), a()) -> c_119() 1009.56/291.67 , 120: eqt^#(a(), excl()) -> c_120() 1009.56/291.67 , 121: eqt^#(a(), false()) -> c_121() 1009.56/291.67 , 122: eqt^#(a(), lock()) -> c_122() 1009.56/291.67 , 123: eqt^#(a(), locker()) -> c_123() 1009.56/291.67 , 124: eqt^#(a(), mcrlrecord()) -> c_124() 1009.56/291.67 , 125: eqt^#(a(), ok()) -> c_125() 1009.56/291.67 , 126: eqt^#(a(), pending()) -> c_126() 1009.56/291.67 , 127: eqt^#(a(), release()) -> c_127() 1009.56/291.67 , 128: eqt^#(a(), request()) -> c_128() 1009.56/291.67 , 129: eqt^#(a(), resource()) -> c_129() 1009.56/291.67 , 130: eqt^#(a(), tag()) -> c_130() 1009.56/291.67 , 131: eqt^#(a(), true()) -> c_131() 1009.56/291.67 , 132: eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.56/291.67 , 133: eqt^#(excl(), nil()) -> c_133() 1009.56/291.67 , 134: eqt^#(excl(), undefined()) -> c_134() 1009.56/291.67 , 135: eqt^#(excl(), pid(N2)) -> c_135() 1009.56/291.67 , 136: eqt^#(excl(), a()) -> c_136() 1009.56/291.67 , 137: eqt^#(excl(), excl()) -> c_137() 1009.56/291.67 , 138: eqt^#(excl(), false()) -> c_138() 1009.56/291.67 , 139: eqt^#(excl(), lock()) -> c_139() 1009.56/291.67 , 140: eqt^#(excl(), locker()) -> c_140() 1009.56/291.67 , 141: eqt^#(excl(), mcrlrecord()) -> c_141() 1009.56/291.67 , 142: eqt^#(excl(), ok()) -> c_142() 1009.56/291.67 , 143: eqt^#(excl(), pending()) -> c_143() 1009.56/291.67 , 144: eqt^#(excl(), release()) -> c_144() 1009.56/291.67 , 145: eqt^#(excl(), request()) -> c_145() 1009.56/291.67 , 146: eqt^#(excl(), resource()) -> c_146() 1009.56/291.67 , 147: eqt^#(excl(), tag()) -> c_147() 1009.56/291.67 , 148: eqt^#(excl(), true()) -> c_148() 1009.56/291.67 , 149: eqt^#(false(), cons(H2, T2)) -> c_149() 1009.56/291.67 , 150: eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.56/291.67 , 151: eqt^#(false(), tuplenil(H2)) -> c_151() 1009.56/291.67 , 152: eqt^#(lock(), nil()) -> c_152() 1009.56/291.67 , 153: eqt^#(lock(), undefined()) -> c_153() 1009.56/291.67 , 154: eqt^#(lock(), pid(N2)) -> c_154() 1009.56/291.67 , 155: eqt^#(lock(), int(N2)) -> c_155() 1009.56/291.67 , 156: eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.56/291.67 , 157: eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.56/291.67 , 158: eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.56/291.67 , 159: eqt^#(lock(), a()) -> c_159() 1009.56/291.67 , 160: eqt^#(lock(), excl()) -> c_160() 1009.56/291.67 , 161: eqt^#(lock(), false()) -> c_161() 1009.56/291.67 , 162: eqt^#(lock(), lock()) -> c_162() 1009.56/291.67 , 163: eqt^#(lock(), locker()) -> c_163() 1009.56/291.67 , 164: eqt^#(lock(), mcrlrecord()) -> c_164() 1009.56/291.67 , 165: eqt^#(lock(), ok()) -> c_165() 1009.56/291.67 , 166: eqt^#(lock(), pending()) -> c_166() 1009.56/291.67 , 167: eqt^#(lock(), release()) -> c_167() 1009.56/291.67 , 168: eqt^#(lock(), request()) -> c_168() 1009.56/291.67 , 169: eqt^#(lock(), resource()) -> c_169() 1009.56/291.67 , 170: eqt^#(lock(), tag()) -> c_170() 1009.56/291.67 , 171: eqt^#(lock(), true()) -> c_171() 1009.56/291.67 , 172: eqt^#(locker(), nil()) -> c_172() 1009.56/291.67 , 173: eqt^#(locker(), undefined()) -> c_173() 1009.56/291.67 , 174: eqt^#(locker(), pid(N2)) -> c_174() 1009.56/291.67 , 175: eqt^#(locker(), int(N2)) -> c_175() 1009.56/291.67 , 176: eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.56/291.67 , 177: eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.56/291.67 , 178: eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.56/291.67 , 179: eqt^#(locker(), a()) -> c_179() 1009.56/291.67 , 180: eqt^#(locker(), excl()) -> c_180() 1009.56/291.67 , 181: eqt^#(locker(), false()) -> c_181() 1009.56/291.67 , 182: eqt^#(locker(), lock()) -> c_182() 1009.56/291.67 , 183: eqt^#(locker(), locker()) -> c_183() 1009.56/291.67 , 184: eqt^#(locker(), mcrlrecord()) -> c_184() 1009.56/291.67 , 185: eqt^#(locker(), ok()) -> c_185() 1009.56/291.67 , 186: eqt^#(locker(), pending()) -> c_186() 1009.56/291.67 , 187: eqt^#(locker(), release()) -> c_187() 1009.56/291.67 , 188: eqt^#(locker(), request()) -> c_188() 1009.56/291.67 , 189: eqt^#(locker(), resource()) -> c_189() 1009.56/291.67 , 190: eqt^#(locker(), tag()) -> c_190() 1009.56/291.67 , 191: eqt^#(locker(), true()) -> c_191() 1009.56/291.67 , 192: eqt^#(mcrlrecord(), nil()) -> c_192() 1009.56/291.67 , 193: eqt^#(mcrlrecord(), a()) -> c_193() 1009.56/291.67 , 194: eqt^#(mcrlrecord(), excl()) -> c_194() 1009.56/291.67 , 195: eqt^#(mcrlrecord(), false()) -> c_195() 1009.56/291.67 , 196: eqt^#(mcrlrecord(), lock()) -> c_196() 1009.56/291.67 , 197: eqt^#(mcrlrecord(), locker()) -> c_197() 1009.56/291.67 , 198: eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.56/291.67 , 199: eqt^#(mcrlrecord(), ok()) -> c_199() 1009.56/291.67 , 200: eqt^#(mcrlrecord(), pending()) -> c_200() 1009.56/291.67 , 201: eqt^#(mcrlrecord(), release()) -> c_201() 1009.56/291.67 , 202: eqt^#(mcrlrecord(), request()) -> c_202() 1009.56/291.67 , 203: eqt^#(mcrlrecord(), resource()) -> c_203() 1009.56/291.67 , 204: eqt^#(ok(), undefined()) -> c_204() 1009.56/291.67 , 205: eqt^#(ok(), pid(N2)) -> c_205() 1009.56/291.67 , 206: eqt^#(ok(), int(N2)) -> c_206() 1009.56/291.67 , 207: eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.56/291.67 , 208: eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.56/291.67 , 209: eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.56/291.67 , 210: eqt^#(ok(), resource()) -> c_210() 1009.56/291.67 , 211: eqt^#(ok(), tag()) -> c_211() 1009.56/291.67 , 212: eqt^#(ok(), true()) -> c_212() 1009.56/291.67 , 213: eqt^#(pending(), nil()) -> c_213() 1009.56/291.67 , 214: eqt^#(pending(), undefined()) -> c_214() 1009.56/291.67 , 215: eqt^#(pending(), pid(N2)) -> c_215() 1009.56/291.67 , 216: eqt^#(pending(), int(N2)) -> c_216() 1009.56/291.67 , 217: eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.56/291.67 , 218: eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.56/291.67 , 219: eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.56/291.67 , 220: eqt^#(pending(), a()) -> c_220() 1009.56/291.67 , 221: eqt^#(pending(), excl()) -> c_221() 1009.56/291.67 , 222: eqt^#(pending(), false()) -> c_222() 1009.56/291.67 , 223: eqt^#(pending(), lock()) -> c_223() 1009.56/291.67 , 224: eqt^#(pending(), locker()) -> c_224() 1009.56/291.67 , 225: eqt^#(pending(), mcrlrecord()) -> c_225() 1009.56/291.67 , 226: eqt^#(pending(), ok()) -> c_226() 1009.56/291.67 , 227: eqt^#(pending(), pending()) -> c_227() 1009.56/291.67 , 228: eqt^#(pending(), release()) -> c_228() 1009.56/291.67 , 229: eqt^#(pending(), request()) -> c_229() 1009.56/291.67 , 230: eqt^#(pending(), resource()) -> c_230() 1009.56/291.67 , 231: eqt^#(pending(), tag()) -> c_231() 1009.56/291.67 , 232: eqt^#(pending(), true()) -> c_232() 1009.56/291.67 , 233: eqt^#(release(), nil()) -> c_233() 1009.56/291.67 , 234: eqt^#(release(), a()) -> c_234() 1009.56/291.67 , 235: eqt^#(release(), excl()) -> c_235() 1009.56/291.67 , 236: eqt^#(release(), false()) -> c_236() 1009.56/291.67 , 237: eqt^#(release(), lock()) -> c_237() 1009.56/291.67 , 238: eqt^#(release(), locker()) -> c_238() 1009.56/291.67 , 239: eqt^#(release(), mcrlrecord()) -> c_239() 1009.56/291.67 , 240: eqt^#(release(), ok()) -> c_240() 1009.56/291.67 , 241: eqt^#(request(), undefined()) -> c_241() 1009.56/291.67 , 242: eqt^#(request(), pid(N2)) -> c_242() 1009.56/291.67 , 243: eqt^#(request(), int(N2)) -> c_243() 1009.56/291.67 , 244: eqt^#(request(), cons(H2, T2)) -> c_244() 1009.56/291.67 , 245: eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.56/291.67 , 246: eqt^#(request(), tuplenil(H2)) -> c_246() 1009.56/291.67 , 247: eqt^#(request(), mcrlrecord()) -> c_247() 1009.56/291.67 , 248: eqt^#(request(), ok()) -> c_248() 1009.56/291.67 , 249: eqt^#(request(), pending()) -> c_249() 1009.56/291.67 , 250: eqt^#(request(), release()) -> c_250() 1009.56/291.67 , 251: eqt^#(request(), request()) -> c_251() 1009.56/291.67 , 252: eqt^#(request(), resource()) -> c_252() 1009.56/291.67 , 253: eqt^#(request(), tag()) -> c_253() 1009.56/291.67 , 254: eqt^#(request(), true()) -> c_254() 1009.56/291.67 , 255: eqt^#(resource(), nil()) -> c_255() 1009.56/291.67 , 256: eqt^#(resource(), undefined()) -> c_256() 1009.56/291.67 , 257: eqt^#(resource(), pid(N2)) -> c_257() 1009.56/291.67 , 258: eqt^#(resource(), int(N2)) -> c_258() 1009.56/291.67 , 259: eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.56/291.67 , 260: eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.56/291.67 , 261: eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.56/291.67 , 262: eqt^#(resource(), a()) -> c_262() 1009.56/291.67 , 263: eqt^#(resource(), excl()) -> c_263() 1009.56/291.67 , 264: eqt^#(resource(), false()) -> c_264() 1009.56/291.67 , 265: eqt^#(resource(), lock()) -> c_265() 1009.56/291.67 , 266: eqt^#(resource(), locker()) -> c_266() 1009.56/291.67 , 267: eqt^#(resource(), mcrlrecord()) -> c_267() 1009.56/291.67 , 268: eqt^#(resource(), ok()) -> c_268() 1009.56/291.67 , 269: eqt^#(resource(), pending()) -> c_269() 1009.56/291.67 , 270: eqt^#(resource(), release()) -> c_270() 1009.56/291.67 , 271: eqt^#(resource(), request()) -> c_271() 1009.56/291.67 , 272: eqt^#(resource(), resource()) -> c_272() 1009.56/291.67 , 273: eqt^#(resource(), tag()) -> c_273() 1009.56/291.67 , 274: eqt^#(resource(), true()) -> c_274() 1009.56/291.67 , 275: eqt^#(tag(), nil()) -> c_275() 1009.56/291.67 , 276: eqt^#(tag(), undefined()) -> c_276() 1009.56/291.67 , 277: eqt^#(tag(), pid(N2)) -> c_277() 1009.56/291.67 , 278: eqt^#(tag(), int(N2)) -> c_278() 1009.56/291.67 , 279: eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.56/291.67 , 280: eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.56/291.67 , 281: eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.56/291.67 , 282: eqt^#(tag(), a()) -> c_282() 1009.56/291.67 , 283: eqt^#(tag(), excl()) -> c_283() 1009.56/291.67 , 284: eqt^#(tag(), false()) -> c_284() 1009.56/291.67 , 285: eqt^#(tag(), lock()) -> c_285() 1009.56/291.67 , 286: eqt^#(tag(), locker()) -> c_286() 1009.56/291.67 , 287: eqt^#(tag(), mcrlrecord()) -> c_287() 1009.56/291.67 , 288: eqt^#(tag(), ok()) -> c_288() 1009.56/291.67 , 289: eqt^#(tag(), pending()) -> c_289() 1009.56/291.67 , 290: eqt^#(tag(), release()) -> c_290() 1009.56/291.67 , 291: eqt^#(tag(), request()) -> c_291() 1009.56/291.67 , 292: eqt^#(tag(), resource()) -> c_292() 1009.56/291.67 , 293: eqt^#(tag(), tag()) -> c_293() 1009.56/291.67 , 294: eqt^#(tag(), true()) -> c_294() 1009.56/291.67 , 295: eqt^#(true(), nil()) -> c_295() 1009.56/291.67 , 296: eqt^#(true(), undefined()) -> c_296() 1009.56/291.67 , 297: eqt^#(true(), pid(N2)) -> c_297() 1009.56/291.67 , 298: eqt^#(true(), int(N2)) -> c_298() 1009.56/291.67 , 299: eqt^#(true(), cons(H2, T2)) -> c_299() 1009.56/291.67 , 300: eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.56/291.67 , 301: eqt^#(true(), tuplenil(H2)) -> c_301() 1009.56/291.67 , 302: eqt^#(true(), a()) -> c_302() 1009.56/291.67 , 303: eqt^#(true(), excl()) -> c_303() 1009.56/291.67 , 304: eqt^#(true(), false()) -> c_304() 1009.56/291.67 , 305: eqt^#(true(), lock()) -> c_305() 1009.56/291.67 , 306: eqt^#(true(), locker()) -> c_306() 1009.56/291.67 , 307: eqt^#(true(), mcrlrecord()) -> c_307() 1009.56/291.67 , 308: eqt^#(true(), ok()) -> c_308() 1009.56/291.67 , 309: eqt^#(true(), pending()) -> c_309() 1009.56/291.67 , 310: eqt^#(true(), release()) -> c_310() 1009.56/291.67 , 311: eqt^#(true(), request()) -> c_311() 1009.56/291.67 , 312: eqt^#(true(), resource()) -> c_312() 1009.56/291.67 , 313: eqt^#(true(), tag()) -> c_313() 1009.56/291.67 , 314: eqt^#(true(), true()) -> c_314() 1009.56/291.67 , 315: element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.56/291.67 c_315(element^#(int(s(N1)), T2)) 1009.56/291.67 , 316: element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.56/291.67 , 317: element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.56/291.67 , 318: record_new^#(lock()) -> c_318() 1009.56/291.67 , 319: record_extract^#(tuple(mcrlrecord(), 1009.56/291.67 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.67 lock(), 1009.56/291.67 resource()) 1009.56/291.67 -> c_319() 1009.56/291.67 , 320: record_update^#(tuple(mcrlrecord(), 1009.56/291.67 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.67 lock(), 1009.56/291.67 pending(), 1009.56/291.67 NewF) 1009.56/291.67 -> c_320() 1009.56/291.67 , 321: record_updates^#(Record, Name, nil()) -> c_321() 1009.56/291.67 , 322: record_updates^#(Record, 1009.56/291.67 Name, 1009.56/291.67 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.67 -> 1009.56/291.67 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.56/291.67 Name, 1009.56/291.67 Fields), 1009.56/291.67 record_update^#(Record, Name, Field, NewF)) 1009.56/291.67 , 323: locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.56/291.67 , 324: locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.56/291.67 c_324(locker2_promote_pending^#(Lock, Pending), 1009.56/291.67 locker2_map_promote_pending^#(Locks, Pending)) 1009.56/291.67 , 325: locker2_promote_pending^#(Lock, Client) -> 1009.56/291.67 c_325(case0^#(Client, 1009.56/291.67 Lock, 1009.56/291.67 record_extract(Lock, lock(), pending())), 1009.56/291.67 record_extract^#(Lock, lock(), pending())) 1009.56/291.67 , 326: case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.56/291.67 , 327: case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.67 c_330(record_updates^#(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.67 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.56/291.67 , 328: locker2_map_claim_lock^#(nil(), Resources, Client) -> 1009.56/291.67 c_326() 1009.56/291.67 , 329: locker2_map_claim_lock^#(cons(Lock, Locks), 1009.56/291.67 Resources, 1009.56/291.67 Client) 1009.56/291.67 -> c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.56/291.67 , 330: locker2_map_add_pending^#(nil(), Resources, Client) -> 1009.56/291.67 c_328() 1009.56/291.67 , 331: locker2_remove_pending^#(Lock, Client) -> 1009.56/291.67 c_331(record_updates^#(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(pending(), 1009.56/291.67 tuplenil(subtract(record_extract(Lock, 1009.56/291.67 lock(), 1009.56/291.67 pending()), 1009.56/291.67 cons(Client, nil())))), 1009.56/291.67 nil())), 1009.56/291.67 subtract^#(record_extract(Lock, lock(), pending()), 1009.56/291.67 cons(Client, nil())), 1009.56/291.67 record_extract^#(Lock, lock(), pending())) 1009.56/291.67 , 332: subtract^#(List, nil()) -> c_332() 1009.56/291.67 , 333: subtract^#(List, cons(Head, Tail)) -> 1009.56/291.67 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.56/291.67 , 334: delete^#(E, nil()) -> c_355() 1009.56/291.67 , 335: delete^#(E, cons(Head, Tail)) -> 1009.56/291.67 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.56/291.67 , 336: locker2_add_pending^#(Lock, Resources, Client) -> 1009.56/291.67 c_334(case1^#(Client, 1009.56/291.67 Resources, 1009.56/291.67 Lock, 1009.56/291.67 member(record_extract(Lock, lock(), resource()), Resources)), 1009.56/291.67 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.56/291.67 record_extract^#(Lock, lock(), resource())) 1009.56/291.67 , 337: case1^#(Client, Resources, Lock, false()) -> c_335() 1009.56/291.67 , 338: case1^#(Client, Resources, Lock, true()) -> 1009.56/291.67 c_336(record_updates^#(Lock, 1009.56/291.67 lock(), 1009.56/291.67 cons(tuple(pending(), 1009.56/291.67 tuplenil(append(record_extract(Lock, 1009.56/291.67 lock(), 1009.56/291.67 pending()), 1009.56/291.67 cons(Client, nil())))), 1009.56/291.67 nil())), 1009.56/291.67 append^#(record_extract(Lock, lock(), pending()), 1009.56/291.67 cons(Client, nil())), 1009.56/291.67 record_extract^#(Lock, lock(), pending())) 1009.56/291.67 , 339: member^#(E, nil()) -> c_337() 1009.56/291.67 , 340: member^#(E, cons(Head, Tail)) -> 1009.56/291.67 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.56/291.67 , 341: append^#(cons(Head, Tail), List) -> 1009.56/291.67 c_339(append^#(Tail, List)) 1009.56/291.67 , 342: case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.56/291.67 , 343: case9^#(Tail, Head, E, true()) -> c_361() 1009.56/291.67 , 344: locker2_release_lock^#(Lock, Client) -> 1009.56/291.67 c_340(case2^#(Client, 1009.56/291.67 Lock, 1009.56/291.67 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.56/291.68 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.56/291.68 record_extract^#(Lock, lock(), excl())) 1009.56/291.68 , 345: case2^#(Client, Lock, true()) -> 1009.56/291.68 c_341(record_updates^#(Lock, 1009.56/291.68 lock(), 1009.56/291.68 cons(tuple(excllock(), excl()), nil()))) 1009.56/291.68 , 346: gen_modtageq^#(Client1, Client2) -> c_342() 1009.56/291.68 , 347: case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.56/291.68 , 348: locker2_obtainables^#(nil(), Client) -> c_344() 1009.56/291.68 , 349: locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.56/291.68 c_345(case5^#(Client, 1009.56/291.68 Locks, 1009.56/291.68 Lock, 1009.56/291.68 member(Client, record_extract(Lock, lock(), pending()))), 1009.56/291.68 member^#(Client, record_extract(Lock, lock(), pending())), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , 350: case5^#(Client, Locks, Lock, false()) -> 1009.56/291.68 c_346(locker2_obtainables^#(Locks, Client)) 1009.56/291.68 , 351: case5^#(Client, Locks, Lock, true()) -> 1009.56/291.68 c_347(locker2_obtainables^#(Locks, Client)) 1009.56/291.68 , 352: locker2_check_available^#(Resource, nil()) -> c_348() 1009.56/291.68 , 353: locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.56/291.68 c_349(case6^#(Locks, 1009.56/291.68 Lock, 1009.56/291.68 Resource, 1009.56/291.68 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.56/291.68 record_extract^#(Lock, lock(), resource())) 1009.56/291.68 , 354: case6^#(Locks, Lock, Resource, false()) -> 1009.56/291.68 c_350(locker2_check_available^#(Resource, Locks)) 1009.56/291.68 , 355: case6^#(Locks, Lock, Resource, true()) -> 1009.56/291.68 c_351(record_extract^#(Lock, lock(), excl()), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , 356: locker2_check_availables^#(nil(), Locks) -> c_352() 1009.56/291.68 , 357: locker2_check_availables^#(cons(Resource, Resources), Locks) 1009.56/291.68 -> 1009.56/291.68 c_353(locker2_check_available^#(Resource, Locks), 1009.56/291.68 locker2_check_availables^#(Resources, Locks)) 1009.56/291.68 , 358: locker2_adduniq^#(nil(), List) -> c_354() 1009.56/291.68 , 359: case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.56/291.68 , 360: case8^#(Tail, Head, E, true()) -> c_358() 1009.56/291.68 , 361: gen_tag^#(Pid) -> c_359() 1009.56/291.68 , 362: eqs^#(empty(), empty()) -> c_362() 1009.56/291.68 , 363: eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.56/291.68 , 364: eqs^#(stack(E1, S1), empty()) -> c_364() 1009.56/291.68 , 365: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.68 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.56/291.68 eqt^#(E1, E2), 1009.56/291.68 eqs^#(S1, S2)) 1009.56/291.68 , 366: pushs^#(E1, S1) -> c_366() 1009.56/291.68 , 367: pops^#(stack(E1, S1)) -> c_367() 1009.56/291.68 , 368: tops^#(stack(E1, S1)) -> c_368() 1009.56/291.68 , 369: istops^#(E1, empty()) -> c_369() 1009.56/291.68 , 370: istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.56/291.68 , 371: eqc^#(nocalls(), nocalls()) -> c_371() 1009.56/291.68 , 372: eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.56/291.68 , 373: eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.56/291.68 , 374: eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.68 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.56/291.68 eqt^#(E1, E2), 1009.56/291.68 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.56/291.68 eqs^#(S1, S2), 1009.56/291.68 eqc^#(CS1, CS2)) 1009.56/291.68 , 375: push^#(E1, E2, nocalls()) -> c_375() 1009.56/291.68 , 376: push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.68 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.56/291.68 , 377: push1^#(E1, E2, E3, S1, CS1, T()) -> 1009.56/291.68 c_377(pushs^#(E2, S1)) } 1009.56/291.68 1009.56/291.68 We are left with following problem, upon which TcT provides the 1009.56/291.68 certificate YES(O(1),O(n^1)). 1009.56/291.68 1009.56/291.68 Strict DPs: 1009.56/291.68 { eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.56/291.68 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.56/291.68 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.68 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.68 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.68 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.56/291.68 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.56/291.68 c_315(element^#(int(s(N1)), T2)) 1009.56/291.68 , record_updates^#(Record, 1009.56/291.68 Name, 1009.56/291.68 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.68 -> 1009.56/291.68 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.56/291.68 Name, 1009.56/291.68 Fields), 1009.56/291.68 record_update^#(Record, Name, Field, NewF)) 1009.56/291.68 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.56/291.68 c_324(locker2_promote_pending^#(Lock, Pending), 1009.56/291.68 locker2_map_promote_pending^#(Locks, Pending)) 1009.56/291.68 , locker2_promote_pending^#(Lock, Client) -> 1009.56/291.68 c_325(case0^#(Client, 1009.56/291.68 Lock, 1009.56/291.68 record_extract(Lock, lock(), pending())), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.68 c_330(record_updates^#(Lock, 1009.56/291.68 lock(), 1009.56/291.68 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.68 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.56/291.68 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.56/291.68 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.56/291.68 , locker2_remove_pending^#(Lock, Client) -> 1009.56/291.68 c_331(record_updates^#(Lock, 1009.56/291.68 lock(), 1009.56/291.68 cons(tuple(pending(), 1009.56/291.68 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.68 cons(Client, nil())))), 1009.56/291.68 nil())), 1009.56/291.68 subtract^#(record_extract(Lock, lock(), pending()), 1009.56/291.68 cons(Client, nil())), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , subtract^#(List, cons(Head, Tail)) -> 1009.56/291.68 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.56/291.68 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.56/291.68 c_334(case1^#(Client, 1009.56/291.68 Resources, 1009.56/291.68 Lock, 1009.56/291.68 member(record_extract(Lock, lock(), resource()), Resources)), 1009.56/291.68 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.56/291.68 record_extract^#(Lock, lock(), resource())) 1009.56/291.68 , case1^#(Client, Resources, Lock, true()) -> 1009.56/291.68 c_336(record_updates^#(Lock, 1009.56/291.68 lock(), 1009.56/291.68 cons(tuple(pending(), 1009.56/291.68 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.68 cons(Client, nil())))), 1009.56/291.68 nil())), 1009.56/291.68 append^#(record_extract(Lock, lock(), pending()), 1009.56/291.68 cons(Client, nil())), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.56/291.68 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.56/291.68 , locker2_release_lock^#(Lock, Client) -> 1009.56/291.68 c_340(case2^#(Client, 1009.56/291.68 Lock, 1009.56/291.68 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.56/291.68 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.56/291.68 record_extract^#(Lock, lock(), excl())) 1009.56/291.68 , case5^#(Client, Locks, Lock, false()) -> 1009.56/291.68 c_346(locker2_obtainables^#(Locks, Client)) 1009.56/291.68 , case5^#(Client, Locks, Lock, true()) -> 1009.56/291.68 c_347(locker2_obtainables^#(Locks, Client)) 1009.56/291.68 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.56/291.68 c_349(case6^#(Locks, 1009.56/291.68 Lock, 1009.56/291.68 Resource, 1009.56/291.68 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.56/291.68 record_extract^#(Lock, lock(), resource())) 1009.56/291.68 , case6^#(Locks, Lock, Resource, false()) -> 1009.56/291.68 c_350(locker2_check_available^#(Resource, Locks)) 1009.56/291.68 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.56/291.68 c_353(locker2_check_available^#(Resource, Locks), 1009.56/291.68 locker2_check_availables^#(Resources, Locks)) 1009.56/291.68 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.56/291.68 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.68 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.56/291.68 eqt^#(E1, E2), 1009.56/291.68 eqs^#(S1, S2)) 1009.56/291.68 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.56/291.68 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.68 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.56/291.68 eqt^#(E1, E2), 1009.56/291.68 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.56/291.68 eqs^#(S1, S2), 1009.56/291.68 eqc^#(CS1, CS2)) 1009.56/291.68 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.68 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.56/291.68 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.56/291.68 Weak DPs: 1009.56/291.68 { or^#(T(), T()) -> c_1() 1009.56/291.68 , or^#(T(), F()) -> c_2() 1009.56/291.68 , or^#(F(), T()) -> c_3() 1009.56/291.68 , or^#(F(), F()) -> c_4() 1009.56/291.68 , and^#(B, T()) -> c_5() 1009.56/291.68 , and^#(B, F()) -> c_6() 1009.56/291.68 , and^#(T(), B) -> c_7() 1009.56/291.68 , and^#(F(), B) -> c_8() 1009.56/291.68 , imp^#(T(), B) -> c_9() 1009.56/291.68 , imp^#(F(), B) -> c_10() 1009.56/291.68 , not^#(T()) -> c_11() 1009.56/291.68 , not^#(F()) -> c_12() 1009.56/291.68 , if^#(T(), B1, B2) -> c_13() 1009.56/291.68 , if^#(F(), B1, B2) -> c_14() 1009.56/291.68 , eq^#(T(), T()) -> c_15() 1009.56/291.68 , eq^#(T(), F()) -> c_16() 1009.56/291.68 , eq^#(F(), T()) -> c_17() 1009.56/291.68 , eq^#(F(), F()) -> c_18() 1009.56/291.68 , eqt^#(nil(), undefined()) -> c_19() 1009.56/291.68 , eqt^#(nil(), pid(N2)) -> c_20() 1009.56/291.68 , eqt^#(nil(), int(N2)) -> c_21() 1009.56/291.68 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.56/291.68 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.56/291.68 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.56/291.68 , eqt^#(undefined(), nil()) -> c_25() 1009.56/291.68 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.56/291.68 , eqt^#(undefined(), a()) -> c_27() 1009.56/291.68 , eqt^#(pid(N1), nil()) -> c_28() 1009.56/291.68 , eqt^#(pid(N1), undefined()) -> c_29() 1009.56/291.68 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.56/291.68 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.56/291.68 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.56/291.68 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.56/291.68 , eqt^#(pid(N1), a()) -> c_35() 1009.56/291.68 , eqt^#(pid(N1), excl()) -> c_36() 1009.56/291.68 , eqt^#(pid(N1), false()) -> c_37() 1009.56/291.68 , eqt^#(pid(N1), lock()) -> c_38() 1009.56/291.68 , eqt^#(pid(N1), locker()) -> c_39() 1009.56/291.68 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.56/291.68 , eqt^#(pid(N1), ok()) -> c_41() 1009.56/291.68 , eqt^#(pid(N1), pending()) -> c_42() 1009.56/291.68 , eqt^#(pid(N1), release()) -> c_43() 1009.56/291.68 , eqt^#(pid(N1), request()) -> c_44() 1009.56/291.68 , eqt^#(pid(N1), resource()) -> c_45() 1009.56/291.68 , eqt^#(pid(N1), tag()) -> c_46() 1009.56/291.68 , eqt^#(pid(N1), true()) -> c_47() 1009.56/291.68 , eqt^#(int(N1), nil()) -> c_48() 1009.56/291.68 , eqt^#(int(N1), undefined()) -> c_49() 1009.56/291.68 , eqt^#(int(N1), a()) -> c_50() 1009.56/291.68 , eqt^#(int(N1), excl()) -> c_51() 1009.56/291.68 , eqt^#(int(N1), false()) -> c_52() 1009.56/291.68 , eqt^#(int(N1), lock()) -> c_53() 1009.56/291.68 , eqt^#(int(N1), locker()) -> c_54() 1009.56/291.68 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.56/291.68 , eqt^#(int(N1), ok()) -> c_56() 1009.56/291.68 , eqt^#(int(N1), pending()) -> c_57() 1009.56/291.68 , eqt^#(int(N1), release()) -> c_58() 1009.56/291.68 , eqt^#(int(N1), request()) -> c_59() 1009.56/291.68 , eqt^#(int(N1), resource()) -> c_60() 1009.56/291.68 , eqt^#(int(N1), tag()) -> c_61() 1009.56/291.68 , eqt^#(int(N1), true()) -> c_62() 1009.56/291.68 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.56/291.68 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.56/291.68 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.56/291.68 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.56/291.68 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.56/291.68 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.56/291.68 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.56/291.68 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.56/291.68 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.56/291.68 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.56/291.68 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.56/291.68 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.56/291.68 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.56/291.68 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.56/291.68 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.56/291.68 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.56/291.68 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.56/291.68 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.56/291.68 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.56/291.68 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.56/291.68 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.56/291.68 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.56/291.68 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.56/291.68 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.56/291.68 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.56/291.68 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.56/291.68 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.56/291.68 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.56/291.68 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.56/291.68 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.56/291.68 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.56/291.68 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.56/291.68 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.56/291.68 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.56/291.68 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.56/291.68 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.56/291.68 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.56/291.68 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.56/291.68 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.56/291.68 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.56/291.68 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.56/291.68 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.56/291.68 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.56/291.68 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.56/291.68 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.56/291.68 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.56/291.68 , eqt^#(a(), nil()) -> c_112() 1009.56/291.68 , eqt^#(a(), undefined()) -> c_113() 1009.56/291.68 , eqt^#(a(), pid(N2)) -> c_114() 1009.56/291.68 , eqt^#(a(), int(N2)) -> c_115() 1009.56/291.68 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.56/291.68 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.56/291.68 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.56/291.68 , eqt^#(a(), a()) -> c_119() 1009.56/291.68 , eqt^#(a(), excl()) -> c_120() 1009.56/291.68 , eqt^#(a(), false()) -> c_121() 1009.56/291.68 , eqt^#(a(), lock()) -> c_122() 1009.56/291.68 , eqt^#(a(), locker()) -> c_123() 1009.56/291.68 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.56/291.68 , eqt^#(a(), ok()) -> c_125() 1009.56/291.68 , eqt^#(a(), pending()) -> c_126() 1009.56/291.68 , eqt^#(a(), release()) -> c_127() 1009.56/291.68 , eqt^#(a(), request()) -> c_128() 1009.56/291.68 , eqt^#(a(), resource()) -> c_129() 1009.56/291.68 , eqt^#(a(), tag()) -> c_130() 1009.56/291.68 , eqt^#(a(), true()) -> c_131() 1009.56/291.68 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.56/291.68 , eqt^#(excl(), nil()) -> c_133() 1009.56/291.68 , eqt^#(excl(), undefined()) -> c_134() 1009.56/291.68 , eqt^#(excl(), pid(N2)) -> c_135() 1009.56/291.68 , eqt^#(excl(), a()) -> c_136() 1009.56/291.68 , eqt^#(excl(), excl()) -> c_137() 1009.56/291.68 , eqt^#(excl(), false()) -> c_138() 1009.56/291.68 , eqt^#(excl(), lock()) -> c_139() 1009.56/291.68 , eqt^#(excl(), locker()) -> c_140() 1009.56/291.68 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.56/291.68 , eqt^#(excl(), ok()) -> c_142() 1009.56/291.68 , eqt^#(excl(), pending()) -> c_143() 1009.56/291.68 , eqt^#(excl(), release()) -> c_144() 1009.56/291.68 , eqt^#(excl(), request()) -> c_145() 1009.56/291.68 , eqt^#(excl(), resource()) -> c_146() 1009.56/291.68 , eqt^#(excl(), tag()) -> c_147() 1009.56/291.68 , eqt^#(excl(), true()) -> c_148() 1009.56/291.68 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.56/291.68 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.56/291.68 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.56/291.68 , eqt^#(lock(), nil()) -> c_152() 1009.56/291.68 , eqt^#(lock(), undefined()) -> c_153() 1009.56/291.68 , eqt^#(lock(), pid(N2)) -> c_154() 1009.56/291.68 , eqt^#(lock(), int(N2)) -> c_155() 1009.56/291.68 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.56/291.68 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.56/291.68 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.56/291.68 , eqt^#(lock(), a()) -> c_159() 1009.56/291.68 , eqt^#(lock(), excl()) -> c_160() 1009.56/291.68 , eqt^#(lock(), false()) -> c_161() 1009.56/291.68 , eqt^#(lock(), lock()) -> c_162() 1009.56/291.68 , eqt^#(lock(), locker()) -> c_163() 1009.56/291.68 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.56/291.68 , eqt^#(lock(), ok()) -> c_165() 1009.56/291.68 , eqt^#(lock(), pending()) -> c_166() 1009.56/291.68 , eqt^#(lock(), release()) -> c_167() 1009.56/291.68 , eqt^#(lock(), request()) -> c_168() 1009.56/291.68 , eqt^#(lock(), resource()) -> c_169() 1009.56/291.68 , eqt^#(lock(), tag()) -> c_170() 1009.56/291.68 , eqt^#(lock(), true()) -> c_171() 1009.56/291.68 , eqt^#(locker(), nil()) -> c_172() 1009.56/291.68 , eqt^#(locker(), undefined()) -> c_173() 1009.56/291.68 , eqt^#(locker(), pid(N2)) -> c_174() 1009.56/291.68 , eqt^#(locker(), int(N2)) -> c_175() 1009.56/291.68 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.56/291.68 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.56/291.68 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.56/291.68 , eqt^#(locker(), a()) -> c_179() 1009.56/291.68 , eqt^#(locker(), excl()) -> c_180() 1009.56/291.68 , eqt^#(locker(), false()) -> c_181() 1009.56/291.68 , eqt^#(locker(), lock()) -> c_182() 1009.56/291.68 , eqt^#(locker(), locker()) -> c_183() 1009.56/291.68 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.56/291.68 , eqt^#(locker(), ok()) -> c_185() 1009.56/291.68 , eqt^#(locker(), pending()) -> c_186() 1009.56/291.68 , eqt^#(locker(), release()) -> c_187() 1009.56/291.68 , eqt^#(locker(), request()) -> c_188() 1009.56/291.68 , eqt^#(locker(), resource()) -> c_189() 1009.56/291.68 , eqt^#(locker(), tag()) -> c_190() 1009.56/291.68 , eqt^#(locker(), true()) -> c_191() 1009.56/291.68 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.56/291.68 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.56/291.68 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.56/291.68 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.56/291.68 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.56/291.68 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.56/291.68 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.56/291.68 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.56/291.68 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.56/291.68 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.56/291.68 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.56/291.68 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.56/291.68 , eqt^#(ok(), undefined()) -> c_204() 1009.56/291.68 , eqt^#(ok(), pid(N2)) -> c_205() 1009.56/291.68 , eqt^#(ok(), int(N2)) -> c_206() 1009.56/291.68 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.56/291.68 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.56/291.68 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.56/291.68 , eqt^#(ok(), resource()) -> c_210() 1009.56/291.68 , eqt^#(ok(), tag()) -> c_211() 1009.56/291.68 , eqt^#(ok(), true()) -> c_212() 1009.56/291.68 , eqt^#(pending(), nil()) -> c_213() 1009.56/291.68 , eqt^#(pending(), undefined()) -> c_214() 1009.56/291.68 , eqt^#(pending(), pid(N2)) -> c_215() 1009.56/291.68 , eqt^#(pending(), int(N2)) -> c_216() 1009.56/291.68 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.56/291.68 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.56/291.68 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.56/291.68 , eqt^#(pending(), a()) -> c_220() 1009.56/291.68 , eqt^#(pending(), excl()) -> c_221() 1009.56/291.68 , eqt^#(pending(), false()) -> c_222() 1009.56/291.68 , eqt^#(pending(), lock()) -> c_223() 1009.56/291.68 , eqt^#(pending(), locker()) -> c_224() 1009.56/291.68 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.56/291.68 , eqt^#(pending(), ok()) -> c_226() 1009.56/291.68 , eqt^#(pending(), pending()) -> c_227() 1009.56/291.68 , eqt^#(pending(), release()) -> c_228() 1009.56/291.68 , eqt^#(pending(), request()) -> c_229() 1009.56/291.68 , eqt^#(pending(), resource()) -> c_230() 1009.56/291.68 , eqt^#(pending(), tag()) -> c_231() 1009.56/291.68 , eqt^#(pending(), true()) -> c_232() 1009.56/291.68 , eqt^#(release(), nil()) -> c_233() 1009.56/291.68 , eqt^#(release(), a()) -> c_234() 1009.56/291.68 , eqt^#(release(), excl()) -> c_235() 1009.56/291.68 , eqt^#(release(), false()) -> c_236() 1009.56/291.68 , eqt^#(release(), lock()) -> c_237() 1009.56/291.68 , eqt^#(release(), locker()) -> c_238() 1009.56/291.68 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.56/291.68 , eqt^#(release(), ok()) -> c_240() 1009.56/291.68 , eqt^#(request(), undefined()) -> c_241() 1009.56/291.68 , eqt^#(request(), pid(N2)) -> c_242() 1009.56/291.68 , eqt^#(request(), int(N2)) -> c_243() 1009.56/291.68 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.56/291.68 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.56/291.68 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.56/291.68 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.56/291.68 , eqt^#(request(), ok()) -> c_248() 1009.56/291.68 , eqt^#(request(), pending()) -> c_249() 1009.56/291.68 , eqt^#(request(), release()) -> c_250() 1009.56/291.68 , eqt^#(request(), request()) -> c_251() 1009.56/291.68 , eqt^#(request(), resource()) -> c_252() 1009.56/291.68 , eqt^#(request(), tag()) -> c_253() 1009.56/291.68 , eqt^#(request(), true()) -> c_254() 1009.56/291.68 , eqt^#(resource(), nil()) -> c_255() 1009.56/291.68 , eqt^#(resource(), undefined()) -> c_256() 1009.56/291.68 , eqt^#(resource(), pid(N2)) -> c_257() 1009.56/291.68 , eqt^#(resource(), int(N2)) -> c_258() 1009.56/291.68 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.56/291.68 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.56/291.68 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.56/291.68 , eqt^#(resource(), a()) -> c_262() 1009.56/291.68 , eqt^#(resource(), excl()) -> c_263() 1009.56/291.68 , eqt^#(resource(), false()) -> c_264() 1009.56/291.68 , eqt^#(resource(), lock()) -> c_265() 1009.56/291.68 , eqt^#(resource(), locker()) -> c_266() 1009.56/291.68 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.56/291.68 , eqt^#(resource(), ok()) -> c_268() 1009.56/291.68 , eqt^#(resource(), pending()) -> c_269() 1009.56/291.68 , eqt^#(resource(), release()) -> c_270() 1009.56/291.68 , eqt^#(resource(), request()) -> c_271() 1009.56/291.68 , eqt^#(resource(), resource()) -> c_272() 1009.56/291.68 , eqt^#(resource(), tag()) -> c_273() 1009.56/291.68 , eqt^#(resource(), true()) -> c_274() 1009.56/291.68 , eqt^#(tag(), nil()) -> c_275() 1009.56/291.68 , eqt^#(tag(), undefined()) -> c_276() 1009.56/291.68 , eqt^#(tag(), pid(N2)) -> c_277() 1009.56/291.68 , eqt^#(tag(), int(N2)) -> c_278() 1009.56/291.68 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.56/291.68 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.56/291.68 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.56/291.68 , eqt^#(tag(), a()) -> c_282() 1009.56/291.68 , eqt^#(tag(), excl()) -> c_283() 1009.56/291.68 , eqt^#(tag(), false()) -> c_284() 1009.56/291.68 , eqt^#(tag(), lock()) -> c_285() 1009.56/291.68 , eqt^#(tag(), locker()) -> c_286() 1009.56/291.68 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.56/291.68 , eqt^#(tag(), ok()) -> c_288() 1009.56/291.68 , eqt^#(tag(), pending()) -> c_289() 1009.56/291.68 , eqt^#(tag(), release()) -> c_290() 1009.56/291.68 , eqt^#(tag(), request()) -> c_291() 1009.56/291.68 , eqt^#(tag(), resource()) -> c_292() 1009.56/291.68 , eqt^#(tag(), tag()) -> c_293() 1009.56/291.68 , eqt^#(tag(), true()) -> c_294() 1009.56/291.68 , eqt^#(true(), nil()) -> c_295() 1009.56/291.68 , eqt^#(true(), undefined()) -> c_296() 1009.56/291.68 , eqt^#(true(), pid(N2)) -> c_297() 1009.56/291.68 , eqt^#(true(), int(N2)) -> c_298() 1009.56/291.68 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.56/291.68 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.56/291.68 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.56/291.68 , eqt^#(true(), a()) -> c_302() 1009.56/291.68 , eqt^#(true(), excl()) -> c_303() 1009.56/291.68 , eqt^#(true(), false()) -> c_304() 1009.56/291.68 , eqt^#(true(), lock()) -> c_305() 1009.56/291.68 , eqt^#(true(), locker()) -> c_306() 1009.56/291.68 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.56/291.68 , eqt^#(true(), ok()) -> c_308() 1009.56/291.68 , eqt^#(true(), pending()) -> c_309() 1009.56/291.68 , eqt^#(true(), release()) -> c_310() 1009.56/291.68 , eqt^#(true(), request()) -> c_311() 1009.56/291.68 , eqt^#(true(), resource()) -> c_312() 1009.56/291.68 , eqt^#(true(), tag()) -> c_313() 1009.56/291.68 , eqt^#(true(), true()) -> c_314() 1009.56/291.68 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.56/291.68 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.56/291.68 , record_new^#(lock()) -> c_318() 1009.56/291.68 , record_extract^#(tuple(mcrlrecord(), 1009.56/291.68 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.68 lock(), 1009.56/291.68 resource()) 1009.56/291.68 -> c_319() 1009.56/291.68 , record_update^#(tuple(mcrlrecord(), 1009.56/291.68 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.68 lock(), 1009.56/291.68 pending(), 1009.56/291.68 NewF) 1009.56/291.68 -> c_320() 1009.56/291.68 , record_updates^#(Record, Name, nil()) -> c_321() 1009.56/291.68 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.56/291.68 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.56/291.68 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.56/291.68 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.56/291.68 , subtract^#(List, nil()) -> c_332() 1009.56/291.68 , delete^#(E, nil()) -> c_355() 1009.56/291.68 , delete^#(E, cons(Head, Tail)) -> 1009.56/291.68 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.56/291.68 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.56/291.68 , member^#(E, nil()) -> c_337() 1009.56/291.68 , member^#(E, cons(Head, Tail)) -> 1009.56/291.68 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.56/291.68 , case9^#(Tail, Head, E, true()) -> c_361() 1009.56/291.68 , case2^#(Client, Lock, true()) -> 1009.56/291.68 c_341(record_updates^#(Lock, 1009.56/291.68 lock(), 1009.56/291.68 cons(tuple(excllock(), excl()), nil()))) 1009.56/291.68 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.56/291.68 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.56/291.68 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.56/291.68 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.56/291.68 c_345(case5^#(Client, 1009.56/291.68 Locks, 1009.56/291.68 Lock, 1009.56/291.68 member(Client, record_extract(Lock, lock(), pending()))), 1009.56/291.68 member^#(Client, record_extract(Lock, lock(), pending())), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.56/291.68 , case6^#(Locks, Lock, Resource, true()) -> 1009.56/291.68 c_351(record_extract^#(Lock, lock(), excl()), 1009.56/291.68 record_extract^#(Lock, lock(), pending())) 1009.56/291.68 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.56/291.68 , locker2_adduniq^#(nil(), List) -> c_354() 1009.56/291.68 , case8^#(Tail, Head, E, true()) -> c_358() 1009.56/291.68 , gen_tag^#(Pid) -> c_359() 1009.56/291.68 , eqs^#(empty(), empty()) -> c_362() 1009.56/291.68 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.56/291.68 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.56/291.68 , pushs^#(E1, S1) -> c_366() 1009.56/291.68 , pops^#(stack(E1, S1)) -> c_367() 1009.56/291.68 , tops^#(stack(E1, S1)) -> c_368() 1009.56/291.68 , istops^#(E1, empty()) -> c_369() 1009.56/291.68 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.56/291.68 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.56/291.68 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.56/291.68 , push^#(E1, E2, nocalls()) -> c_375() } 1009.56/291.68 Weak Trs: 1009.56/291.68 { or(T(), T()) -> T() 1009.56/291.68 , or(T(), F()) -> T() 1009.56/291.68 , or(F(), T()) -> T() 1009.56/291.68 , or(F(), F()) -> F() 1009.56/291.68 , and(B, T()) -> B 1009.56/291.68 , and(B, F()) -> F() 1009.56/291.68 , and(T(), B) -> B 1009.56/291.68 , and(F(), B) -> F() 1009.56/291.68 , imp(T(), B) -> B 1009.56/291.68 , imp(F(), B) -> T() 1009.56/291.68 , not(T()) -> F() 1009.56/291.68 , not(F()) -> T() 1009.56/291.68 , if(T(), B1, B2) -> B1 1009.56/291.68 , if(F(), B1, B2) -> B2 1009.56/291.68 , eq(T(), T()) -> T() 1009.56/291.68 , eq(T(), F()) -> F() 1009.56/291.68 , eq(F(), T()) -> F() 1009.56/291.68 , eq(F(), F()) -> T() 1009.56/291.68 , eqt(nil(), undefined()) -> F() 1009.56/291.68 , eqt(nil(), pid(N2)) -> F() 1009.56/291.68 , eqt(nil(), int(N2)) -> F() 1009.56/291.68 , eqt(nil(), cons(H2, T2)) -> F() 1009.56/291.68 , eqt(nil(), tuple(H2, T2)) -> F() 1009.56/291.68 , eqt(nil(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(undefined(), nil()) -> F() 1009.56/291.69 , eqt(undefined(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(undefined(), a()) -> F() 1009.56/291.69 , eqt(pid(N1), nil()) -> F() 1009.56/291.69 , eqt(pid(N1), undefined()) -> F() 1009.56/291.69 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.56/291.69 , eqt(pid(N1), int(N2)) -> F() 1009.56/291.69 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(pid(N1), a()) -> F() 1009.56/291.69 , eqt(pid(N1), excl()) -> F() 1009.56/291.69 , eqt(pid(N1), false()) -> F() 1009.56/291.69 , eqt(pid(N1), lock()) -> F() 1009.56/291.69 , eqt(pid(N1), locker()) -> F() 1009.56/291.69 , eqt(pid(N1), mcrlrecord()) -> F() 1009.56/291.69 , eqt(pid(N1), ok()) -> F() 1009.56/291.69 , eqt(pid(N1), pending()) -> F() 1009.56/291.69 , eqt(pid(N1), release()) -> F() 1009.56/291.69 , eqt(pid(N1), request()) -> F() 1009.56/291.69 , eqt(pid(N1), resource()) -> F() 1009.56/291.69 , eqt(pid(N1), tag()) -> F() 1009.56/291.69 , eqt(pid(N1), true()) -> F() 1009.56/291.69 , eqt(int(N1), nil()) -> F() 1009.56/291.69 , eqt(int(N1), undefined()) -> F() 1009.56/291.69 , eqt(int(N1), a()) -> F() 1009.56/291.69 , eqt(int(N1), excl()) -> F() 1009.56/291.69 , eqt(int(N1), false()) -> F() 1009.56/291.69 , eqt(int(N1), lock()) -> F() 1009.56/291.69 , eqt(int(N1), locker()) -> F() 1009.56/291.69 , eqt(int(N1), mcrlrecord()) -> F() 1009.56/291.69 , eqt(int(N1), ok()) -> F() 1009.56/291.69 , eqt(int(N1), pending()) -> F() 1009.56/291.69 , eqt(int(N1), release()) -> F() 1009.56/291.69 , eqt(int(N1), request()) -> F() 1009.56/291.69 , eqt(int(N1), resource()) -> F() 1009.56/291.69 , eqt(int(N1), tag()) -> F() 1009.56/291.69 , eqt(int(N1), true()) -> F() 1009.56/291.69 , eqt(cons(H1, T1), undefined()) -> F() 1009.56/291.69 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.56/291.69 , eqt(cons(H1, T1), int(N2)) -> F() 1009.56/291.69 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.69 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(cons(H1, T1), resource()) -> F() 1009.56/291.69 , eqt(cons(H1, T1), tag()) -> F() 1009.56/291.69 , eqt(cons(H1, T1), true()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), nil()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), undefined()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.69 and(eqt(H1, H2), eqt(T1, T2)) 1009.56/291.69 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), a()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), excl()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), false()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), lock()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), locker()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), ok()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), pending()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), release()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), request()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), resource()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), tag()) -> F() 1009.56/291.69 , eqt(tuple(H1, T1), true()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), nil()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), undefined()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.56/291.69 , eqt(tuplenil(H1), int(N2)) -> F() 1009.56/291.69 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.56/291.69 , eqt(tuplenil(H1), a()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), excl()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), false()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), lock()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), locker()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), ok()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), pending()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), release()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), request()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), resource()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), tag()) -> F() 1009.56/291.69 , eqt(tuplenil(H1), true()) -> F() 1009.56/291.69 , eqt(a(), nil()) -> F() 1009.56/291.69 , eqt(a(), undefined()) -> F() 1009.56/291.69 , eqt(a(), pid(N2)) -> F() 1009.56/291.69 , eqt(a(), int(N2)) -> F() 1009.56/291.69 , eqt(a(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(a(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(a(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(a(), a()) -> T() 1009.56/291.69 , eqt(a(), excl()) -> F() 1009.56/291.69 , eqt(a(), false()) -> F() 1009.56/291.69 , eqt(a(), lock()) -> F() 1009.56/291.69 , eqt(a(), locker()) -> F() 1009.56/291.69 , eqt(a(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(a(), ok()) -> F() 1009.56/291.69 , eqt(a(), pending()) -> F() 1009.56/291.69 , eqt(a(), release()) -> F() 1009.56/291.69 , eqt(a(), request()) -> F() 1009.56/291.69 , eqt(a(), resource()) -> F() 1009.56/291.69 , eqt(a(), tag()) -> F() 1009.56/291.69 , eqt(a(), true()) -> F() 1009.56/291.69 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.56/291.69 , eqt(excl(), nil()) -> F() 1009.56/291.69 , eqt(excl(), undefined()) -> F() 1009.56/291.69 , eqt(excl(), pid(N2)) -> F() 1009.56/291.69 , eqt(excl(), a()) -> F() 1009.56/291.69 , eqt(excl(), excl()) -> T() 1009.56/291.69 , eqt(excl(), false()) -> F() 1009.56/291.69 , eqt(excl(), lock()) -> F() 1009.56/291.69 , eqt(excl(), locker()) -> F() 1009.56/291.69 , eqt(excl(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(excl(), ok()) -> F() 1009.56/291.69 , eqt(excl(), pending()) -> F() 1009.56/291.69 , eqt(excl(), release()) -> F() 1009.56/291.69 , eqt(excl(), request()) -> F() 1009.56/291.69 , eqt(excl(), resource()) -> F() 1009.56/291.69 , eqt(excl(), tag()) -> F() 1009.56/291.69 , eqt(excl(), true()) -> F() 1009.56/291.69 , eqt(false(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(false(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(false(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(lock(), nil()) -> F() 1009.56/291.69 , eqt(lock(), undefined()) -> F() 1009.56/291.69 , eqt(lock(), pid(N2)) -> F() 1009.56/291.69 , eqt(lock(), int(N2)) -> F() 1009.56/291.69 , eqt(lock(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(lock(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(lock(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(lock(), a()) -> F() 1009.56/291.69 , eqt(lock(), excl()) -> F() 1009.56/291.69 , eqt(lock(), false()) -> F() 1009.56/291.69 , eqt(lock(), lock()) -> T() 1009.56/291.69 , eqt(lock(), locker()) -> F() 1009.56/291.69 , eqt(lock(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(lock(), ok()) -> F() 1009.56/291.69 , eqt(lock(), pending()) -> F() 1009.56/291.69 , eqt(lock(), release()) -> F() 1009.56/291.69 , eqt(lock(), request()) -> F() 1009.56/291.69 , eqt(lock(), resource()) -> F() 1009.56/291.69 , eqt(lock(), tag()) -> F() 1009.56/291.69 , eqt(lock(), true()) -> F() 1009.56/291.69 , eqt(locker(), nil()) -> F() 1009.56/291.69 , eqt(locker(), undefined()) -> F() 1009.56/291.69 , eqt(locker(), pid(N2)) -> F() 1009.56/291.69 , eqt(locker(), int(N2)) -> F() 1009.56/291.69 , eqt(locker(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(locker(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(locker(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(locker(), a()) -> F() 1009.56/291.69 , eqt(locker(), excl()) -> F() 1009.56/291.69 , eqt(locker(), false()) -> F() 1009.56/291.69 , eqt(locker(), lock()) -> F() 1009.56/291.69 , eqt(locker(), locker()) -> T() 1009.56/291.69 , eqt(locker(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(locker(), ok()) -> F() 1009.56/291.69 , eqt(locker(), pending()) -> F() 1009.56/291.69 , eqt(locker(), release()) -> F() 1009.56/291.69 , eqt(locker(), request()) -> F() 1009.56/291.69 , eqt(locker(), resource()) -> F() 1009.56/291.69 , eqt(locker(), tag()) -> F() 1009.56/291.69 , eqt(locker(), true()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), nil()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), a()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), excl()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), false()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), lock()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), locker()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.56/291.69 , eqt(mcrlrecord(), ok()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), pending()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), release()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), request()) -> F() 1009.56/291.69 , eqt(mcrlrecord(), resource()) -> F() 1009.56/291.69 , eqt(ok(), undefined()) -> F() 1009.56/291.69 , eqt(ok(), pid(N2)) -> F() 1009.56/291.69 , eqt(ok(), int(N2)) -> F() 1009.56/291.69 , eqt(ok(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(ok(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(ok(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(ok(), resource()) -> F() 1009.56/291.69 , eqt(ok(), tag()) -> F() 1009.56/291.69 , eqt(ok(), true()) -> F() 1009.56/291.69 , eqt(pending(), nil()) -> F() 1009.56/291.69 , eqt(pending(), undefined()) -> F() 1009.56/291.69 , eqt(pending(), pid(N2)) -> F() 1009.56/291.69 , eqt(pending(), int(N2)) -> F() 1009.56/291.69 , eqt(pending(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(pending(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(pending(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(pending(), a()) -> F() 1009.56/291.69 , eqt(pending(), excl()) -> F() 1009.56/291.69 , eqt(pending(), false()) -> F() 1009.56/291.69 , eqt(pending(), lock()) -> F() 1009.56/291.69 , eqt(pending(), locker()) -> F() 1009.56/291.69 , eqt(pending(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(pending(), ok()) -> F() 1009.56/291.69 , eqt(pending(), pending()) -> T() 1009.56/291.69 , eqt(pending(), release()) -> F() 1009.56/291.69 , eqt(pending(), request()) -> F() 1009.56/291.69 , eqt(pending(), resource()) -> F() 1009.56/291.69 , eqt(pending(), tag()) -> F() 1009.56/291.69 , eqt(pending(), true()) -> F() 1009.56/291.69 , eqt(release(), nil()) -> F() 1009.56/291.69 , eqt(release(), a()) -> F() 1009.56/291.69 , eqt(release(), excl()) -> F() 1009.56/291.69 , eqt(release(), false()) -> F() 1009.56/291.69 , eqt(release(), lock()) -> F() 1009.56/291.69 , eqt(release(), locker()) -> F() 1009.56/291.69 , eqt(release(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(release(), ok()) -> F() 1009.56/291.69 , eqt(request(), undefined()) -> F() 1009.56/291.69 , eqt(request(), pid(N2)) -> F() 1009.56/291.69 , eqt(request(), int(N2)) -> F() 1009.56/291.69 , eqt(request(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(request(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(request(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(request(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(request(), ok()) -> F() 1009.56/291.69 , eqt(request(), pending()) -> F() 1009.56/291.69 , eqt(request(), release()) -> F() 1009.56/291.69 , eqt(request(), request()) -> T() 1009.56/291.69 , eqt(request(), resource()) -> F() 1009.56/291.69 , eqt(request(), tag()) -> F() 1009.56/291.69 , eqt(request(), true()) -> F() 1009.56/291.69 , eqt(resource(), nil()) -> F() 1009.56/291.69 , eqt(resource(), undefined()) -> F() 1009.56/291.69 , eqt(resource(), pid(N2)) -> F() 1009.56/291.69 , eqt(resource(), int(N2)) -> F() 1009.56/291.69 , eqt(resource(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(resource(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(resource(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(resource(), a()) -> F() 1009.56/291.69 , eqt(resource(), excl()) -> F() 1009.56/291.69 , eqt(resource(), false()) -> F() 1009.56/291.69 , eqt(resource(), lock()) -> F() 1009.56/291.69 , eqt(resource(), locker()) -> F() 1009.56/291.69 , eqt(resource(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(resource(), ok()) -> F() 1009.56/291.69 , eqt(resource(), pending()) -> F() 1009.56/291.69 , eqt(resource(), release()) -> F() 1009.56/291.69 , eqt(resource(), request()) -> F() 1009.56/291.69 , eqt(resource(), resource()) -> T() 1009.56/291.69 , eqt(resource(), tag()) -> F() 1009.56/291.69 , eqt(resource(), true()) -> F() 1009.56/291.69 , eqt(tag(), nil()) -> F() 1009.56/291.69 , eqt(tag(), undefined()) -> F() 1009.56/291.69 , eqt(tag(), pid(N2)) -> F() 1009.56/291.69 , eqt(tag(), int(N2)) -> F() 1009.56/291.69 , eqt(tag(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(tag(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(tag(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(tag(), a()) -> F() 1009.56/291.69 , eqt(tag(), excl()) -> F() 1009.56/291.69 , eqt(tag(), false()) -> F() 1009.56/291.69 , eqt(tag(), lock()) -> F() 1009.56/291.69 , eqt(tag(), locker()) -> F() 1009.56/291.69 , eqt(tag(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(tag(), ok()) -> F() 1009.56/291.69 , eqt(tag(), pending()) -> F() 1009.56/291.69 , eqt(tag(), release()) -> F() 1009.56/291.69 , eqt(tag(), request()) -> F() 1009.56/291.69 , eqt(tag(), resource()) -> F() 1009.56/291.69 , eqt(tag(), tag()) -> T() 1009.56/291.69 , eqt(tag(), true()) -> F() 1009.56/291.69 , eqt(true(), nil()) -> F() 1009.56/291.69 , eqt(true(), undefined()) -> F() 1009.56/291.69 , eqt(true(), pid(N2)) -> F() 1009.56/291.69 , eqt(true(), int(N2)) -> F() 1009.56/291.69 , eqt(true(), cons(H2, T2)) -> F() 1009.56/291.69 , eqt(true(), tuple(H2, T2)) -> F() 1009.56/291.69 , eqt(true(), tuplenil(H2)) -> F() 1009.56/291.69 , eqt(true(), a()) -> F() 1009.56/291.69 , eqt(true(), excl()) -> F() 1009.56/291.69 , eqt(true(), false()) -> F() 1009.56/291.69 , eqt(true(), lock()) -> F() 1009.56/291.69 , eqt(true(), locker()) -> F() 1009.56/291.69 , eqt(true(), mcrlrecord()) -> F() 1009.56/291.69 , eqt(true(), ok()) -> F() 1009.56/291.69 , eqt(true(), pending()) -> F() 1009.56/291.69 , eqt(true(), release()) -> F() 1009.56/291.69 , eqt(true(), request()) -> F() 1009.56/291.69 , eqt(true(), resource()) -> F() 1009.56/291.69 , eqt(true(), tag()) -> F() 1009.56/291.69 , eqt(true(), true()) -> T() 1009.56/291.69 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.56/291.69 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.56/291.69 , element(int(s(0())), tuplenil(T1)) -> T1 1009.56/291.69 , record_new(lock()) -> 1009.56/291.69 tuple(mcrlrecord(), 1009.56/291.69 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.56/291.69 , record_extract(tuple(mcrlrecord(), 1009.56/291.69 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.69 lock(), 1009.56/291.69 resource()) 1009.56/291.69 -> 1009.56/291.69 tuple(mcrlrecord(), 1009.56/291.69 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.56/291.69 , record_update(tuple(mcrlrecord(), 1009.56/291.69 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.56/291.69 lock(), 1009.56/291.69 pending(), 1009.56/291.69 NewF) 1009.56/291.69 -> 1009.56/291.69 tuple(mcrlrecord(), 1009.56/291.69 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.56/291.69 , record_updates(Record, Name, nil()) -> Record 1009.56/291.69 , record_updates(Record, 1009.56/291.69 Name, 1009.56/291.69 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.69 -> 1009.56/291.69 record_updates(record_update(Record, Name, Field, NewF), 1009.56/291.69 Name, 1009.56/291.69 Fields) 1009.56/291.69 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.56/291.69 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.56/291.69 cons(locker2_promote_pending(Lock, Pending), 1009.56/291.69 locker2_map_promote_pending(Locks, Pending)) 1009.56/291.69 , locker2_promote_pending(Lock, Client) -> 1009.56/291.69 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.56/291.69 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.56/291.69 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.56/291.69 cons(locker2_claim_lock(Lock, Resources, Client), 1009.56/291.69 locker2_map_claim_lock(Locks, Resources, Client)) 1009.56/291.69 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.56/291.69 , case0(Client, Lock, MCRLFree0) -> Lock 1009.56/291.69 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.69 record_updates(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.69 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.56/291.69 , locker2_remove_pending(Lock, Client) -> 1009.56/291.69 record_updates(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(pending(), 1009.56/291.69 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.56/291.69 cons(Client, nil())))), 1009.56/291.69 nil())) 1009.56/291.69 , subtract(List, nil()) -> List 1009.56/291.69 , subtract(List, cons(Head, Tail)) -> 1009.56/291.69 subtract(delete(Head, List), Tail) 1009.56/291.69 , locker2_add_pending(Lock, Resources, Client) -> 1009.56/291.69 case1(Client, 1009.56/291.69 Resources, 1009.56/291.69 Lock, 1009.56/291.69 member(record_extract(Lock, lock(), resource()), Resources)) 1009.56/291.69 , case1(Client, Resources, Lock, false()) -> Lock 1009.56/291.69 , case1(Client, Resources, Lock, true()) -> 1009.56/291.69 record_updates(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(pending(), 1009.56/291.69 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.69 cons(Client, nil())))), 1009.56/291.69 nil())) 1009.56/291.69 , member(E, nil()) -> false() 1009.56/291.69 , member(E, cons(Head, Tail)) -> 1009.56/291.69 case9(Tail, Head, E, equal(E, Head)) 1009.56/291.69 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.56/291.69 , locker2_release_lock(Lock, Client) -> 1009.56/291.69 case2(Client, 1009.56/291.69 Lock, 1009.56/291.69 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.56/291.69 , case2(Client, Lock, true()) -> 1009.56/291.69 record_updates(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(excllock(), excl()), nil())) 1009.56/291.69 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.56/291.69 , case4(Client, Lock, MCRLFree1) -> false() 1009.56/291.69 , locker2_obtainables(nil(), Client) -> true() 1009.56/291.69 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.56/291.69 case5(Client, 1009.56/291.69 Locks, 1009.56/291.69 Lock, 1009.56/291.69 member(Client, record_extract(Lock, lock(), pending()))) 1009.56/291.69 , case5(Client, Locks, Lock, false()) -> 1009.56/291.69 locker2_obtainables(Locks, Client) 1009.56/291.69 , case5(Client, Locks, Lock, true()) -> 1009.56/291.69 andt(locker2_obtainable(Lock, Client), 1009.56/291.69 locker2_obtainables(Locks, Client)) 1009.56/291.69 , locker2_check_available(Resource, nil()) -> false() 1009.56/291.69 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.56/291.69 case6(Locks, 1009.56/291.69 Lock, 1009.56/291.69 Resource, 1009.56/291.69 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.56/291.69 , case6(Locks, Lock, Resource, false()) -> 1009.56/291.69 locker2_check_available(Resource, Locks) 1009.56/291.69 , case6(Locks, Lock, Resource, true()) -> 1009.56/291.69 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.56/291.69 equal(record_extract(Lock, lock(), pending()), nil())) 1009.56/291.69 , locker2_check_availables(nil(), Locks) -> true() 1009.56/291.69 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.56/291.69 andt(locker2_check_available(Resource, Locks), 1009.56/291.69 locker2_check_availables(Resources, Locks)) 1009.56/291.69 , locker2_adduniq(nil(), List) -> List 1009.56/291.69 , delete(E, nil()) -> nil() 1009.56/291.69 , delete(E, cons(Head, Tail)) -> 1009.56/291.69 case8(Tail, Head, E, equal(E, Head)) 1009.56/291.69 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.56/291.69 , case8(Tail, Head, E, true()) -> Tail 1009.56/291.69 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.56/291.69 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.56/291.69 , case9(Tail, Head, E, true()) -> true() 1009.56/291.69 , eqs(empty(), empty()) -> T() 1009.56/291.69 , eqs(empty(), stack(E2, S2)) -> F() 1009.56/291.69 , eqs(stack(E1, S1), empty()) -> F() 1009.56/291.69 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.69 and(eqt(E1, E2), eqs(S1, S2)) 1009.56/291.69 , pushs(E1, S1) -> stack(E1, S1) 1009.56/291.69 , pops(stack(E1, S1)) -> S1 1009.56/291.69 , tops(stack(E1, S1)) -> E1 1009.56/291.69 , istops(E1, empty()) -> F() 1009.56/291.69 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.56/291.69 , eqc(nocalls(), nocalls()) -> T() 1009.56/291.69 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.56/291.69 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.56/291.69 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.69 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.56/291.69 , push(E1, E2, nocalls()) -> 1009.56/291.69 calls(E1, stack(E2, empty()), nocalls()) 1009.56/291.69 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.69 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.56/291.69 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.56/291.69 calls(E3, pushs(E2, S1), CS1) } 1009.56/291.69 Obligation: 1009.56/291.69 innermost runtime complexity 1009.56/291.69 Answer: 1009.56/291.69 YES(O(1),O(n^1)) 1009.56/291.69 1009.56/291.69 We estimate the number of application of {8,16,17,18,19,20,23,28} 1009.56/291.69 by applications of Pre({8,16,17,18,19,20,23,28}) = {7,21,22,27}. 1009.56/291.69 Here rules are labeled as follows: 1009.56/291.69 1009.56/291.69 DPs: 1009.56/291.69 { 1: eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.56/291.69 , 2: eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.56/291.69 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.69 , 3: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.56/291.69 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.56/291.69 , 4: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.56/291.69 , 5: element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.56/291.69 c_315(element^#(int(s(N1)), T2)) 1009.56/291.69 , 6: record_updates^#(Record, 1009.56/291.69 Name, 1009.56/291.69 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.56/291.69 -> 1009.56/291.69 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.56/291.69 Name, 1009.56/291.69 Fields), 1009.56/291.69 record_update^#(Record, Name, Field, NewF)) 1009.56/291.69 , 7: locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.56/291.69 c_324(locker2_promote_pending^#(Lock, Pending), 1009.56/291.69 locker2_map_promote_pending^#(Locks, Pending)) 1009.56/291.69 , 8: locker2_promote_pending^#(Lock, Client) -> 1009.56/291.69 c_325(case0^#(Client, 1009.56/291.69 Lock, 1009.56/291.69 record_extract(Lock, lock(), pending())), 1009.56/291.69 record_extract^#(Lock, lock(), pending())) 1009.56/291.69 , 9: case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.56/291.69 c_330(record_updates^#(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(excl(), tuplenil(Client)), 1009.56/291.69 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.56/291.69 , 10: locker2_map_claim_lock^#(cons(Lock, Locks), 1009.56/291.69 Resources, 1009.56/291.69 Client) 1009.56/291.69 -> c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.56/291.69 , 11: locker2_remove_pending^#(Lock, Client) -> 1009.56/291.69 c_331(record_updates^#(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(pending(), 1009.56/291.69 tuplenil(subtract(record_extract(Lock, 1009.56/291.69 lock(), 1009.56/291.69 pending()), 1009.56/291.69 cons(Client, nil())))), 1009.56/291.69 nil())), 1009.56/291.69 subtract^#(record_extract(Lock, lock(), pending()), 1009.56/291.69 cons(Client, nil())), 1009.56/291.69 record_extract^#(Lock, lock(), pending())) 1009.56/291.69 , 12: subtract^#(List, cons(Head, Tail)) -> 1009.56/291.69 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.56/291.69 , 13: locker2_add_pending^#(Lock, Resources, Client) -> 1009.56/291.69 c_334(case1^#(Client, 1009.56/291.69 Resources, 1009.56/291.69 Lock, 1009.56/291.69 member(record_extract(Lock, lock(), resource()), Resources)), 1009.56/291.69 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.56/291.69 record_extract^#(Lock, lock(), resource())) 1009.56/291.69 , 14: case1^#(Client, Resources, Lock, true()) -> 1009.56/291.69 c_336(record_updates^#(Lock, 1009.56/291.69 lock(), 1009.56/291.69 cons(tuple(pending(), 1009.56/291.69 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.56/291.69 cons(Client, nil())))), 1009.56/291.69 nil())), 1009.56/291.69 append^#(record_extract(Lock, lock(), pending()), 1009.56/291.69 cons(Client, nil())), 1009.56/291.69 record_extract^#(Lock, lock(), pending())) 1009.56/291.69 , 15: append^#(cons(Head, Tail), List) -> 1009.56/291.69 c_339(append^#(Tail, List)) 1009.56/291.69 , 16: case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.56/291.69 , 17: locker2_release_lock^#(Lock, Client) -> 1009.56/291.69 c_340(case2^#(Client, 1009.56/291.69 Lock, 1009.56/291.69 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.56/291.69 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.56/291.69 record_extract^#(Lock, lock(), excl())) 1009.56/291.69 , 18: case5^#(Client, Locks, Lock, false()) -> 1009.56/291.69 c_346(locker2_obtainables^#(Locks, Client)) 1009.56/291.69 , 19: case5^#(Client, Locks, Lock, true()) -> 1009.56/291.69 c_347(locker2_obtainables^#(Locks, Client)) 1009.56/291.69 , 20: locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.56/291.69 c_349(case6^#(Locks, 1009.56/291.69 Lock, 1009.56/291.69 Resource, 1009.56/291.69 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.56/291.69 record_extract^#(Lock, lock(), resource())) 1009.56/291.69 , 21: case6^#(Locks, Lock, Resource, false()) -> 1009.56/291.69 c_350(locker2_check_available^#(Resource, Locks)) 1009.56/291.69 , 22: locker2_check_availables^#(cons(Resource, Resources), Locks) 1009.56/291.69 -> 1009.56/291.69 c_353(locker2_check_available^#(Resource, Locks), 1009.56/291.69 locker2_check_availables^#(Resources, Locks)) 1009.56/291.69 , 23: case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.56/291.69 , 24: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.56/291.69 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.56/291.69 eqt^#(E1, E2), 1009.56/291.69 eqs^#(S1, S2)) 1009.56/291.69 , 25: istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.56/291.69 , 26: eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.56/291.69 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.56/291.69 eqt^#(E1, E2), 1009.56/291.69 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.56/291.69 eqs^#(S1, S2), 1009.56/291.69 eqc^#(CS1, CS2)) 1009.56/291.69 , 27: push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.56/291.69 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.56/291.69 , 28: push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) 1009.56/291.69 , 29: or^#(T(), T()) -> c_1() 1009.56/291.69 , 30: or^#(T(), F()) -> c_2() 1009.56/291.69 , 31: or^#(F(), T()) -> c_3() 1009.56/291.69 , 32: or^#(F(), F()) -> c_4() 1009.56/291.69 , 33: and^#(B, T()) -> c_5() 1009.56/291.69 , 34: and^#(B, F()) -> c_6() 1009.56/291.69 , 35: and^#(T(), B) -> c_7() 1009.56/291.69 , 36: and^#(F(), B) -> c_8() 1009.56/291.69 , 37: imp^#(T(), B) -> c_9() 1009.56/291.69 , 38: imp^#(F(), B) -> c_10() 1009.56/291.69 , 39: not^#(T()) -> c_11() 1009.56/291.69 , 40: not^#(F()) -> c_12() 1009.56/291.69 , 41: if^#(T(), B1, B2) -> c_13() 1009.56/291.69 , 42: if^#(F(), B1, B2) -> c_14() 1009.56/291.69 , 43: eq^#(T(), T()) -> c_15() 1009.56/291.69 , 44: eq^#(T(), F()) -> c_16() 1009.56/291.69 , 45: eq^#(F(), T()) -> c_17() 1009.56/291.69 , 46: eq^#(F(), F()) -> c_18() 1009.56/291.69 , 47: eqt^#(nil(), undefined()) -> c_19() 1009.56/291.69 , 48: eqt^#(nil(), pid(N2)) -> c_20() 1009.56/291.69 , 49: eqt^#(nil(), int(N2)) -> c_21() 1009.56/291.69 , 50: eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.56/291.69 , 51: eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.56/291.69 , 52: eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.56/291.69 , 53: eqt^#(undefined(), nil()) -> c_25() 1009.56/291.69 , 54: eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.56/291.69 , 55: eqt^#(undefined(), a()) -> c_27() 1009.56/291.69 , 56: eqt^#(pid(N1), nil()) -> c_28() 1009.56/291.69 , 57: eqt^#(pid(N1), undefined()) -> c_29() 1009.56/291.69 , 58: eqt^#(pid(N1), int(N2)) -> c_31() 1009.56/291.69 , 59: eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.56/291.69 , 60: eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.56/291.69 , 61: eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.56/291.69 , 62: eqt^#(pid(N1), a()) -> c_35() 1009.56/291.69 , 63: eqt^#(pid(N1), excl()) -> c_36() 1009.56/291.69 , 64: eqt^#(pid(N1), false()) -> c_37() 1009.56/291.69 , 65: eqt^#(pid(N1), lock()) -> c_38() 1009.56/291.69 , 66: eqt^#(pid(N1), locker()) -> c_39() 1009.56/291.69 , 67: eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.56/291.69 , 68: eqt^#(pid(N1), ok()) -> c_41() 1009.56/291.69 , 69: eqt^#(pid(N1), pending()) -> c_42() 1009.56/291.69 , 70: eqt^#(pid(N1), release()) -> c_43() 1009.56/291.69 , 71: eqt^#(pid(N1), request()) -> c_44() 1009.56/291.69 , 72: eqt^#(pid(N1), resource()) -> c_45() 1009.56/291.69 , 73: eqt^#(pid(N1), tag()) -> c_46() 1009.56/291.69 , 74: eqt^#(pid(N1), true()) -> c_47() 1009.56/291.69 , 75: eqt^#(int(N1), nil()) -> c_48() 1009.56/291.69 , 76: eqt^#(int(N1), undefined()) -> c_49() 1009.56/291.69 , 77: eqt^#(int(N1), a()) -> c_50() 1009.56/291.69 , 78: eqt^#(int(N1), excl()) -> c_51() 1009.56/291.69 , 79: eqt^#(int(N1), false()) -> c_52() 1009.80/291.70 , 80: eqt^#(int(N1), lock()) -> c_53() 1009.80/291.70 , 81: eqt^#(int(N1), locker()) -> c_54() 1009.80/291.70 , 82: eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.80/291.70 , 83: eqt^#(int(N1), ok()) -> c_56() 1009.80/291.70 , 84: eqt^#(int(N1), pending()) -> c_57() 1009.80/291.70 , 85: eqt^#(int(N1), release()) -> c_58() 1009.80/291.70 , 86: eqt^#(int(N1), request()) -> c_59() 1009.80/291.70 , 87: eqt^#(int(N1), resource()) -> c_60() 1009.80/291.70 , 88: eqt^#(int(N1), tag()) -> c_61() 1009.80/291.70 , 89: eqt^#(int(N1), true()) -> c_62() 1009.80/291.70 , 90: eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.80/291.70 , 91: eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.80/291.70 , 92: eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.80/291.70 , 93: eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.80/291.70 , 94: eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.80/291.70 , 95: eqt^#(cons(H1, T1), resource()) -> c_69() 1009.80/291.70 , 96: eqt^#(cons(H1, T1), tag()) -> c_70() 1009.80/291.70 , 97: eqt^#(cons(H1, T1), true()) -> c_71() 1009.80/291.70 , 98: eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.80/291.70 , 99: eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.80/291.70 , 100: eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.80/291.70 , 101: eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.80/291.70 , 102: eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.80/291.70 , 103: eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.80/291.70 , 104: eqt^#(tuple(H1, T1), a()) -> c_79() 1009.80/291.70 , 105: eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.80/291.70 , 106: eqt^#(tuple(H1, T1), false()) -> c_81() 1009.80/291.70 , 107: eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.80/291.70 , 108: eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.80/291.70 , 109: eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.80/291.70 , 110: eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.80/291.70 , 111: eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.80/291.70 , 112: eqt^#(tuple(H1, T1), release()) -> c_87() 1009.80/291.70 , 113: eqt^#(tuple(H1, T1), request()) -> c_88() 1009.80/291.70 , 114: eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.80/291.70 , 115: eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.80/291.70 , 116: eqt^#(tuple(H1, T1), true()) -> c_91() 1009.80/291.70 , 117: eqt^#(tuplenil(H1), nil()) -> c_92() 1009.80/291.70 , 118: eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.80/291.70 , 119: eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.80/291.70 , 120: eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.80/291.70 , 121: eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.80/291.70 , 122: eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.80/291.70 , 123: eqt^#(tuplenil(H1), a()) -> c_99() 1009.80/291.70 , 124: eqt^#(tuplenil(H1), excl()) -> c_100() 1009.80/291.70 , 125: eqt^#(tuplenil(H1), false()) -> c_101() 1009.80/291.70 , 126: eqt^#(tuplenil(H1), lock()) -> c_102() 1009.80/291.70 , 127: eqt^#(tuplenil(H1), locker()) -> c_103() 1009.80/291.70 , 128: eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.80/291.70 , 129: eqt^#(tuplenil(H1), ok()) -> c_105() 1009.80/291.70 , 130: eqt^#(tuplenil(H1), pending()) -> c_106() 1009.80/291.70 , 131: eqt^#(tuplenil(H1), release()) -> c_107() 1009.80/291.70 , 132: eqt^#(tuplenil(H1), request()) -> c_108() 1009.80/291.70 , 133: eqt^#(tuplenil(H1), resource()) -> c_109() 1009.80/291.70 , 134: eqt^#(tuplenil(H1), tag()) -> c_110() 1009.80/291.70 , 135: eqt^#(tuplenil(H1), true()) -> c_111() 1009.80/291.70 , 136: eqt^#(a(), nil()) -> c_112() 1009.80/291.70 , 137: eqt^#(a(), undefined()) -> c_113() 1009.80/291.70 , 138: eqt^#(a(), pid(N2)) -> c_114() 1009.80/291.70 , 139: eqt^#(a(), int(N2)) -> c_115() 1009.80/291.70 , 140: eqt^#(a(), cons(H2, T2)) -> c_116() 1009.80/291.70 , 141: eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.80/291.70 , 142: eqt^#(a(), tuplenil(H2)) -> c_118() 1009.80/291.70 , 143: eqt^#(a(), a()) -> c_119() 1009.80/291.70 , 144: eqt^#(a(), excl()) -> c_120() 1009.80/291.70 , 145: eqt^#(a(), false()) -> c_121() 1009.80/291.70 , 146: eqt^#(a(), lock()) -> c_122() 1009.80/291.70 , 147: eqt^#(a(), locker()) -> c_123() 1009.80/291.70 , 148: eqt^#(a(), mcrlrecord()) -> c_124() 1009.80/291.70 , 149: eqt^#(a(), ok()) -> c_125() 1009.80/291.70 , 150: eqt^#(a(), pending()) -> c_126() 1009.80/291.70 , 151: eqt^#(a(), release()) -> c_127() 1009.80/291.70 , 152: eqt^#(a(), request()) -> c_128() 1009.80/291.70 , 153: eqt^#(a(), resource()) -> c_129() 1009.80/291.70 , 154: eqt^#(a(), tag()) -> c_130() 1009.80/291.70 , 155: eqt^#(a(), true()) -> c_131() 1009.80/291.70 , 156: eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.80/291.70 , 157: eqt^#(excl(), nil()) -> c_133() 1009.80/291.70 , 158: eqt^#(excl(), undefined()) -> c_134() 1009.80/291.70 , 159: eqt^#(excl(), pid(N2)) -> c_135() 1009.80/291.70 , 160: eqt^#(excl(), a()) -> c_136() 1009.80/291.70 , 161: eqt^#(excl(), excl()) -> c_137() 1009.80/291.70 , 162: eqt^#(excl(), false()) -> c_138() 1009.80/291.70 , 163: eqt^#(excl(), lock()) -> c_139() 1009.80/291.70 , 164: eqt^#(excl(), locker()) -> c_140() 1009.80/291.70 , 165: eqt^#(excl(), mcrlrecord()) -> c_141() 1009.80/291.70 , 166: eqt^#(excl(), ok()) -> c_142() 1009.80/291.70 , 167: eqt^#(excl(), pending()) -> c_143() 1009.80/291.70 , 168: eqt^#(excl(), release()) -> c_144() 1009.80/291.70 , 169: eqt^#(excl(), request()) -> c_145() 1009.80/291.70 , 170: eqt^#(excl(), resource()) -> c_146() 1009.80/291.70 , 171: eqt^#(excl(), tag()) -> c_147() 1009.80/291.70 , 172: eqt^#(excl(), true()) -> c_148() 1009.80/291.70 , 173: eqt^#(false(), cons(H2, T2)) -> c_149() 1009.80/291.70 , 174: eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.80/291.70 , 175: eqt^#(false(), tuplenil(H2)) -> c_151() 1009.80/291.70 , 176: eqt^#(lock(), nil()) -> c_152() 1009.80/291.70 , 177: eqt^#(lock(), undefined()) -> c_153() 1009.80/291.70 , 178: eqt^#(lock(), pid(N2)) -> c_154() 1009.80/291.70 , 179: eqt^#(lock(), int(N2)) -> c_155() 1009.80/291.70 , 180: eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.80/291.70 , 181: eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.80/291.70 , 182: eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.80/291.70 , 183: eqt^#(lock(), a()) -> c_159() 1009.80/291.70 , 184: eqt^#(lock(), excl()) -> c_160() 1009.80/291.70 , 185: eqt^#(lock(), false()) -> c_161() 1009.80/291.70 , 186: eqt^#(lock(), lock()) -> c_162() 1009.80/291.70 , 187: eqt^#(lock(), locker()) -> c_163() 1009.80/291.70 , 188: eqt^#(lock(), mcrlrecord()) -> c_164() 1009.80/291.70 , 189: eqt^#(lock(), ok()) -> c_165() 1009.80/291.70 , 190: eqt^#(lock(), pending()) -> c_166() 1009.80/291.70 , 191: eqt^#(lock(), release()) -> c_167() 1009.80/291.70 , 192: eqt^#(lock(), request()) -> c_168() 1009.80/291.70 , 193: eqt^#(lock(), resource()) -> c_169() 1009.80/291.70 , 194: eqt^#(lock(), tag()) -> c_170() 1009.80/291.70 , 195: eqt^#(lock(), true()) -> c_171() 1009.80/291.70 , 196: eqt^#(locker(), nil()) -> c_172() 1009.80/291.70 , 197: eqt^#(locker(), undefined()) -> c_173() 1009.80/291.70 , 198: eqt^#(locker(), pid(N2)) -> c_174() 1009.80/291.70 , 199: eqt^#(locker(), int(N2)) -> c_175() 1009.80/291.70 , 200: eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.80/291.70 , 201: eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.80/291.70 , 202: eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.80/291.70 , 203: eqt^#(locker(), a()) -> c_179() 1009.80/291.70 , 204: eqt^#(locker(), excl()) -> c_180() 1009.80/291.70 , 205: eqt^#(locker(), false()) -> c_181() 1009.80/291.70 , 206: eqt^#(locker(), lock()) -> c_182() 1009.80/291.70 , 207: eqt^#(locker(), locker()) -> c_183() 1009.80/291.70 , 208: eqt^#(locker(), mcrlrecord()) -> c_184() 1009.80/291.70 , 209: eqt^#(locker(), ok()) -> c_185() 1009.80/291.70 , 210: eqt^#(locker(), pending()) -> c_186() 1009.80/291.70 , 211: eqt^#(locker(), release()) -> c_187() 1009.80/291.70 , 212: eqt^#(locker(), request()) -> c_188() 1009.80/291.70 , 213: eqt^#(locker(), resource()) -> c_189() 1009.80/291.70 , 214: eqt^#(locker(), tag()) -> c_190() 1009.80/291.70 , 215: eqt^#(locker(), true()) -> c_191() 1009.80/291.70 , 216: eqt^#(mcrlrecord(), nil()) -> c_192() 1009.80/291.70 , 217: eqt^#(mcrlrecord(), a()) -> c_193() 1009.80/291.70 , 218: eqt^#(mcrlrecord(), excl()) -> c_194() 1009.80/291.70 , 219: eqt^#(mcrlrecord(), false()) -> c_195() 1009.80/291.70 , 220: eqt^#(mcrlrecord(), lock()) -> c_196() 1009.80/291.70 , 221: eqt^#(mcrlrecord(), locker()) -> c_197() 1009.80/291.70 , 222: eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.80/291.70 , 223: eqt^#(mcrlrecord(), ok()) -> c_199() 1009.80/291.70 , 224: eqt^#(mcrlrecord(), pending()) -> c_200() 1009.80/291.70 , 225: eqt^#(mcrlrecord(), release()) -> c_201() 1009.80/291.70 , 226: eqt^#(mcrlrecord(), request()) -> c_202() 1009.80/291.70 , 227: eqt^#(mcrlrecord(), resource()) -> c_203() 1009.80/291.70 , 228: eqt^#(ok(), undefined()) -> c_204() 1009.80/291.70 , 229: eqt^#(ok(), pid(N2)) -> c_205() 1009.80/291.70 , 230: eqt^#(ok(), int(N2)) -> c_206() 1009.80/291.70 , 231: eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.80/291.70 , 232: eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.80/291.70 , 233: eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.80/291.70 , 234: eqt^#(ok(), resource()) -> c_210() 1009.80/291.70 , 235: eqt^#(ok(), tag()) -> c_211() 1009.80/291.70 , 236: eqt^#(ok(), true()) -> c_212() 1009.80/291.70 , 237: eqt^#(pending(), nil()) -> c_213() 1009.80/291.70 , 238: eqt^#(pending(), undefined()) -> c_214() 1009.80/291.70 , 239: eqt^#(pending(), pid(N2)) -> c_215() 1009.80/291.70 , 240: eqt^#(pending(), int(N2)) -> c_216() 1009.80/291.70 , 241: eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.80/291.70 , 242: eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.80/291.70 , 243: eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.80/291.70 , 244: eqt^#(pending(), a()) -> c_220() 1009.80/291.70 , 245: eqt^#(pending(), excl()) -> c_221() 1009.80/291.70 , 246: eqt^#(pending(), false()) -> c_222() 1009.80/291.70 , 247: eqt^#(pending(), lock()) -> c_223() 1009.80/291.70 , 248: eqt^#(pending(), locker()) -> c_224() 1009.80/291.70 , 249: eqt^#(pending(), mcrlrecord()) -> c_225() 1009.80/291.70 , 250: eqt^#(pending(), ok()) -> c_226() 1009.80/291.70 , 251: eqt^#(pending(), pending()) -> c_227() 1009.80/291.70 , 252: eqt^#(pending(), release()) -> c_228() 1009.80/291.70 , 253: eqt^#(pending(), request()) -> c_229() 1009.80/291.70 , 254: eqt^#(pending(), resource()) -> c_230() 1009.80/291.70 , 255: eqt^#(pending(), tag()) -> c_231() 1009.80/291.70 , 256: eqt^#(pending(), true()) -> c_232() 1009.80/291.70 , 257: eqt^#(release(), nil()) -> c_233() 1009.80/291.70 , 258: eqt^#(release(), a()) -> c_234() 1009.80/291.70 , 259: eqt^#(release(), excl()) -> c_235() 1009.80/291.70 , 260: eqt^#(release(), false()) -> c_236() 1009.80/291.70 , 261: eqt^#(release(), lock()) -> c_237() 1009.80/291.70 , 262: eqt^#(release(), locker()) -> c_238() 1009.80/291.70 , 263: eqt^#(release(), mcrlrecord()) -> c_239() 1009.80/291.70 , 264: eqt^#(release(), ok()) -> c_240() 1009.80/291.70 , 265: eqt^#(request(), undefined()) -> c_241() 1009.80/291.70 , 266: eqt^#(request(), pid(N2)) -> c_242() 1009.80/291.70 , 267: eqt^#(request(), int(N2)) -> c_243() 1009.80/291.70 , 268: eqt^#(request(), cons(H2, T2)) -> c_244() 1009.80/291.70 , 269: eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.80/291.70 , 270: eqt^#(request(), tuplenil(H2)) -> c_246() 1009.80/291.70 , 271: eqt^#(request(), mcrlrecord()) -> c_247() 1009.80/291.70 , 272: eqt^#(request(), ok()) -> c_248() 1009.80/291.70 , 273: eqt^#(request(), pending()) -> c_249() 1009.80/291.70 , 274: eqt^#(request(), release()) -> c_250() 1009.80/291.70 , 275: eqt^#(request(), request()) -> c_251() 1009.80/291.70 , 276: eqt^#(request(), resource()) -> c_252() 1009.80/291.70 , 277: eqt^#(request(), tag()) -> c_253() 1009.80/291.70 , 278: eqt^#(request(), true()) -> c_254() 1009.80/291.70 , 279: eqt^#(resource(), nil()) -> c_255() 1009.80/291.70 , 280: eqt^#(resource(), undefined()) -> c_256() 1009.80/291.70 , 281: eqt^#(resource(), pid(N2)) -> c_257() 1009.80/291.70 , 282: eqt^#(resource(), int(N2)) -> c_258() 1009.80/291.70 , 283: eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.80/291.70 , 284: eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.80/291.70 , 285: eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.80/291.70 , 286: eqt^#(resource(), a()) -> c_262() 1009.80/291.70 , 287: eqt^#(resource(), excl()) -> c_263() 1009.80/291.70 , 288: eqt^#(resource(), false()) -> c_264() 1009.80/291.70 , 289: eqt^#(resource(), lock()) -> c_265() 1009.80/291.70 , 290: eqt^#(resource(), locker()) -> c_266() 1009.80/291.70 , 291: eqt^#(resource(), mcrlrecord()) -> c_267() 1009.80/291.70 , 292: eqt^#(resource(), ok()) -> c_268() 1009.80/291.70 , 293: eqt^#(resource(), pending()) -> c_269() 1009.80/291.70 , 294: eqt^#(resource(), release()) -> c_270() 1009.80/291.70 , 295: eqt^#(resource(), request()) -> c_271() 1009.80/291.70 , 296: eqt^#(resource(), resource()) -> c_272() 1009.80/291.70 , 297: eqt^#(resource(), tag()) -> c_273() 1009.80/291.70 , 298: eqt^#(resource(), true()) -> c_274() 1009.80/291.70 , 299: eqt^#(tag(), nil()) -> c_275() 1009.80/291.70 , 300: eqt^#(tag(), undefined()) -> c_276() 1009.80/291.70 , 301: eqt^#(tag(), pid(N2)) -> c_277() 1009.80/291.70 , 302: eqt^#(tag(), int(N2)) -> c_278() 1009.80/291.70 , 303: eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.80/291.70 , 304: eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.80/291.70 , 305: eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.80/291.70 , 306: eqt^#(tag(), a()) -> c_282() 1009.80/291.70 , 307: eqt^#(tag(), excl()) -> c_283() 1009.80/291.70 , 308: eqt^#(tag(), false()) -> c_284() 1009.80/291.70 , 309: eqt^#(tag(), lock()) -> c_285() 1009.80/291.70 , 310: eqt^#(tag(), locker()) -> c_286() 1009.80/291.70 , 311: eqt^#(tag(), mcrlrecord()) -> c_287() 1009.80/291.70 , 312: eqt^#(tag(), ok()) -> c_288() 1009.80/291.70 , 313: eqt^#(tag(), pending()) -> c_289() 1009.80/291.70 , 314: eqt^#(tag(), release()) -> c_290() 1009.80/291.70 , 315: eqt^#(tag(), request()) -> c_291() 1009.80/291.70 , 316: eqt^#(tag(), resource()) -> c_292() 1009.80/291.70 , 317: eqt^#(tag(), tag()) -> c_293() 1009.80/291.70 , 318: eqt^#(tag(), true()) -> c_294() 1009.80/291.70 , 319: eqt^#(true(), nil()) -> c_295() 1009.80/291.70 , 320: eqt^#(true(), undefined()) -> c_296() 1009.80/291.70 , 321: eqt^#(true(), pid(N2)) -> c_297() 1009.80/291.70 , 322: eqt^#(true(), int(N2)) -> c_298() 1009.80/291.70 , 323: eqt^#(true(), cons(H2, T2)) -> c_299() 1009.80/291.70 , 324: eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.80/291.70 , 325: eqt^#(true(), tuplenil(H2)) -> c_301() 1009.80/291.70 , 326: eqt^#(true(), a()) -> c_302() 1009.80/291.70 , 327: eqt^#(true(), excl()) -> c_303() 1009.80/291.70 , 328: eqt^#(true(), false()) -> c_304() 1009.80/291.70 , 329: eqt^#(true(), lock()) -> c_305() 1009.80/291.70 , 330: eqt^#(true(), locker()) -> c_306() 1009.80/291.70 , 331: eqt^#(true(), mcrlrecord()) -> c_307() 1009.80/291.70 , 332: eqt^#(true(), ok()) -> c_308() 1009.80/291.70 , 333: eqt^#(true(), pending()) -> c_309() 1009.80/291.70 , 334: eqt^#(true(), release()) -> c_310() 1009.80/291.70 , 335: eqt^#(true(), request()) -> c_311() 1009.80/291.70 , 336: eqt^#(true(), resource()) -> c_312() 1009.80/291.70 , 337: eqt^#(true(), tag()) -> c_313() 1009.80/291.70 , 338: eqt^#(true(), true()) -> c_314() 1009.80/291.70 , 339: element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.80/291.70 , 340: element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.80/291.70 , 341: record_new^#(lock()) -> c_318() 1009.80/291.70 , 342: record_extract^#(tuple(mcrlrecord(), 1009.80/291.70 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.70 lock(), 1009.80/291.70 resource()) 1009.80/291.70 -> c_319() 1009.80/291.70 , 343: record_update^#(tuple(mcrlrecord(), 1009.80/291.70 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.70 lock(), 1009.80/291.70 pending(), 1009.80/291.70 NewF) 1009.80/291.70 -> c_320() 1009.80/291.70 , 344: record_updates^#(Record, Name, nil()) -> c_321() 1009.80/291.70 , 345: locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.80/291.70 , 346: case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.80/291.70 , 347: locker2_map_claim_lock^#(nil(), Resources, Client) -> 1009.80/291.70 c_326() 1009.80/291.70 , 348: locker2_map_add_pending^#(nil(), Resources, Client) -> 1009.80/291.70 c_328() 1009.80/291.70 , 349: subtract^#(List, nil()) -> c_332() 1009.80/291.70 , 350: delete^#(E, nil()) -> c_355() 1009.80/291.70 , 351: delete^#(E, cons(Head, Tail)) -> 1009.80/291.70 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.80/291.70 , 352: case1^#(Client, Resources, Lock, false()) -> c_335() 1009.80/291.70 , 353: member^#(E, nil()) -> c_337() 1009.80/291.70 , 354: member^#(E, cons(Head, Tail)) -> 1009.80/291.70 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.80/291.70 , 355: case9^#(Tail, Head, E, true()) -> c_361() 1009.80/291.70 , 356: case2^#(Client, Lock, true()) -> 1009.80/291.70 c_341(record_updates^#(Lock, 1009.80/291.70 lock(), 1009.80/291.70 cons(tuple(excllock(), excl()), nil()))) 1009.80/291.70 , 357: gen_modtageq^#(Client1, Client2) -> c_342() 1009.80/291.70 , 358: case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.80/291.70 , 359: locker2_obtainables^#(nil(), Client) -> c_344() 1009.80/291.70 , 360: locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.80/291.70 c_345(case5^#(Client, 1009.80/291.70 Locks, 1009.80/291.70 Lock, 1009.80/291.70 member(Client, record_extract(Lock, lock(), pending()))), 1009.80/291.70 member^#(Client, record_extract(Lock, lock(), pending())), 1009.80/291.70 record_extract^#(Lock, lock(), pending())) 1009.80/291.70 , 361: locker2_check_available^#(Resource, nil()) -> c_348() 1009.80/291.70 , 362: case6^#(Locks, Lock, Resource, true()) -> 1009.80/291.70 c_351(record_extract^#(Lock, lock(), excl()), 1009.80/291.70 record_extract^#(Lock, lock(), pending())) 1009.80/291.70 , 363: locker2_check_availables^#(nil(), Locks) -> c_352() 1009.80/291.70 , 364: locker2_adduniq^#(nil(), List) -> c_354() 1009.80/291.70 , 365: case8^#(Tail, Head, E, true()) -> c_358() 1009.80/291.70 , 366: gen_tag^#(Pid) -> c_359() 1009.80/291.70 , 367: eqs^#(empty(), empty()) -> c_362() 1009.80/291.70 , 368: eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.80/291.70 , 369: eqs^#(stack(E1, S1), empty()) -> c_364() 1009.80/291.70 , 370: pushs^#(E1, S1) -> c_366() 1009.80/291.70 , 371: pops^#(stack(E1, S1)) -> c_367() 1009.80/291.70 , 372: tops^#(stack(E1, S1)) -> c_368() 1009.80/291.70 , 373: istops^#(E1, empty()) -> c_369() 1009.80/291.70 , 374: eqc^#(nocalls(), nocalls()) -> c_371() 1009.80/291.70 , 375: eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.80/291.70 , 376: eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.80/291.70 , 377: push^#(E1, E2, nocalls()) -> c_375() } 1009.80/291.70 1009.80/291.70 We are left with following problem, upon which TcT provides the 1009.80/291.70 certificate YES(O(1),O(n^1)). 1009.80/291.70 1009.80/291.70 Strict DPs: 1009.80/291.70 { eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.80/291.70 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.70 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.70 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.70 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.70 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.80/291.70 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.70 c_315(element^#(int(s(N1)), T2)) 1009.80/291.70 , record_updates^#(Record, 1009.80/291.70 Name, 1009.80/291.70 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.70 -> 1009.80/291.70 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.70 Name, 1009.80/291.70 Fields), 1009.80/291.70 record_update^#(Record, Name, Field, NewF)) 1009.80/291.70 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.70 c_324(locker2_promote_pending^#(Lock, Pending), 1009.80/291.70 locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.70 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.70 c_330(record_updates^#(Lock, 1009.80/291.70 lock(), 1009.80/291.70 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.70 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.70 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.70 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.70 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.70 c_331(record_updates^#(Lock, 1009.80/291.70 lock(), 1009.80/291.70 cons(tuple(pending(), 1009.80/291.70 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.70 cons(Client, nil())))), 1009.80/291.70 nil())), 1009.80/291.70 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.70 cons(Client, nil())), 1009.80/291.70 record_extract^#(Lock, lock(), pending())) 1009.80/291.70 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.70 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.80/291.70 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.70 c_334(case1^#(Client, 1009.80/291.70 Resources, 1009.80/291.70 Lock, 1009.80/291.70 member(record_extract(Lock, lock(), resource()), Resources)), 1009.80/291.70 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.80/291.70 record_extract^#(Lock, lock(), resource())) 1009.80/291.70 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.70 c_336(record_updates^#(Lock, 1009.80/291.70 lock(), 1009.80/291.70 cons(tuple(pending(), 1009.80/291.70 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.70 cons(Client, nil())))), 1009.80/291.70 nil())), 1009.80/291.70 append^#(record_extract(Lock, lock(), pending()), 1009.80/291.70 cons(Client, nil())), 1009.80/291.70 record_extract^#(Lock, lock(), pending())) 1009.80/291.70 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.80/291.70 , case6^#(Locks, Lock, Resource, false()) -> 1009.80/291.70 c_350(locker2_check_available^#(Resource, Locks)) 1009.80/291.70 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.70 c_353(locker2_check_available^#(Resource, Locks), 1009.80/291.70 locker2_check_availables^#(Resources, Locks)) 1009.80/291.70 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.70 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.80/291.70 eqt^#(E1, E2), 1009.80/291.70 eqs^#(S1, S2)) 1009.80/291.70 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.80/291.70 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.70 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.80/291.70 eqt^#(E1, E2), 1009.80/291.70 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.80/291.70 eqs^#(S1, S2), 1009.80/291.70 eqc^#(CS1, CS2)) 1009.80/291.70 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.70 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) } 1009.80/291.70 Weak DPs: 1009.80/291.70 { or^#(T(), T()) -> c_1() 1009.80/291.70 , or^#(T(), F()) -> c_2() 1009.80/291.70 , or^#(F(), T()) -> c_3() 1009.80/291.70 , or^#(F(), F()) -> c_4() 1009.80/291.70 , and^#(B, T()) -> c_5() 1009.80/291.70 , and^#(B, F()) -> c_6() 1009.80/291.70 , and^#(T(), B) -> c_7() 1009.80/291.70 , and^#(F(), B) -> c_8() 1009.80/291.70 , imp^#(T(), B) -> c_9() 1009.80/291.70 , imp^#(F(), B) -> c_10() 1009.80/291.70 , not^#(T()) -> c_11() 1009.80/291.70 , not^#(F()) -> c_12() 1009.80/291.70 , if^#(T(), B1, B2) -> c_13() 1009.80/291.70 , if^#(F(), B1, B2) -> c_14() 1009.80/291.70 , eq^#(T(), T()) -> c_15() 1009.80/291.70 , eq^#(T(), F()) -> c_16() 1009.80/291.70 , eq^#(F(), T()) -> c_17() 1009.80/291.70 , eq^#(F(), F()) -> c_18() 1009.80/291.70 , eqt^#(nil(), undefined()) -> c_19() 1009.80/291.70 , eqt^#(nil(), pid(N2)) -> c_20() 1009.80/291.70 , eqt^#(nil(), int(N2)) -> c_21() 1009.80/291.70 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.80/291.70 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.80/291.70 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.80/291.70 , eqt^#(undefined(), nil()) -> c_25() 1009.80/291.70 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.80/291.70 , eqt^#(undefined(), a()) -> c_27() 1009.80/291.70 , eqt^#(pid(N1), nil()) -> c_28() 1009.80/291.70 , eqt^#(pid(N1), undefined()) -> c_29() 1009.80/291.70 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.80/291.70 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.80/291.70 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.80/291.70 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.80/291.70 , eqt^#(pid(N1), a()) -> c_35() 1009.80/291.70 , eqt^#(pid(N1), excl()) -> c_36() 1009.80/291.70 , eqt^#(pid(N1), false()) -> c_37() 1009.80/291.70 , eqt^#(pid(N1), lock()) -> c_38() 1009.80/291.70 , eqt^#(pid(N1), locker()) -> c_39() 1009.80/291.70 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.80/291.70 , eqt^#(pid(N1), ok()) -> c_41() 1009.80/291.70 , eqt^#(pid(N1), pending()) -> c_42() 1009.80/291.70 , eqt^#(pid(N1), release()) -> c_43() 1009.80/291.70 , eqt^#(pid(N1), request()) -> c_44() 1009.80/291.70 , eqt^#(pid(N1), resource()) -> c_45() 1009.80/291.70 , eqt^#(pid(N1), tag()) -> c_46() 1009.80/291.70 , eqt^#(pid(N1), true()) -> c_47() 1009.80/291.70 , eqt^#(int(N1), nil()) -> c_48() 1009.80/291.70 , eqt^#(int(N1), undefined()) -> c_49() 1009.80/291.70 , eqt^#(int(N1), a()) -> c_50() 1009.80/291.70 , eqt^#(int(N1), excl()) -> c_51() 1009.80/291.70 , eqt^#(int(N1), false()) -> c_52() 1009.80/291.70 , eqt^#(int(N1), lock()) -> c_53() 1009.80/291.70 , eqt^#(int(N1), locker()) -> c_54() 1009.80/291.70 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.80/291.70 , eqt^#(int(N1), ok()) -> c_56() 1009.80/291.70 , eqt^#(int(N1), pending()) -> c_57() 1009.80/291.70 , eqt^#(int(N1), release()) -> c_58() 1009.80/291.70 , eqt^#(int(N1), request()) -> c_59() 1009.80/291.70 , eqt^#(int(N1), resource()) -> c_60() 1009.80/291.70 , eqt^#(int(N1), tag()) -> c_61() 1009.80/291.70 , eqt^#(int(N1), true()) -> c_62() 1009.80/291.70 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.80/291.70 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.80/291.70 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.80/291.70 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.80/291.70 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.80/291.70 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.80/291.70 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.80/291.70 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.80/291.70 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.80/291.70 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.80/291.70 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.80/291.70 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.80/291.70 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.80/291.70 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.80/291.70 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.80/291.70 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.80/291.71 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.80/291.71 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.80/291.71 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.80/291.71 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.80/291.71 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.80/291.71 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.80/291.71 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.80/291.71 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.80/291.71 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.80/291.71 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.80/291.71 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.80/291.71 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.80/291.71 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.80/291.71 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.80/291.71 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.80/291.71 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.80/291.71 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.80/291.71 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.80/291.71 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.80/291.71 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.80/291.71 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.80/291.71 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.80/291.71 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.80/291.71 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.80/291.71 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.80/291.71 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.80/291.71 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.80/291.71 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.80/291.71 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.80/291.71 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.80/291.71 , eqt^#(a(), nil()) -> c_112() 1009.80/291.71 , eqt^#(a(), undefined()) -> c_113() 1009.80/291.71 , eqt^#(a(), pid(N2)) -> c_114() 1009.80/291.71 , eqt^#(a(), int(N2)) -> c_115() 1009.80/291.71 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.80/291.71 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.80/291.71 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.80/291.71 , eqt^#(a(), a()) -> c_119() 1009.80/291.71 , eqt^#(a(), excl()) -> c_120() 1009.80/291.71 , eqt^#(a(), false()) -> c_121() 1009.80/291.71 , eqt^#(a(), lock()) -> c_122() 1009.80/291.71 , eqt^#(a(), locker()) -> c_123() 1009.80/291.71 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.80/291.71 , eqt^#(a(), ok()) -> c_125() 1009.80/291.71 , eqt^#(a(), pending()) -> c_126() 1009.80/291.71 , eqt^#(a(), release()) -> c_127() 1009.80/291.71 , eqt^#(a(), request()) -> c_128() 1009.80/291.71 , eqt^#(a(), resource()) -> c_129() 1009.80/291.71 , eqt^#(a(), tag()) -> c_130() 1009.80/291.71 , eqt^#(a(), true()) -> c_131() 1009.80/291.71 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.80/291.71 , eqt^#(excl(), nil()) -> c_133() 1009.80/291.71 , eqt^#(excl(), undefined()) -> c_134() 1009.80/291.71 , eqt^#(excl(), pid(N2)) -> c_135() 1009.80/291.71 , eqt^#(excl(), a()) -> c_136() 1009.80/291.71 , eqt^#(excl(), excl()) -> c_137() 1009.80/291.71 , eqt^#(excl(), false()) -> c_138() 1009.80/291.71 , eqt^#(excl(), lock()) -> c_139() 1009.80/291.71 , eqt^#(excl(), locker()) -> c_140() 1009.80/291.71 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.80/291.71 , eqt^#(excl(), ok()) -> c_142() 1009.80/291.71 , eqt^#(excl(), pending()) -> c_143() 1009.80/291.71 , eqt^#(excl(), release()) -> c_144() 1009.80/291.71 , eqt^#(excl(), request()) -> c_145() 1009.80/291.71 , eqt^#(excl(), resource()) -> c_146() 1009.80/291.71 , eqt^#(excl(), tag()) -> c_147() 1009.80/291.71 , eqt^#(excl(), true()) -> c_148() 1009.80/291.71 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.80/291.71 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.80/291.71 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.80/291.71 , eqt^#(lock(), nil()) -> c_152() 1009.80/291.71 , eqt^#(lock(), undefined()) -> c_153() 1009.80/291.71 , eqt^#(lock(), pid(N2)) -> c_154() 1009.80/291.71 , eqt^#(lock(), int(N2)) -> c_155() 1009.80/291.71 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.80/291.71 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.80/291.71 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.80/291.71 , eqt^#(lock(), a()) -> c_159() 1009.80/291.71 , eqt^#(lock(), excl()) -> c_160() 1009.80/291.71 , eqt^#(lock(), false()) -> c_161() 1009.80/291.71 , eqt^#(lock(), lock()) -> c_162() 1009.80/291.71 , eqt^#(lock(), locker()) -> c_163() 1009.80/291.71 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.80/291.71 , eqt^#(lock(), ok()) -> c_165() 1009.80/291.71 , eqt^#(lock(), pending()) -> c_166() 1009.80/291.71 , eqt^#(lock(), release()) -> c_167() 1009.80/291.71 , eqt^#(lock(), request()) -> c_168() 1009.80/291.71 , eqt^#(lock(), resource()) -> c_169() 1009.80/291.71 , eqt^#(lock(), tag()) -> c_170() 1009.80/291.71 , eqt^#(lock(), true()) -> c_171() 1009.80/291.71 , eqt^#(locker(), nil()) -> c_172() 1009.80/291.71 , eqt^#(locker(), undefined()) -> c_173() 1009.80/291.71 , eqt^#(locker(), pid(N2)) -> c_174() 1009.80/291.71 , eqt^#(locker(), int(N2)) -> c_175() 1009.80/291.71 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.80/291.71 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.80/291.71 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.80/291.71 , eqt^#(locker(), a()) -> c_179() 1009.80/291.71 , eqt^#(locker(), excl()) -> c_180() 1009.80/291.71 , eqt^#(locker(), false()) -> c_181() 1009.80/291.71 , eqt^#(locker(), lock()) -> c_182() 1009.80/291.71 , eqt^#(locker(), locker()) -> c_183() 1009.80/291.71 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.80/291.71 , eqt^#(locker(), ok()) -> c_185() 1009.80/291.71 , eqt^#(locker(), pending()) -> c_186() 1009.80/291.71 , eqt^#(locker(), release()) -> c_187() 1009.80/291.71 , eqt^#(locker(), request()) -> c_188() 1009.80/291.71 , eqt^#(locker(), resource()) -> c_189() 1009.80/291.71 , eqt^#(locker(), tag()) -> c_190() 1009.80/291.71 , eqt^#(locker(), true()) -> c_191() 1009.80/291.71 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.80/291.71 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.80/291.71 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.80/291.71 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.80/291.71 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.80/291.71 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.80/291.71 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.80/291.71 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.80/291.71 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.80/291.71 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.80/291.71 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.80/291.71 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.80/291.71 , eqt^#(ok(), undefined()) -> c_204() 1009.80/291.71 , eqt^#(ok(), pid(N2)) -> c_205() 1009.80/291.71 , eqt^#(ok(), int(N2)) -> c_206() 1009.80/291.71 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.80/291.71 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.80/291.71 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.80/291.71 , eqt^#(ok(), resource()) -> c_210() 1009.80/291.71 , eqt^#(ok(), tag()) -> c_211() 1009.80/291.71 , eqt^#(ok(), true()) -> c_212() 1009.80/291.71 , eqt^#(pending(), nil()) -> c_213() 1009.80/291.71 , eqt^#(pending(), undefined()) -> c_214() 1009.80/291.71 , eqt^#(pending(), pid(N2)) -> c_215() 1009.80/291.71 , eqt^#(pending(), int(N2)) -> c_216() 1009.80/291.71 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.80/291.71 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.80/291.71 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.80/291.71 , eqt^#(pending(), a()) -> c_220() 1009.80/291.71 , eqt^#(pending(), excl()) -> c_221() 1009.80/291.71 , eqt^#(pending(), false()) -> c_222() 1009.80/291.71 , eqt^#(pending(), lock()) -> c_223() 1009.80/291.71 , eqt^#(pending(), locker()) -> c_224() 1009.80/291.71 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.80/291.71 , eqt^#(pending(), ok()) -> c_226() 1009.80/291.71 , eqt^#(pending(), pending()) -> c_227() 1009.80/291.71 , eqt^#(pending(), release()) -> c_228() 1009.80/291.71 , eqt^#(pending(), request()) -> c_229() 1009.80/291.71 , eqt^#(pending(), resource()) -> c_230() 1009.80/291.71 , eqt^#(pending(), tag()) -> c_231() 1009.80/291.71 , eqt^#(pending(), true()) -> c_232() 1009.80/291.71 , eqt^#(release(), nil()) -> c_233() 1009.80/291.71 , eqt^#(release(), a()) -> c_234() 1009.80/291.71 , eqt^#(release(), excl()) -> c_235() 1009.80/291.71 , eqt^#(release(), false()) -> c_236() 1009.80/291.71 , eqt^#(release(), lock()) -> c_237() 1009.80/291.71 , eqt^#(release(), locker()) -> c_238() 1009.80/291.71 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.80/291.71 , eqt^#(release(), ok()) -> c_240() 1009.80/291.71 , eqt^#(request(), undefined()) -> c_241() 1009.80/291.71 , eqt^#(request(), pid(N2)) -> c_242() 1009.80/291.71 , eqt^#(request(), int(N2)) -> c_243() 1009.80/291.71 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.80/291.71 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.80/291.71 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.80/291.71 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.80/291.71 , eqt^#(request(), ok()) -> c_248() 1009.80/291.71 , eqt^#(request(), pending()) -> c_249() 1009.80/291.71 , eqt^#(request(), release()) -> c_250() 1009.80/291.71 , eqt^#(request(), request()) -> c_251() 1009.80/291.71 , eqt^#(request(), resource()) -> c_252() 1009.80/291.71 , eqt^#(request(), tag()) -> c_253() 1009.80/291.71 , eqt^#(request(), true()) -> c_254() 1009.80/291.71 , eqt^#(resource(), nil()) -> c_255() 1009.80/291.71 , eqt^#(resource(), undefined()) -> c_256() 1009.80/291.71 , eqt^#(resource(), pid(N2)) -> c_257() 1009.80/291.71 , eqt^#(resource(), int(N2)) -> c_258() 1009.80/291.71 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.80/291.71 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.80/291.71 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.80/291.71 , eqt^#(resource(), a()) -> c_262() 1009.80/291.71 , eqt^#(resource(), excl()) -> c_263() 1009.80/291.71 , eqt^#(resource(), false()) -> c_264() 1009.80/291.71 , eqt^#(resource(), lock()) -> c_265() 1009.80/291.71 , eqt^#(resource(), locker()) -> c_266() 1009.80/291.71 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.80/291.71 , eqt^#(resource(), ok()) -> c_268() 1009.80/291.71 , eqt^#(resource(), pending()) -> c_269() 1009.80/291.71 , eqt^#(resource(), release()) -> c_270() 1009.80/291.71 , eqt^#(resource(), request()) -> c_271() 1009.80/291.71 , eqt^#(resource(), resource()) -> c_272() 1009.80/291.71 , eqt^#(resource(), tag()) -> c_273() 1009.80/291.71 , eqt^#(resource(), true()) -> c_274() 1009.80/291.71 , eqt^#(tag(), nil()) -> c_275() 1009.80/291.71 , eqt^#(tag(), undefined()) -> c_276() 1009.80/291.71 , eqt^#(tag(), pid(N2)) -> c_277() 1009.80/291.71 , eqt^#(tag(), int(N2)) -> c_278() 1009.80/291.71 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.80/291.71 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.80/291.71 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.80/291.71 , eqt^#(tag(), a()) -> c_282() 1009.80/291.71 , eqt^#(tag(), excl()) -> c_283() 1009.80/291.71 , eqt^#(tag(), false()) -> c_284() 1009.80/291.71 , eqt^#(tag(), lock()) -> c_285() 1009.80/291.71 , eqt^#(tag(), locker()) -> c_286() 1009.80/291.71 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.80/291.71 , eqt^#(tag(), ok()) -> c_288() 1009.80/291.71 , eqt^#(tag(), pending()) -> c_289() 1009.80/291.71 , eqt^#(tag(), release()) -> c_290() 1009.80/291.71 , eqt^#(tag(), request()) -> c_291() 1009.80/291.71 , eqt^#(tag(), resource()) -> c_292() 1009.80/291.71 , eqt^#(tag(), tag()) -> c_293() 1009.80/291.71 , eqt^#(tag(), true()) -> c_294() 1009.80/291.71 , eqt^#(true(), nil()) -> c_295() 1009.80/291.71 , eqt^#(true(), undefined()) -> c_296() 1009.80/291.71 , eqt^#(true(), pid(N2)) -> c_297() 1009.80/291.71 , eqt^#(true(), int(N2)) -> c_298() 1009.80/291.71 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.80/291.71 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.80/291.71 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.80/291.71 , eqt^#(true(), a()) -> c_302() 1009.80/291.71 , eqt^#(true(), excl()) -> c_303() 1009.80/291.71 , eqt^#(true(), false()) -> c_304() 1009.80/291.71 , eqt^#(true(), lock()) -> c_305() 1009.80/291.71 , eqt^#(true(), locker()) -> c_306() 1009.80/291.71 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.80/291.71 , eqt^#(true(), ok()) -> c_308() 1009.80/291.71 , eqt^#(true(), pending()) -> c_309() 1009.80/291.71 , eqt^#(true(), release()) -> c_310() 1009.80/291.71 , eqt^#(true(), request()) -> c_311() 1009.80/291.71 , eqt^#(true(), resource()) -> c_312() 1009.80/291.71 , eqt^#(true(), tag()) -> c_313() 1009.80/291.71 , eqt^#(true(), true()) -> c_314() 1009.80/291.71 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.80/291.71 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.80/291.71 , record_new^#(lock()) -> c_318() 1009.80/291.71 , record_extract^#(tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.71 lock(), 1009.80/291.71 resource()) 1009.80/291.71 -> c_319() 1009.80/291.71 , record_update^#(tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.71 lock(), 1009.80/291.71 pending(), 1009.80/291.71 NewF) 1009.80/291.71 -> c_320() 1009.80/291.71 , record_updates^#(Record, Name, nil()) -> c_321() 1009.80/291.71 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.80/291.71 , locker2_promote_pending^#(Lock, Client) -> 1009.80/291.71 c_325(case0^#(Client, 1009.80/291.71 Lock, 1009.80/291.71 record_extract(Lock, lock(), pending())), 1009.80/291.71 record_extract^#(Lock, lock(), pending())) 1009.80/291.71 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.80/291.71 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.80/291.71 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.80/291.71 , subtract^#(List, nil()) -> c_332() 1009.80/291.71 , delete^#(E, nil()) -> c_355() 1009.80/291.71 , delete^#(E, cons(Head, Tail)) -> 1009.80/291.71 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.80/291.71 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.80/291.71 , member^#(E, nil()) -> c_337() 1009.80/291.71 , member^#(E, cons(Head, Tail)) -> 1009.80/291.71 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.80/291.71 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.80/291.71 , case9^#(Tail, Head, E, true()) -> c_361() 1009.80/291.71 , locker2_release_lock^#(Lock, Client) -> 1009.80/291.71 c_340(case2^#(Client, 1009.80/291.71 Lock, 1009.80/291.71 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.80/291.71 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.80/291.71 record_extract^#(Lock, lock(), excl())) 1009.80/291.71 , case2^#(Client, Lock, true()) -> 1009.80/291.71 c_341(record_updates^#(Lock, 1009.80/291.71 lock(), 1009.80/291.71 cons(tuple(excllock(), excl()), nil()))) 1009.80/291.71 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.80/291.71 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.80/291.71 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.80/291.71 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.80/291.71 c_345(case5^#(Client, 1009.80/291.71 Locks, 1009.80/291.71 Lock, 1009.80/291.71 member(Client, record_extract(Lock, lock(), pending()))), 1009.80/291.71 member^#(Client, record_extract(Lock, lock(), pending())), 1009.80/291.71 record_extract^#(Lock, lock(), pending())) 1009.80/291.71 , case5^#(Client, Locks, Lock, false()) -> 1009.80/291.71 c_346(locker2_obtainables^#(Locks, Client)) 1009.80/291.71 , case5^#(Client, Locks, Lock, true()) -> 1009.80/291.71 c_347(locker2_obtainables^#(Locks, Client)) 1009.80/291.71 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.80/291.71 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.80/291.71 c_349(case6^#(Locks, 1009.80/291.71 Lock, 1009.80/291.71 Resource, 1009.80/291.71 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.80/291.71 record_extract^#(Lock, lock(), resource())) 1009.80/291.71 , case6^#(Locks, Lock, Resource, true()) -> 1009.80/291.71 c_351(record_extract^#(Lock, lock(), excl()), 1009.80/291.71 record_extract^#(Lock, lock(), pending())) 1009.80/291.71 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.80/291.71 , locker2_adduniq^#(nil(), List) -> c_354() 1009.80/291.71 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.80/291.71 , case8^#(Tail, Head, E, true()) -> c_358() 1009.80/291.71 , gen_tag^#(Pid) -> c_359() 1009.80/291.71 , eqs^#(empty(), empty()) -> c_362() 1009.80/291.71 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.80/291.71 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.80/291.71 , pushs^#(E1, S1) -> c_366() 1009.80/291.71 , pops^#(stack(E1, S1)) -> c_367() 1009.80/291.71 , tops^#(stack(E1, S1)) -> c_368() 1009.80/291.71 , istops^#(E1, empty()) -> c_369() 1009.80/291.71 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.80/291.71 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.80/291.71 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.80/291.71 , push^#(E1, E2, nocalls()) -> c_375() 1009.80/291.71 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.80/291.71 Weak Trs: 1009.80/291.71 { or(T(), T()) -> T() 1009.80/291.71 , or(T(), F()) -> T() 1009.80/291.71 , or(F(), T()) -> T() 1009.80/291.71 , or(F(), F()) -> F() 1009.80/291.71 , and(B, T()) -> B 1009.80/291.71 , and(B, F()) -> F() 1009.80/291.71 , and(T(), B) -> B 1009.80/291.71 , and(F(), B) -> F() 1009.80/291.71 , imp(T(), B) -> B 1009.80/291.71 , imp(F(), B) -> T() 1009.80/291.71 , not(T()) -> F() 1009.80/291.71 , not(F()) -> T() 1009.80/291.71 , if(T(), B1, B2) -> B1 1009.80/291.71 , if(F(), B1, B2) -> B2 1009.80/291.71 , eq(T(), T()) -> T() 1009.80/291.71 , eq(T(), F()) -> F() 1009.80/291.71 , eq(F(), T()) -> F() 1009.80/291.71 , eq(F(), F()) -> T() 1009.80/291.71 , eqt(nil(), undefined()) -> F() 1009.80/291.71 , eqt(nil(), pid(N2)) -> F() 1009.80/291.71 , eqt(nil(), int(N2)) -> F() 1009.80/291.71 , eqt(nil(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(nil(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(nil(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(undefined(), nil()) -> F() 1009.80/291.71 , eqt(undefined(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(undefined(), a()) -> F() 1009.80/291.71 , eqt(pid(N1), nil()) -> F() 1009.80/291.71 , eqt(pid(N1), undefined()) -> F() 1009.80/291.71 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.80/291.71 , eqt(pid(N1), int(N2)) -> F() 1009.80/291.71 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(pid(N1), a()) -> F() 1009.80/291.71 , eqt(pid(N1), excl()) -> F() 1009.80/291.71 , eqt(pid(N1), false()) -> F() 1009.80/291.71 , eqt(pid(N1), lock()) -> F() 1009.80/291.71 , eqt(pid(N1), locker()) -> F() 1009.80/291.71 , eqt(pid(N1), mcrlrecord()) -> F() 1009.80/291.71 , eqt(pid(N1), ok()) -> F() 1009.80/291.71 , eqt(pid(N1), pending()) -> F() 1009.80/291.71 , eqt(pid(N1), release()) -> F() 1009.80/291.71 , eqt(pid(N1), request()) -> F() 1009.80/291.71 , eqt(pid(N1), resource()) -> F() 1009.80/291.71 , eqt(pid(N1), tag()) -> F() 1009.80/291.71 , eqt(pid(N1), true()) -> F() 1009.80/291.71 , eqt(int(N1), nil()) -> F() 1009.80/291.71 , eqt(int(N1), undefined()) -> F() 1009.80/291.71 , eqt(int(N1), a()) -> F() 1009.80/291.71 , eqt(int(N1), excl()) -> F() 1009.80/291.71 , eqt(int(N1), false()) -> F() 1009.80/291.71 , eqt(int(N1), lock()) -> F() 1009.80/291.71 , eqt(int(N1), locker()) -> F() 1009.80/291.71 , eqt(int(N1), mcrlrecord()) -> F() 1009.80/291.71 , eqt(int(N1), ok()) -> F() 1009.80/291.71 , eqt(int(N1), pending()) -> F() 1009.80/291.71 , eqt(int(N1), release()) -> F() 1009.80/291.71 , eqt(int(N1), request()) -> F() 1009.80/291.71 , eqt(int(N1), resource()) -> F() 1009.80/291.71 , eqt(int(N1), tag()) -> F() 1009.80/291.71 , eqt(int(N1), true()) -> F() 1009.80/291.71 , eqt(cons(H1, T1), undefined()) -> F() 1009.80/291.71 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.80/291.71 , eqt(cons(H1, T1), int(N2)) -> F() 1009.80/291.71 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.71 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(cons(H1, T1), resource()) -> F() 1009.80/291.71 , eqt(cons(H1, T1), tag()) -> F() 1009.80/291.71 , eqt(cons(H1, T1), true()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), nil()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), undefined()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.71 and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.71 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), a()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), excl()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), false()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), lock()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), locker()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), ok()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), pending()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), release()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), request()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), resource()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), tag()) -> F() 1009.80/291.71 , eqt(tuple(H1, T1), true()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), nil()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), undefined()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.80/291.71 , eqt(tuplenil(H1), int(N2)) -> F() 1009.80/291.71 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.80/291.71 , eqt(tuplenil(H1), a()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), excl()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), false()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), lock()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), locker()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), ok()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), pending()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), release()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), request()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), resource()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), tag()) -> F() 1009.80/291.71 , eqt(tuplenil(H1), true()) -> F() 1009.80/291.71 , eqt(a(), nil()) -> F() 1009.80/291.71 , eqt(a(), undefined()) -> F() 1009.80/291.71 , eqt(a(), pid(N2)) -> F() 1009.80/291.71 , eqt(a(), int(N2)) -> F() 1009.80/291.71 , eqt(a(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(a(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(a(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(a(), a()) -> T() 1009.80/291.71 , eqt(a(), excl()) -> F() 1009.80/291.71 , eqt(a(), false()) -> F() 1009.80/291.71 , eqt(a(), lock()) -> F() 1009.80/291.71 , eqt(a(), locker()) -> F() 1009.80/291.71 , eqt(a(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(a(), ok()) -> F() 1009.80/291.71 , eqt(a(), pending()) -> F() 1009.80/291.71 , eqt(a(), release()) -> F() 1009.80/291.71 , eqt(a(), request()) -> F() 1009.80/291.71 , eqt(a(), resource()) -> F() 1009.80/291.71 , eqt(a(), tag()) -> F() 1009.80/291.71 , eqt(a(), true()) -> F() 1009.80/291.71 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.80/291.71 , eqt(excl(), nil()) -> F() 1009.80/291.71 , eqt(excl(), undefined()) -> F() 1009.80/291.71 , eqt(excl(), pid(N2)) -> F() 1009.80/291.71 , eqt(excl(), a()) -> F() 1009.80/291.71 , eqt(excl(), excl()) -> T() 1009.80/291.71 , eqt(excl(), false()) -> F() 1009.80/291.71 , eqt(excl(), lock()) -> F() 1009.80/291.71 , eqt(excl(), locker()) -> F() 1009.80/291.71 , eqt(excl(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(excl(), ok()) -> F() 1009.80/291.71 , eqt(excl(), pending()) -> F() 1009.80/291.71 , eqt(excl(), release()) -> F() 1009.80/291.71 , eqt(excl(), request()) -> F() 1009.80/291.71 , eqt(excl(), resource()) -> F() 1009.80/291.71 , eqt(excl(), tag()) -> F() 1009.80/291.71 , eqt(excl(), true()) -> F() 1009.80/291.71 , eqt(false(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(false(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(false(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(lock(), nil()) -> F() 1009.80/291.71 , eqt(lock(), undefined()) -> F() 1009.80/291.71 , eqt(lock(), pid(N2)) -> F() 1009.80/291.71 , eqt(lock(), int(N2)) -> F() 1009.80/291.71 , eqt(lock(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(lock(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(lock(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(lock(), a()) -> F() 1009.80/291.71 , eqt(lock(), excl()) -> F() 1009.80/291.71 , eqt(lock(), false()) -> F() 1009.80/291.71 , eqt(lock(), lock()) -> T() 1009.80/291.71 , eqt(lock(), locker()) -> F() 1009.80/291.71 , eqt(lock(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(lock(), ok()) -> F() 1009.80/291.71 , eqt(lock(), pending()) -> F() 1009.80/291.71 , eqt(lock(), release()) -> F() 1009.80/291.71 , eqt(lock(), request()) -> F() 1009.80/291.71 , eqt(lock(), resource()) -> F() 1009.80/291.71 , eqt(lock(), tag()) -> F() 1009.80/291.71 , eqt(lock(), true()) -> F() 1009.80/291.71 , eqt(locker(), nil()) -> F() 1009.80/291.71 , eqt(locker(), undefined()) -> F() 1009.80/291.71 , eqt(locker(), pid(N2)) -> F() 1009.80/291.71 , eqt(locker(), int(N2)) -> F() 1009.80/291.71 , eqt(locker(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(locker(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(locker(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(locker(), a()) -> F() 1009.80/291.71 , eqt(locker(), excl()) -> F() 1009.80/291.71 , eqt(locker(), false()) -> F() 1009.80/291.71 , eqt(locker(), lock()) -> F() 1009.80/291.71 , eqt(locker(), locker()) -> T() 1009.80/291.71 , eqt(locker(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(locker(), ok()) -> F() 1009.80/291.71 , eqt(locker(), pending()) -> F() 1009.80/291.71 , eqt(locker(), release()) -> F() 1009.80/291.71 , eqt(locker(), request()) -> F() 1009.80/291.71 , eqt(locker(), resource()) -> F() 1009.80/291.71 , eqt(locker(), tag()) -> F() 1009.80/291.71 , eqt(locker(), true()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), nil()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), a()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), excl()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), false()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), lock()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), locker()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.80/291.71 , eqt(mcrlrecord(), ok()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), pending()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), release()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), request()) -> F() 1009.80/291.71 , eqt(mcrlrecord(), resource()) -> F() 1009.80/291.71 , eqt(ok(), undefined()) -> F() 1009.80/291.71 , eqt(ok(), pid(N2)) -> F() 1009.80/291.71 , eqt(ok(), int(N2)) -> F() 1009.80/291.71 , eqt(ok(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(ok(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(ok(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(ok(), resource()) -> F() 1009.80/291.71 , eqt(ok(), tag()) -> F() 1009.80/291.71 , eqt(ok(), true()) -> F() 1009.80/291.71 , eqt(pending(), nil()) -> F() 1009.80/291.71 , eqt(pending(), undefined()) -> F() 1009.80/291.71 , eqt(pending(), pid(N2)) -> F() 1009.80/291.71 , eqt(pending(), int(N2)) -> F() 1009.80/291.71 , eqt(pending(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(pending(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(pending(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(pending(), a()) -> F() 1009.80/291.71 , eqt(pending(), excl()) -> F() 1009.80/291.71 , eqt(pending(), false()) -> F() 1009.80/291.71 , eqt(pending(), lock()) -> F() 1009.80/291.71 , eqt(pending(), locker()) -> F() 1009.80/291.71 , eqt(pending(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(pending(), ok()) -> F() 1009.80/291.71 , eqt(pending(), pending()) -> T() 1009.80/291.71 , eqt(pending(), release()) -> F() 1009.80/291.71 , eqt(pending(), request()) -> F() 1009.80/291.71 , eqt(pending(), resource()) -> F() 1009.80/291.71 , eqt(pending(), tag()) -> F() 1009.80/291.71 , eqt(pending(), true()) -> F() 1009.80/291.71 , eqt(release(), nil()) -> F() 1009.80/291.71 , eqt(release(), a()) -> F() 1009.80/291.71 , eqt(release(), excl()) -> F() 1009.80/291.71 , eqt(release(), false()) -> F() 1009.80/291.71 , eqt(release(), lock()) -> F() 1009.80/291.71 , eqt(release(), locker()) -> F() 1009.80/291.71 , eqt(release(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(release(), ok()) -> F() 1009.80/291.71 , eqt(request(), undefined()) -> F() 1009.80/291.71 , eqt(request(), pid(N2)) -> F() 1009.80/291.71 , eqt(request(), int(N2)) -> F() 1009.80/291.71 , eqt(request(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(request(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(request(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(request(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(request(), ok()) -> F() 1009.80/291.71 , eqt(request(), pending()) -> F() 1009.80/291.71 , eqt(request(), release()) -> F() 1009.80/291.71 , eqt(request(), request()) -> T() 1009.80/291.71 , eqt(request(), resource()) -> F() 1009.80/291.71 , eqt(request(), tag()) -> F() 1009.80/291.71 , eqt(request(), true()) -> F() 1009.80/291.71 , eqt(resource(), nil()) -> F() 1009.80/291.71 , eqt(resource(), undefined()) -> F() 1009.80/291.71 , eqt(resource(), pid(N2)) -> F() 1009.80/291.71 , eqt(resource(), int(N2)) -> F() 1009.80/291.71 , eqt(resource(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(resource(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(resource(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(resource(), a()) -> F() 1009.80/291.71 , eqt(resource(), excl()) -> F() 1009.80/291.71 , eqt(resource(), false()) -> F() 1009.80/291.71 , eqt(resource(), lock()) -> F() 1009.80/291.71 , eqt(resource(), locker()) -> F() 1009.80/291.71 , eqt(resource(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(resource(), ok()) -> F() 1009.80/291.71 , eqt(resource(), pending()) -> F() 1009.80/291.71 , eqt(resource(), release()) -> F() 1009.80/291.71 , eqt(resource(), request()) -> F() 1009.80/291.71 , eqt(resource(), resource()) -> T() 1009.80/291.71 , eqt(resource(), tag()) -> F() 1009.80/291.71 , eqt(resource(), true()) -> F() 1009.80/291.71 , eqt(tag(), nil()) -> F() 1009.80/291.71 , eqt(tag(), undefined()) -> F() 1009.80/291.71 , eqt(tag(), pid(N2)) -> F() 1009.80/291.71 , eqt(tag(), int(N2)) -> F() 1009.80/291.71 , eqt(tag(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(tag(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(tag(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(tag(), a()) -> F() 1009.80/291.71 , eqt(tag(), excl()) -> F() 1009.80/291.71 , eqt(tag(), false()) -> F() 1009.80/291.71 , eqt(tag(), lock()) -> F() 1009.80/291.71 , eqt(tag(), locker()) -> F() 1009.80/291.71 , eqt(tag(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(tag(), ok()) -> F() 1009.80/291.71 , eqt(tag(), pending()) -> F() 1009.80/291.71 , eqt(tag(), release()) -> F() 1009.80/291.71 , eqt(tag(), request()) -> F() 1009.80/291.71 , eqt(tag(), resource()) -> F() 1009.80/291.71 , eqt(tag(), tag()) -> T() 1009.80/291.71 , eqt(tag(), true()) -> F() 1009.80/291.71 , eqt(true(), nil()) -> F() 1009.80/291.71 , eqt(true(), undefined()) -> F() 1009.80/291.71 , eqt(true(), pid(N2)) -> F() 1009.80/291.71 , eqt(true(), int(N2)) -> F() 1009.80/291.71 , eqt(true(), cons(H2, T2)) -> F() 1009.80/291.71 , eqt(true(), tuple(H2, T2)) -> F() 1009.80/291.71 , eqt(true(), tuplenil(H2)) -> F() 1009.80/291.71 , eqt(true(), a()) -> F() 1009.80/291.71 , eqt(true(), excl()) -> F() 1009.80/291.71 , eqt(true(), false()) -> F() 1009.80/291.71 , eqt(true(), lock()) -> F() 1009.80/291.71 , eqt(true(), locker()) -> F() 1009.80/291.71 , eqt(true(), mcrlrecord()) -> F() 1009.80/291.71 , eqt(true(), ok()) -> F() 1009.80/291.71 , eqt(true(), pending()) -> F() 1009.80/291.71 , eqt(true(), release()) -> F() 1009.80/291.71 , eqt(true(), request()) -> F() 1009.80/291.71 , eqt(true(), resource()) -> F() 1009.80/291.71 , eqt(true(), tag()) -> F() 1009.80/291.71 , eqt(true(), true()) -> T() 1009.80/291.71 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.80/291.71 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.80/291.71 , element(int(s(0())), tuplenil(T1)) -> T1 1009.80/291.71 , record_new(lock()) -> 1009.80/291.71 tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.80/291.71 , record_extract(tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.71 lock(), 1009.80/291.71 resource()) 1009.80/291.71 -> 1009.80/291.71 tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.71 , record_update(tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.71 lock(), 1009.80/291.71 pending(), 1009.80/291.71 NewF) 1009.80/291.71 -> 1009.80/291.71 tuple(mcrlrecord(), 1009.80/291.71 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.71 , record_updates(Record, Name, nil()) -> Record 1009.80/291.71 , record_updates(Record, 1009.80/291.71 Name, 1009.80/291.71 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.71 -> 1009.80/291.71 record_updates(record_update(Record, Name, Field, NewF), 1009.80/291.71 Name, 1009.80/291.71 Fields) 1009.80/291.71 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.80/291.71 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.80/291.71 cons(locker2_promote_pending(Lock, Pending), 1009.80/291.71 locker2_map_promote_pending(Locks, Pending)) 1009.80/291.71 , locker2_promote_pending(Lock, Client) -> 1009.80/291.71 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.80/291.71 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.80/291.71 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.80/291.71 cons(locker2_claim_lock(Lock, Resources, Client), 1009.80/291.71 locker2_map_claim_lock(Locks, Resources, Client)) 1009.80/291.71 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.80/291.71 , case0(Client, Lock, MCRLFree0) -> Lock 1009.80/291.71 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.71 record_updates(Lock, 1009.80/291.71 lock(), 1009.80/291.71 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.72 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.80/291.72 , locker2_remove_pending(Lock, Client) -> 1009.80/291.72 record_updates(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(pending(), 1009.80/291.72 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.72 cons(Client, nil())))), 1009.80/291.72 nil())) 1009.80/291.72 , subtract(List, nil()) -> List 1009.80/291.72 , subtract(List, cons(Head, Tail)) -> 1009.80/291.72 subtract(delete(Head, List), Tail) 1009.80/291.72 , locker2_add_pending(Lock, Resources, Client) -> 1009.80/291.72 case1(Client, 1009.80/291.72 Resources, 1009.80/291.72 Lock, 1009.80/291.72 member(record_extract(Lock, lock(), resource()), Resources)) 1009.80/291.72 , case1(Client, Resources, Lock, false()) -> Lock 1009.80/291.72 , case1(Client, Resources, Lock, true()) -> 1009.80/291.72 record_updates(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(pending(), 1009.80/291.72 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.72 cons(Client, nil())))), 1009.80/291.72 nil())) 1009.80/291.72 , member(E, nil()) -> false() 1009.80/291.72 , member(E, cons(Head, Tail)) -> 1009.80/291.72 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.72 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.72 , locker2_release_lock(Lock, Client) -> 1009.80/291.72 case2(Client, 1009.80/291.72 Lock, 1009.80/291.72 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.80/291.72 , case2(Client, Lock, true()) -> 1009.80/291.72 record_updates(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(excllock(), excl()), nil())) 1009.80/291.72 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.80/291.72 , case4(Client, Lock, MCRLFree1) -> false() 1009.80/291.72 , locker2_obtainables(nil(), Client) -> true() 1009.80/291.72 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.80/291.72 case5(Client, 1009.80/291.72 Locks, 1009.80/291.72 Lock, 1009.80/291.72 member(Client, record_extract(Lock, lock(), pending()))) 1009.80/291.72 , case5(Client, Locks, Lock, false()) -> 1009.80/291.72 locker2_obtainables(Locks, Client) 1009.80/291.72 , case5(Client, Locks, Lock, true()) -> 1009.80/291.72 andt(locker2_obtainable(Lock, Client), 1009.80/291.72 locker2_obtainables(Locks, Client)) 1009.80/291.72 , locker2_check_available(Resource, nil()) -> false() 1009.80/291.72 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.80/291.72 case6(Locks, 1009.80/291.72 Lock, 1009.80/291.72 Resource, 1009.80/291.72 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.80/291.72 , case6(Locks, Lock, Resource, false()) -> 1009.80/291.72 locker2_check_available(Resource, Locks) 1009.80/291.72 , case6(Locks, Lock, Resource, true()) -> 1009.80/291.72 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.80/291.72 equal(record_extract(Lock, lock(), pending()), nil())) 1009.80/291.72 , locker2_check_availables(nil(), Locks) -> true() 1009.80/291.72 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.80/291.72 andt(locker2_check_available(Resource, Locks), 1009.80/291.72 locker2_check_availables(Resources, Locks)) 1009.80/291.72 , locker2_adduniq(nil(), List) -> List 1009.80/291.72 , delete(E, nil()) -> nil() 1009.80/291.72 , delete(E, cons(Head, Tail)) -> 1009.80/291.72 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.72 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.72 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.72 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.80/291.72 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.72 , case9(Tail, Head, E, true()) -> true() 1009.80/291.72 , eqs(empty(), empty()) -> T() 1009.80/291.72 , eqs(empty(), stack(E2, S2)) -> F() 1009.80/291.72 , eqs(stack(E1, S1), empty()) -> F() 1009.80/291.72 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.72 and(eqt(E1, E2), eqs(S1, S2)) 1009.80/291.72 , pushs(E1, S1) -> stack(E1, S1) 1009.80/291.72 , pops(stack(E1, S1)) -> S1 1009.80/291.72 , tops(stack(E1, S1)) -> E1 1009.80/291.72 , istops(E1, empty()) -> F() 1009.80/291.72 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.80/291.72 , eqc(nocalls(), nocalls()) -> T() 1009.80/291.72 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.80/291.72 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.80/291.72 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.72 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.80/291.72 , push(E1, E2, nocalls()) -> 1009.80/291.72 calls(E1, stack(E2, empty()), nocalls()) 1009.80/291.72 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.72 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.80/291.72 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.80/291.72 calls(E3, pushs(E2, S1), CS1) } 1009.80/291.72 Obligation: 1009.80/291.72 innermost runtime complexity 1009.80/291.72 Answer: 1009.80/291.72 YES(O(1),O(n^1)) 1009.80/291.72 1009.80/291.72 We estimate the number of application of {15} by applications of 1009.80/291.72 Pre({15}) = {}. Here rules are labeled as follows: 1009.80/291.72 1009.80/291.72 DPs: 1009.80/291.72 { 1: eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.80/291.72 , 2: eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.72 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.72 , 3: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.72 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.72 , 4: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.80/291.72 , 5: element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.72 c_315(element^#(int(s(N1)), T2)) 1009.80/291.72 , 6: record_updates^#(Record, 1009.80/291.72 Name, 1009.80/291.72 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.72 -> 1009.80/291.72 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.72 Name, 1009.80/291.72 Fields), 1009.80/291.72 record_update^#(Record, Name, Field, NewF)) 1009.80/291.72 , 7: locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.72 c_324(locker2_promote_pending^#(Lock, Pending), 1009.80/291.72 locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.72 , 8: case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.72 c_330(record_updates^#(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.72 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.72 , 9: locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) 1009.80/291.72 -> c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.72 , 10: locker2_remove_pending^#(Lock, Client) -> 1009.80/291.72 c_331(record_updates^#(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(pending(), 1009.80/291.72 tuplenil(subtract(record_extract(Lock, 1009.80/291.72 lock(), 1009.80/291.72 pending()), 1009.80/291.72 cons(Client, nil())))), 1009.80/291.72 nil())), 1009.80/291.72 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.72 cons(Client, nil())), 1009.80/291.72 record_extract^#(Lock, lock(), pending())) 1009.80/291.72 , 11: subtract^#(List, cons(Head, Tail)) -> 1009.80/291.72 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.80/291.72 , 12: locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.72 c_334(case1^#(Client, 1009.80/291.72 Resources, 1009.80/291.72 Lock, 1009.80/291.72 member(record_extract(Lock, lock(), resource()), Resources)), 1009.80/291.72 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.80/291.72 record_extract^#(Lock, lock(), resource())) 1009.80/291.72 , 13: case1^#(Client, Resources, Lock, true()) -> 1009.80/291.72 c_336(record_updates^#(Lock, 1009.80/291.72 lock(), 1009.80/291.72 cons(tuple(pending(), 1009.80/291.72 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.72 cons(Client, nil())))), 1009.80/291.72 nil())), 1009.80/291.72 append^#(record_extract(Lock, lock(), pending()), 1009.80/291.72 cons(Client, nil())), 1009.80/291.72 record_extract^#(Lock, lock(), pending())) 1009.80/291.72 , 14: append^#(cons(Head, Tail), List) -> 1009.80/291.72 c_339(append^#(Tail, List)) 1009.80/291.72 , 15: case6^#(Locks, Lock, Resource, false()) -> 1009.80/291.72 c_350(locker2_check_available^#(Resource, Locks)) 1009.80/291.72 , 16: locker2_check_availables^#(cons(Resource, Resources), Locks) 1009.80/291.72 -> 1009.80/291.72 c_353(locker2_check_available^#(Resource, Locks), 1009.80/291.72 locker2_check_availables^#(Resources, Locks)) 1009.80/291.72 , 17: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.72 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.80/291.72 eqt^#(E1, E2), 1009.80/291.72 eqs^#(S1, S2)) 1009.80/291.72 , 18: istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.80/291.72 , 19: eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.72 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.80/291.72 eqt^#(E1, E2), 1009.80/291.72 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.80/291.72 eqs^#(S1, S2), 1009.80/291.72 eqc^#(CS1, CS2)) 1009.80/291.72 , 20: push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.72 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) 1009.80/291.72 , 21: or^#(T(), T()) -> c_1() 1009.80/291.72 , 22: or^#(T(), F()) -> c_2() 1009.80/291.72 , 23: or^#(F(), T()) -> c_3() 1009.80/291.72 , 24: or^#(F(), F()) -> c_4() 1009.80/291.72 , 25: and^#(B, T()) -> c_5() 1009.80/291.72 , 26: and^#(B, F()) -> c_6() 1009.80/291.72 , 27: and^#(T(), B) -> c_7() 1009.80/291.72 , 28: and^#(F(), B) -> c_8() 1009.80/291.72 , 29: imp^#(T(), B) -> c_9() 1009.80/291.72 , 30: imp^#(F(), B) -> c_10() 1009.80/291.72 , 31: not^#(T()) -> c_11() 1009.80/291.72 , 32: not^#(F()) -> c_12() 1009.80/291.72 , 33: if^#(T(), B1, B2) -> c_13() 1009.80/291.72 , 34: if^#(F(), B1, B2) -> c_14() 1009.80/291.72 , 35: eq^#(T(), T()) -> c_15() 1009.80/291.72 , 36: eq^#(T(), F()) -> c_16() 1009.80/291.72 , 37: eq^#(F(), T()) -> c_17() 1009.80/291.72 , 38: eq^#(F(), F()) -> c_18() 1009.80/291.72 , 39: eqt^#(nil(), undefined()) -> c_19() 1009.80/291.72 , 40: eqt^#(nil(), pid(N2)) -> c_20() 1009.80/291.72 , 41: eqt^#(nil(), int(N2)) -> c_21() 1009.80/291.72 , 42: eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.80/291.72 , 43: eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.80/291.72 , 44: eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.80/291.72 , 45: eqt^#(undefined(), nil()) -> c_25() 1009.80/291.72 , 46: eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.80/291.72 , 47: eqt^#(undefined(), a()) -> c_27() 1009.80/291.72 , 48: eqt^#(pid(N1), nil()) -> c_28() 1009.80/291.72 , 49: eqt^#(pid(N1), undefined()) -> c_29() 1009.80/291.72 , 50: eqt^#(pid(N1), int(N2)) -> c_31() 1009.80/291.72 , 51: eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.80/291.72 , 52: eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.80/291.72 , 53: eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.80/291.72 , 54: eqt^#(pid(N1), a()) -> c_35() 1009.80/291.72 , 55: eqt^#(pid(N1), excl()) -> c_36() 1009.80/291.72 , 56: eqt^#(pid(N1), false()) -> c_37() 1009.80/291.72 , 57: eqt^#(pid(N1), lock()) -> c_38() 1009.80/291.72 , 58: eqt^#(pid(N1), locker()) -> c_39() 1009.80/291.72 , 59: eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.80/291.72 , 60: eqt^#(pid(N1), ok()) -> c_41() 1009.80/291.72 , 61: eqt^#(pid(N1), pending()) -> c_42() 1009.80/291.72 , 62: eqt^#(pid(N1), release()) -> c_43() 1009.80/291.72 , 63: eqt^#(pid(N1), request()) -> c_44() 1009.80/291.72 , 64: eqt^#(pid(N1), resource()) -> c_45() 1009.80/291.72 , 65: eqt^#(pid(N1), tag()) -> c_46() 1009.80/291.72 , 66: eqt^#(pid(N1), true()) -> c_47() 1009.80/291.72 , 67: eqt^#(int(N1), nil()) -> c_48() 1009.80/291.72 , 68: eqt^#(int(N1), undefined()) -> c_49() 1009.80/291.72 , 69: eqt^#(int(N1), a()) -> c_50() 1009.80/291.72 , 70: eqt^#(int(N1), excl()) -> c_51() 1009.80/291.72 , 71: eqt^#(int(N1), false()) -> c_52() 1009.80/291.72 , 72: eqt^#(int(N1), lock()) -> c_53() 1009.80/291.72 , 73: eqt^#(int(N1), locker()) -> c_54() 1009.80/291.72 , 74: eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.80/291.72 , 75: eqt^#(int(N1), ok()) -> c_56() 1009.80/291.72 , 76: eqt^#(int(N1), pending()) -> c_57() 1009.80/291.72 , 77: eqt^#(int(N1), release()) -> c_58() 1009.80/291.72 , 78: eqt^#(int(N1), request()) -> c_59() 1009.80/291.72 , 79: eqt^#(int(N1), resource()) -> c_60() 1009.80/291.72 , 80: eqt^#(int(N1), tag()) -> c_61() 1009.80/291.72 , 81: eqt^#(int(N1), true()) -> c_62() 1009.80/291.72 , 82: eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.80/291.72 , 83: eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.80/291.72 , 84: eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.80/291.72 , 85: eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.80/291.72 , 86: eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.80/291.72 , 87: eqt^#(cons(H1, T1), resource()) -> c_69() 1009.80/291.72 , 88: eqt^#(cons(H1, T1), tag()) -> c_70() 1009.80/291.72 , 89: eqt^#(cons(H1, T1), true()) -> c_71() 1009.80/291.72 , 90: eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.80/291.72 , 91: eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.80/291.72 , 92: eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.80/291.72 , 93: eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.80/291.72 , 94: eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.80/291.72 , 95: eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.80/291.72 , 96: eqt^#(tuple(H1, T1), a()) -> c_79() 1009.80/291.72 , 97: eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.80/291.72 , 98: eqt^#(tuple(H1, T1), false()) -> c_81() 1009.80/291.72 , 99: eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.80/291.72 , 100: eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.80/291.72 , 101: eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.80/291.72 , 102: eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.80/291.72 , 103: eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.80/291.72 , 104: eqt^#(tuple(H1, T1), release()) -> c_87() 1009.80/291.72 , 105: eqt^#(tuple(H1, T1), request()) -> c_88() 1009.80/291.72 , 106: eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.80/291.72 , 107: eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.80/291.72 , 108: eqt^#(tuple(H1, T1), true()) -> c_91() 1009.80/291.72 , 109: eqt^#(tuplenil(H1), nil()) -> c_92() 1009.80/291.72 , 110: eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.80/291.72 , 111: eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.80/291.72 , 112: eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.80/291.72 , 113: eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.80/291.72 , 114: eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.80/291.72 , 115: eqt^#(tuplenil(H1), a()) -> c_99() 1009.80/291.72 , 116: eqt^#(tuplenil(H1), excl()) -> c_100() 1009.80/291.72 , 117: eqt^#(tuplenil(H1), false()) -> c_101() 1009.80/291.72 , 118: eqt^#(tuplenil(H1), lock()) -> c_102() 1009.80/291.72 , 119: eqt^#(tuplenil(H1), locker()) -> c_103() 1009.80/291.72 , 120: eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.80/291.72 , 121: eqt^#(tuplenil(H1), ok()) -> c_105() 1009.80/291.72 , 122: eqt^#(tuplenil(H1), pending()) -> c_106() 1009.80/291.72 , 123: eqt^#(tuplenil(H1), release()) -> c_107() 1009.80/291.72 , 124: eqt^#(tuplenil(H1), request()) -> c_108() 1009.80/291.72 , 125: eqt^#(tuplenil(H1), resource()) -> c_109() 1009.80/291.72 , 126: eqt^#(tuplenil(H1), tag()) -> c_110() 1009.80/291.72 , 127: eqt^#(tuplenil(H1), true()) -> c_111() 1009.80/291.72 , 128: eqt^#(a(), nil()) -> c_112() 1009.80/291.72 , 129: eqt^#(a(), undefined()) -> c_113() 1009.80/291.72 , 130: eqt^#(a(), pid(N2)) -> c_114() 1009.80/291.72 , 131: eqt^#(a(), int(N2)) -> c_115() 1009.80/291.72 , 132: eqt^#(a(), cons(H2, T2)) -> c_116() 1009.80/291.72 , 133: eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.80/291.72 , 134: eqt^#(a(), tuplenil(H2)) -> c_118() 1009.80/291.72 , 135: eqt^#(a(), a()) -> c_119() 1009.80/291.72 , 136: eqt^#(a(), excl()) -> c_120() 1009.80/291.72 , 137: eqt^#(a(), false()) -> c_121() 1009.80/291.72 , 138: eqt^#(a(), lock()) -> c_122() 1009.80/291.72 , 139: eqt^#(a(), locker()) -> c_123() 1009.80/291.72 , 140: eqt^#(a(), mcrlrecord()) -> c_124() 1009.80/291.72 , 141: eqt^#(a(), ok()) -> c_125() 1009.80/291.72 , 142: eqt^#(a(), pending()) -> c_126() 1009.80/291.72 , 143: eqt^#(a(), release()) -> c_127() 1009.80/291.72 , 144: eqt^#(a(), request()) -> c_128() 1009.80/291.72 , 145: eqt^#(a(), resource()) -> c_129() 1009.80/291.72 , 146: eqt^#(a(), tag()) -> c_130() 1009.80/291.72 , 147: eqt^#(a(), true()) -> c_131() 1009.80/291.72 , 148: eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.80/291.72 , 149: eqt^#(excl(), nil()) -> c_133() 1009.80/291.72 , 150: eqt^#(excl(), undefined()) -> c_134() 1009.80/291.72 , 151: eqt^#(excl(), pid(N2)) -> c_135() 1009.80/291.72 , 152: eqt^#(excl(), a()) -> c_136() 1009.80/291.72 , 153: eqt^#(excl(), excl()) -> c_137() 1009.80/291.72 , 154: eqt^#(excl(), false()) -> c_138() 1009.80/291.72 , 155: eqt^#(excl(), lock()) -> c_139() 1009.80/291.72 , 156: eqt^#(excl(), locker()) -> c_140() 1009.80/291.72 , 157: eqt^#(excl(), mcrlrecord()) -> c_141() 1009.80/291.72 , 158: eqt^#(excl(), ok()) -> c_142() 1009.80/291.72 , 159: eqt^#(excl(), pending()) -> c_143() 1009.80/291.72 , 160: eqt^#(excl(), release()) -> c_144() 1009.80/291.72 , 161: eqt^#(excl(), request()) -> c_145() 1009.80/291.72 , 162: eqt^#(excl(), resource()) -> c_146() 1009.80/291.72 , 163: eqt^#(excl(), tag()) -> c_147() 1009.80/291.72 , 164: eqt^#(excl(), true()) -> c_148() 1009.80/291.72 , 165: eqt^#(false(), cons(H2, T2)) -> c_149() 1009.80/291.72 , 166: eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.80/291.72 , 167: eqt^#(false(), tuplenil(H2)) -> c_151() 1009.80/291.72 , 168: eqt^#(lock(), nil()) -> c_152() 1009.80/291.72 , 169: eqt^#(lock(), undefined()) -> c_153() 1009.80/291.72 , 170: eqt^#(lock(), pid(N2)) -> c_154() 1009.80/291.72 , 171: eqt^#(lock(), int(N2)) -> c_155() 1009.80/291.72 , 172: eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.80/291.72 , 173: eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.80/291.72 , 174: eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.80/291.72 , 175: eqt^#(lock(), a()) -> c_159() 1009.80/291.72 , 176: eqt^#(lock(), excl()) -> c_160() 1009.80/291.72 , 177: eqt^#(lock(), false()) -> c_161() 1009.80/291.72 , 178: eqt^#(lock(), lock()) -> c_162() 1009.80/291.72 , 179: eqt^#(lock(), locker()) -> c_163() 1009.80/291.72 , 180: eqt^#(lock(), mcrlrecord()) -> c_164() 1009.80/291.72 , 181: eqt^#(lock(), ok()) -> c_165() 1009.80/291.72 , 182: eqt^#(lock(), pending()) -> c_166() 1009.80/291.72 , 183: eqt^#(lock(), release()) -> c_167() 1009.80/291.72 , 184: eqt^#(lock(), request()) -> c_168() 1009.80/291.72 , 185: eqt^#(lock(), resource()) -> c_169() 1009.80/291.72 , 186: eqt^#(lock(), tag()) -> c_170() 1009.80/291.72 , 187: eqt^#(lock(), true()) -> c_171() 1009.80/291.72 , 188: eqt^#(locker(), nil()) -> c_172() 1009.80/291.72 , 189: eqt^#(locker(), undefined()) -> c_173() 1009.80/291.72 , 190: eqt^#(locker(), pid(N2)) -> c_174() 1009.80/291.72 , 191: eqt^#(locker(), int(N2)) -> c_175() 1009.80/291.72 , 192: eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.80/291.72 , 193: eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.80/291.72 , 194: eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.80/291.72 , 195: eqt^#(locker(), a()) -> c_179() 1009.80/291.72 , 196: eqt^#(locker(), excl()) -> c_180() 1009.80/291.72 , 197: eqt^#(locker(), false()) -> c_181() 1009.80/291.72 , 198: eqt^#(locker(), lock()) -> c_182() 1009.80/291.72 , 199: eqt^#(locker(), locker()) -> c_183() 1009.80/291.72 , 200: eqt^#(locker(), mcrlrecord()) -> c_184() 1009.80/291.72 , 201: eqt^#(locker(), ok()) -> c_185() 1009.80/291.72 , 202: eqt^#(locker(), pending()) -> c_186() 1009.80/291.72 , 203: eqt^#(locker(), release()) -> c_187() 1009.80/291.72 , 204: eqt^#(locker(), request()) -> c_188() 1009.80/291.72 , 205: eqt^#(locker(), resource()) -> c_189() 1009.80/291.72 , 206: eqt^#(locker(), tag()) -> c_190() 1009.80/291.72 , 207: eqt^#(locker(), true()) -> c_191() 1009.80/291.72 , 208: eqt^#(mcrlrecord(), nil()) -> c_192() 1009.80/291.72 , 209: eqt^#(mcrlrecord(), a()) -> c_193() 1009.80/291.72 , 210: eqt^#(mcrlrecord(), excl()) -> c_194() 1009.80/291.72 , 211: eqt^#(mcrlrecord(), false()) -> c_195() 1009.80/291.72 , 212: eqt^#(mcrlrecord(), lock()) -> c_196() 1009.80/291.72 , 213: eqt^#(mcrlrecord(), locker()) -> c_197() 1009.80/291.72 , 214: eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.80/291.72 , 215: eqt^#(mcrlrecord(), ok()) -> c_199() 1009.80/291.72 , 216: eqt^#(mcrlrecord(), pending()) -> c_200() 1009.80/291.72 , 217: eqt^#(mcrlrecord(), release()) -> c_201() 1009.80/291.72 , 218: eqt^#(mcrlrecord(), request()) -> c_202() 1009.80/291.72 , 219: eqt^#(mcrlrecord(), resource()) -> c_203() 1009.80/291.72 , 220: eqt^#(ok(), undefined()) -> c_204() 1009.80/291.72 , 221: eqt^#(ok(), pid(N2)) -> c_205() 1009.80/291.72 , 222: eqt^#(ok(), int(N2)) -> c_206() 1009.80/291.72 , 223: eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.80/291.72 , 224: eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.80/291.72 , 225: eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.80/291.72 , 226: eqt^#(ok(), resource()) -> c_210() 1009.80/291.72 , 227: eqt^#(ok(), tag()) -> c_211() 1009.80/291.72 , 228: eqt^#(ok(), true()) -> c_212() 1009.80/291.72 , 229: eqt^#(pending(), nil()) -> c_213() 1009.80/291.72 , 230: eqt^#(pending(), undefined()) -> c_214() 1009.80/291.72 , 231: eqt^#(pending(), pid(N2)) -> c_215() 1009.80/291.72 , 232: eqt^#(pending(), int(N2)) -> c_216() 1009.80/291.72 , 233: eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.80/291.72 , 234: eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.80/291.72 , 235: eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.80/291.72 , 236: eqt^#(pending(), a()) -> c_220() 1009.80/291.72 , 237: eqt^#(pending(), excl()) -> c_221() 1009.80/291.72 , 238: eqt^#(pending(), false()) -> c_222() 1009.80/291.72 , 239: eqt^#(pending(), lock()) -> c_223() 1009.80/291.72 , 240: eqt^#(pending(), locker()) -> c_224() 1009.80/291.72 , 241: eqt^#(pending(), mcrlrecord()) -> c_225() 1009.80/291.72 , 242: eqt^#(pending(), ok()) -> c_226() 1009.80/291.72 , 243: eqt^#(pending(), pending()) -> c_227() 1009.80/291.72 , 244: eqt^#(pending(), release()) -> c_228() 1009.80/291.72 , 245: eqt^#(pending(), request()) -> c_229() 1009.80/291.72 , 246: eqt^#(pending(), resource()) -> c_230() 1009.80/291.72 , 247: eqt^#(pending(), tag()) -> c_231() 1009.80/291.72 , 248: eqt^#(pending(), true()) -> c_232() 1009.80/291.72 , 249: eqt^#(release(), nil()) -> c_233() 1009.80/291.72 , 250: eqt^#(release(), a()) -> c_234() 1009.80/291.72 , 251: eqt^#(release(), excl()) -> c_235() 1009.80/291.72 , 252: eqt^#(release(), false()) -> c_236() 1009.80/291.72 , 253: eqt^#(release(), lock()) -> c_237() 1009.80/291.72 , 254: eqt^#(release(), locker()) -> c_238() 1009.80/291.72 , 255: eqt^#(release(), mcrlrecord()) -> c_239() 1009.80/291.72 , 256: eqt^#(release(), ok()) -> c_240() 1009.80/291.72 , 257: eqt^#(request(), undefined()) -> c_241() 1009.80/291.72 , 258: eqt^#(request(), pid(N2)) -> c_242() 1009.80/291.72 , 259: eqt^#(request(), int(N2)) -> c_243() 1009.80/291.72 , 260: eqt^#(request(), cons(H2, T2)) -> c_244() 1009.80/291.72 , 261: eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.80/291.72 , 262: eqt^#(request(), tuplenil(H2)) -> c_246() 1009.80/291.72 , 263: eqt^#(request(), mcrlrecord()) -> c_247() 1009.80/291.72 , 264: eqt^#(request(), ok()) -> c_248() 1009.80/291.72 , 265: eqt^#(request(), pending()) -> c_249() 1009.80/291.72 , 266: eqt^#(request(), release()) -> c_250() 1009.80/291.72 , 267: eqt^#(request(), request()) -> c_251() 1009.80/291.72 , 268: eqt^#(request(), resource()) -> c_252() 1009.80/291.72 , 269: eqt^#(request(), tag()) -> c_253() 1009.80/291.72 , 270: eqt^#(request(), true()) -> c_254() 1009.80/291.72 , 271: eqt^#(resource(), nil()) -> c_255() 1009.80/291.72 , 272: eqt^#(resource(), undefined()) -> c_256() 1009.80/291.72 , 273: eqt^#(resource(), pid(N2)) -> c_257() 1009.80/291.72 , 274: eqt^#(resource(), int(N2)) -> c_258() 1009.80/291.72 , 275: eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.80/291.72 , 276: eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.80/291.72 , 277: eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.80/291.72 , 278: eqt^#(resource(), a()) -> c_262() 1009.80/291.72 , 279: eqt^#(resource(), excl()) -> c_263() 1009.80/291.72 , 280: eqt^#(resource(), false()) -> c_264() 1009.80/291.72 , 281: eqt^#(resource(), lock()) -> c_265() 1009.80/291.72 , 282: eqt^#(resource(), locker()) -> c_266() 1009.80/291.72 , 283: eqt^#(resource(), mcrlrecord()) -> c_267() 1009.80/291.72 , 284: eqt^#(resource(), ok()) -> c_268() 1009.80/291.72 , 285: eqt^#(resource(), pending()) -> c_269() 1009.80/291.72 , 286: eqt^#(resource(), release()) -> c_270() 1009.80/291.72 , 287: eqt^#(resource(), request()) -> c_271() 1009.80/291.72 , 288: eqt^#(resource(), resource()) -> c_272() 1009.80/291.72 , 289: eqt^#(resource(), tag()) -> c_273() 1009.80/291.72 , 290: eqt^#(resource(), true()) -> c_274() 1009.80/291.72 , 291: eqt^#(tag(), nil()) -> c_275() 1009.80/291.72 , 292: eqt^#(tag(), undefined()) -> c_276() 1009.80/291.72 , 293: eqt^#(tag(), pid(N2)) -> c_277() 1009.80/291.72 , 294: eqt^#(tag(), int(N2)) -> c_278() 1009.80/291.72 , 295: eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.80/291.72 , 296: eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.80/291.72 , 297: eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.80/291.72 , 298: eqt^#(tag(), a()) -> c_282() 1009.80/291.72 , 299: eqt^#(tag(), excl()) -> c_283() 1009.80/291.72 , 300: eqt^#(tag(), false()) -> c_284() 1009.80/291.72 , 301: eqt^#(tag(), lock()) -> c_285() 1009.80/291.72 , 302: eqt^#(tag(), locker()) -> c_286() 1009.80/291.72 , 303: eqt^#(tag(), mcrlrecord()) -> c_287() 1009.80/291.72 , 304: eqt^#(tag(), ok()) -> c_288() 1009.80/291.72 , 305: eqt^#(tag(), pending()) -> c_289() 1009.80/291.72 , 306: eqt^#(tag(), release()) -> c_290() 1009.80/291.72 , 307: eqt^#(tag(), request()) -> c_291() 1009.80/291.72 , 308: eqt^#(tag(), resource()) -> c_292() 1009.80/291.72 , 309: eqt^#(tag(), tag()) -> c_293() 1009.80/291.72 , 310: eqt^#(tag(), true()) -> c_294() 1009.80/291.72 , 311: eqt^#(true(), nil()) -> c_295() 1009.80/291.72 , 312: eqt^#(true(), undefined()) -> c_296() 1009.80/291.72 , 313: eqt^#(true(), pid(N2)) -> c_297() 1009.80/291.72 , 314: eqt^#(true(), int(N2)) -> c_298() 1009.80/291.72 , 315: eqt^#(true(), cons(H2, T2)) -> c_299() 1009.80/291.72 , 316: eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.80/291.72 , 317: eqt^#(true(), tuplenil(H2)) -> c_301() 1009.80/291.72 , 318: eqt^#(true(), a()) -> c_302() 1009.80/291.72 , 319: eqt^#(true(), excl()) -> c_303() 1009.80/291.72 , 320: eqt^#(true(), false()) -> c_304() 1009.80/291.72 , 321: eqt^#(true(), lock()) -> c_305() 1009.80/291.72 , 322: eqt^#(true(), locker()) -> c_306() 1009.80/291.72 , 323: eqt^#(true(), mcrlrecord()) -> c_307() 1009.80/291.72 , 324: eqt^#(true(), ok()) -> c_308() 1009.80/291.72 , 325: eqt^#(true(), pending()) -> c_309() 1009.80/291.72 , 326: eqt^#(true(), release()) -> c_310() 1009.80/291.72 , 327: eqt^#(true(), request()) -> c_311() 1009.80/291.72 , 328: eqt^#(true(), resource()) -> c_312() 1009.80/291.72 , 329: eqt^#(true(), tag()) -> c_313() 1009.80/291.72 , 330: eqt^#(true(), true()) -> c_314() 1009.80/291.72 , 331: element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.80/291.72 , 332: element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.80/291.72 , 333: record_new^#(lock()) -> c_318() 1009.80/291.72 , 334: record_extract^#(tuple(mcrlrecord(), 1009.80/291.72 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.72 lock(), 1009.80/291.72 resource()) 1009.80/291.72 -> c_319() 1009.80/291.72 , 335: record_update^#(tuple(mcrlrecord(), 1009.80/291.72 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.72 lock(), 1009.80/291.72 pending(), 1009.80/291.72 NewF) 1009.80/291.72 -> c_320() 1009.80/291.72 , 336: record_updates^#(Record, Name, nil()) -> c_321() 1009.80/291.72 , 337: locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.80/291.72 , 338: locker2_promote_pending^#(Lock, Client) -> 1009.80/291.72 c_325(case0^#(Client, 1009.80/291.72 Lock, 1009.80/291.72 record_extract(Lock, lock(), pending())), 1009.80/291.72 record_extract^#(Lock, lock(), pending())) 1009.80/291.72 , 339: case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.80/291.72 , 340: locker2_map_claim_lock^#(nil(), Resources, Client) -> 1009.80/291.72 c_326() 1009.80/291.72 , 341: locker2_map_add_pending^#(nil(), Resources, Client) -> 1009.80/291.73 c_328() 1009.80/291.73 , 342: subtract^#(List, nil()) -> c_332() 1009.80/291.73 , 343: delete^#(E, nil()) -> c_355() 1009.80/291.73 , 344: delete^#(E, cons(Head, Tail)) -> 1009.80/291.73 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.80/291.73 , 345: case1^#(Client, Resources, Lock, false()) -> c_335() 1009.80/291.73 , 346: member^#(E, nil()) -> c_337() 1009.80/291.73 , 347: member^#(E, cons(Head, Tail)) -> 1009.80/291.73 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.80/291.73 , 348: case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.80/291.73 , 349: case9^#(Tail, Head, E, true()) -> c_361() 1009.80/291.73 , 350: locker2_release_lock^#(Lock, Client) -> 1009.80/291.73 c_340(case2^#(Client, 1009.80/291.73 Lock, 1009.80/291.73 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.80/291.73 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.80/291.73 record_extract^#(Lock, lock(), excl())) 1009.80/291.73 , 351: case2^#(Client, Lock, true()) -> 1009.80/291.73 c_341(record_updates^#(Lock, 1009.80/291.73 lock(), 1009.80/291.73 cons(tuple(excllock(), excl()), nil()))) 1009.80/291.73 , 352: gen_modtageq^#(Client1, Client2) -> c_342() 1009.80/291.73 , 353: case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.80/291.73 , 354: locker2_obtainables^#(nil(), Client) -> c_344() 1009.80/291.73 , 355: locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.80/291.73 c_345(case5^#(Client, 1009.80/291.73 Locks, 1009.80/291.73 Lock, 1009.80/291.73 member(Client, record_extract(Lock, lock(), pending()))), 1009.80/291.73 member^#(Client, record_extract(Lock, lock(), pending())), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , 356: case5^#(Client, Locks, Lock, false()) -> 1009.80/291.73 c_346(locker2_obtainables^#(Locks, Client)) 1009.80/291.73 , 357: case5^#(Client, Locks, Lock, true()) -> 1009.80/291.73 c_347(locker2_obtainables^#(Locks, Client)) 1009.80/291.73 , 358: locker2_check_available^#(Resource, nil()) -> c_348() 1009.80/291.73 , 359: locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.80/291.73 c_349(case6^#(Locks, 1009.80/291.73 Lock, 1009.80/291.73 Resource, 1009.80/291.73 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.80/291.73 record_extract^#(Lock, lock(), resource())) 1009.80/291.73 , 360: case6^#(Locks, Lock, Resource, true()) -> 1009.80/291.73 c_351(record_extract^#(Lock, lock(), excl()), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , 361: locker2_check_availables^#(nil(), Locks) -> c_352() 1009.80/291.73 , 362: locker2_adduniq^#(nil(), List) -> c_354() 1009.80/291.73 , 363: case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.80/291.73 , 364: case8^#(Tail, Head, E, true()) -> c_358() 1009.80/291.73 , 365: gen_tag^#(Pid) -> c_359() 1009.80/291.73 , 366: eqs^#(empty(), empty()) -> c_362() 1009.80/291.73 , 367: eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.80/291.73 , 368: eqs^#(stack(E1, S1), empty()) -> c_364() 1009.80/291.73 , 369: pushs^#(E1, S1) -> c_366() 1009.80/291.73 , 370: pops^#(stack(E1, S1)) -> c_367() 1009.80/291.73 , 371: tops^#(stack(E1, S1)) -> c_368() 1009.80/291.73 , 372: istops^#(E1, empty()) -> c_369() 1009.80/291.73 , 373: eqc^#(nocalls(), nocalls()) -> c_371() 1009.80/291.73 , 374: eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.80/291.73 , 375: eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.80/291.73 , 376: push^#(E1, E2, nocalls()) -> c_375() 1009.80/291.73 , 377: push1^#(E1, E2, E3, S1, CS1, T()) -> 1009.80/291.73 c_377(pushs^#(E2, S1)) } 1009.80/291.73 1009.80/291.73 We are left with following problem, upon which TcT provides the 1009.80/291.73 certificate YES(O(1),O(n^1)). 1009.80/291.73 1009.80/291.73 Strict DPs: 1009.80/291.73 { eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.80/291.73 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.73 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.73 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.73 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.73 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.80/291.73 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.73 c_315(element^#(int(s(N1)), T2)) 1009.80/291.73 , record_updates^#(Record, 1009.80/291.73 Name, 1009.80/291.73 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.73 -> 1009.80/291.73 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.73 Name, 1009.80/291.73 Fields), 1009.80/291.73 record_update^#(Record, Name, Field, NewF)) 1009.80/291.73 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.73 c_324(locker2_promote_pending^#(Lock, Pending), 1009.80/291.73 locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.73 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.73 c_330(record_updates^#(Lock, 1009.80/291.73 lock(), 1009.80/291.73 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.73 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.73 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.73 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.73 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.73 c_331(record_updates^#(Lock, 1009.80/291.73 lock(), 1009.80/291.73 cons(tuple(pending(), 1009.80/291.73 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.73 cons(Client, nil())))), 1009.80/291.73 nil())), 1009.80/291.73 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.73 cons(Client, nil())), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.73 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.80/291.73 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.73 c_334(case1^#(Client, 1009.80/291.73 Resources, 1009.80/291.73 Lock, 1009.80/291.73 member(record_extract(Lock, lock(), resource()), Resources)), 1009.80/291.73 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.80/291.73 record_extract^#(Lock, lock(), resource())) 1009.80/291.73 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.73 c_336(record_updates^#(Lock, 1009.80/291.73 lock(), 1009.80/291.73 cons(tuple(pending(), 1009.80/291.73 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.73 cons(Client, nil())))), 1009.80/291.73 nil())), 1009.80/291.73 append^#(record_extract(Lock, lock(), pending()), 1009.80/291.73 cons(Client, nil())), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.80/291.73 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.73 c_353(locker2_check_available^#(Resource, Locks), 1009.80/291.73 locker2_check_availables^#(Resources, Locks)) 1009.80/291.73 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.73 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.80/291.73 eqt^#(E1, E2), 1009.80/291.73 eqs^#(S1, S2)) 1009.80/291.73 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.80/291.73 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.73 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.80/291.73 eqt^#(E1, E2), 1009.80/291.73 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.80/291.73 eqs^#(S1, S2), 1009.80/291.73 eqc^#(CS1, CS2)) 1009.80/291.73 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.73 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) } 1009.80/291.73 Weak DPs: 1009.80/291.73 { or^#(T(), T()) -> c_1() 1009.80/291.73 , or^#(T(), F()) -> c_2() 1009.80/291.73 , or^#(F(), T()) -> c_3() 1009.80/291.73 , or^#(F(), F()) -> c_4() 1009.80/291.73 , and^#(B, T()) -> c_5() 1009.80/291.73 , and^#(B, F()) -> c_6() 1009.80/291.73 , and^#(T(), B) -> c_7() 1009.80/291.73 , and^#(F(), B) -> c_8() 1009.80/291.73 , imp^#(T(), B) -> c_9() 1009.80/291.73 , imp^#(F(), B) -> c_10() 1009.80/291.73 , not^#(T()) -> c_11() 1009.80/291.73 , not^#(F()) -> c_12() 1009.80/291.73 , if^#(T(), B1, B2) -> c_13() 1009.80/291.73 , if^#(F(), B1, B2) -> c_14() 1009.80/291.73 , eq^#(T(), T()) -> c_15() 1009.80/291.73 , eq^#(T(), F()) -> c_16() 1009.80/291.73 , eq^#(F(), T()) -> c_17() 1009.80/291.73 , eq^#(F(), F()) -> c_18() 1009.80/291.73 , eqt^#(nil(), undefined()) -> c_19() 1009.80/291.73 , eqt^#(nil(), pid(N2)) -> c_20() 1009.80/291.73 , eqt^#(nil(), int(N2)) -> c_21() 1009.80/291.73 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.80/291.73 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.80/291.73 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.80/291.73 , eqt^#(undefined(), nil()) -> c_25() 1009.80/291.73 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.80/291.73 , eqt^#(undefined(), a()) -> c_27() 1009.80/291.73 , eqt^#(pid(N1), nil()) -> c_28() 1009.80/291.73 , eqt^#(pid(N1), undefined()) -> c_29() 1009.80/291.73 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.80/291.73 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.80/291.73 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.80/291.73 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.80/291.73 , eqt^#(pid(N1), a()) -> c_35() 1009.80/291.73 , eqt^#(pid(N1), excl()) -> c_36() 1009.80/291.73 , eqt^#(pid(N1), false()) -> c_37() 1009.80/291.73 , eqt^#(pid(N1), lock()) -> c_38() 1009.80/291.73 , eqt^#(pid(N1), locker()) -> c_39() 1009.80/291.73 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.80/291.73 , eqt^#(pid(N1), ok()) -> c_41() 1009.80/291.73 , eqt^#(pid(N1), pending()) -> c_42() 1009.80/291.73 , eqt^#(pid(N1), release()) -> c_43() 1009.80/291.73 , eqt^#(pid(N1), request()) -> c_44() 1009.80/291.73 , eqt^#(pid(N1), resource()) -> c_45() 1009.80/291.73 , eqt^#(pid(N1), tag()) -> c_46() 1009.80/291.73 , eqt^#(pid(N1), true()) -> c_47() 1009.80/291.73 , eqt^#(int(N1), nil()) -> c_48() 1009.80/291.73 , eqt^#(int(N1), undefined()) -> c_49() 1009.80/291.73 , eqt^#(int(N1), a()) -> c_50() 1009.80/291.73 , eqt^#(int(N1), excl()) -> c_51() 1009.80/291.73 , eqt^#(int(N1), false()) -> c_52() 1009.80/291.73 , eqt^#(int(N1), lock()) -> c_53() 1009.80/291.73 , eqt^#(int(N1), locker()) -> c_54() 1009.80/291.73 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.80/291.73 , eqt^#(int(N1), ok()) -> c_56() 1009.80/291.73 , eqt^#(int(N1), pending()) -> c_57() 1009.80/291.73 , eqt^#(int(N1), release()) -> c_58() 1009.80/291.73 , eqt^#(int(N1), request()) -> c_59() 1009.80/291.73 , eqt^#(int(N1), resource()) -> c_60() 1009.80/291.73 , eqt^#(int(N1), tag()) -> c_61() 1009.80/291.73 , eqt^#(int(N1), true()) -> c_62() 1009.80/291.73 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.80/291.73 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.80/291.73 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.80/291.73 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.80/291.73 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.80/291.73 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.80/291.73 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.80/291.73 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.80/291.73 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.80/291.73 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.80/291.73 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.80/291.73 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.80/291.73 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.80/291.73 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.80/291.73 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.80/291.73 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.80/291.73 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.80/291.73 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.80/291.73 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.80/291.73 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.80/291.73 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.80/291.73 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.80/291.73 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.80/291.73 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.80/291.73 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.80/291.73 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.80/291.73 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.80/291.73 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.80/291.73 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.80/291.73 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.80/291.73 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.80/291.73 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.80/291.73 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.80/291.73 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.80/291.73 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.80/291.73 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.80/291.73 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.80/291.73 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.80/291.73 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.80/291.73 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.80/291.73 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.80/291.73 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.80/291.73 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.80/291.73 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.80/291.73 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.80/291.73 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.80/291.73 , eqt^#(a(), nil()) -> c_112() 1009.80/291.73 , eqt^#(a(), undefined()) -> c_113() 1009.80/291.73 , eqt^#(a(), pid(N2)) -> c_114() 1009.80/291.73 , eqt^#(a(), int(N2)) -> c_115() 1009.80/291.73 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.80/291.73 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.80/291.73 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.80/291.73 , eqt^#(a(), a()) -> c_119() 1009.80/291.73 , eqt^#(a(), excl()) -> c_120() 1009.80/291.73 , eqt^#(a(), false()) -> c_121() 1009.80/291.73 , eqt^#(a(), lock()) -> c_122() 1009.80/291.73 , eqt^#(a(), locker()) -> c_123() 1009.80/291.73 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.80/291.73 , eqt^#(a(), ok()) -> c_125() 1009.80/291.73 , eqt^#(a(), pending()) -> c_126() 1009.80/291.73 , eqt^#(a(), release()) -> c_127() 1009.80/291.73 , eqt^#(a(), request()) -> c_128() 1009.80/291.73 , eqt^#(a(), resource()) -> c_129() 1009.80/291.73 , eqt^#(a(), tag()) -> c_130() 1009.80/291.73 , eqt^#(a(), true()) -> c_131() 1009.80/291.73 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.80/291.73 , eqt^#(excl(), nil()) -> c_133() 1009.80/291.73 , eqt^#(excl(), undefined()) -> c_134() 1009.80/291.73 , eqt^#(excl(), pid(N2)) -> c_135() 1009.80/291.73 , eqt^#(excl(), a()) -> c_136() 1009.80/291.73 , eqt^#(excl(), excl()) -> c_137() 1009.80/291.73 , eqt^#(excl(), false()) -> c_138() 1009.80/291.73 , eqt^#(excl(), lock()) -> c_139() 1009.80/291.73 , eqt^#(excl(), locker()) -> c_140() 1009.80/291.73 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.80/291.73 , eqt^#(excl(), ok()) -> c_142() 1009.80/291.73 , eqt^#(excl(), pending()) -> c_143() 1009.80/291.73 , eqt^#(excl(), release()) -> c_144() 1009.80/291.73 , eqt^#(excl(), request()) -> c_145() 1009.80/291.73 , eqt^#(excl(), resource()) -> c_146() 1009.80/291.73 , eqt^#(excl(), tag()) -> c_147() 1009.80/291.73 , eqt^#(excl(), true()) -> c_148() 1009.80/291.73 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.80/291.73 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.80/291.73 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.80/291.73 , eqt^#(lock(), nil()) -> c_152() 1009.80/291.73 , eqt^#(lock(), undefined()) -> c_153() 1009.80/291.73 , eqt^#(lock(), pid(N2)) -> c_154() 1009.80/291.73 , eqt^#(lock(), int(N2)) -> c_155() 1009.80/291.73 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.80/291.73 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.80/291.73 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.80/291.73 , eqt^#(lock(), a()) -> c_159() 1009.80/291.73 , eqt^#(lock(), excl()) -> c_160() 1009.80/291.73 , eqt^#(lock(), false()) -> c_161() 1009.80/291.73 , eqt^#(lock(), lock()) -> c_162() 1009.80/291.73 , eqt^#(lock(), locker()) -> c_163() 1009.80/291.73 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.80/291.73 , eqt^#(lock(), ok()) -> c_165() 1009.80/291.73 , eqt^#(lock(), pending()) -> c_166() 1009.80/291.73 , eqt^#(lock(), release()) -> c_167() 1009.80/291.73 , eqt^#(lock(), request()) -> c_168() 1009.80/291.73 , eqt^#(lock(), resource()) -> c_169() 1009.80/291.73 , eqt^#(lock(), tag()) -> c_170() 1009.80/291.73 , eqt^#(lock(), true()) -> c_171() 1009.80/291.73 , eqt^#(locker(), nil()) -> c_172() 1009.80/291.73 , eqt^#(locker(), undefined()) -> c_173() 1009.80/291.73 , eqt^#(locker(), pid(N2)) -> c_174() 1009.80/291.73 , eqt^#(locker(), int(N2)) -> c_175() 1009.80/291.73 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.80/291.73 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.80/291.73 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.80/291.73 , eqt^#(locker(), a()) -> c_179() 1009.80/291.73 , eqt^#(locker(), excl()) -> c_180() 1009.80/291.73 , eqt^#(locker(), false()) -> c_181() 1009.80/291.73 , eqt^#(locker(), lock()) -> c_182() 1009.80/291.73 , eqt^#(locker(), locker()) -> c_183() 1009.80/291.73 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.80/291.73 , eqt^#(locker(), ok()) -> c_185() 1009.80/291.73 , eqt^#(locker(), pending()) -> c_186() 1009.80/291.73 , eqt^#(locker(), release()) -> c_187() 1009.80/291.73 , eqt^#(locker(), request()) -> c_188() 1009.80/291.73 , eqt^#(locker(), resource()) -> c_189() 1009.80/291.73 , eqt^#(locker(), tag()) -> c_190() 1009.80/291.73 , eqt^#(locker(), true()) -> c_191() 1009.80/291.73 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.80/291.73 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.80/291.73 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.80/291.73 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.80/291.73 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.80/291.73 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.80/291.73 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.80/291.73 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.80/291.73 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.80/291.73 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.80/291.73 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.80/291.73 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.80/291.73 , eqt^#(ok(), undefined()) -> c_204() 1009.80/291.73 , eqt^#(ok(), pid(N2)) -> c_205() 1009.80/291.73 , eqt^#(ok(), int(N2)) -> c_206() 1009.80/291.73 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.80/291.73 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.80/291.73 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.80/291.73 , eqt^#(ok(), resource()) -> c_210() 1009.80/291.73 , eqt^#(ok(), tag()) -> c_211() 1009.80/291.73 , eqt^#(ok(), true()) -> c_212() 1009.80/291.73 , eqt^#(pending(), nil()) -> c_213() 1009.80/291.73 , eqt^#(pending(), undefined()) -> c_214() 1009.80/291.73 , eqt^#(pending(), pid(N2)) -> c_215() 1009.80/291.73 , eqt^#(pending(), int(N2)) -> c_216() 1009.80/291.73 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.80/291.73 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.80/291.73 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.80/291.73 , eqt^#(pending(), a()) -> c_220() 1009.80/291.73 , eqt^#(pending(), excl()) -> c_221() 1009.80/291.73 , eqt^#(pending(), false()) -> c_222() 1009.80/291.73 , eqt^#(pending(), lock()) -> c_223() 1009.80/291.73 , eqt^#(pending(), locker()) -> c_224() 1009.80/291.73 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.80/291.73 , eqt^#(pending(), ok()) -> c_226() 1009.80/291.73 , eqt^#(pending(), pending()) -> c_227() 1009.80/291.73 , eqt^#(pending(), release()) -> c_228() 1009.80/291.73 , eqt^#(pending(), request()) -> c_229() 1009.80/291.73 , eqt^#(pending(), resource()) -> c_230() 1009.80/291.73 , eqt^#(pending(), tag()) -> c_231() 1009.80/291.73 , eqt^#(pending(), true()) -> c_232() 1009.80/291.73 , eqt^#(release(), nil()) -> c_233() 1009.80/291.73 , eqt^#(release(), a()) -> c_234() 1009.80/291.73 , eqt^#(release(), excl()) -> c_235() 1009.80/291.73 , eqt^#(release(), false()) -> c_236() 1009.80/291.73 , eqt^#(release(), lock()) -> c_237() 1009.80/291.73 , eqt^#(release(), locker()) -> c_238() 1009.80/291.73 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.80/291.73 , eqt^#(release(), ok()) -> c_240() 1009.80/291.73 , eqt^#(request(), undefined()) -> c_241() 1009.80/291.73 , eqt^#(request(), pid(N2)) -> c_242() 1009.80/291.73 , eqt^#(request(), int(N2)) -> c_243() 1009.80/291.73 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.80/291.73 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.80/291.73 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.80/291.73 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.80/291.73 , eqt^#(request(), ok()) -> c_248() 1009.80/291.73 , eqt^#(request(), pending()) -> c_249() 1009.80/291.73 , eqt^#(request(), release()) -> c_250() 1009.80/291.73 , eqt^#(request(), request()) -> c_251() 1009.80/291.73 , eqt^#(request(), resource()) -> c_252() 1009.80/291.73 , eqt^#(request(), tag()) -> c_253() 1009.80/291.73 , eqt^#(request(), true()) -> c_254() 1009.80/291.73 , eqt^#(resource(), nil()) -> c_255() 1009.80/291.73 , eqt^#(resource(), undefined()) -> c_256() 1009.80/291.73 , eqt^#(resource(), pid(N2)) -> c_257() 1009.80/291.73 , eqt^#(resource(), int(N2)) -> c_258() 1009.80/291.73 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.80/291.73 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.80/291.73 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.80/291.73 , eqt^#(resource(), a()) -> c_262() 1009.80/291.73 , eqt^#(resource(), excl()) -> c_263() 1009.80/291.73 , eqt^#(resource(), false()) -> c_264() 1009.80/291.73 , eqt^#(resource(), lock()) -> c_265() 1009.80/291.73 , eqt^#(resource(), locker()) -> c_266() 1009.80/291.73 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.80/291.73 , eqt^#(resource(), ok()) -> c_268() 1009.80/291.73 , eqt^#(resource(), pending()) -> c_269() 1009.80/291.73 , eqt^#(resource(), release()) -> c_270() 1009.80/291.73 , eqt^#(resource(), request()) -> c_271() 1009.80/291.73 , eqt^#(resource(), resource()) -> c_272() 1009.80/291.73 , eqt^#(resource(), tag()) -> c_273() 1009.80/291.73 , eqt^#(resource(), true()) -> c_274() 1009.80/291.73 , eqt^#(tag(), nil()) -> c_275() 1009.80/291.73 , eqt^#(tag(), undefined()) -> c_276() 1009.80/291.73 , eqt^#(tag(), pid(N2)) -> c_277() 1009.80/291.73 , eqt^#(tag(), int(N2)) -> c_278() 1009.80/291.73 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.80/291.73 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.80/291.73 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.80/291.73 , eqt^#(tag(), a()) -> c_282() 1009.80/291.73 , eqt^#(tag(), excl()) -> c_283() 1009.80/291.73 , eqt^#(tag(), false()) -> c_284() 1009.80/291.73 , eqt^#(tag(), lock()) -> c_285() 1009.80/291.73 , eqt^#(tag(), locker()) -> c_286() 1009.80/291.73 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.80/291.73 , eqt^#(tag(), ok()) -> c_288() 1009.80/291.73 , eqt^#(tag(), pending()) -> c_289() 1009.80/291.73 , eqt^#(tag(), release()) -> c_290() 1009.80/291.73 , eqt^#(tag(), request()) -> c_291() 1009.80/291.73 , eqt^#(tag(), resource()) -> c_292() 1009.80/291.73 , eqt^#(tag(), tag()) -> c_293() 1009.80/291.73 , eqt^#(tag(), true()) -> c_294() 1009.80/291.73 , eqt^#(true(), nil()) -> c_295() 1009.80/291.73 , eqt^#(true(), undefined()) -> c_296() 1009.80/291.73 , eqt^#(true(), pid(N2)) -> c_297() 1009.80/291.73 , eqt^#(true(), int(N2)) -> c_298() 1009.80/291.73 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.80/291.73 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.80/291.73 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.80/291.73 , eqt^#(true(), a()) -> c_302() 1009.80/291.73 , eqt^#(true(), excl()) -> c_303() 1009.80/291.73 , eqt^#(true(), false()) -> c_304() 1009.80/291.73 , eqt^#(true(), lock()) -> c_305() 1009.80/291.73 , eqt^#(true(), locker()) -> c_306() 1009.80/291.73 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.80/291.73 , eqt^#(true(), ok()) -> c_308() 1009.80/291.73 , eqt^#(true(), pending()) -> c_309() 1009.80/291.73 , eqt^#(true(), release()) -> c_310() 1009.80/291.73 , eqt^#(true(), request()) -> c_311() 1009.80/291.73 , eqt^#(true(), resource()) -> c_312() 1009.80/291.73 , eqt^#(true(), tag()) -> c_313() 1009.80/291.73 , eqt^#(true(), true()) -> c_314() 1009.80/291.73 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.80/291.73 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.80/291.73 , record_new^#(lock()) -> c_318() 1009.80/291.73 , record_extract^#(tuple(mcrlrecord(), 1009.80/291.73 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.73 lock(), 1009.80/291.73 resource()) 1009.80/291.73 -> c_319() 1009.80/291.73 , record_update^#(tuple(mcrlrecord(), 1009.80/291.73 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.73 lock(), 1009.80/291.73 pending(), 1009.80/291.73 NewF) 1009.80/291.73 -> c_320() 1009.80/291.73 , record_updates^#(Record, Name, nil()) -> c_321() 1009.80/291.73 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.80/291.73 , locker2_promote_pending^#(Lock, Client) -> 1009.80/291.73 c_325(case0^#(Client, 1009.80/291.73 Lock, 1009.80/291.73 record_extract(Lock, lock(), pending())), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.80/291.73 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.80/291.73 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.80/291.73 , subtract^#(List, nil()) -> c_332() 1009.80/291.73 , delete^#(E, nil()) -> c_355() 1009.80/291.73 , delete^#(E, cons(Head, Tail)) -> 1009.80/291.73 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.80/291.73 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.80/291.73 , member^#(E, nil()) -> c_337() 1009.80/291.73 , member^#(E, cons(Head, Tail)) -> 1009.80/291.73 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.80/291.73 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.80/291.73 , case9^#(Tail, Head, E, true()) -> c_361() 1009.80/291.73 , locker2_release_lock^#(Lock, Client) -> 1009.80/291.73 c_340(case2^#(Client, 1009.80/291.73 Lock, 1009.80/291.73 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.80/291.73 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.80/291.73 record_extract^#(Lock, lock(), excl())) 1009.80/291.73 , case2^#(Client, Lock, true()) -> 1009.80/291.73 c_341(record_updates^#(Lock, 1009.80/291.73 lock(), 1009.80/291.73 cons(tuple(excllock(), excl()), nil()))) 1009.80/291.73 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.80/291.73 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.80/291.73 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.80/291.73 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.80/291.73 c_345(case5^#(Client, 1009.80/291.73 Locks, 1009.80/291.73 Lock, 1009.80/291.73 member(Client, record_extract(Lock, lock(), pending()))), 1009.80/291.73 member^#(Client, record_extract(Lock, lock(), pending())), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , case5^#(Client, Locks, Lock, false()) -> 1009.80/291.73 c_346(locker2_obtainables^#(Locks, Client)) 1009.80/291.73 , case5^#(Client, Locks, Lock, true()) -> 1009.80/291.73 c_347(locker2_obtainables^#(Locks, Client)) 1009.80/291.73 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.80/291.73 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.80/291.73 c_349(case6^#(Locks, 1009.80/291.73 Lock, 1009.80/291.73 Resource, 1009.80/291.73 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.80/291.73 record_extract^#(Lock, lock(), resource())) 1009.80/291.73 , case6^#(Locks, Lock, Resource, false()) -> 1009.80/291.73 c_350(locker2_check_available^#(Resource, Locks)) 1009.80/291.73 , case6^#(Locks, Lock, Resource, true()) -> 1009.80/291.73 c_351(record_extract^#(Lock, lock(), excl()), 1009.80/291.73 record_extract^#(Lock, lock(), pending())) 1009.80/291.73 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.80/291.73 , locker2_adduniq^#(nil(), List) -> c_354() 1009.80/291.73 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.80/291.73 , case8^#(Tail, Head, E, true()) -> c_358() 1009.80/291.73 , gen_tag^#(Pid) -> c_359() 1009.80/291.73 , eqs^#(empty(), empty()) -> c_362() 1009.80/291.73 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.80/291.73 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.80/291.73 , pushs^#(E1, S1) -> c_366() 1009.80/291.73 , pops^#(stack(E1, S1)) -> c_367() 1009.80/291.73 , tops^#(stack(E1, S1)) -> c_368() 1009.80/291.73 , istops^#(E1, empty()) -> c_369() 1009.80/291.73 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.80/291.73 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.80/291.73 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.80/291.73 , push^#(E1, E2, nocalls()) -> c_375() 1009.80/291.73 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.80/291.73 Weak Trs: 1009.80/291.73 { or(T(), T()) -> T() 1009.80/291.73 , or(T(), F()) -> T() 1009.80/291.73 , or(F(), T()) -> T() 1009.80/291.73 , or(F(), F()) -> F() 1009.80/291.73 , and(B, T()) -> B 1009.80/291.73 , and(B, F()) -> F() 1009.80/291.73 , and(T(), B) -> B 1009.80/291.73 , and(F(), B) -> F() 1009.80/291.73 , imp(T(), B) -> B 1009.80/291.73 , imp(F(), B) -> T() 1009.80/291.73 , not(T()) -> F() 1009.80/291.73 , not(F()) -> T() 1009.80/291.73 , if(T(), B1, B2) -> B1 1009.80/291.73 , if(F(), B1, B2) -> B2 1009.80/291.73 , eq(T(), T()) -> T() 1009.80/291.73 , eq(T(), F()) -> F() 1009.80/291.73 , eq(F(), T()) -> F() 1009.80/291.73 , eq(F(), F()) -> T() 1009.80/291.73 , eqt(nil(), undefined()) -> F() 1009.80/291.73 , eqt(nil(), pid(N2)) -> F() 1009.80/291.73 , eqt(nil(), int(N2)) -> F() 1009.80/291.73 , eqt(nil(), cons(H2, T2)) -> F() 1009.80/291.73 , eqt(nil(), tuple(H2, T2)) -> F() 1009.80/291.73 , eqt(nil(), tuplenil(H2)) -> F() 1009.80/291.73 , eqt(undefined(), nil()) -> F() 1009.80/291.73 , eqt(undefined(), tuplenil(H2)) -> F() 1009.80/291.73 , eqt(undefined(), a()) -> F() 1009.80/291.73 , eqt(pid(N1), nil()) -> F() 1009.80/291.73 , eqt(pid(N1), undefined()) -> F() 1009.80/291.73 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.80/291.73 , eqt(pid(N1), int(N2)) -> F() 1009.80/291.74 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(pid(N1), a()) -> F() 1009.80/291.74 , eqt(pid(N1), excl()) -> F() 1009.80/291.74 , eqt(pid(N1), false()) -> F() 1009.80/291.74 , eqt(pid(N1), lock()) -> F() 1009.80/291.74 , eqt(pid(N1), locker()) -> F() 1009.80/291.74 , eqt(pid(N1), mcrlrecord()) -> F() 1009.80/291.74 , eqt(pid(N1), ok()) -> F() 1009.80/291.74 , eqt(pid(N1), pending()) -> F() 1009.80/291.74 , eqt(pid(N1), release()) -> F() 1009.80/291.74 , eqt(pid(N1), request()) -> F() 1009.80/291.74 , eqt(pid(N1), resource()) -> F() 1009.80/291.74 , eqt(pid(N1), tag()) -> F() 1009.80/291.74 , eqt(pid(N1), true()) -> F() 1009.80/291.74 , eqt(int(N1), nil()) -> F() 1009.80/291.74 , eqt(int(N1), undefined()) -> F() 1009.80/291.74 , eqt(int(N1), a()) -> F() 1009.80/291.74 , eqt(int(N1), excl()) -> F() 1009.80/291.74 , eqt(int(N1), false()) -> F() 1009.80/291.74 , eqt(int(N1), lock()) -> F() 1009.80/291.74 , eqt(int(N1), locker()) -> F() 1009.80/291.74 , eqt(int(N1), mcrlrecord()) -> F() 1009.80/291.74 , eqt(int(N1), ok()) -> F() 1009.80/291.74 , eqt(int(N1), pending()) -> F() 1009.80/291.74 , eqt(int(N1), release()) -> F() 1009.80/291.74 , eqt(int(N1), request()) -> F() 1009.80/291.74 , eqt(int(N1), resource()) -> F() 1009.80/291.74 , eqt(int(N1), tag()) -> F() 1009.80/291.74 , eqt(int(N1), true()) -> F() 1009.80/291.74 , eqt(cons(H1, T1), undefined()) -> F() 1009.80/291.74 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.80/291.74 , eqt(cons(H1, T1), int(N2)) -> F() 1009.80/291.74 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.74 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(cons(H1, T1), resource()) -> F() 1009.80/291.74 , eqt(cons(H1, T1), tag()) -> F() 1009.80/291.74 , eqt(cons(H1, T1), true()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), nil()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), undefined()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.74 and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.74 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), a()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), excl()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), false()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), lock()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), locker()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), ok()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), pending()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), release()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), request()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), resource()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), tag()) -> F() 1009.80/291.74 , eqt(tuple(H1, T1), true()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), nil()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), undefined()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.80/291.74 , eqt(tuplenil(H1), int(N2)) -> F() 1009.80/291.74 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.80/291.74 , eqt(tuplenil(H1), a()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), excl()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), false()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), lock()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), locker()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), ok()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), pending()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), release()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), request()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), resource()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), tag()) -> F() 1009.80/291.74 , eqt(tuplenil(H1), true()) -> F() 1009.80/291.74 , eqt(a(), nil()) -> F() 1009.80/291.74 , eqt(a(), undefined()) -> F() 1009.80/291.74 , eqt(a(), pid(N2)) -> F() 1009.80/291.74 , eqt(a(), int(N2)) -> F() 1009.80/291.74 , eqt(a(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(a(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(a(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(a(), a()) -> T() 1009.80/291.74 , eqt(a(), excl()) -> F() 1009.80/291.74 , eqt(a(), false()) -> F() 1009.80/291.74 , eqt(a(), lock()) -> F() 1009.80/291.74 , eqt(a(), locker()) -> F() 1009.80/291.74 , eqt(a(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(a(), ok()) -> F() 1009.80/291.74 , eqt(a(), pending()) -> F() 1009.80/291.74 , eqt(a(), release()) -> F() 1009.80/291.74 , eqt(a(), request()) -> F() 1009.80/291.74 , eqt(a(), resource()) -> F() 1009.80/291.74 , eqt(a(), tag()) -> F() 1009.80/291.74 , eqt(a(), true()) -> F() 1009.80/291.74 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.80/291.74 , eqt(excl(), nil()) -> F() 1009.80/291.74 , eqt(excl(), undefined()) -> F() 1009.80/291.74 , eqt(excl(), pid(N2)) -> F() 1009.80/291.74 , eqt(excl(), a()) -> F() 1009.80/291.74 , eqt(excl(), excl()) -> T() 1009.80/291.74 , eqt(excl(), false()) -> F() 1009.80/291.74 , eqt(excl(), lock()) -> F() 1009.80/291.74 , eqt(excl(), locker()) -> F() 1009.80/291.74 , eqt(excl(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(excl(), ok()) -> F() 1009.80/291.74 , eqt(excl(), pending()) -> F() 1009.80/291.74 , eqt(excl(), release()) -> F() 1009.80/291.74 , eqt(excl(), request()) -> F() 1009.80/291.74 , eqt(excl(), resource()) -> F() 1009.80/291.74 , eqt(excl(), tag()) -> F() 1009.80/291.74 , eqt(excl(), true()) -> F() 1009.80/291.74 , eqt(false(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(false(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(false(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(lock(), nil()) -> F() 1009.80/291.74 , eqt(lock(), undefined()) -> F() 1009.80/291.74 , eqt(lock(), pid(N2)) -> F() 1009.80/291.74 , eqt(lock(), int(N2)) -> F() 1009.80/291.74 , eqt(lock(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(lock(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(lock(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(lock(), a()) -> F() 1009.80/291.74 , eqt(lock(), excl()) -> F() 1009.80/291.74 , eqt(lock(), false()) -> F() 1009.80/291.74 , eqt(lock(), lock()) -> T() 1009.80/291.74 , eqt(lock(), locker()) -> F() 1009.80/291.74 , eqt(lock(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(lock(), ok()) -> F() 1009.80/291.74 , eqt(lock(), pending()) -> F() 1009.80/291.74 , eqt(lock(), release()) -> F() 1009.80/291.74 , eqt(lock(), request()) -> F() 1009.80/291.74 , eqt(lock(), resource()) -> F() 1009.80/291.74 , eqt(lock(), tag()) -> F() 1009.80/291.74 , eqt(lock(), true()) -> F() 1009.80/291.74 , eqt(locker(), nil()) -> F() 1009.80/291.74 , eqt(locker(), undefined()) -> F() 1009.80/291.74 , eqt(locker(), pid(N2)) -> F() 1009.80/291.74 , eqt(locker(), int(N2)) -> F() 1009.80/291.74 , eqt(locker(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(locker(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(locker(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(locker(), a()) -> F() 1009.80/291.74 , eqt(locker(), excl()) -> F() 1009.80/291.74 , eqt(locker(), false()) -> F() 1009.80/291.74 , eqt(locker(), lock()) -> F() 1009.80/291.74 , eqt(locker(), locker()) -> T() 1009.80/291.74 , eqt(locker(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(locker(), ok()) -> F() 1009.80/291.74 , eqt(locker(), pending()) -> F() 1009.80/291.74 , eqt(locker(), release()) -> F() 1009.80/291.74 , eqt(locker(), request()) -> F() 1009.80/291.74 , eqt(locker(), resource()) -> F() 1009.80/291.74 , eqt(locker(), tag()) -> F() 1009.80/291.74 , eqt(locker(), true()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), nil()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), a()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), excl()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), false()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), lock()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), locker()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.80/291.74 , eqt(mcrlrecord(), ok()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), pending()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), release()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), request()) -> F() 1009.80/291.74 , eqt(mcrlrecord(), resource()) -> F() 1009.80/291.74 , eqt(ok(), undefined()) -> F() 1009.80/291.74 , eqt(ok(), pid(N2)) -> F() 1009.80/291.74 , eqt(ok(), int(N2)) -> F() 1009.80/291.74 , eqt(ok(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(ok(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(ok(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(ok(), resource()) -> F() 1009.80/291.74 , eqt(ok(), tag()) -> F() 1009.80/291.74 , eqt(ok(), true()) -> F() 1009.80/291.74 , eqt(pending(), nil()) -> F() 1009.80/291.74 , eqt(pending(), undefined()) -> F() 1009.80/291.74 , eqt(pending(), pid(N2)) -> F() 1009.80/291.74 , eqt(pending(), int(N2)) -> F() 1009.80/291.74 , eqt(pending(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(pending(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(pending(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(pending(), a()) -> F() 1009.80/291.74 , eqt(pending(), excl()) -> F() 1009.80/291.74 , eqt(pending(), false()) -> F() 1009.80/291.74 , eqt(pending(), lock()) -> F() 1009.80/291.74 , eqt(pending(), locker()) -> F() 1009.80/291.74 , eqt(pending(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(pending(), ok()) -> F() 1009.80/291.74 , eqt(pending(), pending()) -> T() 1009.80/291.74 , eqt(pending(), release()) -> F() 1009.80/291.74 , eqt(pending(), request()) -> F() 1009.80/291.74 , eqt(pending(), resource()) -> F() 1009.80/291.74 , eqt(pending(), tag()) -> F() 1009.80/291.74 , eqt(pending(), true()) -> F() 1009.80/291.74 , eqt(release(), nil()) -> F() 1009.80/291.74 , eqt(release(), a()) -> F() 1009.80/291.74 , eqt(release(), excl()) -> F() 1009.80/291.74 , eqt(release(), false()) -> F() 1009.80/291.74 , eqt(release(), lock()) -> F() 1009.80/291.74 , eqt(release(), locker()) -> F() 1009.80/291.74 , eqt(release(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(release(), ok()) -> F() 1009.80/291.74 , eqt(request(), undefined()) -> F() 1009.80/291.74 , eqt(request(), pid(N2)) -> F() 1009.80/291.74 , eqt(request(), int(N2)) -> F() 1009.80/291.74 , eqt(request(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(request(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(request(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(request(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(request(), ok()) -> F() 1009.80/291.74 , eqt(request(), pending()) -> F() 1009.80/291.74 , eqt(request(), release()) -> F() 1009.80/291.74 , eqt(request(), request()) -> T() 1009.80/291.74 , eqt(request(), resource()) -> F() 1009.80/291.74 , eqt(request(), tag()) -> F() 1009.80/291.74 , eqt(request(), true()) -> F() 1009.80/291.74 , eqt(resource(), nil()) -> F() 1009.80/291.74 , eqt(resource(), undefined()) -> F() 1009.80/291.74 , eqt(resource(), pid(N2)) -> F() 1009.80/291.74 , eqt(resource(), int(N2)) -> F() 1009.80/291.74 , eqt(resource(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(resource(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(resource(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(resource(), a()) -> F() 1009.80/291.74 , eqt(resource(), excl()) -> F() 1009.80/291.74 , eqt(resource(), false()) -> F() 1009.80/291.74 , eqt(resource(), lock()) -> F() 1009.80/291.74 , eqt(resource(), locker()) -> F() 1009.80/291.74 , eqt(resource(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(resource(), ok()) -> F() 1009.80/291.74 , eqt(resource(), pending()) -> F() 1009.80/291.74 , eqt(resource(), release()) -> F() 1009.80/291.74 , eqt(resource(), request()) -> F() 1009.80/291.74 , eqt(resource(), resource()) -> T() 1009.80/291.74 , eqt(resource(), tag()) -> F() 1009.80/291.74 , eqt(resource(), true()) -> F() 1009.80/291.74 , eqt(tag(), nil()) -> F() 1009.80/291.74 , eqt(tag(), undefined()) -> F() 1009.80/291.74 , eqt(tag(), pid(N2)) -> F() 1009.80/291.74 , eqt(tag(), int(N2)) -> F() 1009.80/291.74 , eqt(tag(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(tag(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(tag(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(tag(), a()) -> F() 1009.80/291.74 , eqt(tag(), excl()) -> F() 1009.80/291.74 , eqt(tag(), false()) -> F() 1009.80/291.74 , eqt(tag(), lock()) -> F() 1009.80/291.74 , eqt(tag(), locker()) -> F() 1009.80/291.74 , eqt(tag(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(tag(), ok()) -> F() 1009.80/291.74 , eqt(tag(), pending()) -> F() 1009.80/291.74 , eqt(tag(), release()) -> F() 1009.80/291.74 , eqt(tag(), request()) -> F() 1009.80/291.74 , eqt(tag(), resource()) -> F() 1009.80/291.74 , eqt(tag(), tag()) -> T() 1009.80/291.74 , eqt(tag(), true()) -> F() 1009.80/291.74 , eqt(true(), nil()) -> F() 1009.80/291.74 , eqt(true(), undefined()) -> F() 1009.80/291.74 , eqt(true(), pid(N2)) -> F() 1009.80/291.74 , eqt(true(), int(N2)) -> F() 1009.80/291.74 , eqt(true(), cons(H2, T2)) -> F() 1009.80/291.74 , eqt(true(), tuple(H2, T2)) -> F() 1009.80/291.74 , eqt(true(), tuplenil(H2)) -> F() 1009.80/291.74 , eqt(true(), a()) -> F() 1009.80/291.74 , eqt(true(), excl()) -> F() 1009.80/291.74 , eqt(true(), false()) -> F() 1009.80/291.74 , eqt(true(), lock()) -> F() 1009.80/291.74 , eqt(true(), locker()) -> F() 1009.80/291.74 , eqt(true(), mcrlrecord()) -> F() 1009.80/291.74 , eqt(true(), ok()) -> F() 1009.80/291.74 , eqt(true(), pending()) -> F() 1009.80/291.74 , eqt(true(), release()) -> F() 1009.80/291.74 , eqt(true(), request()) -> F() 1009.80/291.74 , eqt(true(), resource()) -> F() 1009.80/291.74 , eqt(true(), tag()) -> F() 1009.80/291.74 , eqt(true(), true()) -> T() 1009.80/291.74 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.80/291.74 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.80/291.74 , element(int(s(0())), tuplenil(T1)) -> T1 1009.80/291.74 , record_new(lock()) -> 1009.80/291.74 tuple(mcrlrecord(), 1009.80/291.74 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.80/291.74 , record_extract(tuple(mcrlrecord(), 1009.80/291.74 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.74 lock(), 1009.80/291.74 resource()) 1009.80/291.74 -> 1009.80/291.74 tuple(mcrlrecord(), 1009.80/291.74 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.74 , record_update(tuple(mcrlrecord(), 1009.80/291.74 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.74 lock(), 1009.80/291.74 pending(), 1009.80/291.74 NewF) 1009.80/291.74 -> 1009.80/291.74 tuple(mcrlrecord(), 1009.80/291.74 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.74 , record_updates(Record, Name, nil()) -> Record 1009.80/291.74 , record_updates(Record, 1009.80/291.74 Name, 1009.80/291.74 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.74 -> 1009.80/291.74 record_updates(record_update(Record, Name, Field, NewF), 1009.80/291.74 Name, 1009.80/291.74 Fields) 1009.80/291.74 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.80/291.74 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.80/291.74 cons(locker2_promote_pending(Lock, Pending), 1009.80/291.74 locker2_map_promote_pending(Locks, Pending)) 1009.80/291.74 , locker2_promote_pending(Lock, Client) -> 1009.80/291.74 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.80/291.74 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.80/291.74 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.80/291.74 cons(locker2_claim_lock(Lock, Resources, Client), 1009.80/291.74 locker2_map_claim_lock(Locks, Resources, Client)) 1009.80/291.74 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.80/291.74 , case0(Client, Lock, MCRLFree0) -> Lock 1009.80/291.74 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.74 record_updates(Lock, 1009.80/291.74 lock(), 1009.80/291.74 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.74 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.80/291.74 , locker2_remove_pending(Lock, Client) -> 1009.80/291.74 record_updates(Lock, 1009.80/291.74 lock(), 1009.80/291.74 cons(tuple(pending(), 1009.80/291.74 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.74 cons(Client, nil())))), 1009.80/291.74 nil())) 1009.80/291.74 , subtract(List, nil()) -> List 1009.80/291.74 , subtract(List, cons(Head, Tail)) -> 1009.80/291.74 subtract(delete(Head, List), Tail) 1009.80/291.74 , locker2_add_pending(Lock, Resources, Client) -> 1009.80/291.74 case1(Client, 1009.80/291.74 Resources, 1009.80/291.74 Lock, 1009.80/291.74 member(record_extract(Lock, lock(), resource()), Resources)) 1009.80/291.74 , case1(Client, Resources, Lock, false()) -> Lock 1009.80/291.74 , case1(Client, Resources, Lock, true()) -> 1009.80/291.74 record_updates(Lock, 1009.80/291.74 lock(), 1009.80/291.74 cons(tuple(pending(), 1009.80/291.74 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.74 cons(Client, nil())))), 1009.80/291.74 nil())) 1009.80/291.74 , member(E, nil()) -> false() 1009.80/291.74 , member(E, cons(Head, Tail)) -> 1009.80/291.74 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.74 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.74 , locker2_release_lock(Lock, Client) -> 1009.80/291.74 case2(Client, 1009.80/291.74 Lock, 1009.80/291.74 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.80/291.74 , case2(Client, Lock, true()) -> 1009.80/291.74 record_updates(Lock, 1009.80/291.74 lock(), 1009.80/291.74 cons(tuple(excllock(), excl()), nil())) 1009.80/291.74 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.80/291.74 , case4(Client, Lock, MCRLFree1) -> false() 1009.80/291.74 , locker2_obtainables(nil(), Client) -> true() 1009.80/291.74 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.80/291.74 case5(Client, 1009.80/291.74 Locks, 1009.80/291.74 Lock, 1009.80/291.74 member(Client, record_extract(Lock, lock(), pending()))) 1009.80/291.74 , case5(Client, Locks, Lock, false()) -> 1009.80/291.74 locker2_obtainables(Locks, Client) 1009.80/291.74 , case5(Client, Locks, Lock, true()) -> 1009.80/291.74 andt(locker2_obtainable(Lock, Client), 1009.80/291.74 locker2_obtainables(Locks, Client)) 1009.80/291.74 , locker2_check_available(Resource, nil()) -> false() 1009.80/291.74 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.80/291.74 case6(Locks, 1009.80/291.74 Lock, 1009.80/291.74 Resource, 1009.80/291.74 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.80/291.74 , case6(Locks, Lock, Resource, false()) -> 1009.80/291.74 locker2_check_available(Resource, Locks) 1009.80/291.74 , case6(Locks, Lock, Resource, true()) -> 1009.80/291.74 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.80/291.74 equal(record_extract(Lock, lock(), pending()), nil())) 1009.80/291.74 , locker2_check_availables(nil(), Locks) -> true() 1009.80/291.74 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.80/291.74 andt(locker2_check_available(Resource, Locks), 1009.80/291.74 locker2_check_availables(Resources, Locks)) 1009.80/291.74 , locker2_adduniq(nil(), List) -> List 1009.80/291.74 , delete(E, nil()) -> nil() 1009.80/291.74 , delete(E, cons(Head, Tail)) -> 1009.80/291.74 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.74 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.74 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.74 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.80/291.74 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.74 , case9(Tail, Head, E, true()) -> true() 1009.80/291.74 , eqs(empty(), empty()) -> T() 1009.80/291.74 , eqs(empty(), stack(E2, S2)) -> F() 1009.80/291.74 , eqs(stack(E1, S1), empty()) -> F() 1009.80/291.74 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.74 and(eqt(E1, E2), eqs(S1, S2)) 1009.80/291.74 , pushs(E1, S1) -> stack(E1, S1) 1009.80/291.74 , pops(stack(E1, S1)) -> S1 1009.80/291.74 , tops(stack(E1, S1)) -> E1 1009.80/291.74 , istops(E1, empty()) -> F() 1009.80/291.74 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.80/291.74 , eqc(nocalls(), nocalls()) -> T() 1009.80/291.74 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.80/291.74 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.80/291.74 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.74 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.80/291.74 , push(E1, E2, nocalls()) -> 1009.80/291.74 calls(E1, stack(E2, empty()), nocalls()) 1009.80/291.74 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.74 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.80/291.74 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.80/291.74 calls(E3, pushs(E2, S1), CS1) } 1009.80/291.74 Obligation: 1009.80/291.74 innermost runtime complexity 1009.80/291.74 Answer: 1009.80/291.74 YES(O(1),O(n^1)) 1009.80/291.74 1009.80/291.74 The following weak DPs constitute a sub-graph of the DG that is 1009.80/291.74 closed under successors. The DPs are removed. 1009.80/291.74 1009.80/291.74 { or^#(T(), T()) -> c_1() 1009.80/291.74 , or^#(T(), F()) -> c_2() 1009.80/291.74 , or^#(F(), T()) -> c_3() 1009.80/291.74 , or^#(F(), F()) -> c_4() 1009.80/291.74 , and^#(B, T()) -> c_5() 1009.80/291.74 , and^#(B, F()) -> c_6() 1009.80/291.74 , and^#(T(), B) -> c_7() 1009.80/291.74 , and^#(F(), B) -> c_8() 1009.80/291.74 , imp^#(T(), B) -> c_9() 1009.80/291.74 , imp^#(F(), B) -> c_10() 1009.80/291.74 , not^#(T()) -> c_11() 1009.80/291.74 , not^#(F()) -> c_12() 1009.80/291.74 , if^#(T(), B1, B2) -> c_13() 1009.80/291.74 , if^#(F(), B1, B2) -> c_14() 1009.80/291.74 , eq^#(T(), T()) -> c_15() 1009.80/291.74 , eq^#(T(), F()) -> c_16() 1009.80/291.74 , eq^#(F(), T()) -> c_17() 1009.80/291.74 , eq^#(F(), F()) -> c_18() 1009.80/291.74 , eqt^#(nil(), undefined()) -> c_19() 1009.80/291.74 , eqt^#(nil(), pid(N2)) -> c_20() 1009.80/291.74 , eqt^#(nil(), int(N2)) -> c_21() 1009.80/291.74 , eqt^#(nil(), cons(H2, T2)) -> c_22() 1009.80/291.74 , eqt^#(nil(), tuple(H2, T2)) -> c_23() 1009.80/291.74 , eqt^#(nil(), tuplenil(H2)) -> c_24() 1009.80/291.74 , eqt^#(undefined(), nil()) -> c_25() 1009.80/291.74 , eqt^#(undefined(), tuplenil(H2)) -> c_26() 1009.80/291.74 , eqt^#(undefined(), a()) -> c_27() 1009.80/291.74 , eqt^#(pid(N1), nil()) -> c_28() 1009.80/291.74 , eqt^#(pid(N1), undefined()) -> c_29() 1009.80/291.74 , eqt^#(pid(N1), int(N2)) -> c_31() 1009.80/291.74 , eqt^#(pid(N1), cons(H2, T2)) -> c_32() 1009.80/291.74 , eqt^#(pid(N1), tuple(H2, T2)) -> c_33() 1009.80/291.74 , eqt^#(pid(N1), tuplenil(H2)) -> c_34() 1009.80/291.74 , eqt^#(pid(N1), a()) -> c_35() 1009.80/291.74 , eqt^#(pid(N1), excl()) -> c_36() 1009.80/291.74 , eqt^#(pid(N1), false()) -> c_37() 1009.80/291.74 , eqt^#(pid(N1), lock()) -> c_38() 1009.80/291.74 , eqt^#(pid(N1), locker()) -> c_39() 1009.80/291.74 , eqt^#(pid(N1), mcrlrecord()) -> c_40() 1009.80/291.74 , eqt^#(pid(N1), ok()) -> c_41() 1009.80/291.74 , eqt^#(pid(N1), pending()) -> c_42() 1009.80/291.74 , eqt^#(pid(N1), release()) -> c_43() 1009.80/291.74 , eqt^#(pid(N1), request()) -> c_44() 1009.80/291.74 , eqt^#(pid(N1), resource()) -> c_45() 1009.80/291.74 , eqt^#(pid(N1), tag()) -> c_46() 1009.80/291.74 , eqt^#(pid(N1), true()) -> c_47() 1009.80/291.74 , eqt^#(int(N1), nil()) -> c_48() 1009.80/291.74 , eqt^#(int(N1), undefined()) -> c_49() 1009.80/291.74 , eqt^#(int(N1), a()) -> c_50() 1009.80/291.74 , eqt^#(int(N1), excl()) -> c_51() 1009.80/291.74 , eqt^#(int(N1), false()) -> c_52() 1009.80/291.74 , eqt^#(int(N1), lock()) -> c_53() 1009.80/291.74 , eqt^#(int(N1), locker()) -> c_54() 1009.80/291.74 , eqt^#(int(N1), mcrlrecord()) -> c_55() 1009.80/291.74 , eqt^#(int(N1), ok()) -> c_56() 1009.80/291.74 , eqt^#(int(N1), pending()) -> c_57() 1009.80/291.74 , eqt^#(int(N1), release()) -> c_58() 1009.80/291.74 , eqt^#(int(N1), request()) -> c_59() 1009.80/291.74 , eqt^#(int(N1), resource()) -> c_60() 1009.80/291.74 , eqt^#(int(N1), tag()) -> c_61() 1009.80/291.74 , eqt^#(int(N1), true()) -> c_62() 1009.80/291.74 , eqt^#(cons(H1, T1), undefined()) -> c_63() 1009.80/291.74 , eqt^#(cons(H1, T1), pid(N2)) -> c_64() 1009.80/291.74 , eqt^#(cons(H1, T1), int(N2)) -> c_65() 1009.80/291.74 , eqt^#(cons(H1, T1), tuple(H2, T2)) -> c_67() 1009.80/291.74 , eqt^#(cons(H1, T1), tuplenil(H2)) -> c_68() 1009.80/291.74 , eqt^#(cons(H1, T1), resource()) -> c_69() 1009.80/291.74 , eqt^#(cons(H1, T1), tag()) -> c_70() 1009.80/291.74 , eqt^#(cons(H1, T1), true()) -> c_71() 1009.80/291.74 , eqt^#(tuple(H1, T1), nil()) -> c_72() 1009.80/291.74 , eqt^#(tuple(H1, T1), undefined()) -> c_73() 1009.80/291.74 , eqt^#(tuple(H1, T1), pid(N2)) -> c_74() 1009.80/291.74 , eqt^#(tuple(H1, T1), int(N2)) -> c_75() 1009.80/291.74 , eqt^#(tuple(H1, T1), cons(H2, T2)) -> c_76() 1009.80/291.74 , eqt^#(tuple(H1, T1), tuplenil(H2)) -> c_78() 1009.80/291.74 , eqt^#(tuple(H1, T1), a()) -> c_79() 1009.80/291.74 , eqt^#(tuple(H1, T1), excl()) -> c_80() 1009.80/291.74 , eqt^#(tuple(H1, T1), false()) -> c_81() 1009.80/291.74 , eqt^#(tuple(H1, T1), lock()) -> c_82() 1009.80/291.74 , eqt^#(tuple(H1, T1), locker()) -> c_83() 1009.80/291.74 , eqt^#(tuple(H1, T1), mcrlrecord()) -> c_84() 1009.80/291.74 , eqt^#(tuple(H1, T1), ok()) -> c_85() 1009.80/291.74 , eqt^#(tuple(H1, T1), pending()) -> c_86() 1009.80/291.74 , eqt^#(tuple(H1, T1), release()) -> c_87() 1009.80/291.74 , eqt^#(tuple(H1, T1), request()) -> c_88() 1009.80/291.74 , eqt^#(tuple(H1, T1), resource()) -> c_89() 1009.80/291.74 , eqt^#(tuple(H1, T1), tag()) -> c_90() 1009.80/291.74 , eqt^#(tuple(H1, T1), true()) -> c_91() 1009.80/291.74 , eqt^#(tuplenil(H1), nil()) -> c_92() 1009.80/291.74 , eqt^#(tuplenil(H1), undefined()) -> c_93() 1009.80/291.74 , eqt^#(tuplenil(H1), pid(N2)) -> c_94() 1009.80/291.74 , eqt^#(tuplenil(H1), int(N2)) -> c_95() 1009.80/291.74 , eqt^#(tuplenil(H1), cons(H2, T2)) -> c_96() 1009.80/291.74 , eqt^#(tuplenil(H1), tuple(H2, T2)) -> c_97() 1009.80/291.74 , eqt^#(tuplenil(H1), a()) -> c_99() 1009.80/291.74 , eqt^#(tuplenil(H1), excl()) -> c_100() 1009.80/291.74 , eqt^#(tuplenil(H1), false()) -> c_101() 1009.80/291.74 , eqt^#(tuplenil(H1), lock()) -> c_102() 1009.80/291.74 , eqt^#(tuplenil(H1), locker()) -> c_103() 1009.80/291.74 , eqt^#(tuplenil(H1), mcrlrecord()) -> c_104() 1009.80/291.74 , eqt^#(tuplenil(H1), ok()) -> c_105() 1009.80/291.74 , eqt^#(tuplenil(H1), pending()) -> c_106() 1009.80/291.74 , eqt^#(tuplenil(H1), release()) -> c_107() 1009.80/291.74 , eqt^#(tuplenil(H1), request()) -> c_108() 1009.80/291.74 , eqt^#(tuplenil(H1), resource()) -> c_109() 1009.80/291.74 , eqt^#(tuplenil(H1), tag()) -> c_110() 1009.80/291.74 , eqt^#(tuplenil(H1), true()) -> c_111() 1009.80/291.74 , eqt^#(a(), nil()) -> c_112() 1009.80/291.74 , eqt^#(a(), undefined()) -> c_113() 1009.80/291.74 , eqt^#(a(), pid(N2)) -> c_114() 1009.80/291.74 , eqt^#(a(), int(N2)) -> c_115() 1009.80/291.74 , eqt^#(a(), cons(H2, T2)) -> c_116() 1009.80/291.74 , eqt^#(a(), tuple(H2, T2)) -> c_117() 1009.80/291.74 , eqt^#(a(), tuplenil(H2)) -> c_118() 1009.80/291.74 , eqt^#(a(), a()) -> c_119() 1009.80/291.74 , eqt^#(a(), excl()) -> c_120() 1009.80/291.74 , eqt^#(a(), false()) -> c_121() 1009.80/291.74 , eqt^#(a(), lock()) -> c_122() 1009.80/291.74 , eqt^#(a(), locker()) -> c_123() 1009.80/291.74 , eqt^#(a(), mcrlrecord()) -> c_124() 1009.80/291.74 , eqt^#(a(), ok()) -> c_125() 1009.80/291.74 , eqt^#(a(), pending()) -> c_126() 1009.80/291.74 , eqt^#(a(), release()) -> c_127() 1009.80/291.74 , eqt^#(a(), request()) -> c_128() 1009.80/291.74 , eqt^#(a(), resource()) -> c_129() 1009.80/291.74 , eqt^#(a(), tag()) -> c_130() 1009.80/291.74 , eqt^#(a(), true()) -> c_131() 1009.80/291.74 , eqt^#(excl(), eqt(false(), int(N2))) -> c_132() 1009.80/291.74 , eqt^#(excl(), nil()) -> c_133() 1009.80/291.74 , eqt^#(excl(), undefined()) -> c_134() 1009.80/291.74 , eqt^#(excl(), pid(N2)) -> c_135() 1009.80/291.74 , eqt^#(excl(), a()) -> c_136() 1009.80/291.74 , eqt^#(excl(), excl()) -> c_137() 1009.80/291.74 , eqt^#(excl(), false()) -> c_138() 1009.80/291.74 , eqt^#(excl(), lock()) -> c_139() 1009.80/291.74 , eqt^#(excl(), locker()) -> c_140() 1009.80/291.74 , eqt^#(excl(), mcrlrecord()) -> c_141() 1009.80/291.74 , eqt^#(excl(), ok()) -> c_142() 1009.80/291.74 , eqt^#(excl(), pending()) -> c_143() 1009.80/291.74 , eqt^#(excl(), release()) -> c_144() 1009.80/291.74 , eqt^#(excl(), request()) -> c_145() 1009.80/291.74 , eqt^#(excl(), resource()) -> c_146() 1009.80/291.74 , eqt^#(excl(), tag()) -> c_147() 1009.80/291.74 , eqt^#(excl(), true()) -> c_148() 1009.80/291.74 , eqt^#(false(), cons(H2, T2)) -> c_149() 1009.80/291.74 , eqt^#(false(), tuple(H2, T2)) -> c_150() 1009.80/291.74 , eqt^#(false(), tuplenil(H2)) -> c_151() 1009.80/291.74 , eqt^#(lock(), nil()) -> c_152() 1009.80/291.74 , eqt^#(lock(), undefined()) -> c_153() 1009.80/291.74 , eqt^#(lock(), pid(N2)) -> c_154() 1009.80/291.74 , eqt^#(lock(), int(N2)) -> c_155() 1009.80/291.74 , eqt^#(lock(), cons(H2, T2)) -> c_156() 1009.80/291.74 , eqt^#(lock(), tuple(H2, T2)) -> c_157() 1009.80/291.74 , eqt^#(lock(), tuplenil(H2)) -> c_158() 1009.80/291.74 , eqt^#(lock(), a()) -> c_159() 1009.80/291.74 , eqt^#(lock(), excl()) -> c_160() 1009.80/291.74 , eqt^#(lock(), false()) -> c_161() 1009.80/291.74 , eqt^#(lock(), lock()) -> c_162() 1009.80/291.74 , eqt^#(lock(), locker()) -> c_163() 1009.80/291.74 , eqt^#(lock(), mcrlrecord()) -> c_164() 1009.80/291.74 , eqt^#(lock(), ok()) -> c_165() 1009.80/291.74 , eqt^#(lock(), pending()) -> c_166() 1009.80/291.74 , eqt^#(lock(), release()) -> c_167() 1009.80/291.74 , eqt^#(lock(), request()) -> c_168() 1009.80/291.74 , eqt^#(lock(), resource()) -> c_169() 1009.80/291.74 , eqt^#(lock(), tag()) -> c_170() 1009.80/291.74 , eqt^#(lock(), true()) -> c_171() 1009.80/291.74 , eqt^#(locker(), nil()) -> c_172() 1009.80/291.74 , eqt^#(locker(), undefined()) -> c_173() 1009.80/291.74 , eqt^#(locker(), pid(N2)) -> c_174() 1009.80/291.74 , eqt^#(locker(), int(N2)) -> c_175() 1009.80/291.74 , eqt^#(locker(), cons(H2, T2)) -> c_176() 1009.80/291.74 , eqt^#(locker(), tuple(H2, T2)) -> c_177() 1009.80/291.74 , eqt^#(locker(), tuplenil(H2)) -> c_178() 1009.80/291.74 , eqt^#(locker(), a()) -> c_179() 1009.80/291.74 , eqt^#(locker(), excl()) -> c_180() 1009.80/291.74 , eqt^#(locker(), false()) -> c_181() 1009.80/291.74 , eqt^#(locker(), lock()) -> c_182() 1009.80/291.74 , eqt^#(locker(), locker()) -> c_183() 1009.80/291.74 , eqt^#(locker(), mcrlrecord()) -> c_184() 1009.80/291.74 , eqt^#(locker(), ok()) -> c_185() 1009.80/291.74 , eqt^#(locker(), pending()) -> c_186() 1009.80/291.74 , eqt^#(locker(), release()) -> c_187() 1009.80/291.74 , eqt^#(locker(), request()) -> c_188() 1009.80/291.74 , eqt^#(locker(), resource()) -> c_189() 1009.80/291.74 , eqt^#(locker(), tag()) -> c_190() 1009.80/291.74 , eqt^#(locker(), true()) -> c_191() 1009.80/291.74 , eqt^#(mcrlrecord(), nil()) -> c_192() 1009.80/291.74 , eqt^#(mcrlrecord(), a()) -> c_193() 1009.80/291.74 , eqt^#(mcrlrecord(), excl()) -> c_194() 1009.80/291.74 , eqt^#(mcrlrecord(), false()) -> c_195() 1009.80/291.74 , eqt^#(mcrlrecord(), lock()) -> c_196() 1009.80/291.74 , eqt^#(mcrlrecord(), locker()) -> c_197() 1009.80/291.74 , eqt^#(mcrlrecord(), mcrlrecord()) -> c_198() 1009.80/291.74 , eqt^#(mcrlrecord(), ok()) -> c_199() 1009.80/291.74 , eqt^#(mcrlrecord(), pending()) -> c_200() 1009.80/291.74 , eqt^#(mcrlrecord(), release()) -> c_201() 1009.80/291.74 , eqt^#(mcrlrecord(), request()) -> c_202() 1009.80/291.74 , eqt^#(mcrlrecord(), resource()) -> c_203() 1009.80/291.74 , eqt^#(ok(), undefined()) -> c_204() 1009.80/291.74 , eqt^#(ok(), pid(N2)) -> c_205() 1009.80/291.74 , eqt^#(ok(), int(N2)) -> c_206() 1009.80/291.74 , eqt^#(ok(), cons(H2, T2)) -> c_207() 1009.80/291.74 , eqt^#(ok(), tuple(H2, T2)) -> c_208() 1009.80/291.74 , eqt^#(ok(), tuplenil(H2)) -> c_209() 1009.80/291.74 , eqt^#(ok(), resource()) -> c_210() 1009.80/291.74 , eqt^#(ok(), tag()) -> c_211() 1009.80/291.74 , eqt^#(ok(), true()) -> c_212() 1009.80/291.74 , eqt^#(pending(), nil()) -> c_213() 1009.80/291.74 , eqt^#(pending(), undefined()) -> c_214() 1009.80/291.74 , eqt^#(pending(), pid(N2)) -> c_215() 1009.80/291.74 , eqt^#(pending(), int(N2)) -> c_216() 1009.80/291.74 , eqt^#(pending(), cons(H2, T2)) -> c_217() 1009.80/291.74 , eqt^#(pending(), tuple(H2, T2)) -> c_218() 1009.80/291.74 , eqt^#(pending(), tuplenil(H2)) -> c_219() 1009.80/291.75 , eqt^#(pending(), a()) -> c_220() 1009.80/291.75 , eqt^#(pending(), excl()) -> c_221() 1009.80/291.75 , eqt^#(pending(), false()) -> c_222() 1009.80/291.75 , eqt^#(pending(), lock()) -> c_223() 1009.80/291.75 , eqt^#(pending(), locker()) -> c_224() 1009.80/291.75 , eqt^#(pending(), mcrlrecord()) -> c_225() 1009.80/291.75 , eqt^#(pending(), ok()) -> c_226() 1009.80/291.75 , eqt^#(pending(), pending()) -> c_227() 1009.80/291.75 , eqt^#(pending(), release()) -> c_228() 1009.80/291.75 , eqt^#(pending(), request()) -> c_229() 1009.80/291.75 , eqt^#(pending(), resource()) -> c_230() 1009.80/291.75 , eqt^#(pending(), tag()) -> c_231() 1009.80/291.75 , eqt^#(pending(), true()) -> c_232() 1009.80/291.75 , eqt^#(release(), nil()) -> c_233() 1009.80/291.75 , eqt^#(release(), a()) -> c_234() 1009.80/291.75 , eqt^#(release(), excl()) -> c_235() 1009.80/291.75 , eqt^#(release(), false()) -> c_236() 1009.80/291.75 , eqt^#(release(), lock()) -> c_237() 1009.80/291.75 , eqt^#(release(), locker()) -> c_238() 1009.80/291.75 , eqt^#(release(), mcrlrecord()) -> c_239() 1009.80/291.75 , eqt^#(release(), ok()) -> c_240() 1009.80/291.75 , eqt^#(request(), undefined()) -> c_241() 1009.80/291.75 , eqt^#(request(), pid(N2)) -> c_242() 1009.80/291.75 , eqt^#(request(), int(N2)) -> c_243() 1009.80/291.75 , eqt^#(request(), cons(H2, T2)) -> c_244() 1009.80/291.75 , eqt^#(request(), tuple(H2, T2)) -> c_245() 1009.80/291.75 , eqt^#(request(), tuplenil(H2)) -> c_246() 1009.80/291.75 , eqt^#(request(), mcrlrecord()) -> c_247() 1009.80/291.75 , eqt^#(request(), ok()) -> c_248() 1009.80/291.75 , eqt^#(request(), pending()) -> c_249() 1009.80/291.75 , eqt^#(request(), release()) -> c_250() 1009.80/291.75 , eqt^#(request(), request()) -> c_251() 1009.80/291.75 , eqt^#(request(), resource()) -> c_252() 1009.80/291.75 , eqt^#(request(), tag()) -> c_253() 1009.80/291.75 , eqt^#(request(), true()) -> c_254() 1009.80/291.75 , eqt^#(resource(), nil()) -> c_255() 1009.80/291.75 , eqt^#(resource(), undefined()) -> c_256() 1009.80/291.75 , eqt^#(resource(), pid(N2)) -> c_257() 1009.80/291.75 , eqt^#(resource(), int(N2)) -> c_258() 1009.80/291.75 , eqt^#(resource(), cons(H2, T2)) -> c_259() 1009.80/291.75 , eqt^#(resource(), tuple(H2, T2)) -> c_260() 1009.80/291.75 , eqt^#(resource(), tuplenil(H2)) -> c_261() 1009.80/291.75 , eqt^#(resource(), a()) -> c_262() 1009.80/291.75 , eqt^#(resource(), excl()) -> c_263() 1009.80/291.75 , eqt^#(resource(), false()) -> c_264() 1009.80/291.75 , eqt^#(resource(), lock()) -> c_265() 1009.80/291.75 , eqt^#(resource(), locker()) -> c_266() 1009.80/291.75 , eqt^#(resource(), mcrlrecord()) -> c_267() 1009.80/291.75 , eqt^#(resource(), ok()) -> c_268() 1009.80/291.75 , eqt^#(resource(), pending()) -> c_269() 1009.80/291.75 , eqt^#(resource(), release()) -> c_270() 1009.80/291.75 , eqt^#(resource(), request()) -> c_271() 1009.80/291.75 , eqt^#(resource(), resource()) -> c_272() 1009.80/291.75 , eqt^#(resource(), tag()) -> c_273() 1009.80/291.75 , eqt^#(resource(), true()) -> c_274() 1009.80/291.75 , eqt^#(tag(), nil()) -> c_275() 1009.80/291.75 , eqt^#(tag(), undefined()) -> c_276() 1009.80/291.75 , eqt^#(tag(), pid(N2)) -> c_277() 1009.80/291.75 , eqt^#(tag(), int(N2)) -> c_278() 1009.80/291.75 , eqt^#(tag(), cons(H2, T2)) -> c_279() 1009.80/291.75 , eqt^#(tag(), tuple(H2, T2)) -> c_280() 1009.80/291.75 , eqt^#(tag(), tuplenil(H2)) -> c_281() 1009.80/291.75 , eqt^#(tag(), a()) -> c_282() 1009.80/291.75 , eqt^#(tag(), excl()) -> c_283() 1009.80/291.75 , eqt^#(tag(), false()) -> c_284() 1009.80/291.75 , eqt^#(tag(), lock()) -> c_285() 1009.80/291.75 , eqt^#(tag(), locker()) -> c_286() 1009.80/291.75 , eqt^#(tag(), mcrlrecord()) -> c_287() 1009.80/291.75 , eqt^#(tag(), ok()) -> c_288() 1009.80/291.75 , eqt^#(tag(), pending()) -> c_289() 1009.80/291.75 , eqt^#(tag(), release()) -> c_290() 1009.80/291.75 , eqt^#(tag(), request()) -> c_291() 1009.80/291.75 , eqt^#(tag(), resource()) -> c_292() 1009.80/291.75 , eqt^#(tag(), tag()) -> c_293() 1009.80/291.75 , eqt^#(tag(), true()) -> c_294() 1009.80/291.75 , eqt^#(true(), nil()) -> c_295() 1009.80/291.75 , eqt^#(true(), undefined()) -> c_296() 1009.80/291.75 , eqt^#(true(), pid(N2)) -> c_297() 1009.80/291.75 , eqt^#(true(), int(N2)) -> c_298() 1009.80/291.75 , eqt^#(true(), cons(H2, T2)) -> c_299() 1009.80/291.75 , eqt^#(true(), tuple(H2, T2)) -> c_300() 1009.80/291.75 , eqt^#(true(), tuplenil(H2)) -> c_301() 1009.80/291.75 , eqt^#(true(), a()) -> c_302() 1009.80/291.75 , eqt^#(true(), excl()) -> c_303() 1009.80/291.75 , eqt^#(true(), false()) -> c_304() 1009.80/291.75 , eqt^#(true(), lock()) -> c_305() 1009.80/291.75 , eqt^#(true(), locker()) -> c_306() 1009.80/291.75 , eqt^#(true(), mcrlrecord()) -> c_307() 1009.80/291.75 , eqt^#(true(), ok()) -> c_308() 1009.80/291.75 , eqt^#(true(), pending()) -> c_309() 1009.80/291.75 , eqt^#(true(), release()) -> c_310() 1009.80/291.75 , eqt^#(true(), request()) -> c_311() 1009.80/291.75 , eqt^#(true(), resource()) -> c_312() 1009.80/291.75 , eqt^#(true(), tag()) -> c_313() 1009.80/291.75 , eqt^#(true(), true()) -> c_314() 1009.80/291.75 , element^#(int(s(0())), tuple(T1, T2)) -> c_316() 1009.80/291.75 , element^#(int(s(0())), tuplenil(T1)) -> c_317() 1009.80/291.75 , record_new^#(lock()) -> c_318() 1009.80/291.75 , record_extract^#(tuple(mcrlrecord(), 1009.80/291.75 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.75 lock(), 1009.80/291.75 resource()) 1009.80/291.75 -> c_319() 1009.80/291.75 , record_update^#(tuple(mcrlrecord(), 1009.80/291.75 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.75 lock(), 1009.80/291.75 pending(), 1009.80/291.75 NewF) 1009.80/291.75 -> c_320() 1009.80/291.75 , record_updates^#(Record, Name, nil()) -> c_321() 1009.80/291.75 , locker2_map_promote_pending^#(nil(), Pending) -> c_323() 1009.80/291.75 , locker2_promote_pending^#(Lock, Client) -> 1009.80/291.75 c_325(case0^#(Client, 1009.80/291.75 Lock, 1009.80/291.75 record_extract(Lock, lock(), pending())), 1009.80/291.75 record_extract^#(Lock, lock(), pending())) 1009.80/291.75 , case0^#(Client, Lock, MCRLFree0) -> c_329() 1009.80/291.75 , locker2_map_claim_lock^#(nil(), Resources, Client) -> c_326() 1009.80/291.75 , locker2_map_add_pending^#(nil(), Resources, Client) -> c_328() 1009.80/291.75 , subtract^#(List, nil()) -> c_332() 1009.80/291.75 , delete^#(E, nil()) -> c_355() 1009.80/291.75 , delete^#(E, cons(Head, Tail)) -> 1009.80/291.75 c_356(case8^#(Tail, Head, E, equal(E, Head))) 1009.80/291.75 , case1^#(Client, Resources, Lock, false()) -> c_335() 1009.80/291.75 , member^#(E, nil()) -> c_337() 1009.80/291.75 , member^#(E, cons(Head, Tail)) -> 1009.80/291.75 c_338(case9^#(Tail, Head, E, equal(E, Head))) 1009.80/291.75 , case9^#(Tail, Head, E, false()) -> c_360(member^#(E, Tail)) 1009.80/291.75 , case9^#(Tail, Head, E, true()) -> c_361() 1009.80/291.75 , locker2_release_lock^#(Lock, Client) -> 1009.80/291.75 c_340(case2^#(Client, 1009.80/291.75 Lock, 1009.80/291.75 gen_modtageq(Client, record_extract(Lock, lock(), excl()))), 1009.80/291.75 gen_modtageq^#(Client, record_extract(Lock, lock(), excl())), 1009.80/291.75 record_extract^#(Lock, lock(), excl())) 1009.80/291.75 , case2^#(Client, Lock, true()) -> 1009.80/291.75 c_341(record_updates^#(Lock, 1009.80/291.75 lock(), 1009.80/291.75 cons(tuple(excllock(), excl()), nil()))) 1009.80/291.75 , gen_modtageq^#(Client1, Client2) -> c_342() 1009.80/291.75 , case4^#(Client, Lock, MCRLFree1) -> c_343() 1009.80/291.75 , locker2_obtainables^#(nil(), Client) -> c_344() 1009.80/291.75 , locker2_obtainables^#(cons(Lock, Locks), Client) -> 1009.80/291.75 c_345(case5^#(Client, 1009.80/291.75 Locks, 1009.80/291.75 Lock, 1009.80/291.75 member(Client, record_extract(Lock, lock(), pending()))), 1009.80/291.75 member^#(Client, record_extract(Lock, lock(), pending())), 1009.80/291.75 record_extract^#(Lock, lock(), pending())) 1009.80/291.75 , case5^#(Client, Locks, Lock, false()) -> 1009.80/291.75 c_346(locker2_obtainables^#(Locks, Client)) 1009.80/291.75 , case5^#(Client, Locks, Lock, true()) -> 1009.80/291.75 c_347(locker2_obtainables^#(Locks, Client)) 1009.80/291.75 , locker2_check_available^#(Resource, nil()) -> c_348() 1009.80/291.75 , locker2_check_available^#(Resource, cons(Lock, Locks)) -> 1009.80/291.75 c_349(case6^#(Locks, 1009.80/291.75 Lock, 1009.80/291.75 Resource, 1009.80/291.75 equal(Resource, record_extract(Lock, lock(), resource()))), 1009.80/291.75 record_extract^#(Lock, lock(), resource())) 1009.80/291.75 , case6^#(Locks, Lock, Resource, false()) -> 1009.80/291.75 c_350(locker2_check_available^#(Resource, Locks)) 1009.80/291.75 , case6^#(Locks, Lock, Resource, true()) -> 1009.80/291.75 c_351(record_extract^#(Lock, lock(), excl()), 1009.80/291.75 record_extract^#(Lock, lock(), pending())) 1009.80/291.75 , locker2_check_availables^#(nil(), Locks) -> c_352() 1009.80/291.75 , locker2_adduniq^#(nil(), List) -> c_354() 1009.80/291.75 , case8^#(Tail, Head, E, false()) -> c_357(delete^#(E, Tail)) 1009.80/291.75 , case8^#(Tail, Head, E, true()) -> c_358() 1009.80/291.75 , gen_tag^#(Pid) -> c_359() 1009.80/291.75 , eqs^#(empty(), empty()) -> c_362() 1009.80/291.75 , eqs^#(empty(), stack(E2, S2)) -> c_363() 1009.80/291.75 , eqs^#(stack(E1, S1), empty()) -> c_364() 1009.80/291.75 , pushs^#(E1, S1) -> c_366() 1009.80/291.75 , pops^#(stack(E1, S1)) -> c_367() 1009.80/291.75 , tops^#(stack(E1, S1)) -> c_368() 1009.80/291.75 , istops^#(E1, empty()) -> c_369() 1009.80/291.75 , eqc^#(nocalls(), nocalls()) -> c_371() 1009.80/291.75 , eqc^#(nocalls(), calls(E2, S2, CS2)) -> c_372() 1009.80/291.75 , eqc^#(calls(E1, S1, CS1), nocalls()) -> c_373() 1009.80/291.75 , push^#(E1, E2, nocalls()) -> c_375() 1009.80/291.75 , push1^#(E1, E2, E3, S1, CS1, T()) -> c_377(pushs^#(E2, S1)) } 1009.80/291.75 1009.80/291.75 We are left with following problem, upon which TcT provides the 1009.80/291.75 certificate YES(O(1),O(n^1)). 1009.80/291.75 1009.80/291.75 Strict DPs: 1009.80/291.75 { eqt^#(pid(N1), pid(N2)) -> c_30(eqt^#(N1, N2)) 1009.80/291.75 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.75 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.75 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.75 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.75 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_98(eqt^#(H1, H2)) 1009.80/291.75 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.75 c_315(element^#(int(s(N1)), T2)) 1009.80/291.75 , record_updates^#(Record, 1009.80/291.75 Name, 1009.80/291.75 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.75 -> 1009.80/291.75 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.75 Name, 1009.80/291.75 Fields), 1009.80/291.75 record_update^#(Record, Name, Field, NewF)) 1009.80/291.75 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.75 c_324(locker2_promote_pending^#(Lock, Pending), 1009.80/291.75 locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.75 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.75 c_330(record_updates^#(Lock, 1009.80/291.75 lock(), 1009.80/291.75 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.75 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.75 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.75 c_327(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.75 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.75 c_331(record_updates^#(Lock, 1009.80/291.75 lock(), 1009.80/291.75 cons(tuple(pending(), 1009.80/291.75 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.75 cons(Client, nil())))), 1009.80/291.75 nil())), 1009.80/291.75 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.75 cons(Client, nil())), 1009.80/291.75 record_extract^#(Lock, lock(), pending())) 1009.80/291.75 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.75 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.80/291.75 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.75 c_334(case1^#(Client, 1009.80/291.75 Resources, 1009.80/291.75 Lock, 1009.80/291.75 member(record_extract(Lock, lock(), resource()), Resources)), 1009.80/291.75 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.80/291.75 record_extract^#(Lock, lock(), resource())) 1009.80/291.75 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.75 c_336(record_updates^#(Lock, 1009.80/291.75 lock(), 1009.80/291.75 cons(tuple(pending(), 1009.80/291.75 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.75 cons(Client, nil())))), 1009.80/291.75 nil())), 1009.80/291.75 append^#(record_extract(Lock, lock(), pending()), 1009.80/291.75 cons(Client, nil())), 1009.80/291.75 record_extract^#(Lock, lock(), pending())) 1009.80/291.75 , append^#(cons(Head, Tail), List) -> c_339(append^#(Tail, List)) 1009.80/291.75 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.75 c_353(locker2_check_available^#(Resource, Locks), 1009.80/291.75 locker2_check_availables^#(Resources, Locks)) 1009.80/291.75 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.75 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.80/291.75 eqt^#(E1, E2), 1009.80/291.75 eqs^#(S1, S2)) 1009.80/291.75 , istops^#(E1, stack(E2, S1)) -> c_370(eqt^#(E1, E2)) 1009.80/291.75 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.75 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.80/291.75 eqt^#(E1, E2), 1009.80/291.75 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.80/291.75 eqs^#(S1, S2), 1009.80/291.75 eqc^#(CS1, CS2)) 1009.80/291.75 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.75 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) } 1009.80/291.75 Weak Trs: 1009.80/291.75 { or(T(), T()) -> T() 1009.80/291.75 , or(T(), F()) -> T() 1009.80/291.75 , or(F(), T()) -> T() 1009.80/291.75 , or(F(), F()) -> F() 1009.80/291.75 , and(B, T()) -> B 1009.80/291.75 , and(B, F()) -> F() 1009.80/291.75 , and(T(), B) -> B 1009.80/291.75 , and(F(), B) -> F() 1009.80/291.75 , imp(T(), B) -> B 1009.80/291.75 , imp(F(), B) -> T() 1009.80/291.75 , not(T()) -> F() 1009.80/291.75 , not(F()) -> T() 1009.80/291.75 , if(T(), B1, B2) -> B1 1009.80/291.75 , if(F(), B1, B2) -> B2 1009.80/291.75 , eq(T(), T()) -> T() 1009.80/291.75 , eq(T(), F()) -> F() 1009.80/291.75 , eq(F(), T()) -> F() 1009.80/291.75 , eq(F(), F()) -> T() 1009.80/291.75 , eqt(nil(), undefined()) -> F() 1009.80/291.75 , eqt(nil(), pid(N2)) -> F() 1009.80/291.75 , eqt(nil(), int(N2)) -> F() 1009.80/291.75 , eqt(nil(), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(nil(), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(nil(), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(undefined(), nil()) -> F() 1009.80/291.75 , eqt(undefined(), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(undefined(), a()) -> F() 1009.80/291.75 , eqt(pid(N1), nil()) -> F() 1009.80/291.75 , eqt(pid(N1), undefined()) -> F() 1009.80/291.75 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.80/291.75 , eqt(pid(N1), int(N2)) -> F() 1009.80/291.75 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(pid(N1), a()) -> F() 1009.80/291.75 , eqt(pid(N1), excl()) -> F() 1009.80/291.75 , eqt(pid(N1), false()) -> F() 1009.80/291.75 , eqt(pid(N1), lock()) -> F() 1009.80/291.75 , eqt(pid(N1), locker()) -> F() 1009.80/291.75 , eqt(pid(N1), mcrlrecord()) -> F() 1009.80/291.75 , eqt(pid(N1), ok()) -> F() 1009.80/291.75 , eqt(pid(N1), pending()) -> F() 1009.80/291.75 , eqt(pid(N1), release()) -> F() 1009.80/291.75 , eqt(pid(N1), request()) -> F() 1009.80/291.75 , eqt(pid(N1), resource()) -> F() 1009.80/291.75 , eqt(pid(N1), tag()) -> F() 1009.80/291.75 , eqt(pid(N1), true()) -> F() 1009.80/291.75 , eqt(int(N1), nil()) -> F() 1009.80/291.75 , eqt(int(N1), undefined()) -> F() 1009.80/291.75 , eqt(int(N1), a()) -> F() 1009.80/291.75 , eqt(int(N1), excl()) -> F() 1009.80/291.75 , eqt(int(N1), false()) -> F() 1009.80/291.75 , eqt(int(N1), lock()) -> F() 1009.80/291.75 , eqt(int(N1), locker()) -> F() 1009.80/291.75 , eqt(int(N1), mcrlrecord()) -> F() 1009.80/291.75 , eqt(int(N1), ok()) -> F() 1009.80/291.75 , eqt(int(N1), pending()) -> F() 1009.80/291.75 , eqt(int(N1), release()) -> F() 1009.80/291.75 , eqt(int(N1), request()) -> F() 1009.80/291.75 , eqt(int(N1), resource()) -> F() 1009.80/291.75 , eqt(int(N1), tag()) -> F() 1009.80/291.75 , eqt(int(N1), true()) -> F() 1009.80/291.75 , eqt(cons(H1, T1), undefined()) -> F() 1009.80/291.75 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.80/291.75 , eqt(cons(H1, T1), int(N2)) -> F() 1009.80/291.75 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.75 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(cons(H1, T1), resource()) -> F() 1009.80/291.75 , eqt(cons(H1, T1), tag()) -> F() 1009.80/291.75 , eqt(cons(H1, T1), true()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), nil()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), undefined()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.75 and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.75 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), a()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), excl()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), false()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), lock()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), locker()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), ok()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), pending()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), release()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), request()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), resource()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), tag()) -> F() 1009.80/291.75 , eqt(tuple(H1, T1), true()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), nil()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), undefined()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.80/291.75 , eqt(tuplenil(H1), int(N2)) -> F() 1009.80/291.75 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.80/291.75 , eqt(tuplenil(H1), a()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), excl()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), false()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), lock()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), locker()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), ok()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), pending()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), release()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), request()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), resource()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), tag()) -> F() 1009.80/291.75 , eqt(tuplenil(H1), true()) -> F() 1009.80/291.75 , eqt(a(), nil()) -> F() 1009.80/291.75 , eqt(a(), undefined()) -> F() 1009.80/291.75 , eqt(a(), pid(N2)) -> F() 1009.80/291.75 , eqt(a(), int(N2)) -> F() 1009.80/291.75 , eqt(a(), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(a(), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(a(), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(a(), a()) -> T() 1009.80/291.75 , eqt(a(), excl()) -> F() 1009.80/291.75 , eqt(a(), false()) -> F() 1009.80/291.75 , eqt(a(), lock()) -> F() 1009.80/291.75 , eqt(a(), locker()) -> F() 1009.80/291.75 , eqt(a(), mcrlrecord()) -> F() 1009.80/291.75 , eqt(a(), ok()) -> F() 1009.80/291.75 , eqt(a(), pending()) -> F() 1009.80/291.75 , eqt(a(), release()) -> F() 1009.80/291.75 , eqt(a(), request()) -> F() 1009.80/291.75 , eqt(a(), resource()) -> F() 1009.80/291.75 , eqt(a(), tag()) -> F() 1009.80/291.75 , eqt(a(), true()) -> F() 1009.80/291.75 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.80/291.75 , eqt(excl(), nil()) -> F() 1009.80/291.75 , eqt(excl(), undefined()) -> F() 1009.80/291.75 , eqt(excl(), pid(N2)) -> F() 1009.80/291.75 , eqt(excl(), a()) -> F() 1009.80/291.75 , eqt(excl(), excl()) -> T() 1009.80/291.75 , eqt(excl(), false()) -> F() 1009.80/291.75 , eqt(excl(), lock()) -> F() 1009.80/291.75 , eqt(excl(), locker()) -> F() 1009.80/291.75 , eqt(excl(), mcrlrecord()) -> F() 1009.80/291.75 , eqt(excl(), ok()) -> F() 1009.80/291.75 , eqt(excl(), pending()) -> F() 1009.80/291.75 , eqt(excl(), release()) -> F() 1009.80/291.75 , eqt(excl(), request()) -> F() 1009.80/291.75 , eqt(excl(), resource()) -> F() 1009.80/291.75 , eqt(excl(), tag()) -> F() 1009.80/291.75 , eqt(excl(), true()) -> F() 1009.80/291.75 , eqt(false(), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(false(), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(false(), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(lock(), nil()) -> F() 1009.80/291.75 , eqt(lock(), undefined()) -> F() 1009.80/291.75 , eqt(lock(), pid(N2)) -> F() 1009.80/291.75 , eqt(lock(), int(N2)) -> F() 1009.80/291.75 , eqt(lock(), cons(H2, T2)) -> F() 1009.80/291.75 , eqt(lock(), tuple(H2, T2)) -> F() 1009.80/291.75 , eqt(lock(), tuplenil(H2)) -> F() 1009.80/291.75 , eqt(lock(), a()) -> F() 1009.80/291.75 , eqt(lock(), excl()) -> F() 1009.80/291.75 , eqt(lock(), false()) -> F() 1009.80/291.75 , eqt(lock(), lock()) -> T() 1009.80/291.75 , eqt(lock(), locker()) -> F() 1009.80/291.75 , eqt(lock(), mcrlrecord()) -> F() 1009.80/291.75 , eqt(lock(), ok()) -> F() 1009.80/291.75 , eqt(lock(), pending()) -> F() 1009.80/291.75 , eqt(lock(), release()) -> F() 1009.80/291.75 , eqt(lock(), request()) -> F() 1009.80/291.75 , eqt(lock(), resource()) -> F() 1009.80/291.75 , eqt(lock(), tag()) -> F() 1009.80/291.75 , eqt(lock(), true()) -> F() 1009.80/291.75 , eqt(locker(), nil()) -> F() 1009.80/291.75 , eqt(locker(), undefined()) -> F() 1009.80/291.75 , eqt(locker(), pid(N2)) -> F() 1009.80/291.76 , eqt(locker(), int(N2)) -> F() 1009.80/291.76 , eqt(locker(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(locker(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(locker(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(locker(), a()) -> F() 1009.80/291.76 , eqt(locker(), excl()) -> F() 1009.80/291.76 , eqt(locker(), false()) -> F() 1009.80/291.76 , eqt(locker(), lock()) -> F() 1009.80/291.76 , eqt(locker(), locker()) -> T() 1009.80/291.76 , eqt(locker(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(locker(), ok()) -> F() 1009.80/291.76 , eqt(locker(), pending()) -> F() 1009.80/291.76 , eqt(locker(), release()) -> F() 1009.80/291.76 , eqt(locker(), request()) -> F() 1009.80/291.76 , eqt(locker(), resource()) -> F() 1009.80/291.76 , eqt(locker(), tag()) -> F() 1009.80/291.76 , eqt(locker(), true()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), nil()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), a()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), excl()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), false()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), lock()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), locker()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.80/291.76 , eqt(mcrlrecord(), ok()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), pending()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), release()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), request()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), resource()) -> F() 1009.80/291.76 , eqt(ok(), undefined()) -> F() 1009.80/291.76 , eqt(ok(), pid(N2)) -> F() 1009.80/291.76 , eqt(ok(), int(N2)) -> F() 1009.80/291.76 , eqt(ok(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(ok(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(ok(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(ok(), resource()) -> F() 1009.80/291.76 , eqt(ok(), tag()) -> F() 1009.80/291.76 , eqt(ok(), true()) -> F() 1009.80/291.76 , eqt(pending(), nil()) -> F() 1009.80/291.76 , eqt(pending(), undefined()) -> F() 1009.80/291.76 , eqt(pending(), pid(N2)) -> F() 1009.80/291.76 , eqt(pending(), int(N2)) -> F() 1009.80/291.76 , eqt(pending(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(pending(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(pending(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(pending(), a()) -> F() 1009.80/291.76 , eqt(pending(), excl()) -> F() 1009.80/291.76 , eqt(pending(), false()) -> F() 1009.80/291.76 , eqt(pending(), lock()) -> F() 1009.80/291.76 , eqt(pending(), locker()) -> F() 1009.80/291.76 , eqt(pending(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(pending(), ok()) -> F() 1009.80/291.76 , eqt(pending(), pending()) -> T() 1009.80/291.76 , eqt(pending(), release()) -> F() 1009.80/291.76 , eqt(pending(), request()) -> F() 1009.80/291.76 , eqt(pending(), resource()) -> F() 1009.80/291.76 , eqt(pending(), tag()) -> F() 1009.80/291.76 , eqt(pending(), true()) -> F() 1009.80/291.76 , eqt(release(), nil()) -> F() 1009.80/291.76 , eqt(release(), a()) -> F() 1009.80/291.76 , eqt(release(), excl()) -> F() 1009.80/291.76 , eqt(release(), false()) -> F() 1009.80/291.76 , eqt(release(), lock()) -> F() 1009.80/291.76 , eqt(release(), locker()) -> F() 1009.80/291.76 , eqt(release(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(release(), ok()) -> F() 1009.80/291.76 , eqt(request(), undefined()) -> F() 1009.80/291.76 , eqt(request(), pid(N2)) -> F() 1009.80/291.76 , eqt(request(), int(N2)) -> F() 1009.80/291.76 , eqt(request(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(request(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(request(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(request(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(request(), ok()) -> F() 1009.80/291.76 , eqt(request(), pending()) -> F() 1009.80/291.76 , eqt(request(), release()) -> F() 1009.80/291.76 , eqt(request(), request()) -> T() 1009.80/291.76 , eqt(request(), resource()) -> F() 1009.80/291.76 , eqt(request(), tag()) -> F() 1009.80/291.76 , eqt(request(), true()) -> F() 1009.80/291.76 , eqt(resource(), nil()) -> F() 1009.80/291.76 , eqt(resource(), undefined()) -> F() 1009.80/291.76 , eqt(resource(), pid(N2)) -> F() 1009.80/291.76 , eqt(resource(), int(N2)) -> F() 1009.80/291.76 , eqt(resource(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(resource(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(resource(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(resource(), a()) -> F() 1009.80/291.76 , eqt(resource(), excl()) -> F() 1009.80/291.76 , eqt(resource(), false()) -> F() 1009.80/291.76 , eqt(resource(), lock()) -> F() 1009.80/291.76 , eqt(resource(), locker()) -> F() 1009.80/291.76 , eqt(resource(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(resource(), ok()) -> F() 1009.80/291.76 , eqt(resource(), pending()) -> F() 1009.80/291.76 , eqt(resource(), release()) -> F() 1009.80/291.76 , eqt(resource(), request()) -> F() 1009.80/291.76 , eqt(resource(), resource()) -> T() 1009.80/291.76 , eqt(resource(), tag()) -> F() 1009.80/291.76 , eqt(resource(), true()) -> F() 1009.80/291.76 , eqt(tag(), nil()) -> F() 1009.80/291.76 , eqt(tag(), undefined()) -> F() 1009.80/291.76 , eqt(tag(), pid(N2)) -> F() 1009.80/291.76 , eqt(tag(), int(N2)) -> F() 1009.80/291.76 , eqt(tag(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(tag(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(tag(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(tag(), a()) -> F() 1009.80/291.76 , eqt(tag(), excl()) -> F() 1009.80/291.76 , eqt(tag(), false()) -> F() 1009.80/291.76 , eqt(tag(), lock()) -> F() 1009.80/291.76 , eqt(tag(), locker()) -> F() 1009.80/291.76 , eqt(tag(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(tag(), ok()) -> F() 1009.80/291.76 , eqt(tag(), pending()) -> F() 1009.80/291.76 , eqt(tag(), release()) -> F() 1009.80/291.76 , eqt(tag(), request()) -> F() 1009.80/291.76 , eqt(tag(), resource()) -> F() 1009.80/291.76 , eqt(tag(), tag()) -> T() 1009.80/291.76 , eqt(tag(), true()) -> F() 1009.80/291.76 , eqt(true(), nil()) -> F() 1009.80/291.76 , eqt(true(), undefined()) -> F() 1009.80/291.76 , eqt(true(), pid(N2)) -> F() 1009.80/291.76 , eqt(true(), int(N2)) -> F() 1009.80/291.76 , eqt(true(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(true(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(true(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(true(), a()) -> F() 1009.80/291.76 , eqt(true(), excl()) -> F() 1009.80/291.76 , eqt(true(), false()) -> F() 1009.80/291.76 , eqt(true(), lock()) -> F() 1009.80/291.76 , eqt(true(), locker()) -> F() 1009.80/291.76 , eqt(true(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(true(), ok()) -> F() 1009.80/291.76 , eqt(true(), pending()) -> F() 1009.80/291.76 , eqt(true(), release()) -> F() 1009.80/291.76 , eqt(true(), request()) -> F() 1009.80/291.76 , eqt(true(), resource()) -> F() 1009.80/291.76 , eqt(true(), tag()) -> F() 1009.80/291.76 , eqt(true(), true()) -> T() 1009.80/291.76 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.80/291.76 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.80/291.76 , element(int(s(0())), tuplenil(T1)) -> T1 1009.80/291.76 , record_new(lock()) -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.80/291.76 , record_extract(tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.76 lock(), 1009.80/291.76 resource()) 1009.80/291.76 -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.76 , record_update(tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.76 lock(), 1009.80/291.76 pending(), 1009.80/291.76 NewF) 1009.80/291.76 -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.76 , record_updates(Record, Name, nil()) -> Record 1009.80/291.76 , record_updates(Record, 1009.80/291.76 Name, 1009.80/291.76 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.76 -> 1009.80/291.76 record_updates(record_update(Record, Name, Field, NewF), 1009.80/291.76 Name, 1009.80/291.76 Fields) 1009.80/291.76 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.80/291.76 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.80/291.76 cons(locker2_promote_pending(Lock, Pending), 1009.80/291.76 locker2_map_promote_pending(Locks, Pending)) 1009.80/291.76 , locker2_promote_pending(Lock, Client) -> 1009.80/291.76 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.80/291.76 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.80/291.76 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.80/291.76 cons(locker2_claim_lock(Lock, Resources, Client), 1009.80/291.76 locker2_map_claim_lock(Locks, Resources, Client)) 1009.80/291.76 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.80/291.76 , case0(Client, Lock, MCRLFree0) -> Lock 1009.80/291.76 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.76 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.80/291.76 , locker2_remove_pending(Lock, Client) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())) 1009.80/291.76 , subtract(List, nil()) -> List 1009.80/291.76 , subtract(List, cons(Head, Tail)) -> 1009.80/291.76 subtract(delete(Head, List), Tail) 1009.80/291.76 , locker2_add_pending(Lock, Resources, Client) -> 1009.80/291.76 case1(Client, 1009.80/291.76 Resources, 1009.80/291.76 Lock, 1009.80/291.76 member(record_extract(Lock, lock(), resource()), Resources)) 1009.80/291.76 , case1(Client, Resources, Lock, false()) -> Lock 1009.80/291.76 , case1(Client, Resources, Lock, true()) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())) 1009.80/291.76 , member(E, nil()) -> false() 1009.80/291.76 , member(E, cons(Head, Tail)) -> 1009.80/291.76 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.76 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.76 , locker2_release_lock(Lock, Client) -> 1009.80/291.76 case2(Client, 1009.80/291.76 Lock, 1009.80/291.76 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.80/291.76 , case2(Client, Lock, true()) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(excllock(), excl()), nil())) 1009.80/291.76 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.80/291.76 , case4(Client, Lock, MCRLFree1) -> false() 1009.80/291.76 , locker2_obtainables(nil(), Client) -> true() 1009.80/291.76 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.80/291.76 case5(Client, 1009.80/291.76 Locks, 1009.80/291.76 Lock, 1009.80/291.76 member(Client, record_extract(Lock, lock(), pending()))) 1009.80/291.76 , case5(Client, Locks, Lock, false()) -> 1009.80/291.76 locker2_obtainables(Locks, Client) 1009.80/291.76 , case5(Client, Locks, Lock, true()) -> 1009.80/291.76 andt(locker2_obtainable(Lock, Client), 1009.80/291.76 locker2_obtainables(Locks, Client)) 1009.80/291.76 , locker2_check_available(Resource, nil()) -> false() 1009.80/291.76 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.80/291.76 case6(Locks, 1009.80/291.76 Lock, 1009.80/291.76 Resource, 1009.80/291.76 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.80/291.76 , case6(Locks, Lock, Resource, false()) -> 1009.80/291.76 locker2_check_available(Resource, Locks) 1009.80/291.76 , case6(Locks, Lock, Resource, true()) -> 1009.80/291.76 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.80/291.76 equal(record_extract(Lock, lock(), pending()), nil())) 1009.80/291.76 , locker2_check_availables(nil(), Locks) -> true() 1009.80/291.76 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.80/291.76 andt(locker2_check_available(Resource, Locks), 1009.80/291.76 locker2_check_availables(Resources, Locks)) 1009.80/291.76 , locker2_adduniq(nil(), List) -> List 1009.80/291.76 , delete(E, nil()) -> nil() 1009.80/291.76 , delete(E, cons(Head, Tail)) -> 1009.80/291.76 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.76 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.76 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.76 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.80/291.76 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.76 , case9(Tail, Head, E, true()) -> true() 1009.80/291.76 , eqs(empty(), empty()) -> T() 1009.80/291.76 , eqs(empty(), stack(E2, S2)) -> F() 1009.80/291.76 , eqs(stack(E1, S1), empty()) -> F() 1009.80/291.76 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.76 and(eqt(E1, E2), eqs(S1, S2)) 1009.80/291.76 , pushs(E1, S1) -> stack(E1, S1) 1009.80/291.76 , pops(stack(E1, S1)) -> S1 1009.80/291.76 , tops(stack(E1, S1)) -> E1 1009.80/291.76 , istops(E1, empty()) -> F() 1009.80/291.76 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.80/291.76 , eqc(nocalls(), nocalls()) -> T() 1009.80/291.76 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.80/291.76 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.80/291.76 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.76 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.80/291.76 , push(E1, E2, nocalls()) -> 1009.80/291.76 calls(E1, stack(E2, empty()), nocalls()) 1009.80/291.76 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.76 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.80/291.76 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.80/291.76 calls(E3, pushs(E2, S1), CS1) } 1009.80/291.76 Obligation: 1009.80/291.76 innermost runtime complexity 1009.80/291.76 Answer: 1009.80/291.76 YES(O(1),O(n^1)) 1009.80/291.76 1009.80/291.76 Due to missing edges in the dependency-graph, the right-hand sides 1009.80/291.76 of following rules could be simplified: 1009.80/291.76 1009.80/291.76 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.76 c_66(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.76 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.76 c_77(and^#(eqt(H1, H2), eqt(T1, T2)), eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.76 , record_updates^#(Record, 1009.80/291.76 Name, 1009.80/291.76 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.76 -> 1009.80/291.76 c_322(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.76 Name, 1009.80/291.76 Fields), 1009.80/291.76 record_update^#(Record, Name, Field, NewF)) 1009.80/291.76 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.76 c_324(locker2_promote_pending^#(Lock, Pending), 1009.80/291.76 locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.76 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.76 c_331(record_updates^#(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())), 1009.80/291.76 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())), 1009.80/291.76 record_extract^#(Lock, lock(), pending())) 1009.80/291.76 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.76 c_333(subtract^#(delete(Head, List), Tail), delete^#(Head, List)) 1009.80/291.76 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.76 c_334(case1^#(Client, 1009.80/291.76 Resources, 1009.80/291.76 Lock, 1009.80/291.76 member(record_extract(Lock, lock(), resource()), Resources)), 1009.80/291.76 member^#(record_extract(Lock, lock(), resource()), Resources), 1009.80/291.76 record_extract^#(Lock, lock(), resource())) 1009.80/291.76 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.76 c_336(record_updates^#(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())), 1009.80/291.76 append^#(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())), 1009.80/291.76 record_extract^#(Lock, lock(), pending())) 1009.80/291.76 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.76 c_353(locker2_check_available^#(Resource, Locks), 1009.80/291.76 locker2_check_availables^#(Resources, Locks)) 1009.80/291.76 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.76 c_365(and^#(eqt(E1, E2), eqs(S1, S2)), 1009.80/291.76 eqt^#(E1, E2), 1009.80/291.76 eqs^#(S1, S2)) 1009.80/291.76 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.76 c_374(and^#(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))), 1009.80/291.76 eqt^#(E1, E2), 1009.80/291.76 and^#(eqs(S1, S2), eqc(CS1, CS2)), 1009.80/291.76 eqs^#(S1, S2), 1009.80/291.76 eqc^#(CS1, CS2)) 1009.80/291.76 , push^#(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.76 c_376(push1^#(E1, E2, E3, S1, CS1, eqt(E1, E3)), eqt^#(E1, E3)) } 1009.80/291.76 1009.80/291.76 We are left with following problem, upon which TcT provides the 1009.80/291.76 certificate YES(O(1),O(n^1)). 1009.80/291.76 1009.80/291.76 Strict DPs: 1009.80/291.76 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.76 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.76 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.76 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.76 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.76 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.76 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.76 c_5(element^#(int(s(N1)), T2)) 1009.80/291.76 , record_updates^#(Record, 1009.80/291.76 Name, 1009.80/291.76 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.76 -> 1009.80/291.76 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.76 Name, 1009.80/291.76 Fields)) 1009.80/291.76 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.76 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.76 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.76 c_8(record_updates^#(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.76 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.76 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.76 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.76 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.76 c_10(record_updates^#(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())), 1009.80/291.76 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil()))) 1009.80/291.76 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.76 c_11(subtract^#(delete(Head, List), Tail)) 1009.80/291.76 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.76 c_12(case1^#(Client, 1009.80/291.76 Resources, 1009.80/291.76 Lock, 1009.80/291.76 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.76 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.76 c_13(record_updates^#(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil()))) 1009.80/291.76 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.76 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.76 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.76 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.76 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.76 , istops^#(E1, stack(E2, S1)) -> c_17(eqt^#(E1, E2)) 1009.80/291.76 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.76 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) 1009.80/291.76 , push^#(E1, E2, calls(E3, S1, CS1)) -> c_19(eqt^#(E1, E3)) } 1009.80/291.76 Weak Trs: 1009.80/291.76 { or(T(), T()) -> T() 1009.80/291.76 , or(T(), F()) -> T() 1009.80/291.76 , or(F(), T()) -> T() 1009.80/291.76 , or(F(), F()) -> F() 1009.80/291.76 , and(B, T()) -> B 1009.80/291.76 , and(B, F()) -> F() 1009.80/291.76 , and(T(), B) -> B 1009.80/291.76 , and(F(), B) -> F() 1009.80/291.76 , imp(T(), B) -> B 1009.80/291.76 , imp(F(), B) -> T() 1009.80/291.76 , not(T()) -> F() 1009.80/291.76 , not(F()) -> T() 1009.80/291.76 , if(T(), B1, B2) -> B1 1009.80/291.76 , if(F(), B1, B2) -> B2 1009.80/291.76 , eq(T(), T()) -> T() 1009.80/291.76 , eq(T(), F()) -> F() 1009.80/291.76 , eq(F(), T()) -> F() 1009.80/291.76 , eq(F(), F()) -> T() 1009.80/291.76 , eqt(nil(), undefined()) -> F() 1009.80/291.76 , eqt(nil(), pid(N2)) -> F() 1009.80/291.76 , eqt(nil(), int(N2)) -> F() 1009.80/291.76 , eqt(nil(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(nil(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(nil(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(undefined(), nil()) -> F() 1009.80/291.76 , eqt(undefined(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(undefined(), a()) -> F() 1009.80/291.76 , eqt(pid(N1), nil()) -> F() 1009.80/291.76 , eqt(pid(N1), undefined()) -> F() 1009.80/291.76 , eqt(pid(N1), pid(N2)) -> eqt(N1, N2) 1009.80/291.76 , eqt(pid(N1), int(N2)) -> F() 1009.80/291.76 , eqt(pid(N1), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(pid(N1), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(pid(N1), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(pid(N1), a()) -> F() 1009.80/291.76 , eqt(pid(N1), excl()) -> F() 1009.80/291.76 , eqt(pid(N1), false()) -> F() 1009.80/291.76 , eqt(pid(N1), lock()) -> F() 1009.80/291.76 , eqt(pid(N1), locker()) -> F() 1009.80/291.76 , eqt(pid(N1), mcrlrecord()) -> F() 1009.80/291.76 , eqt(pid(N1), ok()) -> F() 1009.80/291.76 , eqt(pid(N1), pending()) -> F() 1009.80/291.76 , eqt(pid(N1), release()) -> F() 1009.80/291.76 , eqt(pid(N1), request()) -> F() 1009.80/291.76 , eqt(pid(N1), resource()) -> F() 1009.80/291.76 , eqt(pid(N1), tag()) -> F() 1009.80/291.76 , eqt(pid(N1), true()) -> F() 1009.80/291.76 , eqt(int(N1), nil()) -> F() 1009.80/291.76 , eqt(int(N1), undefined()) -> F() 1009.80/291.76 , eqt(int(N1), a()) -> F() 1009.80/291.76 , eqt(int(N1), excl()) -> F() 1009.80/291.76 , eqt(int(N1), false()) -> F() 1009.80/291.76 , eqt(int(N1), lock()) -> F() 1009.80/291.76 , eqt(int(N1), locker()) -> F() 1009.80/291.76 , eqt(int(N1), mcrlrecord()) -> F() 1009.80/291.76 , eqt(int(N1), ok()) -> F() 1009.80/291.76 , eqt(int(N1), pending()) -> F() 1009.80/291.76 , eqt(int(N1), release()) -> F() 1009.80/291.76 , eqt(int(N1), request()) -> F() 1009.80/291.76 , eqt(int(N1), resource()) -> F() 1009.80/291.76 , eqt(int(N1), tag()) -> F() 1009.80/291.76 , eqt(int(N1), true()) -> F() 1009.80/291.76 , eqt(cons(H1, T1), undefined()) -> F() 1009.80/291.76 , eqt(cons(H1, T1), pid(N2)) -> F() 1009.80/291.76 , eqt(cons(H1, T1), int(N2)) -> F() 1009.80/291.76 , eqt(cons(H1, T1), cons(H2, T2)) -> and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.76 , eqt(cons(H1, T1), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(cons(H1, T1), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(cons(H1, T1), resource()) -> F() 1009.80/291.76 , eqt(cons(H1, T1), tag()) -> F() 1009.80/291.76 , eqt(cons(H1, T1), true()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), nil()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), undefined()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), pid(N2)) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), int(N2)) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.76 and(eqt(H1, H2), eqt(T1, T2)) 1009.80/291.76 , eqt(tuple(H1, T1), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), a()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), excl()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), false()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), lock()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), locker()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), mcrlrecord()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), ok()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), pending()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), release()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), request()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), resource()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), tag()) -> F() 1009.80/291.76 , eqt(tuple(H1, T1), true()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), nil()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), undefined()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), pid(N2)) -> F() 1009.80/291.76 , eqt(tuplenil(H1), int(N2)) -> F() 1009.80/291.76 , eqt(tuplenil(H1), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(tuplenil(H1), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(tuplenil(H1), tuplenil(H2)) -> eqt(H1, H2) 1009.80/291.76 , eqt(tuplenil(H1), a()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), excl()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), false()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), lock()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), locker()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), mcrlrecord()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), ok()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), pending()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), release()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), request()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), resource()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), tag()) -> F() 1009.80/291.76 , eqt(tuplenil(H1), true()) -> F() 1009.80/291.76 , eqt(a(), nil()) -> F() 1009.80/291.76 , eqt(a(), undefined()) -> F() 1009.80/291.76 , eqt(a(), pid(N2)) -> F() 1009.80/291.76 , eqt(a(), int(N2)) -> F() 1009.80/291.76 , eqt(a(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(a(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(a(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(a(), a()) -> T() 1009.80/291.76 , eqt(a(), excl()) -> F() 1009.80/291.76 , eqt(a(), false()) -> F() 1009.80/291.76 , eqt(a(), lock()) -> F() 1009.80/291.76 , eqt(a(), locker()) -> F() 1009.80/291.76 , eqt(a(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(a(), ok()) -> F() 1009.80/291.76 , eqt(a(), pending()) -> F() 1009.80/291.76 , eqt(a(), release()) -> F() 1009.80/291.76 , eqt(a(), request()) -> F() 1009.80/291.76 , eqt(a(), resource()) -> F() 1009.80/291.76 , eqt(a(), tag()) -> F() 1009.80/291.76 , eqt(a(), true()) -> F() 1009.80/291.76 , eqt(excl(), eqt(false(), int(N2))) -> F() 1009.80/291.76 , eqt(excl(), nil()) -> F() 1009.80/291.76 , eqt(excl(), undefined()) -> F() 1009.80/291.76 , eqt(excl(), pid(N2)) -> F() 1009.80/291.76 , eqt(excl(), a()) -> F() 1009.80/291.76 , eqt(excl(), excl()) -> T() 1009.80/291.76 , eqt(excl(), false()) -> F() 1009.80/291.76 , eqt(excl(), lock()) -> F() 1009.80/291.76 , eqt(excl(), locker()) -> F() 1009.80/291.76 , eqt(excl(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(excl(), ok()) -> F() 1009.80/291.76 , eqt(excl(), pending()) -> F() 1009.80/291.76 , eqt(excl(), release()) -> F() 1009.80/291.76 , eqt(excl(), request()) -> F() 1009.80/291.76 , eqt(excl(), resource()) -> F() 1009.80/291.76 , eqt(excl(), tag()) -> F() 1009.80/291.76 , eqt(excl(), true()) -> F() 1009.80/291.76 , eqt(false(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(false(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(false(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(lock(), nil()) -> F() 1009.80/291.76 , eqt(lock(), undefined()) -> F() 1009.80/291.76 , eqt(lock(), pid(N2)) -> F() 1009.80/291.76 , eqt(lock(), int(N2)) -> F() 1009.80/291.76 , eqt(lock(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(lock(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(lock(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(lock(), a()) -> F() 1009.80/291.76 , eqt(lock(), excl()) -> F() 1009.80/291.76 , eqt(lock(), false()) -> F() 1009.80/291.76 , eqt(lock(), lock()) -> T() 1009.80/291.76 , eqt(lock(), locker()) -> F() 1009.80/291.76 , eqt(lock(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(lock(), ok()) -> F() 1009.80/291.76 , eqt(lock(), pending()) -> F() 1009.80/291.76 , eqt(lock(), release()) -> F() 1009.80/291.76 , eqt(lock(), request()) -> F() 1009.80/291.76 , eqt(lock(), resource()) -> F() 1009.80/291.76 , eqt(lock(), tag()) -> F() 1009.80/291.76 , eqt(lock(), true()) -> F() 1009.80/291.76 , eqt(locker(), nil()) -> F() 1009.80/291.76 , eqt(locker(), undefined()) -> F() 1009.80/291.76 , eqt(locker(), pid(N2)) -> F() 1009.80/291.76 , eqt(locker(), int(N2)) -> F() 1009.80/291.76 , eqt(locker(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(locker(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(locker(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(locker(), a()) -> F() 1009.80/291.76 , eqt(locker(), excl()) -> F() 1009.80/291.76 , eqt(locker(), false()) -> F() 1009.80/291.76 , eqt(locker(), lock()) -> F() 1009.80/291.76 , eqt(locker(), locker()) -> T() 1009.80/291.76 , eqt(locker(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(locker(), ok()) -> F() 1009.80/291.76 , eqt(locker(), pending()) -> F() 1009.80/291.76 , eqt(locker(), release()) -> F() 1009.80/291.76 , eqt(locker(), request()) -> F() 1009.80/291.76 , eqt(locker(), resource()) -> F() 1009.80/291.76 , eqt(locker(), tag()) -> F() 1009.80/291.76 , eqt(locker(), true()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), nil()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), a()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), excl()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), false()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), lock()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), locker()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), mcrlrecord()) -> T() 1009.80/291.76 , eqt(mcrlrecord(), ok()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), pending()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), release()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), request()) -> F() 1009.80/291.76 , eqt(mcrlrecord(), resource()) -> F() 1009.80/291.76 , eqt(ok(), undefined()) -> F() 1009.80/291.76 , eqt(ok(), pid(N2)) -> F() 1009.80/291.76 , eqt(ok(), int(N2)) -> F() 1009.80/291.76 , eqt(ok(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(ok(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(ok(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(ok(), resource()) -> F() 1009.80/291.76 , eqt(ok(), tag()) -> F() 1009.80/291.76 , eqt(ok(), true()) -> F() 1009.80/291.76 , eqt(pending(), nil()) -> F() 1009.80/291.76 , eqt(pending(), undefined()) -> F() 1009.80/291.76 , eqt(pending(), pid(N2)) -> F() 1009.80/291.76 , eqt(pending(), int(N2)) -> F() 1009.80/291.76 , eqt(pending(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(pending(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(pending(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(pending(), a()) -> F() 1009.80/291.76 , eqt(pending(), excl()) -> F() 1009.80/291.76 , eqt(pending(), false()) -> F() 1009.80/291.76 , eqt(pending(), lock()) -> F() 1009.80/291.76 , eqt(pending(), locker()) -> F() 1009.80/291.76 , eqt(pending(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(pending(), ok()) -> F() 1009.80/291.76 , eqt(pending(), pending()) -> T() 1009.80/291.76 , eqt(pending(), release()) -> F() 1009.80/291.76 , eqt(pending(), request()) -> F() 1009.80/291.76 , eqt(pending(), resource()) -> F() 1009.80/291.76 , eqt(pending(), tag()) -> F() 1009.80/291.76 , eqt(pending(), true()) -> F() 1009.80/291.76 , eqt(release(), nil()) -> F() 1009.80/291.76 , eqt(release(), a()) -> F() 1009.80/291.76 , eqt(release(), excl()) -> F() 1009.80/291.76 , eqt(release(), false()) -> F() 1009.80/291.76 , eqt(release(), lock()) -> F() 1009.80/291.76 , eqt(release(), locker()) -> F() 1009.80/291.76 , eqt(release(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(release(), ok()) -> F() 1009.80/291.76 , eqt(request(), undefined()) -> F() 1009.80/291.76 , eqt(request(), pid(N2)) -> F() 1009.80/291.76 , eqt(request(), int(N2)) -> F() 1009.80/291.76 , eqt(request(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(request(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(request(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(request(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(request(), ok()) -> F() 1009.80/291.76 , eqt(request(), pending()) -> F() 1009.80/291.76 , eqt(request(), release()) -> F() 1009.80/291.76 , eqt(request(), request()) -> T() 1009.80/291.76 , eqt(request(), resource()) -> F() 1009.80/291.76 , eqt(request(), tag()) -> F() 1009.80/291.76 , eqt(request(), true()) -> F() 1009.80/291.76 , eqt(resource(), nil()) -> F() 1009.80/291.76 , eqt(resource(), undefined()) -> F() 1009.80/291.76 , eqt(resource(), pid(N2)) -> F() 1009.80/291.76 , eqt(resource(), int(N2)) -> F() 1009.80/291.76 , eqt(resource(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(resource(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(resource(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(resource(), a()) -> F() 1009.80/291.76 , eqt(resource(), excl()) -> F() 1009.80/291.76 , eqt(resource(), false()) -> F() 1009.80/291.76 , eqt(resource(), lock()) -> F() 1009.80/291.76 , eqt(resource(), locker()) -> F() 1009.80/291.76 , eqt(resource(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(resource(), ok()) -> F() 1009.80/291.76 , eqt(resource(), pending()) -> F() 1009.80/291.76 , eqt(resource(), release()) -> F() 1009.80/291.76 , eqt(resource(), request()) -> F() 1009.80/291.76 , eqt(resource(), resource()) -> T() 1009.80/291.76 , eqt(resource(), tag()) -> F() 1009.80/291.76 , eqt(resource(), true()) -> F() 1009.80/291.76 , eqt(tag(), nil()) -> F() 1009.80/291.76 , eqt(tag(), undefined()) -> F() 1009.80/291.76 , eqt(tag(), pid(N2)) -> F() 1009.80/291.76 , eqt(tag(), int(N2)) -> F() 1009.80/291.76 , eqt(tag(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(tag(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(tag(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(tag(), a()) -> F() 1009.80/291.76 , eqt(tag(), excl()) -> F() 1009.80/291.76 , eqt(tag(), false()) -> F() 1009.80/291.76 , eqt(tag(), lock()) -> F() 1009.80/291.76 , eqt(tag(), locker()) -> F() 1009.80/291.76 , eqt(tag(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(tag(), ok()) -> F() 1009.80/291.76 , eqt(tag(), pending()) -> F() 1009.80/291.76 , eqt(tag(), release()) -> F() 1009.80/291.76 , eqt(tag(), request()) -> F() 1009.80/291.76 , eqt(tag(), resource()) -> F() 1009.80/291.76 , eqt(tag(), tag()) -> T() 1009.80/291.76 , eqt(tag(), true()) -> F() 1009.80/291.76 , eqt(true(), nil()) -> F() 1009.80/291.76 , eqt(true(), undefined()) -> F() 1009.80/291.76 , eqt(true(), pid(N2)) -> F() 1009.80/291.76 , eqt(true(), int(N2)) -> F() 1009.80/291.76 , eqt(true(), cons(H2, T2)) -> F() 1009.80/291.76 , eqt(true(), tuple(H2, T2)) -> F() 1009.80/291.76 , eqt(true(), tuplenil(H2)) -> F() 1009.80/291.76 , eqt(true(), a()) -> F() 1009.80/291.76 , eqt(true(), excl()) -> F() 1009.80/291.76 , eqt(true(), false()) -> F() 1009.80/291.76 , eqt(true(), lock()) -> F() 1009.80/291.76 , eqt(true(), locker()) -> F() 1009.80/291.76 , eqt(true(), mcrlrecord()) -> F() 1009.80/291.76 , eqt(true(), ok()) -> F() 1009.80/291.76 , eqt(true(), pending()) -> F() 1009.80/291.76 , eqt(true(), release()) -> F() 1009.80/291.76 , eqt(true(), request()) -> F() 1009.80/291.76 , eqt(true(), resource()) -> F() 1009.80/291.76 , eqt(true(), tag()) -> F() 1009.80/291.76 , eqt(true(), true()) -> T() 1009.80/291.76 , element(int(s(s(N1))), tuple(T1, T2)) -> element(int(s(N1)), T2) 1009.80/291.76 , element(int(s(0())), tuple(T1, T2)) -> T1 1009.80/291.76 , element(int(s(0())), tuplenil(T1)) -> T1 1009.80/291.76 , record_new(lock()) -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(undefined(), tuple(nil(), tuplenil(nil()))))) 1009.80/291.76 , record_extract(tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.76 lock(), 1009.80/291.76 resource()) 1009.80/291.76 -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.76 , record_update(tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.76 lock(), 1009.80/291.76 pending(), 1009.80/291.76 NewF) 1009.80/291.76 -> 1009.80/291.76 tuple(mcrlrecord(), 1009.80/291.76 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.76 , record_updates(Record, Name, nil()) -> Record 1009.80/291.76 , record_updates(Record, 1009.80/291.76 Name, 1009.80/291.76 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.76 -> 1009.80/291.76 record_updates(record_update(Record, Name, Field, NewF), 1009.80/291.76 Name, 1009.80/291.76 Fields) 1009.80/291.76 , locker2_map_promote_pending(nil(), Pending) -> nil() 1009.80/291.76 , locker2_map_promote_pending(cons(Lock, Locks), Pending) -> 1009.80/291.76 cons(locker2_promote_pending(Lock, Pending), 1009.80/291.76 locker2_map_promote_pending(Locks, Pending)) 1009.80/291.76 , locker2_promote_pending(Lock, Client) -> 1009.80/291.76 case0(Client, Lock, record_extract(Lock, lock(), pending())) 1009.80/291.76 , locker2_map_claim_lock(nil(), Resources, Client) -> nil() 1009.80/291.76 , locker2_map_claim_lock(cons(Lock, Locks), Resources, Client) -> 1009.80/291.76 cons(locker2_claim_lock(Lock, Resources, Client), 1009.80/291.76 locker2_map_claim_lock(Locks, Resources, Client)) 1009.80/291.76 , locker2_map_add_pending(nil(), Resources, Client) -> nil() 1009.80/291.76 , case0(Client, Lock, MCRLFree0) -> Lock 1009.80/291.76 , case0(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.76 cons(tuple(pending(), tuplenil(Pendings)), nil()))) 1009.80/291.76 , locker2_remove_pending(Lock, Client) -> 1009.80/291.76 record_updates(Lock, 1009.80/291.76 lock(), 1009.80/291.76 cons(tuple(pending(), 1009.80/291.76 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.76 cons(Client, nil())))), 1009.80/291.76 nil())) 1009.80/291.76 , subtract(List, nil()) -> List 1009.80/291.76 , subtract(List, cons(Head, Tail)) -> 1009.80/291.76 subtract(delete(Head, List), Tail) 1009.80/291.76 , locker2_add_pending(Lock, Resources, Client) -> 1009.80/291.76 case1(Client, 1009.80/291.76 Resources, 1009.80/291.76 Lock, 1009.80/291.76 member(record_extract(Lock, lock(), resource()), Resources)) 1009.80/291.77 , case1(Client, Resources, Lock, false()) -> Lock 1009.80/291.77 , case1(Client, Resources, Lock, true()) -> 1009.80/291.77 record_updates(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil())) 1009.80/291.77 , member(E, nil()) -> false() 1009.80/291.77 , member(E, cons(Head, Tail)) -> 1009.80/291.77 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.77 , locker2_release_lock(Lock, Client) -> 1009.80/291.77 case2(Client, 1009.80/291.77 Lock, 1009.80/291.77 gen_modtageq(Client, record_extract(Lock, lock(), excl()))) 1009.80/291.77 , case2(Client, Lock, true()) -> 1009.80/291.77 record_updates(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(excllock(), excl()), nil())) 1009.80/291.77 , gen_modtageq(Client1, Client2) -> equal(Client1, Client2) 1009.80/291.77 , case4(Client, Lock, MCRLFree1) -> false() 1009.80/291.77 , locker2_obtainables(nil(), Client) -> true() 1009.80/291.77 , locker2_obtainables(cons(Lock, Locks), Client) -> 1009.80/291.77 case5(Client, 1009.80/291.77 Locks, 1009.80/291.77 Lock, 1009.80/291.77 member(Client, record_extract(Lock, lock(), pending()))) 1009.80/291.77 , case5(Client, Locks, Lock, false()) -> 1009.80/291.77 locker2_obtainables(Locks, Client) 1009.80/291.77 , case5(Client, Locks, Lock, true()) -> 1009.80/291.77 andt(locker2_obtainable(Lock, Client), 1009.80/291.77 locker2_obtainables(Locks, Client)) 1009.80/291.77 , locker2_check_available(Resource, nil()) -> false() 1009.80/291.77 , locker2_check_available(Resource, cons(Lock, Locks)) -> 1009.80/291.77 case6(Locks, 1009.80/291.77 Lock, 1009.80/291.77 Resource, 1009.80/291.77 equal(Resource, record_extract(Lock, lock(), resource()))) 1009.80/291.77 , case6(Locks, Lock, Resource, false()) -> 1009.80/291.77 locker2_check_available(Resource, Locks) 1009.80/291.77 , case6(Locks, Lock, Resource, true()) -> 1009.80/291.77 andt(equal(record_extract(Lock, lock(), excl()), nil()), 1009.80/291.77 equal(record_extract(Lock, lock(), pending()), nil())) 1009.80/291.77 , locker2_check_availables(nil(), Locks) -> true() 1009.80/291.77 , locker2_check_availables(cons(Resource, Resources), Locks) -> 1009.80/291.77 andt(locker2_check_available(Resource, Locks), 1009.80/291.77 locker2_check_availables(Resources, Locks)) 1009.80/291.77 , locker2_adduniq(nil(), List) -> List 1009.80/291.77 , delete(E, nil()) -> nil() 1009.80/291.77 , delete(E, cons(Head, Tail)) -> 1009.80/291.77 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.77 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.77 , gen_tag(Pid) -> tuple(Pid, tuplenil(tag())) 1009.80/291.77 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.77 , case9(Tail, Head, E, true()) -> true() 1009.80/291.77 , eqs(empty(), empty()) -> T() 1009.80/291.77 , eqs(empty(), stack(E2, S2)) -> F() 1009.80/291.77 , eqs(stack(E1, S1), empty()) -> F() 1009.80/291.77 , eqs(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.77 and(eqt(E1, E2), eqs(S1, S2)) 1009.80/291.77 , pushs(E1, S1) -> stack(E1, S1) 1009.80/291.77 , pops(stack(E1, S1)) -> S1 1009.80/291.77 , tops(stack(E1, S1)) -> E1 1009.80/291.77 , istops(E1, empty()) -> F() 1009.80/291.77 , istops(E1, stack(E2, S1)) -> eqt(E1, E2) 1009.80/291.77 , eqc(nocalls(), nocalls()) -> T() 1009.80/291.77 , eqc(nocalls(), calls(E2, S2, CS2)) -> F() 1009.80/291.77 , eqc(calls(E1, S1, CS1), nocalls()) -> F() 1009.80/291.77 , eqc(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.77 and(eqt(E1, E2), and(eqs(S1, S2), eqc(CS1, CS2))) 1009.80/291.77 , push(E1, E2, nocalls()) -> 1009.80/291.77 calls(E1, stack(E2, empty()), nocalls()) 1009.80/291.77 , push(E1, E2, calls(E3, S1, CS1)) -> 1009.80/291.77 push1(E1, E2, E3, S1, CS1, eqt(E1, E3)) 1009.80/291.77 , push1(E1, E2, E3, S1, CS1, T()) -> 1009.80/291.77 calls(E3, pushs(E2, S1), CS1) } 1009.80/291.77 Obligation: 1009.80/291.77 innermost runtime complexity 1009.80/291.77 Answer: 1009.80/291.77 YES(O(1),O(n^1)) 1009.80/291.77 1009.80/291.77 We replace rewrite rules by usable rules: 1009.80/291.77 1009.80/291.77 Weak Usable Rules: 1009.80/291.77 { record_extract(tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.77 lock(), 1009.80/291.77 resource()) 1009.80/291.77 -> 1009.80/291.77 tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.77 , record_update(tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.77 lock(), 1009.80/291.77 pending(), 1009.80/291.77 NewF) 1009.80/291.77 -> 1009.80/291.77 tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.77 , subtract(List, nil()) -> List 1009.80/291.77 , subtract(List, cons(Head, Tail)) -> 1009.80/291.77 subtract(delete(Head, List), Tail) 1009.80/291.77 , member(E, nil()) -> false() 1009.80/291.77 , member(E, cons(Head, Tail)) -> 1009.80/291.77 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.77 , delete(E, nil()) -> nil() 1009.80/291.77 , delete(E, cons(Head, Tail)) -> 1009.80/291.77 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.77 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.77 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.77 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.77 1009.80/291.77 We are left with following problem, upon which TcT provides the 1009.80/291.77 certificate YES(O(1),O(n^1)). 1009.80/291.77 1009.80/291.77 Strict DPs: 1009.80/291.77 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.77 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.77 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.77 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.77 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.77 c_5(element^#(int(s(N1)), T2)) 1009.80/291.77 , record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) 1009.80/291.77 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.77 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.77 , case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.77 c_8(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.77 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.77 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.77 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.77 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.77 c_10(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil())), 1009.80/291.77 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil()))) 1009.80/291.77 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.77 c_11(subtract^#(delete(Head, List), Tail)) 1009.80/291.77 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.77 c_12(case1^#(Client, 1009.80/291.77 Resources, 1009.80/291.77 Lock, 1009.80/291.77 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.77 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.77 c_13(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil()))) 1009.80/291.77 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.77 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.77 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.77 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.77 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.77 , istops^#(E1, stack(E2, S1)) -> c_17(eqt^#(E1, E2)) 1009.80/291.77 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.77 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) 1009.80/291.77 , push^#(E1, E2, calls(E3, S1, CS1)) -> c_19(eqt^#(E1, E3)) } 1009.80/291.77 Weak Trs: 1009.80/291.77 { record_extract(tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.77 lock(), 1009.80/291.77 resource()) 1009.80/291.77 -> 1009.80/291.77 tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.77 , record_update(tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.77 lock(), 1009.80/291.77 pending(), 1009.80/291.77 NewF) 1009.80/291.77 -> 1009.80/291.77 tuple(mcrlrecord(), 1009.80/291.77 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.77 , subtract(List, nil()) -> List 1009.80/291.77 , subtract(List, cons(Head, Tail)) -> 1009.80/291.77 subtract(delete(Head, List), Tail) 1009.80/291.77 , member(E, nil()) -> false() 1009.80/291.77 , member(E, cons(Head, Tail)) -> 1009.80/291.77 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.77 , delete(E, nil()) -> nil() 1009.80/291.77 , delete(E, cons(Head, Tail)) -> 1009.80/291.77 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.77 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.77 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.77 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.77 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.77 Obligation: 1009.80/291.77 innermost runtime complexity 1009.80/291.77 Answer: 1009.80/291.77 YES(O(1),O(n^1)) 1009.80/291.77 1009.80/291.77 Consider the dependency graph 1009.80/291.77 1009.80/291.77 1: eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 2: eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.77 -->_2 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_2 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_2 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_2 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 3: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.77 -->_2 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_2 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_2 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_2 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 4: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 5: element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.77 c_5(element^#(int(s(N1)), T2)) 1009.80/291.77 -->_1 element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.77 c_5(element^#(int(s(N1)), T2)) :5 1009.80/291.77 1009.80/291.77 6: record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) 1009.80/291.77 -->_1 record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) :6 1009.80/291.77 1009.80/291.77 7: locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.77 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.77 -->_1 locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.77 c_7(locker2_map_promote_pending^#(Locks, Pending)) :7 1009.80/291.77 1009.80/291.77 8: case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.77 c_8(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.77 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.77 -->_1 record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) :6 1009.80/291.77 1009.80/291.77 9: locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) 1009.80/291.77 -> c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.77 -->_1 locker2_map_claim_lock^#(cons(Lock, Locks), 1009.80/291.77 Resources, 1009.80/291.77 Client) 1009.80/291.77 -> c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) :9 1009.80/291.77 1009.80/291.77 10: locker2_remove_pending^#(Lock, Client) -> 1009.80/291.77 c_10(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil())), 1009.80/291.77 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil()))) 1009.80/291.77 -->_2 subtract^#(List, cons(Head, Tail)) -> 1009.80/291.77 c_11(subtract^#(delete(Head, List), Tail)) :11 1009.80/291.77 -->_1 record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) :6 1009.80/291.77 1009.80/291.77 11: subtract^#(List, cons(Head, Tail)) -> 1009.80/291.77 c_11(subtract^#(delete(Head, List), Tail)) 1009.80/291.77 -->_1 subtract^#(List, cons(Head, Tail)) -> 1009.80/291.77 c_11(subtract^#(delete(Head, List), Tail)) :11 1009.80/291.77 1009.80/291.77 12: locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.77 c_12(case1^#(Client, 1009.80/291.77 Resources, 1009.80/291.77 Lock, 1009.80/291.77 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.77 -->_1 case1^#(Client, Resources, Lock, true()) -> 1009.80/291.77 c_13(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil()))) :13 1009.80/291.77 1009.80/291.77 13: case1^#(Client, Resources, Lock, true()) -> 1009.80/291.77 c_13(record_updates^#(Lock, 1009.80/291.77 lock(), 1009.80/291.77 cons(tuple(pending(), 1009.80/291.77 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.77 cons(Client, nil())))), 1009.80/291.77 nil()))) 1009.80/291.77 -->_1 record_updates^#(Record, 1009.80/291.77 Name, 1009.80/291.77 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.77 -> 1009.80/291.77 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.77 Name, 1009.80/291.77 Fields)) :6 1009.80/291.77 1009.80/291.77 14: append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.77 -->_1 append^#(cons(Head, Tail), List) -> 1009.80/291.77 c_14(append^#(Tail, List)) :14 1009.80/291.77 1009.80/291.77 15: locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.77 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.77 -->_1 locker2_check_availables^#(cons(Resource, Resources), Locks) 1009.80/291.77 -> c_15(locker2_check_availables^#(Resources, Locks)) :15 1009.80/291.77 1009.80/291.77 16: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.77 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.77 -->_2 eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.77 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) :16 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 17: istops^#(E1, stack(E2, S1)) -> c_17(eqt^#(E1, E2)) 1009.80/291.77 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.77 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.77 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.77 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.77 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.77 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.77 1009.80/291.77 18: eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.77 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) 1009.80/291.77 -->_3 eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.77 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) :18 1009.80/291.77 -->_2 eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) :16 1009.80/291.78 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.78 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.78 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.78 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.78 1009.80/291.78 19: push^#(E1, E2, calls(E3, S1, CS1)) -> c_19(eqt^#(E1, E3)) 1009.80/291.78 -->_1 eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) :4 1009.80/291.78 -->_1 eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) :3 1009.80/291.78 -->_1 eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) :2 1009.80/291.78 -->_1 eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) :1 1009.80/291.78 1009.80/291.78 1009.80/291.78 Following roots of the dependency graph are removed, as the 1009.80/291.78 considered set of starting terms is closed under reduction with 1009.80/291.78 respect to these rules (modulo compound contexts). 1009.80/291.78 1009.80/291.78 { case0^#(Client, Lock, cons(Client, Pendings)) -> 1009.80/291.78 c_8(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(excl(), tuplenil(Client)), 1009.80/291.78 cons(tuple(pending(), tuplenil(Pendings)), nil())))) 1009.80/291.78 , istops^#(E1, stack(E2, S1)) -> c_17(eqt^#(E1, E2)) 1009.80/291.78 , push^#(E1, E2, calls(E3, S1, CS1)) -> c_19(eqt^#(E1, E3)) } 1009.80/291.78 1009.80/291.78 1009.80/291.78 We are left with following problem, upon which TcT provides the 1009.80/291.78 certificate YES(O(1),O(n^1)). 1009.80/291.78 1009.80/291.78 Strict DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.78 , member(E, nil()) -> false() 1009.80/291.78 , member(E, cons(Head, Tail)) -> 1009.80/291.78 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.78 , delete(E, nil()) -> nil() 1009.80/291.78 , delete(E, cons(Head, Tail)) -> 1009.80/291.78 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.78 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.78 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.78 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.78 Obligation: 1009.80/291.78 innermost runtime complexity 1009.80/291.78 Answer: 1009.80/291.78 YES(O(1),O(n^1)) 1009.80/291.78 1009.80/291.78 We analyse the complexity of following sub-problems (R) and (S). 1009.80/291.78 Problem (S) is obtained from the input problem by shifting strict 1009.80/291.78 rules from (R) into the weak component: 1009.80/291.78 1009.80/291.78 Problem (R): 1009.80/291.78 ------------ 1009.80/291.78 Strict DPs: 1009.80/291.78 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.78 Weak DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.78 , member(E, nil()) -> false() 1009.80/291.78 , member(E, cons(Head, Tail)) -> 1009.80/291.78 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.78 , delete(E, nil()) -> nil() 1009.80/291.78 , delete(E, cons(Head, Tail)) -> 1009.80/291.78 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.78 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.78 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.78 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.78 StartTerms: basic terms 1009.80/291.78 Strategy: innermost 1009.80/291.78 1009.80/291.78 Problem (S): 1009.80/291.78 ------------ 1009.80/291.78 Strict DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak DPs: 1009.80/291.78 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.78 , member(E, nil()) -> false() 1009.80/291.78 , member(E, cons(Head, Tail)) -> 1009.80/291.78 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.78 , delete(E, nil()) -> nil() 1009.80/291.78 , delete(E, cons(Head, Tail)) -> 1009.80/291.78 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.78 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.78 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.78 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.78 StartTerms: basic terms 1009.80/291.78 Strategy: innermost 1009.80/291.78 1009.80/291.78 Overall, the transformation results in the following sub-problem(s): 1009.80/291.78 1009.80/291.78 Generated new problems: 1009.80/291.78 ----------------------- 1009.80/291.78 R) Strict DPs: 1009.80/291.78 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.78 Weak DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.78 , member(E, nil()) -> false() 1009.80/291.78 , member(E, cons(Head, Tail)) -> 1009.80/291.78 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.78 , delete(E, nil()) -> nil() 1009.80/291.78 , delete(E, cons(Head, Tail)) -> 1009.80/291.78 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.78 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.78 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.78 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.78 StartTerms: basic terms 1009.80/291.78 Strategy: innermost 1009.80/291.78 1009.80/291.78 This problem was proven YES(O(1),O(n^1)). 1009.80/291.78 1009.80/291.78 S) Strict DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak DPs: 1009.80/291.78 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.78 , member(E, nil()) -> false() 1009.80/291.78 , member(E, cons(Head, Tail)) -> 1009.80/291.78 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.78 , delete(E, nil()) -> nil() 1009.80/291.78 , delete(E, cons(Head, Tail)) -> 1009.80/291.78 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.78 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.78 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.78 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.78 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.78 StartTerms: basic terms 1009.80/291.78 Strategy: innermost 1009.80/291.78 1009.80/291.78 This problem was proven YES(O(1),O(n^1)). 1009.80/291.78 1009.80/291.78 1009.80/291.78 Proofs for generated problems: 1009.80/291.78 ------------------------------ 1009.80/291.78 R) We are left with following problem, upon which TcT provides the 1009.80/291.78 certificate YES(O(1),O(n^1)). 1009.80/291.78 1009.80/291.78 Strict DPs: 1009.80/291.78 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.78 c_10(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil())), 1009.80/291.78 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil()))) 1009.80/291.78 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.78 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.78 Weak DPs: 1009.80/291.78 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.78 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.78 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.78 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.78 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.78 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.78 c_5(element^#(int(s(N1)), T2)) 1009.80/291.78 , record_updates^#(Record, 1009.80/291.78 Name, 1009.80/291.78 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.78 -> 1009.80/291.78 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.78 Name, 1009.80/291.78 Fields)) 1009.80/291.78 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.78 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.78 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.78 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.78 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.78 c_12(case1^#(Client, 1009.80/291.78 Resources, 1009.80/291.78 Lock, 1009.80/291.78 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.78 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.78 c_13(record_updates^#(Lock, 1009.80/291.78 lock(), 1009.80/291.78 cons(tuple(pending(), 1009.80/291.78 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.78 cons(Client, nil())))), 1009.80/291.78 nil()))) 1009.80/291.78 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.78 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.78 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.78 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.78 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.78 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.78 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.78 Weak Trs: 1009.80/291.78 { record_extract(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 resource()) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.78 , record_update(tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.78 lock(), 1009.80/291.78 pending(), 1009.80/291.78 NewF) 1009.80/291.78 -> 1009.80/291.78 tuple(mcrlrecord(), 1009.80/291.78 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.78 , subtract(List, nil()) -> List 1009.80/291.78 , subtract(List, cons(Head, Tail)) -> 1009.80/291.78 subtract(delete(Head, List), Tail) 1009.80/291.79 , member(E, nil()) -> false() 1009.80/291.79 , member(E, cons(Head, Tail)) -> 1009.80/291.79 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.79 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.79 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 The following weak DPs constitute a sub-graph of the DG that is 1009.80/291.79 closed under successors. The DPs are removed. 1009.80/291.79 1009.80/291.79 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.79 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.79 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.79 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.79 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.79 c_5(element^#(int(s(N1)), T2)) 1009.80/291.79 , record_updates^#(Record, 1009.80/291.79 Name, 1009.80/291.79 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.79 -> 1009.80/291.79 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.79 Name, 1009.80/291.79 Fields)) 1009.80/291.79 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.79 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.79 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.79 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.79 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.79 c_12(case1^#(Client, 1009.80/291.79 Resources, 1009.80/291.79 Lock, 1009.80/291.79 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.79 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.79 c_13(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil()))) 1009.80/291.79 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.79 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.79 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.79 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.79 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.79 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.79 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_10(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil())), 1009.80/291.79 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , record_update(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 pending(), 1009.80/291.79 NewF) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.79 , subtract(List, nil()) -> List 1009.80/291.79 , subtract(List, cons(Head, Tail)) -> 1009.80/291.79 subtract(delete(Head, List), Tail) 1009.80/291.79 , member(E, nil()) -> false() 1009.80/291.79 , member(E, cons(Head, Tail)) -> 1009.80/291.79 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.79 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.79 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 Due to missing edges in the dependency-graph, the right-hand sides 1009.80/291.79 of following rules could be simplified: 1009.80/291.79 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_10(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil())), 1009.80/291.79 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , record_update(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 pending(), 1009.80/291.79 NewF) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.79 , subtract(List, nil()) -> List 1009.80/291.79 , subtract(List, cons(Head, Tail)) -> 1009.80/291.79 subtract(delete(Head, List), Tail) 1009.80/291.79 , member(E, nil()) -> false() 1009.80/291.79 , member(E, cons(Head, Tail)) -> 1009.80/291.79 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.79 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.79 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 We replace rewrite rules by usable rules: 1009.80/291.79 1009.80/291.79 Weak Usable Rules: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 We use the processor 'matrix interpretation of dimension 1' to 1009.80/291.79 orient following rules strictly. 1009.80/291.79 1009.80/291.79 DPs: 1009.80/291.79 { 2: subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 1009.80/291.79 Sub-proof: 1009.80/291.79 ---------- 1009.80/291.79 The following argument positions are usable: 1009.80/291.79 Uargs(c_1) = {1}, Uargs(c_2) = {1} 1009.80/291.79 1009.80/291.79 TcT has computed the following constructor-based matrix 1009.80/291.79 interpretation satisfying not(EDA). 1009.80/291.79 1009.80/291.79 [nil] = [0] 1009.80/291.79 1009.80/291.79 [cons](x1, x2) = [1] x2 + [4] 1009.80/291.79 1009.80/291.79 [tuple](x1, x2) = [0] 1009.80/291.79 1009.80/291.79 [tuplenil](x1) = [1] x1 + [0] 1009.80/291.79 1009.80/291.79 [false] = [7] 1009.80/291.79 1009.80/291.79 [lock] = [0] 1009.80/291.79 1009.80/291.79 [mcrlrecord] = [0] 1009.80/291.79 1009.80/291.79 [pending] = [6] 1009.80/291.79 1009.80/291.79 [resource] = [7] 1009.80/291.79 1009.80/291.79 [true] = [7] 1009.80/291.79 1009.80/291.79 [record_extract](x1, x2, x3) = [0] 1009.80/291.79 1009.80/291.79 [equal](x1, x2) = [1] x1 + [1] x2 + [7] 1009.80/291.79 1009.80/291.79 [delete](x1, x2) = [7] x1 + [0] 1009.80/291.79 1009.80/291.79 [case8](x1, x2, x3, x4) = [4] x1 + [1] x2 + [7] x3 + [0] 1009.80/291.79 1009.80/291.79 [locker2_remove_pending^#](x1, x2) = [7] x1 + [7] x2 + [7] 1009.80/291.79 1009.80/291.79 [subtract^#](x1, x2) = [1] x2 + [0] 1009.80/291.79 1009.80/291.79 [c_1](x1) = [1] x1 + [3] 1009.80/291.79 1009.80/291.79 [c_2](x1) = [1] x1 + [1] 1009.80/291.79 1009.80/291.79 The order satisfies the following ordering constraints: 1009.80/291.79 1009.80/291.79 [record_extract(tuple(mcrlrecord(), = [0] 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource())] 1009.80/291.79 >= [0] 1009.80/291.79 = [tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2)))))] 1009.80/291.79 1009.80/291.79 [delete(E, nil())] = [7] E + [0] 1009.80/291.79 >= [0] 1009.80/291.79 = [nil()] 1009.80/291.79 1009.80/291.79 [delete(E, cons(Head, Tail))] = [7] E + [0] 1009.80/291.79 ? [1] Head + [4] Tail + [7] E + [0] 1009.80/291.79 = [case8(Tail, Head, E, equal(E, Head))] 1009.80/291.79 1009.80/291.79 [case8(Tail, Head, E, false())] = [1] Head + [4] Tail + [7] E + [0] 1009.80/291.79 ? [7] E + [4] 1009.80/291.79 = [cons(Head, delete(E, Tail))] 1009.80/291.79 1009.80/291.79 [case8(Tail, Head, E, true())] = [1] Head + [4] Tail + [7] E + [0] 1009.80/291.79 >= [1] Tail + [0] 1009.80/291.79 = [Tail] 1009.80/291.79 1009.80/291.79 [locker2_remove_pending^#(Lock, Client)] = [7] Lock + [7] Client + [7] 1009.80/291.79 >= [7] 1009.80/291.79 = [c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))] 1009.80/291.79 1009.80/291.79 [subtract^#(List, cons(Head, Tail))] = [1] Tail + [4] 1009.80/291.79 > [1] Tail + [1] 1009.80/291.79 = [c_2(subtract^#(delete(Head, List), Tail))] 1009.80/291.79 1009.80/291.79 1009.80/291.79 We return to the main proof. Consider the set of all dependency 1009.80/291.79 pairs 1009.80/291.79 1009.80/291.79 : 1009.80/291.79 { 1: locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , 2: subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 1009.80/291.79 Processor 'matrix interpretation of dimension 1' induces the 1009.80/291.79 complexity certificate YES(?,O(n^1)) on application of dependency 1009.80/291.79 pairs {2}. These cover all (indirect) predecessors of dependency 1009.80/291.79 pairs {1,2}, their number of application is equally bounded. The 1009.80/291.79 dependency pairs are shifted into the weak component. 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(1)). 1009.80/291.79 1009.80/291.79 Weak DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(1)) 1009.80/291.79 1009.80/291.79 The following weak DPs constitute a sub-graph of the DG that is 1009.80/291.79 closed under successors. The DPs are removed. 1009.80/291.79 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_1(subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_2(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(1)). 1009.80/291.79 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(1)) 1009.80/291.79 1009.80/291.79 No rule is usable, rules are removed from the input problem. 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(1)). 1009.80/291.79 1009.80/291.79 Rules: Empty 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(1)) 1009.80/291.79 1009.80/291.79 Empty rules are trivially bounded 1009.80/291.79 1009.80/291.79 S) We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.79 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.79 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.79 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.79 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.79 c_5(element^#(int(s(N1)), T2)) 1009.80/291.79 , record_updates^#(Record, 1009.80/291.79 Name, 1009.80/291.79 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.79 -> 1009.80/291.79 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.79 Name, 1009.80/291.79 Fields)) 1009.80/291.79 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.79 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.79 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.79 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.79 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.79 c_12(case1^#(Client, 1009.80/291.79 Resources, 1009.80/291.79 Lock, 1009.80/291.79 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.79 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.79 c_13(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil()))) 1009.80/291.79 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.79 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.79 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.79 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.79 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.79 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.79 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.79 Weak DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_10(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil())), 1009.80/291.79 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) 1009.80/291.79 , subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , record_update(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 pending(), 1009.80/291.79 NewF) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.79 , subtract(List, nil()) -> List 1009.80/291.79 , subtract(List, cons(Head, Tail)) -> 1009.80/291.79 subtract(delete(Head, List), Tail) 1009.80/291.79 , member(E, nil()) -> false() 1009.80/291.79 , member(E, cons(Head, Tail)) -> 1009.80/291.79 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.79 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.79 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 The following weak DPs constitute a sub-graph of the DG that is 1009.80/291.79 closed under successors. The DPs are removed. 1009.80/291.79 1009.80/291.79 { subtract^#(List, cons(Head, Tail)) -> 1009.80/291.79 c_11(subtract^#(delete(Head, List), Tail)) } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.79 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.79 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.79 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.79 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.79 c_5(element^#(int(s(N1)), T2)) 1009.80/291.79 , record_updates^#(Record, 1009.80/291.79 Name, 1009.80/291.79 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.79 -> 1009.80/291.79 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.79 Name, 1009.80/291.79 Fields)) 1009.80/291.79 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.79 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.79 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.79 c_9(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.79 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.79 c_12(case1^#(Client, 1009.80/291.79 Resources, 1009.80/291.79 Lock, 1009.80/291.79 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.79 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.79 c_13(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil()))) 1009.80/291.79 , append^#(cons(Head, Tail), List) -> c_14(append^#(Tail, List)) 1009.80/291.79 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.79 c_15(locker2_check_availables^#(Resources, Locks)) 1009.80/291.79 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.79 c_16(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.79 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.79 c_18(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.79 Weak DPs: 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_10(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil())), 1009.80/291.79 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) } 1009.80/291.79 Weak Trs: 1009.80/291.79 { record_extract(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 resource()) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.79 , record_update(tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.79 lock(), 1009.80/291.79 pending(), 1009.80/291.79 NewF) 1009.80/291.79 -> 1009.80/291.79 tuple(mcrlrecord(), 1009.80/291.79 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.79 , subtract(List, nil()) -> List 1009.80/291.79 , subtract(List, cons(Head, Tail)) -> 1009.80/291.79 subtract(delete(Head, List), Tail) 1009.80/291.79 , member(E, nil()) -> false() 1009.80/291.79 , member(E, cons(Head, Tail)) -> 1009.80/291.79 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.79 , delete(E, nil()) -> nil() 1009.80/291.79 , delete(E, cons(Head, Tail)) -> 1009.80/291.79 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.79 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.79 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.79 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.79 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.79 Obligation: 1009.80/291.79 innermost runtime complexity 1009.80/291.79 Answer: 1009.80/291.79 YES(O(1),O(n^1)) 1009.80/291.79 1009.80/291.79 Due to missing edges in the dependency-graph, the right-hand sides 1009.80/291.79 of following rules could be simplified: 1009.80/291.79 1009.80/291.79 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.79 c_10(record_updates^#(Lock, 1009.80/291.79 lock(), 1009.80/291.79 cons(tuple(pending(), 1009.80/291.79 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil())))), 1009.80/291.79 nil())), 1009.80/291.79 subtract^#(record_extract(Lock, lock(), pending()), 1009.80/291.79 cons(Client, nil()))) } 1009.80/291.79 1009.80/291.79 We are left with following problem, upon which TcT provides the 1009.80/291.79 certificate YES(O(1),O(n^1)). 1009.80/291.79 1009.80/291.79 Strict DPs: 1009.80/291.79 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1009.80/291.79 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1009.80/291.79 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1009.80/291.79 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1009.80/291.79 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1009.80/291.79 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1009.80/291.79 c_5(element^#(int(s(N1)), T2)) 1009.80/291.79 , record_updates^#(Record, 1009.80/291.79 Name, 1009.80/291.79 cons(tuple(Field, tuplenil(NewF)), Fields)) 1009.80/291.79 -> 1009.80/291.79 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1009.80/291.79 Name, 1009.80/291.79 Fields)) 1009.80/291.79 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1009.80/291.79 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1009.80/291.79 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1009.80/291.79 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1009.80/291.79 , locker2_add_pending^#(Lock, Resources, Client) -> 1009.80/291.80 c_9(case1^#(Client, 1009.80/291.80 Resources, 1009.80/291.80 Lock, 1009.80/291.80 member(record_extract(Lock, lock(), resource()), Resources))) 1009.80/291.80 , case1^#(Client, Resources, Lock, true()) -> 1009.80/291.80 c_10(record_updates^#(Lock, 1009.80/291.80 lock(), 1009.80/291.80 cons(tuple(pending(), 1009.80/291.80 tuplenil(append(record_extract(Lock, lock(), pending()), 1009.80/291.80 cons(Client, nil())))), 1009.80/291.80 nil()))) 1009.80/291.80 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1009.80/291.80 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1009.80/291.80 c_12(locker2_check_availables^#(Resources, Locks)) 1009.80/291.80 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1009.80/291.80 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1009.80/291.80 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1009.80/291.80 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1009.80/291.80 Weak DPs: 1009.80/291.80 { locker2_remove_pending^#(Lock, Client) -> 1009.80/291.80 c_15(record_updates^#(Lock, 1009.80/291.80 lock(), 1009.80/291.80 cons(tuple(pending(), 1009.80/291.80 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1009.80/291.80 cons(Client, nil())))), 1009.80/291.80 nil()))) } 1009.80/291.80 Weak Trs: 1009.80/291.80 { record_extract(tuple(mcrlrecord(), 1009.80/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.80 lock(), 1009.80/291.80 resource()) 1009.80/291.80 -> 1009.80/291.80 tuple(mcrlrecord(), 1009.80/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1009.80/291.80 , record_update(tuple(mcrlrecord(), 1009.80/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1009.80/291.80 lock(), 1009.80/291.80 pending(), 1009.80/291.80 NewF) 1009.80/291.80 -> 1009.80/291.80 tuple(mcrlrecord(), 1009.80/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1009.80/291.80 , subtract(List, nil()) -> List 1009.80/291.80 , subtract(List, cons(Head, Tail)) -> 1009.80/291.80 subtract(delete(Head, List), Tail) 1009.80/291.80 , member(E, nil()) -> false() 1009.80/291.80 , member(E, cons(Head, Tail)) -> 1009.80/291.80 case9(Tail, Head, E, equal(E, Head)) 1009.80/291.80 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1009.80/291.80 , delete(E, nil()) -> nil() 1009.80/291.80 , delete(E, cons(Head, Tail)) -> 1009.80/291.80 case8(Tail, Head, E, equal(E, Head)) 1009.80/291.80 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1009.80/291.80 , case8(Tail, Head, E, true()) -> Tail 1009.80/291.80 , case9(Tail, Head, E, false()) -> member(E, Tail) 1009.80/291.80 , case9(Tail, Head, E, true()) -> true() } 1009.80/291.80 Obligation: 1009.80/291.80 innermost runtime complexity 1009.80/291.80 Answer: 1009.80/291.80 YES(O(1),O(n^1)) 1009.80/291.80 1009.80/291.80 We analyse the complexity of following sub-problems (R) and (S). 1009.80/291.80 Problem (S) is obtained from the input problem by shifting strict 1009.80/291.80 rules from (R) into the weak component: 1009.80/291.80 1009.80/291.80 Problem (R): 1009.80/291.80 ------------ 1009.80/291.80 Strict DPs: 1009.80/291.80 { record_updates^#(Record, 1010.03/291.80 Name, 1010.03/291.80 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.80 -> 1010.03/291.80 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.80 Name, 1010.03/291.80 Fields)) 1010.03/291.80 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.80 c_9(case1^#(Client, 1010.03/291.80 Resources, 1010.03/291.80 Lock, 1010.03/291.80 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.80 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.80 c_10(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) } 1010.03/291.80 Weak DPs: 1010.03/291.80 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.80 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.80 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.80 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.80 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.80 c_5(element^#(int(s(N1)), T2)) 1010.03/291.80 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.80 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.80 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.80 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.80 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.80 c_15(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) 1010.03/291.80 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.80 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.80 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.80 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.80 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.80 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.80 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.80 Weak Trs: 1010.03/291.80 { record_extract(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 resource()) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.80 , record_update(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 pending(), 1010.03/291.80 NewF) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.80 , subtract(List, nil()) -> List 1010.03/291.80 , subtract(List, cons(Head, Tail)) -> 1010.03/291.80 subtract(delete(Head, List), Tail) 1010.03/291.80 , member(E, nil()) -> false() 1010.03/291.80 , member(E, cons(Head, Tail)) -> 1010.03/291.80 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.80 , delete(E, nil()) -> nil() 1010.03/291.80 , delete(E, cons(Head, Tail)) -> 1010.03/291.80 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.80 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.80 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.80 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.80 StartTerms: basic terms 1010.03/291.80 Strategy: innermost 1010.03/291.80 1010.03/291.80 Problem (S): 1010.03/291.80 ------------ 1010.03/291.80 Strict DPs: 1010.03/291.80 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.80 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.80 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.80 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.80 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.80 c_5(element^#(int(s(N1)), T2)) 1010.03/291.80 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.80 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.80 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.80 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.80 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.80 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.80 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.80 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.80 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.80 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.80 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.80 Weak DPs: 1010.03/291.80 { record_updates^#(Record, 1010.03/291.80 Name, 1010.03/291.80 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.80 -> 1010.03/291.80 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.80 Name, 1010.03/291.80 Fields)) 1010.03/291.80 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.80 c_15(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) 1010.03/291.80 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.80 c_9(case1^#(Client, 1010.03/291.80 Resources, 1010.03/291.80 Lock, 1010.03/291.80 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.80 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.80 c_10(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) } 1010.03/291.80 Weak Trs: 1010.03/291.80 { record_extract(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 resource()) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.80 , record_update(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 pending(), 1010.03/291.80 NewF) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.80 , subtract(List, nil()) -> List 1010.03/291.80 , subtract(List, cons(Head, Tail)) -> 1010.03/291.80 subtract(delete(Head, List), Tail) 1010.03/291.80 , member(E, nil()) -> false() 1010.03/291.80 , member(E, cons(Head, Tail)) -> 1010.03/291.80 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.80 , delete(E, nil()) -> nil() 1010.03/291.80 , delete(E, cons(Head, Tail)) -> 1010.03/291.80 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.80 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.80 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.80 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.80 StartTerms: basic terms 1010.03/291.80 Strategy: innermost 1010.03/291.80 1010.03/291.80 Overall, the transformation results in the following sub-problem(s): 1010.03/291.80 1010.03/291.80 Generated new problems: 1010.03/291.80 ----------------------- 1010.03/291.80 R) Strict DPs: 1010.03/291.80 { record_updates^#(Record, 1010.03/291.80 Name, 1010.03/291.80 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.80 -> 1010.03/291.80 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.80 Name, 1010.03/291.80 Fields)) 1010.03/291.80 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.80 c_9(case1^#(Client, 1010.03/291.80 Resources, 1010.03/291.80 Lock, 1010.03/291.80 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.80 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.80 c_10(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) } 1010.03/291.80 Weak DPs: 1010.03/291.80 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.80 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.80 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.80 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.80 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.80 c_5(element^#(int(s(N1)), T2)) 1010.03/291.80 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.80 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.80 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.80 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.80 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.80 c_15(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(subtract(record_extract(Lock, 1010.03/291.80 lock(), 1010.03/291.80 pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) 1010.03/291.80 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.80 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.80 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.80 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.80 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.80 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.80 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.80 Weak Trs: 1010.03/291.80 { record_extract(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 resource()) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.80 , record_update(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 pending(), 1010.03/291.80 NewF) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.80 , subtract(List, nil()) -> List 1010.03/291.80 , subtract(List, cons(Head, Tail)) -> 1010.03/291.80 subtract(delete(Head, List), Tail) 1010.03/291.80 , member(E, nil()) -> false() 1010.03/291.80 , member(E, cons(Head, Tail)) -> 1010.03/291.80 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.80 , delete(E, nil()) -> nil() 1010.03/291.80 , delete(E, cons(Head, Tail)) -> 1010.03/291.80 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.80 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.80 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.80 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.80 StartTerms: basic terms 1010.03/291.80 Strategy: innermost 1010.03/291.80 1010.03/291.80 This problem was proven YES(O(1),O(n^1)). 1010.03/291.80 1010.03/291.80 S) Strict DPs: 1010.03/291.80 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.80 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.80 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.80 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.80 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.80 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.80 c_5(element^#(int(s(N1)), T2)) 1010.03/291.80 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.80 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.80 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.80 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.80 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.80 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.80 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.80 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.80 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.80 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.80 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.80 Weak DPs: 1010.03/291.80 { record_updates^#(Record, 1010.03/291.80 Name, 1010.03/291.80 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.80 -> 1010.03/291.80 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.80 Name, 1010.03/291.80 Fields)) 1010.03/291.80 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.80 c_15(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(subtract(record_extract(Lock, 1010.03/291.80 lock(), 1010.03/291.80 pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) 1010.03/291.80 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.80 c_9(case1^#(Client, 1010.03/291.80 Resources, 1010.03/291.80 Lock, 1010.03/291.80 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.80 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.80 c_10(record_updates^#(Lock, 1010.03/291.80 lock(), 1010.03/291.80 cons(tuple(pending(), 1010.03/291.80 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.80 cons(Client, nil())))), 1010.03/291.80 nil()))) } 1010.03/291.80 Weak Trs: 1010.03/291.80 { record_extract(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 resource()) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.80 , record_update(tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.80 lock(), 1010.03/291.80 pending(), 1010.03/291.80 NewF) 1010.03/291.80 -> 1010.03/291.80 tuple(mcrlrecord(), 1010.03/291.80 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.80 , subtract(List, nil()) -> List 1010.03/291.80 , subtract(List, cons(Head, Tail)) -> 1010.03/291.80 subtract(delete(Head, List), Tail) 1010.03/291.80 , member(E, nil()) -> false() 1010.03/291.80 , member(E, cons(Head, Tail)) -> 1010.03/291.80 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.80 , delete(E, nil()) -> nil() 1010.03/291.80 , delete(E, cons(Head, Tail)) -> 1010.03/291.80 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.80 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.80 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.80 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.80 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.80 StartTerms: basic terms 1010.03/291.80 Strategy: innermost 1010.03/291.80 1010.03/291.80 This problem was proven YES(O(1),O(n^1)). 1010.03/291.80 1010.03/291.80 1010.03/291.80 Proofs for generated problems: 1010.03/291.80 ------------------------------ 1010.03/291.80 R) We are left with following problem, upon which TcT provides the 1010.03/291.80 certificate YES(O(1),O(n^1)). 1010.03/291.80 1010.03/291.81 Strict DPs: 1010.03/291.81 { record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.81 c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.81 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 Weak DPs: 1010.03/291.81 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.81 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.81 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.81 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.81 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.81 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.81 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.81 c_5(element^#(int(s(N1)), T2)) 1010.03/291.81 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.81 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.81 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.81 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.81 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) 1010.03/291.81 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.81 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.81 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.81 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.81 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.81 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.81 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.81 Weak Trs: 1010.03/291.81 { record_extract(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 resource()) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.81 , record_update(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 pending(), 1010.03/291.81 NewF) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.81 , subtract(List, nil()) -> List 1010.03/291.81 , subtract(List, cons(Head, Tail)) -> 1010.03/291.81 subtract(delete(Head, List), Tail) 1010.03/291.81 , member(E, nil()) -> false() 1010.03/291.81 , member(E, cons(Head, Tail)) -> 1010.03/291.81 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.81 , delete(E, nil()) -> nil() 1010.03/291.81 , delete(E, cons(Head, Tail)) -> 1010.03/291.81 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.81 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.81 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.81 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.81 Obligation: 1010.03/291.81 innermost runtime complexity 1010.03/291.81 Answer: 1010.03/291.81 YES(O(1),O(n^1)) 1010.03/291.81 1010.03/291.81 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.81 closed under successors. The DPs are removed. 1010.03/291.81 1010.03/291.81 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.81 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.81 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.81 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.81 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.81 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.81 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.81 c_5(element^#(int(s(N1)), T2)) 1010.03/291.81 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.81 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.81 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.81 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.81 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.81 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.81 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.81 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.81 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.81 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.81 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.81 1010.03/291.81 We are left with following problem, upon which TcT provides the 1010.03/291.81 certificate YES(O(1),O(n^1)). 1010.03/291.81 1010.03/291.81 Strict DPs: 1010.03/291.81 { record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.81 c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.81 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 Weak DPs: 1010.03/291.81 { locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 Weak Trs: 1010.03/291.81 { record_extract(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 resource()) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.81 , record_update(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 pending(), 1010.03/291.81 NewF) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.81 , subtract(List, nil()) -> List 1010.03/291.81 , subtract(List, cons(Head, Tail)) -> 1010.03/291.81 subtract(delete(Head, List), Tail) 1010.03/291.81 , member(E, nil()) -> false() 1010.03/291.81 , member(E, cons(Head, Tail)) -> 1010.03/291.81 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.81 , delete(E, nil()) -> nil() 1010.03/291.81 , delete(E, cons(Head, Tail)) -> 1010.03/291.81 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.81 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.81 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.81 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.81 Obligation: 1010.03/291.81 innermost runtime complexity 1010.03/291.81 Answer: 1010.03/291.81 YES(O(1),O(n^1)) 1010.03/291.81 1010.03/291.81 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.81 orient following rules strictly. 1010.03/291.81 1010.03/291.81 DPs: 1010.03/291.81 { 1: record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , 3: case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) 1010.03/291.81 , 4: locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 1010.03/291.81 Sub-proof: 1010.03/291.81 ---------- 1010.03/291.81 The following argument positions are usable: 1010.03/291.81 Uargs(c_6) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1}, 1010.03/291.81 Uargs(c_15) = {1} 1010.03/291.81 1010.03/291.81 TcT has computed the following constructor-based matrix 1010.03/291.81 interpretation satisfying not(EDA). 1010.03/291.81 1010.03/291.81 [nil] = [0] 1010.03/291.81 1010.03/291.81 [cons](x1, x2) = [1] x2 + [1] 1010.03/291.81 1010.03/291.81 [tuple](x1, x2) = [0] 1010.03/291.81 1010.03/291.81 [tuplenil](x1) = [1] x1 + [0] 1010.03/291.81 1010.03/291.81 [false] = [0] 1010.03/291.81 1010.03/291.81 [lock] = [0] 1010.03/291.81 1010.03/291.81 [mcrlrecord] = [0] 1010.03/291.81 1010.03/291.81 [pending] = [0] 1010.03/291.81 1010.03/291.81 [resource] = [0] 1010.03/291.81 1010.03/291.81 [true] = [0] 1010.03/291.81 1010.03/291.81 [record_extract](x1, x2, x3) = [0] 1010.03/291.81 1010.03/291.81 [record_update](x1, x2, x3, x4) = [0] 1010.03/291.81 1010.03/291.81 [subtract](x1, x2) = [0] 1010.03/291.81 1010.03/291.81 [member](x1, x2) = [0] 1010.03/291.81 1010.03/291.81 [append](x1, x2) = [0] 1010.03/291.81 1010.03/291.81 [equal](x1, x2) = [1] x1 + [0] 1010.03/291.81 1010.03/291.81 [delete](x1, x2) = [5] x1 + [0] 1010.03/291.81 1010.03/291.81 [case8](x1, x2, x3, x4) = [4] x1 + [1] x2 + [5] x3 + [0] 1010.03/291.81 1010.03/291.81 [case9](x1, x2, x3, x4) = [4] x1 + [7] x2 + [4] x3 + [0] 1010.03/291.81 1010.03/291.81 [record_updates^#](x1, x2, x3) = [1] x3 + [0] 1010.03/291.81 1010.03/291.81 [locker2_remove_pending^#](x1, x2) = [7] x1 + [7] x2 + [7] 1010.03/291.81 1010.03/291.81 [locker2_add_pending^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 1010.03/291.81 1010.03/291.81 [case1^#](x1, x2, x3, x4) = [7] x1 + [1] x2 + [4] x3 + [4] 1010.03/291.81 1010.03/291.81 [c_6](x1) = [1] x1 + [0] 1010.03/291.81 1010.03/291.81 [c_9](x1) = [1] x1 + [3] 1010.03/291.81 1010.03/291.81 [c_10](x1) = [1] x1 + [1] 1010.03/291.81 1010.03/291.81 [c_15](x1) = [1] x1 + [3] 1010.03/291.81 1010.03/291.81 The order satisfies the following ordering constraints: 1010.03/291.81 1010.03/291.81 [record_extract(tuple(mcrlrecord(), = [0] 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 resource())] 1010.03/291.81 >= [0] 1010.03/291.81 = [tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2)))))] 1010.03/291.81 1010.03/291.81 [record_update(tuple(mcrlrecord(), = [0] 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 pending(), 1010.03/291.81 NewF)] 1010.03/291.81 >= [0] 1010.03/291.81 = [tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF)))))] 1010.03/291.81 1010.03/291.81 [subtract(List, nil())] = [0] 1010.03/291.81 ? [1] List + [0] 1010.03/291.81 = [List] 1010.03/291.81 1010.03/291.81 [subtract(List, cons(Head, Tail))] = [0] 1010.03/291.81 >= [0] 1010.03/291.81 = [subtract(delete(Head, List), Tail)] 1010.03/291.81 1010.03/291.81 [member(E, nil())] = [0] 1010.03/291.81 >= [0] 1010.03/291.81 = [false()] 1010.03/291.81 1010.03/291.81 [member(E, cons(Head, Tail))] = [0] 1010.03/291.81 ? [7] Head + [4] Tail + [4] E + [0] 1010.03/291.81 = [case9(Tail, Head, E, equal(E, Head))] 1010.03/291.81 1010.03/291.81 [append(cons(Head, Tail), List)] = [0] 1010.03/291.81 ? [1] 1010.03/291.81 = [cons(Head, append(Tail, List))] 1010.03/291.81 1010.03/291.81 [delete(E, nil())] = [5] E + [0] 1010.03/291.81 >= [0] 1010.03/291.81 = [nil()] 1010.03/291.81 1010.03/291.81 [delete(E, cons(Head, Tail))] = [5] E + [0] 1010.03/291.81 ? [1] Head + [4] Tail + [5] E + [0] 1010.03/291.81 = [case8(Tail, Head, E, equal(E, Head))] 1010.03/291.81 1010.03/291.81 [case8(Tail, Head, E, false())] = [1] Head + [4] Tail + [5] E + [0] 1010.03/291.81 ? [5] E + [1] 1010.03/291.81 = [cons(Head, delete(E, Tail))] 1010.03/291.81 1010.03/291.81 [case8(Tail, Head, E, true())] = [1] Head + [4] Tail + [5] E + [0] 1010.03/291.81 >= [1] Tail + [0] 1010.03/291.81 = [Tail] 1010.03/291.81 1010.03/291.81 [case9(Tail, Head, E, false())] = [7] Head + [4] Tail + [4] E + [0] 1010.03/291.81 >= [0] 1010.03/291.81 = [member(E, Tail)] 1010.03/291.81 1010.03/291.81 [case9(Tail, Head, E, true())] = [7] Head + [4] Tail + [4] E + [0] 1010.03/291.81 >= [0] 1010.03/291.81 = [true()] 1010.03/291.81 1010.03/291.81 [record_updates^#(Record, = [1] Fields + [1] 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields))] 1010.03/291.81 > [1] Fields + [0] 1010.03/291.81 = [c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields))] 1010.03/291.81 1010.03/291.81 [locker2_remove_pending^#(Lock, Client)] = [7] Lock + [7] Client + [7] 1010.03/291.81 > [4] 1010.03/291.81 = [c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil())))] 1010.03/291.81 1010.03/291.81 [locker2_add_pending^#(Lock, Resources, Client)] = [7] Lock + [7] Resources + [7] Client + [7] 1010.03/291.81 >= [4] Lock + [1] Resources + [7] Client + [7] 1010.03/291.81 = [c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources)))] 1010.03/291.81 1010.03/291.81 [case1^#(Client, Resources, Lock, true())] = [4] Lock + [1] Resources + [7] Client + [4] 1010.03/291.81 > [2] 1010.03/291.81 = [c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil())))] 1010.03/291.81 1010.03/291.81 1010.03/291.81 We return to the main proof. Consider the set of all dependency 1010.03/291.81 pairs 1010.03/291.81 1010.03/291.81 : 1010.03/291.81 { 1: record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , 2: locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.81 c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.81 , 3: case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) 1010.03/291.81 , 4: locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 1010.03/291.81 Processor 'matrix interpretation of dimension 1' induces the 1010.03/291.81 complexity certificate YES(?,O(n^1)) on application of dependency 1010.03/291.81 pairs {1,3,4}. These cover all (indirect) predecessors of 1010.03/291.81 dependency pairs {1,2,3,4}, their number of application is equally 1010.03/291.81 bounded. The dependency pairs are shifted into the weak component. 1010.03/291.81 1010.03/291.81 We are left with following problem, upon which TcT provides the 1010.03/291.81 certificate YES(O(1),O(1)). 1010.03/291.81 1010.03/291.81 Weak DPs: 1010.03/291.81 { record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, 1010.03/291.81 lock(), 1010.03/291.81 pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) 1010.03/291.81 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.81 c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.81 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 Weak Trs: 1010.03/291.81 { record_extract(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 resource()) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.81 , record_update(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 pending(), 1010.03/291.81 NewF) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.81 , subtract(List, nil()) -> List 1010.03/291.81 , subtract(List, cons(Head, Tail)) -> 1010.03/291.81 subtract(delete(Head, List), Tail) 1010.03/291.81 , member(E, nil()) -> false() 1010.03/291.81 , member(E, cons(Head, Tail)) -> 1010.03/291.81 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.81 , delete(E, nil()) -> nil() 1010.03/291.81 , delete(E, cons(Head, Tail)) -> 1010.03/291.81 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.81 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.81 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.81 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.81 Obligation: 1010.03/291.81 innermost runtime complexity 1010.03/291.81 Answer: 1010.03/291.81 YES(O(1),O(1)) 1010.03/291.81 1010.03/291.81 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.81 closed under successors. The DPs are removed. 1010.03/291.81 1010.03/291.81 { record_updates^#(Record, 1010.03/291.81 Name, 1010.03/291.81 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.81 -> 1010.03/291.81 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.81 Name, 1010.03/291.81 Fields)) 1010.03/291.81 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.81 c_15(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) 1010.03/291.81 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.81 c_9(case1^#(Client, 1010.03/291.81 Resources, 1010.03/291.81 Lock, 1010.03/291.81 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.81 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.81 c_10(record_updates^#(Lock, 1010.03/291.81 lock(), 1010.03/291.81 cons(tuple(pending(), 1010.03/291.81 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.81 cons(Client, nil())))), 1010.03/291.81 nil()))) } 1010.03/291.81 1010.03/291.81 We are left with following problem, upon which TcT provides the 1010.03/291.81 certificate YES(O(1),O(1)). 1010.03/291.81 1010.03/291.81 Weak Trs: 1010.03/291.81 { record_extract(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 resource()) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.81 , record_update(tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.81 lock(), 1010.03/291.81 pending(), 1010.03/291.81 NewF) 1010.03/291.81 -> 1010.03/291.81 tuple(mcrlrecord(), 1010.03/291.81 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.81 , subtract(List, nil()) -> List 1010.03/291.81 , subtract(List, cons(Head, Tail)) -> 1010.03/291.81 subtract(delete(Head, List), Tail) 1010.03/291.81 , member(E, nil()) -> false() 1010.03/291.81 , member(E, cons(Head, Tail)) -> 1010.03/291.81 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.81 , delete(E, nil()) -> nil() 1010.03/291.81 , delete(E, cons(Head, Tail)) -> 1010.03/291.81 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.81 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.81 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.81 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.81 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.81 Obligation: 1010.03/291.81 innermost runtime complexity 1010.03/291.81 Answer: 1010.03/291.81 YES(O(1),O(1)) 1010.03/291.81 1010.03/291.81 No rule is usable, rules are removed from the input problem. 1010.03/291.81 1010.03/291.81 We are left with following problem, upon which TcT provides the 1010.03/291.81 certificate YES(O(1),O(1)). 1010.03/291.81 1010.03/291.81 Rules: Empty 1010.03/291.81 Obligation: 1010.03/291.81 innermost runtime complexity 1010.03/291.81 Answer: 1010.03/291.81 YES(O(1),O(1)) 1010.03/291.81 1010.03/291.81 Empty rules are trivially bounded 1010.03/291.81 1010.03/291.81 S) We are left with following problem, upon which TcT provides the 1010.03/291.81 certificate YES(O(1),O(n^1)). 1010.03/291.81 1010.03/291.81 Strict DPs: 1010.03/291.81 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.81 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.81 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.82 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { record_updates^#(Record, 1010.03/291.82 Name, 1010.03/291.82 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.82 -> 1010.03/291.82 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.82 Name, 1010.03/291.82 Fields)) 1010.03/291.82 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.82 c_15(record_updates^#(Lock, 1010.03/291.82 lock(), 1010.03/291.82 cons(tuple(pending(), 1010.03/291.82 tuplenil(subtract(record_extract(Lock, 1010.03/291.82 lock(), 1010.03/291.82 pending()), 1010.03/291.82 cons(Client, nil())))), 1010.03/291.82 nil()))) 1010.03/291.82 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.82 c_9(case1^#(Client, 1010.03/291.82 Resources, 1010.03/291.82 Lock, 1010.03/291.82 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.82 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.82 c_10(record_updates^#(Lock, 1010.03/291.82 lock(), 1010.03/291.82 cons(tuple(pending(), 1010.03/291.82 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.82 cons(Client, nil())))), 1010.03/291.82 nil()))) } 1010.03/291.82 Weak Trs: 1010.03/291.82 { record_extract(tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.82 lock(), 1010.03/291.82 resource()) 1010.03/291.82 -> 1010.03/291.82 tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.82 , record_update(tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.82 lock(), 1010.03/291.82 pending(), 1010.03/291.82 NewF) 1010.03/291.82 -> 1010.03/291.82 tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.82 , subtract(List, nil()) -> List 1010.03/291.82 , subtract(List, cons(Head, Tail)) -> 1010.03/291.82 subtract(delete(Head, List), Tail) 1010.03/291.82 , member(E, nil()) -> false() 1010.03/291.82 , member(E, cons(Head, Tail)) -> 1010.03/291.82 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.82 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.82 , delete(E, nil()) -> nil() 1010.03/291.82 , delete(E, cons(Head, Tail)) -> 1010.03/291.82 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.82 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.82 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.82 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.82 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.82 closed under successors. The DPs are removed. 1010.03/291.82 1010.03/291.82 { record_updates^#(Record, 1010.03/291.82 Name, 1010.03/291.82 cons(tuple(Field, tuplenil(NewF)), Fields)) 1010.03/291.82 -> 1010.03/291.82 c_6(record_updates^#(record_update(Record, Name, Field, NewF), 1010.03/291.82 Name, 1010.03/291.82 Fields)) 1010.03/291.82 , locker2_remove_pending^#(Lock, Client) -> 1010.03/291.82 c_15(record_updates^#(Lock, 1010.03/291.82 lock(), 1010.03/291.82 cons(tuple(pending(), 1010.03/291.82 tuplenil(subtract(record_extract(Lock, lock(), pending()), 1010.03/291.82 cons(Client, nil())))), 1010.03/291.82 nil()))) 1010.03/291.82 , locker2_add_pending^#(Lock, Resources, Client) -> 1010.03/291.82 c_9(case1^#(Client, 1010.03/291.82 Resources, 1010.03/291.82 Lock, 1010.03/291.82 member(record_extract(Lock, lock(), resource()), Resources))) 1010.03/291.82 , case1^#(Client, Resources, Lock, true()) -> 1010.03/291.82 c_10(record_updates^#(Lock, 1010.03/291.82 lock(), 1010.03/291.82 cons(tuple(pending(), 1010.03/291.82 tuplenil(append(record_extract(Lock, lock(), pending()), 1010.03/291.82 cons(Client, nil())))), 1010.03/291.82 nil()))) } 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.82 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Weak Trs: 1010.03/291.82 { record_extract(tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.82 lock(), 1010.03/291.82 resource()) 1010.03/291.82 -> 1010.03/291.82 tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))) 1010.03/291.82 , record_update(tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(F2))))), 1010.03/291.82 lock(), 1010.03/291.82 pending(), 1010.03/291.82 NewF) 1010.03/291.82 -> 1010.03/291.82 tuple(mcrlrecord(), 1010.03/291.82 tuple(lock(), tuple(F0, tuple(F1, tuplenil(NewF))))) 1010.03/291.82 , subtract(List, nil()) -> List 1010.03/291.82 , subtract(List, cons(Head, Tail)) -> 1010.03/291.82 subtract(delete(Head, List), Tail) 1010.03/291.82 , member(E, nil()) -> false() 1010.03/291.82 , member(E, cons(Head, Tail)) -> 1010.03/291.82 case9(Tail, Head, E, equal(E, Head)) 1010.03/291.82 , append(cons(Head, Tail), List) -> cons(Head, append(Tail, List)) 1010.03/291.82 , delete(E, nil()) -> nil() 1010.03/291.82 , delete(E, cons(Head, Tail)) -> 1010.03/291.82 case8(Tail, Head, E, equal(E, Head)) 1010.03/291.82 , case8(Tail, Head, E, false()) -> cons(Head, delete(E, Tail)) 1010.03/291.82 , case8(Tail, Head, E, true()) -> Tail 1010.03/291.82 , case9(Tail, Head, E, false()) -> member(E, Tail) 1010.03/291.82 , case9(Tail, Head, E, true()) -> true() } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 No rule is usable, rules are removed from the input problem. 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.82 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.82 orient following rules strictly. 1010.03/291.82 1010.03/291.82 DPs: 1010.03/291.82 { 6: locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , 7: locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) 1010.03/291.82 -> c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , 8: append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.82 , 10: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , 11: eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 1010.03/291.82 Sub-proof: 1010.03/291.82 ---------- 1010.03/291.82 The following argument positions are usable: 1010.03/291.82 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1, 2}, 1010.03/291.82 Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_7) = {1}, 1010.03/291.82 Uargs(c_8) = {1}, Uargs(c_11) = {1}, Uargs(c_12) = {1}, 1010.03/291.82 Uargs(c_13) = {1, 2}, Uargs(c_14) = {1, 2, 3} 1010.03/291.82 1010.03/291.82 TcT has computed the following constructor-based matrix 1010.03/291.82 interpretation satisfying not(EDA). 1010.03/291.82 1010.03/291.82 [pid](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [int](x1) = [0] 1010.03/291.82 1010.03/291.82 [cons](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [tuple](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [tuplenil](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [s](x1) = [0] 1010.03/291.82 1010.03/291.82 [stack](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [calls](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4] 1010.03/291.82 1010.03/291.82 [eqt^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [element^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [locker2_map_promote_pending^#](x1, x2) = [2] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_claim_lock^#](x1, x2, x3) = [2] x1 + [7] x2 + [7] x3 + [0] 1010.03/291.82 1010.03/291.82 [append^#](x1, x2) = [2] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [eqs^#](x1, x2) = [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [eqc^#](x1, x2) = [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_1](x1) = [4] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_2](x1, x2) = [4] x1 + [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_3](x1, x2) = [4] x1 + [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_4](x1) = [2] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_5](x1) = [2] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_7](x1) = [1] x1 + [5] 1010.03/291.82 1010.03/291.82 [c_8](x1) = [1] x1 + [7] 1010.03/291.82 1010.03/291.82 [c_11](x1) = [1] x1 + [7] 1010.03/291.82 1010.03/291.82 [c_12](x1) = [2] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_13](x1, x2) = [4] x1 + [1] x2 + [3] 1010.03/291.82 1010.03/291.82 [c_14](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [3] 1010.03/291.82 1010.03/291.82 The order satisfies the following ordering constraints: 1010.03/291.82 1010.03/291.82 [eqt^#(pid(N1), pid(N2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_1(eqt^#(N1, N2))] 1010.03/291.82 1010.03/291.82 [eqt^#(cons(H1, T1), cons(H2, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_2(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuple(H1, T1), tuple(H2, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_3(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuplenil(H1), tuplenil(H2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_4(eqt^#(H1, H2))] 1010.03/291.82 1010.03/291.82 [element^#(int(s(s(N1))), tuple(T1, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_5(element^#(int(s(N1)), T2))] 1010.03/291.82 1010.03/291.82 [locker2_map_promote_pending^#(cons(Lock, Locks), Pending)] = [7] Pending + [2] Lock + [2] Locks + [8] 1010.03/291.82 > [7] Pending + [2] Locks + [5] 1010.03/291.82 = [c_7(locker2_map_promote_pending^#(Locks, Pending))] 1010.03/291.82 1010.03/291.82 [locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client)] = [2] Lock + [2] Locks + [7] Resources + [7] Client + [8] 1010.03/291.82 > [2] Locks + [7] Resources + [7] Client + [7] 1010.03/291.82 = [c_8(locker2_map_claim_lock^#(Locks, Resources, Client))] 1010.03/291.82 1010.03/291.82 [append^#(cons(Head, Tail), List)] = [7] List + [2] Head + [2] Tail + [8] 1010.03/291.82 > [7] List + [2] Tail + [7] 1010.03/291.82 = [c_11(append^#(Tail, List))] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#(cons(Resource, Resources), Locks)] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_12(locker2_check_availables^#(Resources, Locks))] 1010.03/291.82 1010.03/291.82 [eqs^#(stack(E1, S1), stack(E2, S2))] = [1] E2 + [1] S2 + [4] 1010.03/291.82 > [1] S2 + [3] 1010.03/291.82 = [c_13(eqt^#(E1, E2), eqs^#(S1, S2))] 1010.03/291.82 1010.03/291.82 [eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2))] = [2] E2 + [2] S2 + [2] CS2 + [8] 1010.03/291.82 > [1] S2 + [2] CS2 + [3] 1010.03/291.82 = [c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2))] 1010.03/291.82 1010.03/291.82 1010.03/291.82 The strictly oriented rules are moved into the weak component. 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.82 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.82 closed under successors. The DPs are removed. 1010.03/291.82 1010.03/291.82 { locker2_map_promote_pending^#(cons(Lock, Locks), Pending) -> 1010.03/291.82 c_7(locker2_map_promote_pending^#(Locks, Pending)) 1010.03/291.82 , locker2_map_claim_lock^#(cons(Lock, Locks), Resources, Client) -> 1010.03/291.82 c_8(locker2_map_claim_lock^#(Locks, Resources, Client)) 1010.03/291.82 , append^#(cons(Head, Tail), List) -> c_11(append^#(Tail, List)) } 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.82 orient following rules strictly. 1010.03/291.82 1010.03/291.82 DPs: 1010.03/291.82 { 2: eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , 3: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , 4: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) } 1010.03/291.82 1010.03/291.82 Sub-proof: 1010.03/291.82 ---------- 1010.03/291.82 The following argument positions are usable: 1010.03/291.82 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1, 2}, 1010.03/291.82 Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_12) = {1}, 1010.03/291.82 Uargs(c_13) = {1, 2}, Uargs(c_14) = {1, 2, 3} 1010.03/291.82 1010.03/291.82 TcT has computed the following constructor-based matrix 1010.03/291.82 interpretation satisfying not(EDA). 1010.03/291.82 1010.03/291.82 [pid](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [int](x1) = [0] 1010.03/291.82 1010.03/291.82 [cons](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [tuple](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [tuplenil](x1) = [1] x1 + [4] 1010.03/291.82 1010.03/291.82 [s](x1) = [0] 1010.03/291.82 1010.03/291.82 [stack](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [calls](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 [eqt^#](x1, x2) = [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [element^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [locker2_map_promote_pending^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_claim_lock^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 1010.03/291.82 1010.03/291.82 [append^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [eqs^#](x1, x2) = [4] x2 + [0] 1010.03/291.82 1010.03/291.82 [eqc^#](x1, x2) = [4] x1 + [4] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_1](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_2](x1, x2) = [1] x1 + [1] x2 + [7] 1010.03/291.82 1010.03/291.82 [c_3](x1, x2) = [1] x1 + [1] x2 + [3] 1010.03/291.82 1010.03/291.82 [c_4](x1) = [1] x1 + [5] 1010.03/291.82 1010.03/291.82 [c_5](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_7](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_8](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_11](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_12](x1) = [4] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_13](x1, x2) = [2] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_14](x1, x2, x3) = [2] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 The order satisfies the following ordering constraints: 1010.03/291.82 1010.03/291.82 [eqt^#(pid(N1), pid(N2))] = [2] N2 + [0] 1010.03/291.82 >= [2] N2 + [0] 1010.03/291.82 = [c_1(eqt^#(N1, N2))] 1010.03/291.82 1010.03/291.82 [eqt^#(cons(H1, T1), cons(H2, T2))] = [2] H2 + [2] T2 + [8] 1010.03/291.82 > [2] H2 + [2] T2 + [7] 1010.03/291.82 = [c_2(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuple(H1, T1), tuple(H2, T2))] = [2] H2 + [2] T2 + [8] 1010.03/291.82 > [2] H2 + [2] T2 + [3] 1010.03/291.82 = [c_3(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuplenil(H1), tuplenil(H2))] = [2] H2 + [8] 1010.03/291.82 > [2] H2 + [5] 1010.03/291.82 = [c_4(eqt^#(H1, H2))] 1010.03/291.82 1010.03/291.82 [element^#(int(s(s(N1))), tuple(T1, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_5(element^#(int(s(N1)), T2))] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#(cons(Resource, Resources), Locks)] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_12(locker2_check_availables^#(Resources, Locks))] 1010.03/291.82 1010.03/291.82 [eqs^#(stack(E1, S1), stack(E2, S2))] = [4] E2 + [4] S2 + [0] 1010.03/291.82 >= [4] E2 + [4] S2 + [0] 1010.03/291.82 = [c_13(eqt^#(E1, E2), eqs^#(S1, S2))] 1010.03/291.82 1010.03/291.82 [eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2))] = [4] E2 + [4] S2 + [4] E1 + [4] S1 + [4] CS2 + [4] CS1 + [0] 1010.03/291.82 >= [4] E2 + [4] S2 + [4] CS2 + [4] CS1 + [0] 1010.03/291.82 = [c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2))] 1010.03/291.82 1010.03/291.82 1010.03/291.82 The strictly oriented rules are moved into the weak component. 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.82 orient following rules strictly. 1010.03/291.82 1010.03/291.82 DPs: 1010.03/291.82 { 2: element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , 5: eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , 6: eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , 7: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) } 1010.03/291.82 1010.03/291.82 Sub-proof: 1010.03/291.82 ---------- 1010.03/291.82 The following argument positions are usable: 1010.03/291.82 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1, 2}, 1010.03/291.82 Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_12) = {1}, 1010.03/291.82 Uargs(c_13) = {1, 2}, Uargs(c_14) = {1, 2, 3} 1010.03/291.82 1010.03/291.82 TcT has computed the following constructor-based matrix 1010.03/291.82 interpretation satisfying not(EDA). 1010.03/291.82 1010.03/291.82 [pid](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [int](x1) = [0] 1010.03/291.82 1010.03/291.82 [cons](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [tuple](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [tuplenil](x1) = [1] x1 + [4] 1010.03/291.82 1010.03/291.82 [s](x1) = [0] 1010.03/291.82 1010.03/291.82 [stack](x1, x2) = [1] x1 + [1] x2 + [1] 1010.03/291.82 1010.03/291.82 [calls](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 [eqt^#](x1, x2) = [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [element^#](x1, x2) = [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_promote_pending^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_claim_lock^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 1010.03/291.82 1010.03/291.82 [append^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [eqs^#](x1, x2) = [3] x1 + [5] x2 + [0] 1010.03/291.82 1010.03/291.82 [eqc^#](x1, x2) = [4] x1 + [6] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_1](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_2](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_3](x1, x2) = [1] x1 + [1] x2 + [3] 1010.03/291.82 1010.03/291.82 [c_4](x1) = [1] x1 + [5] 1010.03/291.82 1010.03/291.82 [c_5](x1) = [1] x1 + [1] 1010.03/291.82 1010.03/291.82 [c_7](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_8](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_11](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_12](x1) = [2] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_13](x1, x2) = [1] x1 + [1] x2 + [7] 1010.03/291.82 1010.03/291.82 [c_14](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 The order satisfies the following ordering constraints: 1010.03/291.82 1010.03/291.82 [eqt^#(pid(N1), pid(N2))] = [2] N2 + [0] 1010.03/291.82 >= [2] N2 + [0] 1010.03/291.82 = [c_1(eqt^#(N1, N2))] 1010.03/291.82 1010.03/291.82 [eqt^#(cons(H1, T1), cons(H2, T2))] = [2] H2 + [2] T2 + [0] 1010.03/291.82 >= [2] H2 + [2] T2 + [0] 1010.03/291.82 = [c_2(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuple(H1, T1), tuple(H2, T2))] = [2] H2 + [2] T2 + [8] 1010.03/291.82 > [2] H2 + [2] T2 + [3] 1010.03/291.82 = [c_3(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuplenil(H1), tuplenil(H2))] = [2] H2 + [8] 1010.03/291.82 > [2] H2 + [5] 1010.03/291.82 = [c_4(eqt^#(H1, H2))] 1010.03/291.82 1010.03/291.82 [element^#(int(s(s(N1))), tuple(T1, T2))] = [1] T2 + [1] T1 + [4] 1010.03/291.82 > [1] T2 + [1] 1010.03/291.82 = [c_5(element^#(int(s(N1)), T2))] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#(cons(Resource, Resources), Locks)] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_12(locker2_check_availables^#(Resources, Locks))] 1010.03/291.82 1010.03/291.82 [eqs^#(stack(E1, S1), stack(E2, S2))] = [5] E2 + [5] S2 + [3] E1 + [3] S1 + [8] 1010.03/291.82 > [2] E2 + [5] S2 + [3] S1 + [7] 1010.03/291.82 = [c_13(eqt^#(E1, E2), eqs^#(S1, S2))] 1010.03/291.82 1010.03/291.82 [eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2))] = [6] E2 + [6] S2 + [4] E1 + [4] S1 + [6] CS2 + [4] CS1 + [0] 1010.03/291.82 >= [2] E2 + [5] S2 + [3] S1 + [6] CS2 + [4] CS1 + [0] 1010.03/291.82 = [c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2))] 1010.03/291.82 1010.03/291.82 1010.03/291.82 The strictly oriented rules are moved into the weak component. 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.82 closed under successors. The DPs are removed. 1010.03/291.82 1010.03/291.82 { element^#(int(s(s(N1))), tuple(T1, T2)) -> 1010.03/291.82 c_5(element^#(int(s(N1)), T2)) } 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: 1010.03/291.82 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.82 Obligation: 1010.03/291.82 innermost runtime complexity 1010.03/291.82 Answer: 1010.03/291.82 YES(O(1),O(n^1)) 1010.03/291.82 1010.03/291.82 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.82 orient following rules strictly. 1010.03/291.82 1010.03/291.82 DPs: 1010.03/291.82 { 2: locker2_check_availables^#(cons(Resource, Resources), Locks) 1010.03/291.82 -> c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.82 , 6: eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) } 1010.03/291.82 1010.03/291.82 Sub-proof: 1010.03/291.82 ---------- 1010.03/291.82 The following argument positions are usable: 1010.03/291.82 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1, 2}, 1010.03/291.82 Uargs(c_4) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1, 2}, 1010.03/291.82 Uargs(c_14) = {1, 2, 3} 1010.03/291.82 1010.03/291.82 TcT has computed the following constructor-based matrix 1010.03/291.82 interpretation satisfying not(EDA). 1010.03/291.82 1010.03/291.82 [pid](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [int](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [cons](x1, x2) = [1] x1 + [1] x2 + [2] 1010.03/291.82 1010.03/291.82 [tuple](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.82 1010.03/291.82 [tuplenil](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [s](x1) = [1] x1 + [0] 1010.03/291.82 1010.03/291.82 [stack](x1, x2) = [1] x1 + [1] x2 + [4] 1010.03/291.82 1010.03/291.82 [calls](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 [eqt^#](x1, x2) = [0] 1010.03/291.82 1010.03/291.82 [element^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_promote_pending^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_map_claim_lock^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 1010.03/291.82 1010.03/291.82 [append^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#](x1, x2) = [4] x1 + [7] x2 + [1] 1010.03/291.82 1010.03/291.82 [eqs^#](x1, x2) = [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [eqc^#](x1, x2) = [4] x1 + [4] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_1](x1) = [4] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_2](x1, x2) = [4] x1 + [2] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_3](x1, x2) = [1] x1 + [4] x2 + [0] 1010.03/291.82 1010.03/291.82 [c_4](x1) = [2] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_5](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_7](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_8](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_11](x1) = [7] x1 + [0] 1010.03/291.82 1010.03/291.82 [c_12](x1) = [1] x1 + [5] 1010.03/291.82 1010.03/291.82 [c_13](x1, x2) = [1] x1 + [1] x2 + [7] 1010.03/291.82 1010.03/291.82 [c_14](x1, x2, x3) = [4] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.82 1010.03/291.82 The order satisfies the following ordering constraints: 1010.03/291.82 1010.03/291.82 [eqt^#(pid(N1), pid(N2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_1(eqt^#(N1, N2))] 1010.03/291.82 1010.03/291.82 [eqt^#(cons(H1, T1), cons(H2, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_2(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuple(H1, T1), tuple(H2, T2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_3(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.82 1010.03/291.82 [eqt^#(tuplenil(H1), tuplenil(H2))] = [0] 1010.03/291.82 >= [0] 1010.03/291.82 = [c_4(eqt^#(H1, H2))] 1010.03/291.82 1010.03/291.82 [locker2_check_availables^#(cons(Resource, Resources), Locks)] = [7] Locks + [4] Resources + [4] Resource + [9] 1010.03/291.82 > [7] Locks + [4] Resources + [6] 1010.03/291.82 = [c_12(locker2_check_availables^#(Resources, Locks))] 1010.03/291.82 1010.03/291.82 [eqs^#(stack(E1, S1), stack(E2, S2))] = [2] E2 + [2] S2 + [8] 1010.03/291.82 > [2] S2 + [7] 1010.03/291.82 = [c_13(eqt^#(E1, E2), eqs^#(S1, S2))] 1010.03/291.82 1010.03/291.82 [eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2))] = [4] E2 + [4] S2 + [4] E1 + [4] S1 + [4] CS2 + [4] CS1 + [0] 1010.03/291.82 >= [2] S2 + [4] CS2 + [4] CS1 + [0] 1010.03/291.82 = [c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2))] 1010.03/291.82 1010.03/291.82 1010.03/291.82 The strictly oriented rules are moved into the weak component. 1010.03/291.82 1010.03/291.82 We are left with following problem, upon which TcT provides the 1010.03/291.82 certificate YES(O(1),O(n^1)). 1010.03/291.82 1010.03/291.82 Strict DPs: { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) } 1010.03/291.82 Weak DPs: 1010.03/291.82 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.82 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.82 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.82 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.82 , locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.82 c_12(locker2_check_availables^#(Resources, Locks)) 1010.03/291.82 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.82 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.82 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.82 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.83 Obligation: 1010.03/291.83 innermost runtime complexity 1010.03/291.83 Answer: 1010.03/291.83 YES(O(1),O(n^1)) 1010.03/291.83 1010.03/291.83 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.83 closed under successors. The DPs are removed. 1010.03/291.83 1010.03/291.83 { locker2_check_availables^#(cons(Resource, Resources), Locks) -> 1010.03/291.83 c_12(locker2_check_availables^#(Resources, Locks)) } 1010.03/291.83 1010.03/291.83 We are left with following problem, upon which TcT provides the 1010.03/291.83 certificate YES(O(1),O(n^1)). 1010.03/291.83 1010.03/291.83 Strict DPs: { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) } 1010.03/291.83 Weak DPs: 1010.03/291.83 { eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.83 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.83 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.83 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.83 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.83 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.83 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.83 Obligation: 1010.03/291.83 innermost runtime complexity 1010.03/291.83 Answer: 1010.03/291.83 YES(O(1),O(n^1)) 1010.03/291.83 1010.03/291.83 We use the processor 'matrix interpretation of dimension 1' to 1010.03/291.83 orient following rules strictly. 1010.03/291.83 1010.03/291.83 DPs: 1010.03/291.83 { 1: eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) } 1010.03/291.83 1010.03/291.83 Sub-proof: 1010.03/291.83 ---------- 1010.03/291.83 The following argument positions are usable: 1010.03/291.83 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1, 2}, 1010.03/291.83 Uargs(c_4) = {1}, Uargs(c_13) = {1, 2}, Uargs(c_14) = {1, 2, 3} 1010.03/291.83 1010.03/291.83 TcT has computed the following constructor-based matrix 1010.03/291.83 interpretation satisfying not(EDA). 1010.03/291.83 1010.03/291.83 [pid](x1) = [1] x1 + [4] 1010.03/291.83 1010.03/291.83 [int](x1) = [1] x1 + [0] 1010.03/291.83 1010.03/291.83 [cons](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [tuple](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [tuplenil](x1) = [1] x1 + [0] 1010.03/291.83 1010.03/291.83 [s](x1) = [1] x1 + [0] 1010.03/291.83 1010.03/291.83 [stack](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [calls](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.83 1010.03/291.83 [eqt^#](x1, x2) = [2] x1 + [0] 1010.03/291.83 1010.03/291.83 [element^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.83 1010.03/291.83 [locker2_map_promote_pending^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.83 1010.03/291.83 [locker2_map_claim_lock^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 1010.03/291.83 1010.03/291.83 [append^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.83 1010.03/291.83 [locker2_check_availables^#](x1, x2) = [7] x1 + [7] x2 + [0] 1010.03/291.83 1010.03/291.83 [eqs^#](x1, x2) = [2] x1 + [0] 1010.03/291.83 1010.03/291.83 [eqc^#](x1, x2) = [4] x1 + [4] x2 + [0] 1010.03/291.83 1010.03/291.83 [c_1](x1) = [1] x1 + [1] 1010.03/291.83 1010.03/291.83 [c_2](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [c_3](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [c_4](x1) = [1] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_5](x1) = [7] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_7](x1) = [7] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_8](x1) = [7] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_11](x1) = [7] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_12](x1) = [7] x1 + [0] 1010.03/291.83 1010.03/291.83 [c_13](x1, x2) = [1] x1 + [1] x2 + [0] 1010.03/291.83 1010.03/291.83 [c_14](x1, x2, x3) = [2] x1 + [1] x2 + [1] x3 + [0] 1010.03/291.83 1010.03/291.83 The order satisfies the following ordering constraints: 1010.03/291.83 1010.03/291.83 [eqt^#(pid(N1), pid(N2))] = [2] N1 + [8] 1010.03/291.83 > [2] N1 + [1] 1010.03/291.83 = [c_1(eqt^#(N1, N2))] 1010.03/291.83 1010.03/291.83 [eqt^#(cons(H1, T1), cons(H2, T2))] = [2] H1 + [2] T1 + [0] 1010.03/291.83 >= [2] H1 + [2] T1 + [0] 1010.03/291.83 = [c_2(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.83 1010.03/291.83 [eqt^#(tuple(H1, T1), tuple(H2, T2))] = [2] H1 + [2] T1 + [0] 1010.03/291.83 >= [2] H1 + [2] T1 + [0] 1010.03/291.83 = [c_3(eqt^#(H1, H2), eqt^#(T1, T2))] 1010.03/291.83 1010.03/291.83 [eqt^#(tuplenil(H1), tuplenil(H2))] = [2] H1 + [0] 1010.03/291.83 >= [2] H1 + [0] 1010.03/291.83 = [c_4(eqt^#(H1, H2))] 1010.03/291.83 1010.03/291.83 [eqs^#(stack(E1, S1), stack(E2, S2))] = [2] E1 + [2] S1 + [0] 1010.03/291.83 >= [2] E1 + [2] S1 + [0] 1010.03/291.83 = [c_13(eqt^#(E1, E2), eqs^#(S1, S2))] 1010.03/291.83 1010.03/291.83 [eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2))] = [4] E2 + [4] S2 + [4] E1 + [4] S1 + [4] CS2 + [4] CS1 + [0] 1010.03/291.83 >= [4] E1 + [2] S1 + [4] CS2 + [4] CS1 + [0] 1010.03/291.83 = [c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2))] 1010.03/291.83 1010.03/291.83 1010.03/291.83 The strictly oriented rules are moved into the weak component. 1010.03/291.83 1010.03/291.83 We are left with following problem, upon which TcT provides the 1010.03/291.83 certificate YES(O(1),O(1)). 1010.03/291.83 1010.03/291.83 Weak DPs: 1010.03/291.83 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.83 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.83 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.83 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.83 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.83 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.83 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.83 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.83 Obligation: 1010.03/291.83 innermost runtime complexity 1010.03/291.83 Answer: 1010.03/291.83 YES(O(1),O(1)) 1010.03/291.83 1010.03/291.83 The following weak DPs constitute a sub-graph of the DG that is 1010.03/291.83 closed under successors. The DPs are removed. 1010.03/291.83 1010.03/291.83 { eqt^#(pid(N1), pid(N2)) -> c_1(eqt^#(N1, N2)) 1010.03/291.83 , eqt^#(cons(H1, T1), cons(H2, T2)) -> 1010.03/291.83 c_2(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuple(H1, T1), tuple(H2, T2)) -> 1010.03/291.83 c_3(eqt^#(H1, H2), eqt^#(T1, T2)) 1010.03/291.83 , eqt^#(tuplenil(H1), tuplenil(H2)) -> c_4(eqt^#(H1, H2)) 1010.03/291.83 , eqs^#(stack(E1, S1), stack(E2, S2)) -> 1010.03/291.83 c_13(eqt^#(E1, E2), eqs^#(S1, S2)) 1010.03/291.83 , eqc^#(calls(E1, S1, CS1), calls(E2, S2, CS2)) -> 1010.03/291.83 c_14(eqt^#(E1, E2), eqs^#(S1, S2), eqc^#(CS1, CS2)) } 1010.03/291.83 1010.03/291.83 We are left with following problem, upon which TcT provides the 1010.03/291.83 certificate YES(O(1),O(1)). 1010.03/291.83 1010.03/291.83 Rules: Empty 1010.03/291.83 Obligation: 1010.03/291.83 innermost runtime complexity 1010.03/291.83 Answer: 1010.03/291.83 YES(O(1),O(1)) 1010.03/291.83 1010.03/291.83 Empty rules are trivially bounded 1010.03/291.83 1010.03/291.83 1010.03/291.83 1010.03/291.83 Hurray, we answered YES(O(1),O(n^1)) 1010.03/291.83 EOF