In psi4numpy’s tutorial for CIS seems to have an error.

$$

\langle ^{1}\psi_{a}^{r} | H- E_0 | ^{1}\psi_{b}^{s}\rangle = (\epsilon_{r}- \epsilon_{a}) \delta_{rs} \delta_{ab}\ \ - \ \ <rb|sa> \ + \ 2<rb|as>

$$

The formula used from Szabo and Ostlund, to calculate matrix elements of the Hamiltonian has MO indices (a,b… for occupied MOs and r,s… virtual MOs) but after spin blocking the entire notebook deals with the entire N electrons in terms of Spin-Orbitals. Also, the given formula that is being used, is for spin-adapted configuration state functions.

The excitation combinations that are generated in the notebook are between all occupied electron and virtual orbitals without accounting for spin. If I am not wrong the implementation below also accounts for

singles like a → r’ (where ’ denotes beta spin), which I think shouldn’t be considered.

Am I missing anything else here?

```
# Create instance of MintsHelper class
mints = psi4.core.MintsHelper(scf_wfn.basisset())
# Get basis and orbital information
nbf = mints.nbf() # Number of basis functions
nalpha = scf_wfn.nalpha() # Number of alpha electrons
nbeta = scf_wfn.nbeta() # Number of beta electrons
nocc = nalpha + nbeta # Total number of electrons
nso = 2 * nbf # Total number of spin orbitals
nvirt = nso - nocc # Number of virtual orbitals
.
.
.
.
# Build the possible excitations, collect indices into a list
excitations = []
for i in range(nocc):
for a in range(nocc, nso):
excitations.append((i, a))
```