rename not to boolean_not because of the not pseudo keyword