One of the exercises in Hofstadter's Gödel, Escher, Bach (on page 227 of this pdf) asks us to produce the theorem $$\neg \forall b : \exists a : Sa = b$$ using only the first axiom of Typographical Number Theory and four rules relating to quantifiers:
Axiom 1: $\forall a : \neg Sa = 0$
Rule of Specification: Suppose $u$ is a variable which occurs inside the string $x$. If the string $\forall u: x$ is a theorem, then so is $x$, and so are any strings made from $x$ by replacing $u$, wherever it occurs, by one and the same term. (Restriction: The term which replaces $u$ must not contain any variable that is quantified in $x$.)
Rule of Generalization: Suppose $x$ is a theorem in which $u$, a variable, occurs free. Then $\forall u: x$ is a theorem. (Restriction: No generalization is allowed in a fantasy on any variable which appeared free in the fantasy's premise.)
Rule of Interchange: Suppose $u$ is a variable. Then the strings $\forall u: \neg$ and $\neg \exists u: $ are interchangeable anywhere inside any theorem.
Rule of Existence: Suppose a term (which may contain variables as long as they are free) appears one, or multiply, in a theorem. Then any (or several, or all) of the appearances o the term may be replaced by a variable which otherwise does not occur in the theorem, and the corresponding existential quantifier must be placed in front.
In my attempts, I can't seem to get around the introduction and removal of a double negative, which is not a specified rule. I also can't seem to derive the double negative rules from the given ones. So I'm having quite a hard time producing the required theorem. Here is what I have:
$$\begin{align*} \forall a : \neg Sa = 0 \tag{axiom 1} \\ \exists b : \forall a : \neg Sa = 0 \tag{existence} \\ \neg\neg \exists b : \forall a : \neg Sa = b \tag{introduce double neg} \\ \neg \forall b : \neg \forall a : \neg Sa = b \tag{interchange} \\ \neg \forall b : \neg\neg \exists a : Sa = b \tag{interchange} \\ \neg \forall b : \exists a : Sa = b \tag{remove double neg} \end{align*}$$
I'd like to prove the validity of introducing and removing double negatives using only the rules specified for this problem, but I don't even know how to start. I don't quite understand what can be taken as a premise. For example, can I start with a general $\forall x : P$ and somehow get to $\forall x : \neg\neg P$ and vice versa? Or is that not a valid term... sentence... predicate...? I'm very confused.
Regardless, if we can prove $\forall x : P$ implies $\forall x : \neg\neg P$, then I should be able to use the same logic to replace steps 3 and 6 in my proof above. I suppose that's what I'm asking for help with.
Thank you!