and :code:`%c` is of type :code:`Tensor[(10, 10), float32]`.
.. code-block:: python
+
let %t = (False, Constant(1, (10, 10), float32));
let %c = %t.1;
%c
For example we can define an identity relation to be:
.. code-block:: prolog
+
Identity(I, I) :- true
It is usually convenient to type operators
and the return type. For example, we can define the relation for :code:`flatten`:
.. code-block:: prolog
+
Flatten(Tensor(sh, bt), O) :-
O = Tensor(sh[0], prod(sh[1:]))
to type operators like :code:`add`:
.. code-block:: python
+
add : fn<t1 : Type, t2 : Type, t3 : Type>(t1, t2) -> t3
where Broadcast