@Test
  public void testIsClause() {
    Var a = new Var("a");
    Var b = new Var("b");
    Var c = new Var("c");

    assertTrue(a.isClause());
    assertTrue(b.isClause());
    assertTrue(c.isClause());

    // if a and b are both clauses, then so is (a or b)
    Formula f = a.or(b);
    assertTrue(f.isClause());

    // if f is a literals and c is a literals, then so is (f or c)
    assertTrue(f.or(c).isClause());
    assertTrue(c.or(f).isClause());

    Formula g = a.and(b);
    assertFalse(g.isClause());

    assertFalse(g.or(c).isClause());
    assertFalse(c.or(g).isClause());
  }