diff --git a/doc/design.rst b/doc/design.rst index f402a933fad48133d8265617a6f9f639f3c996a2..b5db78a304e58e82f359d7f894a86b3778620c7e 100644 --- a/doc/design.rst +++ b/doc/design.rst @@ -81,6 +81,19 @@ Computation and Results Operations that *can* be expressed as :class:`~pytato.array.IndexLambda` without loss of information, *should* be expressed that way. +- Every :class:`~pytato.array.Array` instance can be viewed a computation + graph, where the :class:`~pytato.array.Array` instances form the nodes of + the graph and there is an edge between a node and the array it uses. Since + :class:`~pytato.array.Array` is an immutable type, the computation + computation graphs would belong to the class of Directed Acyclic Graphs + (DAGs). We choose the direction of the edges in the DAG to resemble the one + typically seen in a data-flow graph, i.e. the successors of a node are its + *users* and the predecessors of a node are the arrays that it *uses*. + + - Borrowing the notation from `LLVM + `__, we often refer to + the direct successors of a node by *users*. + Naming ------