#include "../include/Ordering.h" #include "../include/Mgr.h" #include "../include/Base.h" #include using namespace std; vector increasing(int n) { return populate(n, id); } vector decreasing(int n) { return populate(n, [=] (int i) -> int { return n - i - 1; }); } vector> interleaved(int nInputs, int nOutputs, const vector& innerOrdering) { int k = nInputs + nOutputs; vector> var(k, vector(innerOrdering.size())); for (auto it = innerOrdering.begin(); it != innerOrdering.end(); it++) for (int i = 0; i < k; i++) { var[i][*it] = m.bddVar(); } return var; } vector> inOrder(int nInputs, int nOutputs, const vector& innerOrdering) { int k = nInputs + nOutputs; vector> var(k, vector(innerOrdering.size())); for (int i = 0; i < k; i++) for (auto it = innerOrdering.begin(); it != innerOrdering.end(); it++) { var[i][*it] = m.bddVar(); } return var; }