For all nodes proof and disproof numbers are stored, and updated during the search.
Finally, when a leaf node is reached, it is expanded and its children are evaluated.
By always selecting the most proving (disproving) node to expand, an efficient search is generated.
Some variants of proof number search like dfPN, PN2, PDS-PN[2] have been developed to address the quite big memory requirements of the algorithm.
Winands, M. Müller, and J-T. Saito (2012) Game-tree search using proof numbers: The first twenty years, ICGA, 35(3):131–156, pdf