+Note that DAG:connect allows to add a bunch of edges at once. This is
+particularly useful to add anonymous modules which have a single
+predecessor and successor.
+
+# Usage #
+
+## Input and output ##
+
+The DAG can deal with modules which take as input and produce as
+output tensors and nested tables of tensors.
+
+If a node has a single predecessor, the output of the latter is taken
+as-is as the input to the former. If it has multiple predecessors, all
+the outputs are collected into a table, and the table is used as
+input. The indexes of the outputs in that table reflect the
+chronological order in which the edges where created in the
+DAG:connect() commands.
+
+The input to the DAG (respectively the produced output) is a nested
+table of inputs reflecting the structure of the nested table of
+modules given as argument to DAG:setInput (respectively DAG:setOutput)
+
+So for instance, in the example above, the model expects a tensor as
+input, since it is the input to the module a, and its output will is a
+table composed of two tensors, corresponding to the outputs of d and e
+respectively.
+
+## Functions ##
+
+### nn.DAG() ###
+
+Create a new empty DAG, which inherits from nn.Container.