24 #ifndef COM_DAFER45_TBTK_DIFFERENCE_RULE
25 #define COM_DAFER45_TBTK_DIFFERENCE_RULE
27 #include "TBTK/FockStateRule/FockStateRule.h"
31 namespace FockStateRule{
33 class DifferenceRule :
public FockStateRule{
37 std::initializer_list<Index> addStateIndices,
38 std::initializer_list<Index> subtractStateIndices,
44 std::vector<Index> addStateIndices,
45 std::vector<Index> subtractStateIndices,
50 virtual ~DifferenceRule();
53 virtual DifferenceRule* clone()
const;
56 virtual WrapperRule createNewRule(
57 const LadderOperator<BitRegister> &ladderOperator
61 virtual WrapperRule createNewRule(
62 const LadderOperator<ExtensiveBitRegister> &ladderOperator
67 virtual bool isSatisfied(
68 const FockSpace<BitRegister> &fockSpace,
69 const FockState<BitRegister> &fockState
74 virtual bool isSatisfied(
75 const FockSpace<ExtensiveBitRegister> &fockSpace,
76 const FockState<ExtensiveBitRegister> &fockState
80 virtual bool operator==(
const FockStateRule &rhs)
const;
83 virtual void print()
const;
86 std::vector<Index> addStateIndices;
89 std::vector<Index> subtractStateIndices;