A service grammar can be defined in Backus Naur Form for a protocol. The
service grammar can be compiled into a service analyzer, which can
identify services from a trace of messages sent using the protocol.
Similarly, a workflow grammar can be defined for services implemented
using the protocol (a meta-grammar). The workflow grammar can be compiled
into a workflow analyzer, which can identify workflows from the services
(and therefore, indirectly from the trace). This workflow information can
be used to define actions for a User Agent (UA) that can act on behalf of
a person. The UA can be validated using the service analyzer and workflow
analyzer to verify that the UA is acting correctly.