+ /// \brief Prepare for solving. Store initial values of parameters for undo
+ virtual void prepare();
+
+ /// \brief Revert solution to initial values
+ virtual void undo();
+
+ /// \brief Check the constraint is conflicted with others
+ virtual bool isConflicting(const ConstraintID& theConstraint) const;
+
+ /// \brief Degrees of freedom
+ virtual int dof() const;
+
+private:
+ /// \brief Check whether degenerated arcs exist
+ bool hasDegeneratedArcs() const;
+
+private: