docs: def blackbox_network():
      """A micro-network to demonstrate blackboxing.
  
      Diagram::
  
                                  +----------+
            +-------------------->+ A (COPY) + <---------------+
            |                     +----------+                 |
            |                 +----------+                     |
            |     +-----------+ B (COPY) + <-------------+     |
            v     v           +----------+               |     |
          +-+-----+-+                                  +-+-----+-+
          |         |                                  |         |
          | C (AND) |                                  | F (AND) |
          |         |                                  |         |
          +-+-----+-+                                  +-+-----+-+
            |     |                                      ^     ^
            |     |           +----------+               |     |
            |     +---------> + D (COPY) +---------------+     |
            |                 +----------+                     |
            |                     +----------+                 |
            +-------------------> + E (COPY) +-----------------+
                                  +----------+
  
      Connectivity Matrix:
  
      +---+---+---+---+---+---+---+
      | . | A | B | C | D | E | F |
      +---+---+---+---+---+---+---+
      | A | 0 | 0 | 1 | 0 | 0 | 0 |
      +---+---+---+---+---+---+---+
      | B | 0 | 0 | 1 | 0 | 0 | 0 |
      +---+---+---+---+---+---+---+
      | C | 0 | 0 | 0 | 1 | 1 | 0 |
      +---+---+---+---+---+---+---+
      | D | 0 | 0 | 0 | 0 | 0 | 1 |
      +---+---+---+---+---+---+---+
      | E | 0 | 0 | 0 | 0 | 0 | 1 |
      +---+---+---+---+---+---+---+
      | F | 1 | 1 | 0 | 0 | 0 | 0 |
      +---+---+---+---+---+---+---+
  
  
      In the documentation example, the state is (0, 0, 0, 0, 0, 0).
      """
      num_nodes = 6
      num_states = 2 ** num_nodes
      tpm = np.zeros((num_states, num_nodes))
  
      for index, previous_state in enumerate(all_states(num_nodes)):
          current_state = [0 for i in range(num_nodes)]
          if previous_state[5] == 1:
              current_state[0] = 1
              current_state[1] = 1
          if previous_state[0] == 1 and previous_state[1]:
              current_state[2] = 1
          if previous_state[2] == 1:
              current_state[3] = 1
              current_state[4] = 1
          if previous_state[3] == 1 and previous_state[4] == 1:
              current_state[5] = 1
          tpm[index, :] = current_state
  
      cm = np.array([
          [0, 0, 1, 0, 0, 0],
          [0, 0, 1, 0, 0, 0],
          [0, 0, 0, 1, 1, 0],
          [0, 0, 0, 0, 0, 1],
          [0, 0, 0, 0, 0, 1],
          [1, 1, 0, 0, 0, 0]
      ])
  
      return Network(tpm, cm, node_labels=LABELS[:tpm.shape[1]])