I am trying to implement the creation and annihilation operators $\hat{a}$ and $\hat{a}^{\dagger}$ of quantum mechanics with the following code, but alas, there is a problem with the pattern matching for the leading coefficient $cc\\_$. Any idea on how to fix this? I tried $cc\\_:1$, but that didn't work.

```
Clear[a, adag, cc, ketk, nn]; (* Choosing nn and cc to avoid name collisions *)
a[cc_ ketk_Ket] := With[{nn = ketk[[1]]}, cc Sqrt[nn] Ket[nn - 1]];
adag[cc_ ketk_Ket] := With[{nn = ketk[[1]]}, cc Sqrt[nn + 1] Ket[nn + 1]];

```

When I try give `Ket[0]`, i.e., $3|1\rangle$, to `adag`, I get back `adag[Ket[0]]`, but if there is a leading coefficient, then the pattern match works. For example, `adag[3 Ket[0]]` returns `3 Ket[1]`, i.e., $3|1\rangle$ . I think this shows my code doesn't know what to do for the first case in terms of matching.