*************
Subprograms
*************

.. container:: PRELUDE BEGIN

.. container:: PRELUDE ROLES

.. role:: ada(code)
    :language: Ada

.. role:: C(code)
    :language: C

.. role:: cpp(code)
    :language: C++

.. role:: rust(code)
    :language: Rust

.. container:: PRELUDE SYMBOLS

.. |rightarrow| replace:: :math:`\rightarrow`
.. |forall| replace:: :math:`\forall`
.. |exists| replace:: :math:`\exists`
.. |equivalent| replace:: :math:`\iff`
.. |le| replace:: :math:`\le`
.. |ge| replace:: :math:`\ge`
.. |lt| replace:: :math:`<`
.. |gt| replace:: :math:`>`
.. |checkmark| replace:: :math:`\checkmark`

.. container:: PRELUDE END

.. include:: 070_subprograms/01-introduction.rst
.. include:: 070_subprograms/02-syntax.rst
.. include:: 070_subprograms/03-parameters.rst
.. include:: 070_subprograms/04-null_procedures.rst
.. include:: 070_subprograms/05-nested_subprograms.rst
.. include:: 070_subprograms/06-procedure_specifics.rst
.. include:: 070_subprograms/07-function_specifics.rst
.. include:: 070_subprograms/08-expression_functions.rst
.. include:: 070_subprograms/09-potential_pitfalls.rst
.. include:: 070_subprograms/10-extended_example.rst
.. include:: 070_subprograms/88-subprograms.lab.rst
.. include:: 070_subprograms/99-summary.rst
