:orphan:

response_requirements
*********************

Specifies the behaviors that are feasible responses for each stimulus.

:ref:`the-decision-function` computes the probabilities only for the feasible responses to a stimulus.

For example, in an experiment with the stimulus elements ``red_lever`` and ``blue_lever``, the
behavior ``press_blue_lever`` is a feasible respose to ``blue_lever`` but not to ``red_lever``.

The feasible responses to a compound stimulus (a set of stimulus elements) consist of the union
of the feasible responses for each element. For example, ``press_blue_lever`` is a feasible response
to the compund ``red_lever,blue_lever``.

Syntax
------
::

  response_requirements = b1:[e11, e12, ...],
                          b2:[e21, e22, ...],
                          ...
                          bn:[en1, en2, ...]

If a list of stimulus elements contains a single element, the brackets may be omitted:

::

  response_requirements = b1:e11,
                          b2:e21,
                          ...
                          bn:[en1, en2, ...]

Description
-----------

::

  response_requirements = b1:[e11, e12, ...],
                          b2:[e21, e22, ...],
                          ...
                          bn:[en1, en2, ...]

specifies that 

- ``b1`` is a feasible response to ``e11``, ``e12``, ...
- ``b2`` is a feasible response to ``e21``, ``e22``, ...
- ...
- ``bn`` is a feasible response to ``en1``, ``en2``, ...

The comma-separated list of ``behavior:[elements]`` may be line-broken:

::

  response_requirements = b1:e11,
                          b2:e21,
                          ...
                          bn:[en1, en2, ...]

is the same as

::

  response_requirements = b1:e11, b2:e21, ..., bn:[en1, en2, ...]  

Dependencies
------------

- The properties ``stimulus_elements`` and  ``behaviors`` must be specified before ``response_requirements``.
- Each stimulus element used in the specification of ``response_requirements`` must be present in the parameter ``stimulus_elements``.
- Each behavior used in the specification of ``response_requirements`` must be present in the parameter ``behaviors``.
- Applicable in all mechanisms except the Rescorla-Wagner mechanism.

Example
-------

::

  stimulus_elements =     blue_lever, red_lever, food
  behaviors =             ignore_lever, press_lever, eat
  response_requirements = press_lever: [blue_lever,red_lever]
                          ignore_lever: [blue_lever,red_lever]
                          eat:food

specifies that

- the only feasible responses to ``blue_lever`` is ``press_lever`` and ``ignore_lever``
- the only feasible responses to ``red_lever`` is ``press_lever`` and ``ignore_lever``, and 
- the only feasible response to ``food`` is ``eat``.
