Ejemplo n.º 1
0
uint32_t pdbm_getUpperFacets(PDBM &pdbm, cindex_t dim, cindex_t *facets)
{
    assert(pdbm && dim && facets);

    cindex_t next[dim];
    cindex_t i;

    pdbm_prepare(pdbm, dim);

    raw_t *dbm = pdbm_matrix(pdbm);

    /* Make all upper facets weak.
     */
    dbm_relaxUp(dbm, dim);

    /* Identify zero cycles.
     */
    dbm_findZeroCycles(dbm, dim, next);

    /* Find non-redundant facets.
     */
    uint32_t cnt = 0;
    for (i = 0; i < dim; i++)
    {
        if (!next[i] && !isRedundant(dbm, dim, i, 0, next)) 
        {
            *facets = i;
            facets++;
            cnt++;
        }
    }
    return cnt;
}
Ejemplo n.º 2
0
uint32_t pdbm_getLowerRelativeFacets(
    PDBM &pdbm, cindex_t dim, cindex_t clock, cindex_t *facets)
{
    assert(pdbm && dim && clock < dim);

    cindex_t next[dim];
    cindex_t i;

    pdbm_prepare(pdbm, dim);

    raw_t *dbm = pdbm_matrix(pdbm);

    /* Make all lower facets relative to clock weak.
     */
    dbm_relaxDownClock(dbm, dim, clock);

    /* Identify zero cycles.
     */
    dbm_findZeroCycles(dbm, dim, next);

    /* Find non-redundant facets.
     */
    uint32_t cnt = 0;
    for (i = 0; i < dim; i++)
    {
        if (!next[i] && !isRedundant(dbm, dim, i, clock, next)) 
        {
            *facets = i;
            facets++;
            cnt++;
        }
    }
    return cnt;
}
Ejemplo n.º 3
0
void SygusRedundantCons::getRedundant(std::vector<unsigned>& indices)
{
  const Datatype& dt = static_cast<DatatypeType>(d_type.toType()).getDatatype();
  for (unsigned i = 0, ncons = dt.getNumConstructors(); i < ncons; i++)
  {
    if (isRedundant(i))
    {
      indices.push_back(i);
    }
  }
}