def test_trivially_commutes_both_hopping_and_number_on_same_modes(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('4^ 1'), FermionOperator('4^ 1^ 4 1')))
def test_no_trivial_commute_left_hopping_operator(self): self.assertFalse( trivially_commutes_dual_basis(FermionOperator('3^ 2'), FermionOperator('3^ 3')))
def test_trivially_commutes_both_hopping_annihilate_same_mode(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('4^ 1'), FermionOperator('3^ 1')))
def test_trivially_commutes_one_double_number_operators(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('3^ 2^ 3 2'), FermionOperator('3^ 3')))
def test_trivially_commutes_nonintersecting_single_number_operators(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('2^ 2'), FermionOperator('3^ 3')))
def test_trivially_commutes_both_single_number_operators(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('3^ 3'), FermionOperator('3^ 3')))
def test_no_trivial_commute_with_intersection(self): self.assertFalse( trivially_commutes_dual_basis(FermionOperator('2^ 1'), FermionOperator('5^ 2^ 5 2')))
def test_trivially_commutes_no_intersection(self): self.assertTrue( trivially_commutes_dual_basis(FermionOperator('3^ 2^ 3 2'), FermionOperator('4^ 1')))