Termination proof

1: switching to dependency pairs

The following set of initial dependency pairs has been identified.

eqt#( pid( N1 ) , pid( N2 ) ) eqt#( N1 , N2 )
eqt#( cons( H1 , T1 ) , cons( H2 , T2 ) ) and#( eqt( H1 , H2 ) , eqt( T1 , T2 ) )
eqt#( cons( H1 , T1 ) , cons( H2 , T2 ) ) eqt#( H1 , H2 )
eqt#( cons( H1 , T1 ) , cons( H2 , T2 ) ) eqt#( T1 , T2 )
eqt#( tuple( H1 , T1 ) , tuple( H2 , T2 ) ) and#( eqt( H1 , H2 ) , eqt( T1 , T2 ) )
eqt#( tuple( H1 , T1 ) , tuple( H2 , T2 ) ) eqt#( H1 , H2 )
eqt#( tuple( H1 , T1 ) , tuple( H2 , T2 ) ) eqt#( T1 , T2 )
eqt#( tuplenil( H1 ) , tuplenil( H2 ) ) eqt#( H1 , H2 )
element#( int( s( s( N1 ) ) ) , tuple( T1 , T2 ) ) element#( int( s( N1 ) ) , T2 )
record_updates#( Record , Name , cons( tuple( Field , tuplenil( NewF ) ) , Fields ) ) record_updates#( record_update( Record , Name , Field , NewF ) , Name , Fields )
record_updates#( Record , Name , cons( tuple( Field , tuplenil( NewF ) ) , Fields ) ) record_update#( Record , Name , Field , NewF )
locker2_map_promote_pending#( cons( Lock , Locks ) , Pending ) locker2_promote_pending#( Lock , Pending )
locker2_map_promote_pending#( cons( Lock , Locks ) , Pending ) locker2_map_promote_pending#( Locks , Pending )
locker2_map_claim_lock#( cons( Lock , Locks ) , Resources , Client ) locker2_map_claim_lock#( Locks , Resources , Client )
locker2_promote_pending#( Lock , Client ) case0#( Client , Lock , record_extract( Lock , lock , pending ) )
locker2_promote_pending#( Lock , Client ) record_extract#( Lock , lock , pending )
case0#( Client , Lock , cons( Client , Pendings ) ) record_updates#( Lock , lock , cons( tuple( excl , tuplenil( Client ) ) , cons( tuple( pending , tuplenil( Pendings ) ) , nil ) ) )
locker2_remove_pending#( Lock , Client ) record_updates#( Lock , lock , cons( tuple( pending , tuplenil( subtract( record_extract( Lock , lock , pending ) , cons( Client , nil ) ) ) ) , nil ) )
locker2_remove_pending#( Lock , Client ) subtract#( record_extract( Lock , lock , pending ) , cons( Client , nil ) )
locker2_remove_pending#( Lock , Client ) record_extract#( Lock , lock , pending )
locker2_add_pending#( Lock , Resources , Client ) case1#( Client , Resources , Lock , member( record_extract( Lock , lock , resource ) , Resources ) )
locker2_add_pending#( Lock , Resources , Client ) member#( record_extract( Lock , lock , resource ) , Resources )
locker2_add_pending#( Lock , Resources , Client ) record_extract#( Lock , lock , resource )
case1#( Client , Resources , Lock , true ) record_updates#( Lock , lock , cons( tuple( pending , tuplenil( append( record_extract( Lock , lock , pending ) , cons( Client , nil ) ) ) ) , nil ) )
case1#( Client , Resources , Lock , true ) append#( record_extract( Lock , lock , pending ) , cons( Client , nil ) )
case1#( Client , Resources , Lock , true ) record_extract#( Lock , lock , pending )
locker2_release_lock#( Lock , Client ) case2#( Client , Lock , gen_modtageq( Client , record_extract( Lock , lock , excl ) ) )
locker2_release_lock#( Lock , Client ) gen_modtageq#( Client , record_extract( Lock , lock , excl ) )
locker2_release_lock#( Lock , Client ) record_extract#( Lock , lock , excl )
case2#( Client , Lock , true ) record_updates#( Lock , lock , cons( tuple( excllock , excl ) , nil ) )
locker2_obtainables#( cons( Lock , Locks ) , Client ) case5#( Client , Locks , Lock , member( Client , record_extract( Lock , lock , pending ) ) )
locker2_obtainables#( cons( Lock , Locks ) , Client ) member#( Client , record_extract( Lock , lock , pending ) )
locker2_obtainables#( cons( Lock , Locks ) , Client ) record_extract#( Lock , lock , pending )
case5#( Client , Locks , Lock , true ) locker2_obtainables#( Locks , Client )
case5#( Client , Locks , Lock , false ) locker2_obtainables#( Locks , Client )
locker2_check_available#( Resource , cons( Lock , Locks ) ) case6#( Locks , Lock , Resource , equal( Resource , record_extract( Lock , lock , resource ) ) )
locker2_check_available#( Resource , cons( Lock , Locks ) ) record_extract#( Lock , lock , resource )
case6#( Locks , Lock , Resource , true ) record_extract#( Lock , lock , excl )
case6#( Locks , Lock , Resource , true ) record_extract#( Lock , lock , pending )
case6#( Locks , Lock , Resource , false ) locker2_check_available#( Resource , Locks )
locker2_check_availables#( cons( Resource , Resources ) , Locks ) locker2_check_available#( Resource , Locks )
locker2_check_availables#( cons( Resource , Resources ) , Locks ) locker2_check_availables#( Resources , Locks )
append#( cons( Head , Tail ) , List ) append#( Tail , List )
subtract#( List , cons( Head , Tail ) ) subtract#( delete( Head , List ) , Tail )
subtract#( List , cons( Head , Tail ) ) delete#( Head , List )
delete#( E , cons( Head , Tail ) ) case8#( Tail , Head , E , equal( E , Head ) )
case8#( Tail , Head , E , false ) delete#( E , Tail )
member#( E , cons( Head , Tail ) ) case9#( Tail , Head , E , equal( E , Head ) )
case9#( Tail , Head , E , false ) member#( E , Tail )
eqs#( stack( E1 , S1 ) , stack( E2 , S2 ) ) and#( eqt( E1 , E2 ) , eqs( S1 , S2 ) )
eqs#( stack( E1 , S1 ) , stack( E2 , S2 ) ) eqt#( E1 , E2 )
eqs#( stack( E1 , S1 ) , stack( E2 , S2 ) ) eqs#( S1 , S2 )
istops#( E1 , stack( E2 , S1 ) ) eqt#( E1 , E2 )
eqc#( calls( E1 , S1 , CS1 ) , calls( E2 , S2 , CS2 ) ) and#( eqt( E1 , E2 ) , and( eqs( S1 , S2 ) , eqc( CS1 , CS2 ) ) )
eqc#( calls( E1 , S1 , CS1 ) , calls( E2 , S2 , CS2 ) ) eqt#( E1 , E2 )
eqc#( calls( E1 , S1 , CS1 ) , calls( E2 , S2 , CS2 ) ) and#( eqs( S1 , S2 ) , eqc( CS1 , CS2 ) )
eqc#( calls( E1 , S1 , CS1 ) , calls( E2 , S2 , CS2 ) ) eqs#( S1 , S2 )
eqc#( calls( E1 , S1 , CS1 ) , calls( E2 , S2 , CS2 ) ) eqc#( CS1 , CS2 )
push#( E1 , E2 , calls( E3 , S1 , CS1 ) ) push1#( E1 , E2 , E3 , S1 , CS1 , eqt( E1 , E3 ) )
push#( E1 , E2 , calls( E3 , S1 , CS1 ) ) eqt#( E1 , E3 )
push1#( E1 , E2 , E3 , S1 , CS1 , T ) pushs#( E2 , S1 )

1.1: dependency graph processor

The dependency pairs are split into 11 component(s).