code: def down(self, i):
          
          x = self.heap[i]
          n = len(self.heap)
          while True:
              left = 2 * i       # climb down the tree
              right = left + 1
              if (right < n and self.heap[right] < x and
                      self.heap[right] < self.heap[left]):
                  self.heap[i] = self.heap[right]
                  self.rank[self.heap[right]] = i   # go back up right child
                  i = right
              elif left < n and self.heap[left] < x:
                  self.heap[i] = self.heap[left]
                  self.rank[self.heap[left]] = i    # go back up left child
                  i = left
              else:
                  self.heap[i] = x   # insertion index found
                  self.rank[x] = i
                  return
docs: the value of heap[i] has increased. Maintain heap invariant.