24 #ifndef COM_DAFER45_TBTK_FOCK_STATE_RULE 
   25 #define COM_DAFER45_TBTK_FOCK_STATE_RULE 
   27 #include "TBTK/FockState.h" 
   30 #include "TBTK/LadderOperator.h" 
   34 template<
typename BIT_REGISTER>
 
   37 namespace FockStateRule{
 
   49     enum class FockStateRuleID {
 
   56     FockStateRule(FockStateRuleID fockStateRuleID);
 
   59     virtual ~FockStateRule();
 
   62     virtual FockStateRule* clone() 
const = 0;
 
   66     virtual WrapperRule createNewRule(
 
   67         const LadderOperator<BitRegister> &ladderOperator
 
   72     virtual WrapperRule createNewRule(
 
   73         const LadderOperator<ExtensiveBitRegister> &ladderOperator
 
   78     virtual bool isSatisfied(
 
   79         const FockSpace<BitRegister> &fockSpace,
 
   80         const FockState<BitRegister> &fockState
 
   85     virtual bool isSatisfied(
 
   86         const FockSpace<ExtensiveBitRegister> &fockSpace,
 
   87         const FockState<ExtensiveBitRegister> &fockState
 
   91     virtual bool operator==(
const FockStateRule &rhs) 
const = 0;
 
  100         const LadderOperator<BitRegister> &ladderOperator,
 
  101         const FockStateRule &fockStateRule
 
  111         const LadderOperator<ExtensiveBitRegister> &ladderOperator,
 
  112         const FockStateRule &fockStateRule
 
  116     FockStateRuleID getFockStateRuleID() 
const;
 
  119     virtual void print() 
const = 0;
 
  122     FockStateRuleID fockStateRuleID;
 
  125 inline FockStateRule::FockStateRuleID FockStateRule::getFockStateRuleID()
 const{
 
  126     return fockStateRuleID;