void GetImplySufficient(CheckerFrame *frame, Vector<Bit*> *imply_list)
{
  // only getting implications for loops for now.
  if (frame->Kind() != B_Loop)
    return;

  // look for assumed bits of the form 'A || B'.
  // then check if either !A or !B is a sufficient condition
  // (this will force the other half of the implication to hold).

  for (size_t bind = 0; bind < frame->m_assumed_bits.Size(); bind++) {
    Bit *bit = frame->m_assumed_bits[bind];

    if (bit->Kind() == BIT_Or) {
      for (size_t oind = 0; oind < bit->GetOperandCount(); oind++) {
        Bit *op = bit->GetOperand(oind);
        Bit *nop = Bit::MakeNot(op);

        if (!imply_list->Contains(nop))
          imply_list->PushBack(nop);
      }
    }
  }
}