#include <gecode/driver.hh>

using namespace Gecode;

class Bug : public Script
{
protected:
	BoolVar b;
public:
	Bug() : b(*this, 0, 1) {
		//b = expr(*this, singleton(1) <= IntSet(1, 2)); // should be: true, is: true
		//b = expr(*this, singleton(1) >= IntSet(1, 2)); // should be: false, is: false
		//b = expr(*this, IntSet(1, 2) <= singleton(1)); // should be: false, is: true
		b = expr(*this, IntSet(1, 2) >= singleton(1)); // should be: true, is: false
	}
	Bug(bool share, Bug& mh) : Script(share, mh) {
		b.update(*this, share, mh.b);
	}
	virtual Space* copy(bool share) {
		return new Bug(share, *this);
	}
	virtual void print() const {
		std::cout << b << std::endl;
	}
};

int main(int argc, char* argv[]) {
	DFS<Bug> e(new Bug);
	e.next()->print();
	return 0;
}
