示例#1
0
void testOneSet(const BSGSIN& bsgs, const unsigned long n, const dset& testSet, bool withStabilizer = false) {
	typedef typename BSGSIN::PERMtype PERM;

	OrbitSet<PERM,dset> orbit;
	orbit.orbit(testSet, bsgs.S, DSetAction<PERM>(n));
	typedef OrbitLexMinSearch<BSGSIN>  OrbitLexMinSearchClass;

	OrbitLexMinSearchClass orbLexMin(bsgs);
	const dset lexMin = orbLexMin.lexMin(testSet);
	//cout << "lexMin = " << lexMin << endl;

	BOOST_REQUIRE(orbit.contains(lexMin));

	BOOST_FOREACH(const dset& el, make_pair(orbit.begin(), orbit.end())) {
		//cout << el << " - " << lexMin << " : " << OrbitLexMinSearch<int>::isLexSmaller(el, lexMin) << endl;
		BOOST_CHECK(!OrbitLexMinSearchClass::isLexSmaller(el, lexMin));
	}
}