<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def actual_causation():
 """The actual causation example network, consisting of an ``OR`` and ``AND`` gate with self-loops. """

    tpm = np.array([
        [1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 0, 1]
    ])
    cm = np.array([
        [1, 1],
        [1, 1]
    ])
    return Network(tpm, cm, node_labels=('OR', 'AND'))