built-in predicate

# `protocol_property/2`

## Description

    protocol_property(Protocol, Property)

Enumerates, by backtracking, the properties associated with the currently defined protocols. The valid properties are listed in the language grammar section on entity properties and described in the User Manual section on protocol properties.

## Modes and number of proofs

    protocol_property(?protocol_identifier, ?protocol_property) - zero_or_more

## Errors

`Protocol` is neither a variable nor a valid protocol identifier:
`type_error(protocol_identifier, Protocol)`
`Property` is neither a variable nor a callable term:
`type_error(callable, Property)`
`Property` is a callable term but not a valid protocol property:
`domain_error(protocol_property, Property)`

## Examples

    % enumerate the properties of the monitoring built-in protocol:
    | ?- protocol_property(monitoring, Property).

    Property = source_data ;
    Property = static ;
    Property = built_in ;
    ...

See also

abolish_protocol/1, create_protocol/3, current_protocol/1, conforms_to_protocol/2-3, extends_protocol/2-3, implements_protocol/2-3