A bunch of examples
===================

To retrieve a list of random ingredients,
you can use the:math:``lumache.get_random_ingredients()`` function:

.. py:function:: lumache.get_random_ingredients(kind=None)

   Return a list of random ingredients as strings.

   :param kind: Optional "kind" of ingredients.
   :type kind: list[str] or None
   :raise lumache.InvalidKindError: If the kind is invalid.
   :return: The ingredients list.
   :rtype: list[str]

The:math:``kind`` parameter should be either:math:``"meat"``,:math:``"fish"``, or 
``"veggies"``. Otherwise, :py:func:`lumache.get_random_ingredients` will raise 
an exception.

.. py:exception:: lumache.InvalidKindError

   Raised if the kind is invalid.


.. cpp:type:: std::vector<int> CustomList

   A typedef-like declaration of a type.

Cross reference to :cpp:type:`CustomList`.



.. magma:function:: CosetTable(G, H)
   :input_types: Grp, Grp
   :output_types: CstTbl
   :label: CosetTable_Grp_Grp_CstTbl
   :canonical:


.. magma:function:: Order(G)
   :input_types: Grp
   :output_types: RngIntElt
   :label: Order_Grp_RngIntElt

.. magma:procedure:: Append(~L, x)
   :input_types: List, .
   :label: Append_List_Any

.. magma:operation:: g * h
   :name: *
   :input_types: GrpElt, GrpElt
   :output_types: GrpElt
   :label: mul_GrpElt_GrpElt_GrpElt

.. magma:operation:: (g, h)
   :name: commutator
   :input_types: GrpElt, GrpElt
   :output_types: GrpElt
   :label: commutator_GrpElt_GrpElt_GrpElt

.. magma:constructor:: Group< G | L >
   :input_types: Grp, SeqEnum
   :output_types: Grp
   :label: Group_Grp_SeqEnum_Grp   

:magma:func:`Order`
:magma:proc:`Append`
:magma:oper:`*`
:magma:oper:`commutator`
:magma:cons:`Group`


