Research Article
A Mechanically Proved and an Incremental Development of the Session Initiation Protocol INVITE Transaction
Algorithm 2
Events of first refinement.
INITIALISATION | BEGIN | act7: cl_sent | act8: cl_got | act9: sr_sent | act10: sr_got | act11: c_st Ready | act12: s_st Ready | END | client_Send_INVITE | REFINES | client_Send | ANY | msg | WHERE | grd4: msg REQUESTS | grd3: msg cl_sent | grd5: msg = INVITE | grd6: c_st = Ready | THEN | act6: cl_sent cl_sent {msg} | act7: c_st Calling | END | server_receive_INVITE | REFINES | server_Receive | ANY | msg | WHERE | grd5: msg REQUESTS | grd6: msg cl_sent | grd7: msg = INVITE | grd8: s_st = Ready | THEN | act5: sr_got sr_got {msg} | act6: s_st Proceeding | END | server_send_1xx | REFINES | server_send | ANY | msg | WHERE | grd1: msg RESPONSES | grd2: msg sr_sent | grd3: sr_got | grd4: msg = r1xx | grd5: s_st = Proceeding | THEN | act2: sr_sent sr_sent {msg} | act3: s_st Proceeding | END | client_Receive_1xx | REFINES | client_Receive | ANY | msg | WHERE | grd5: msg RESPONSES | grd6: msg sr_sent | grd7: msg = r1xx | grd8: c_st = Calling | THEN | act5: cl_got cl_got {msg} | act6: c_st Proceeding | END | server_send_2xx | REFINES | server_send | ANY | msg | WHERE | grd1: msg RESPONSES | grd2: msg sr_sent | grd3: sr_got | grd4: msg = r2xx | grd5: s_st = Proceeding | THEN | act2: sr_sent sr_sent {msg} | act3: s_st Accepted | END | client_Receive_2xx | REFINES | client_Receive | ANY | msg | WHERE | grd5: msg RESPONSES | grd6: msg sr_sent | grd7: msg = r2xx | grd8: c_st = Calling c_st = Proceeding | THEN | act5: cl_got cl_got {msg} | act6: c_st Accepted | END | server_send_3xx-699 | REFINES | server_send | ANY | msg | WHERE | grd1: msg RESPONSES | grd2: msg sr_sent | grd3: sr_got | grd4: msg = r3xx_r699 | grd5: s_st = Proceeding | THEN | act2: sr_sent sr_sent {msg} | act3: s_st Completed | END | client_Receive_3xx-699 | REFINES | client_Receive | ANY | msg | WHERE | grd5: msg RESPONSES | grd6: msg sr_sent | grd7: msg = r3xx_r699 | grd8: c_st = Calling c_st = Proceeding | THEN | act5: cl_got cl_got {msg} | act6: c_st Completed | END | client_send_ACK | REFINES | client_Send | ANY | msg | WHERE | grd4: msg REQUESTS | grd3: msg cl_sent | grd5: msg = ACK | grd6: c_st = Completed | THEN | act6: cl_sent cl_sent {msg} | act7: c_st Completed | END | server_Receive_ACK | REFINES | server_Receive | ANY | msg | WHERE | grd5: msg REQUESTS | grd6: msg cl_sent | grd7: msg = ACK | grd8: s_st = Completed | THEN | act5: sr_got sr_got {msg} | act6: s_st Confirmed | END | Client_final_state | STATUS | anticipated | BEGIN | act1: c_st Terminated | END | Server_final_state | STATUS | anticipated | BEGIN | act1: s_st Terminated | END |
|