Nicod's reduction of Principia Mathematica

In his work A Reduction in the number of the Primitive Propositions of Logic, Jean Nicod puts forth a single rule of detachment and a single further axiom, the Prop in terms of the Sheffer stroke in order to reduce the propositional logic of Principia Mathematica to just these two axioms.

Here we show that Nicod's axioms imply the Principia axioms. In Propositional calculus implies Nicod's axioms we show the converse. Therefore, the two axiomizations are equivalent.

The axioms are defined in Interface:Nicod axioms, which we import straight away.  import (NICOD Interface:Nicod_axioms )  For reference, the two axioms are $$\vdash p,\vdash p\vert(q\vert r)\Rightarrow\vdash r$$ and $$(p\vert(q\vert r))\vert((t\vert(t\vert t))\vert((s\vert q)\vert(\neg(p\vert s)))))$$.

It is our goal to derive the Principia axioms in Interface:Principia Mathematica propositional logic.

Proof of $$t\vert(t\vert t)$$
The first step is to prove the Identity theorem $$t\vert(t\vert t)$$, abbreviated Id, which, in Nicod's definitions, is just $$t\rightarrow t$$, one of Principia's theorems. We first define some placeholders for well-formed formulas and some abbreviations.  var (wff p q r s t u) def ((P p q r) (p | (q | r))) def ((Q p q s) ((s | q) | (¬ (p | s)))) def ((π t) (t | (t | t))) def ((Q1 s t) ((s | t) | (¬ (t | s)))) def ((T s t) ((π t) | ((π t) | (Q1 s t))))  Given these abbreviations, the Prop has the form $$P\vert\pi/Q$$, where we use, following Nicod, slanted strokes to indicate stronger precedence. Our goal is to prove $$\pi$$. We do this in several steps. First, we prove a kind of permutation law:  thm (IdLemma1  ((u | ((π t) | s)) | (¬ ((s | (π t)) | u))) ( t t t t s Prop (π t) (π t) (Q1 s t) t s Prop applyRule # yields (s | π) | (¬ (π | s)) (s | (π t)) ((π t) | s) ((π t) | s) t u Prop applyRule ))  This lemma enables us to prove two more lemmas. For one, $$Q/\pi\vert P$$, the "reverse" of the Prop, and finally a special case of $$(u\vert P)\vert(\neg(T\vert u))$$.  thm (IdLemma2  (((Q p q s) | (π t)) | (P p q r)) ( p q r t s Prop (P p q r) t (Q p q s) IdLemma1 applyRule )) thm (IdLemma3  ((u | (P ((Q1 s t) | (π t)) t (t | t))) | (¬ ((T s t) | u))) ( (π t) t (Q1 s t) IdLemma1 (T s t) (P ((Q1 s t) | (π t)) t (t | t)) (P ((Q1 s t) | (π t)) t (t | t)) t u Prop applyRule ))  Now we can prove Identity, $$\pi$$, by substituting $$Q/\pi$$ for $$u$$ in Lemma 3 and using Lemma 2 to arrive at $$T|Q/\pi$$, since $$T$$ is just the Prop with all variables set to $$t$$.  thm (Id  (t | (t | t)) ( t t t t t Prop ((Q1 t t) | (π t)) t t t (t | t) IdLemma2 ((Q ((Q1 t t) | (π t)) t t) | (π t)) t t IdLemma3 applyRule # yields T|Q/π applyRule )) 

Permutation, Tautology and Addition
Combining Id with the Prop, we can now derive theorems which roughly correspond to the Principia axioms Perm, Taut and Add. By the form of the Prop, we immediately get the following permutation theorem:  thm (Permutation  ((s | p) | (¬ (p | s))) ( p Id       p p p t s Prop applyRule ))  Very often, we will need a simple permutation of a result just derived. It is therefore worthwhile to introduce the following permutation rule:  thm (permute ((H (s | p))) (p | s) ( H       s p Permutation applyRule ))  By permuting the identity, we get  thm (Tautology  (((p | p) | (p | p)) | (p | p)) ( (p | p) Id       permute ))  Finally, we prove the following addition law:  thm (Addition  (s | (¬ (p | (s | s)))) ( </jh> We first push an Id on the stack as we shall need it in a minute:  s Id </jh> Now, by permuting Permutation,  (s | s) p Permutation permute </jh> we arrive at $$(\neg(p\vert(s\vert s)))\vert((s\vert s)\vert p)$$. Using this with the Prop,  (¬ (p | (s | s))) (s | s) p t s Prop applyRule </jh> we get $$(s\vert(s\vert s))\vert(\neg((\neg(p\vert(s\vert s)))\vert s))$$. With the Id pushed on the stack, we get the permutation of what we want to prove. We can now finish the proof easily:  applyRule permute )) </jh>

Syllogism
Before we can go on to prove an Association and a Summation law, we first need a Syllogism law. This law is basically already present in the Prop, but with a deliberate permutation that enabled us to prove the very Permutation law above. It will require some work to remove this permutation. We first need a lemma:  thm (SyllogismLemma  ((p | p) | (¬ (s | p))) ( </jh> The proof of this lemma will be similar in structure to the proof of Addition: we use a permuted Permutation with the Prop to obtain the desired result with the Identity, only this time, we need the permuted Identity:  p Id       permute </jh> Using the permuted Permutation with the Prop  p s Permutation permute (¬ (s | p)) p s t (p | p) Prop applyRule </jh> yields $$(p/p\vert p)\vert(\neg((\neg(s\vert p))\vert(p\vert p)))$$, so we finish the proof as in Association:  applyRule permute )) </jh>

We now derive the Syllogism with the built-in permutation:  thm (S'  ((p | (q | r)) | (¬ ((s | q) | (¬ (p | s))))) ( </jh> The proof works through a transition from $$P\vert\pi/Q$$ (i.e., the Prop) to $$P\vert Q/Q$$, so we put the Prop on the stack to apply the rule later:  p q r t s Prop </jh> We use the lemma above to convert the $$\pi$$ in the Prop to a $$Q$$:  (Q p q s) (π t) SyllogismLemma ((Q p q s) | (Q p q s)) ((π t) | (Q p q s)) ((π t) | (Q p q s)) t (P p q r) Prop applyRule </jh> What we have now is $$P\vert\pi/Q\rightarrow Q/Q\vert P$$, so all we need to finish the proof is to apply the rule and permute the right-hand part:  applyRule permute )) </jh> Now, S' differs from a "real" syllogism only in the permutation $$s\vert q$$ vs. $$q\vert s$$. Unfortunately, this permutation is buried deep within S', so some work is required.

 thm (Syllogism  ((p | (q | r)) | (¬ ((q | s) | (¬ (p | s))))) ( q s Permutation (q | s) (s | q) (s | q) (¬ (p | s)) S'       applyRule permute </jh> At this point, we have $$((q\vert s)\rightarrow(p\vert s))\leftarrow((p\vert s)\leftarrow(s\vert q))$$. Let's permute the consequent,  (s | q) (¬ (p | s)) Permutation ((s | q) | (¬ (p | s))) ((¬ (p | s)) | (s | q)) ((¬ (p | s)) | (s | q)) (¬ ((q | s) | (¬ (p | s)))) S'       applyRule applyRule permute </jh> giving $$((q\vert s)\rightarrow(p\vert s))\leftarrow((s\vert q)\rightarrow(p\vert s))$$. All we need to do now is to prepend the first antecedent, $$p\vert q/r$$, to finish the proof via S' itself:  p q r s S'       (p | (q | r)) ((s | q) | (¬ (p | s))) ((s | q) | (¬ (p | s))) (¬ ((q | s) | (¬ (p | s)))) S'        applyRule applyRule )) </jh>

Just as in Principia, this Syllogism can be used to chain implications. As this is a frequent application, we define a rule to that effect: <jh> thm (applySyllogism ((H1 (p → q)) (H2 (q → r))) (p → r) ( H2 H1       p q q (r | r) Syllogism applyRule applyRule )) </jh>

Association
Now we can prove Association, <jh> thm (Association  ((p | (¬ (q | r))) | (¬ (q | (¬ (p | r))))) ( </jh> in other words, $$(p\rightarrow(q\vert r))\rightarrow(q\rightarrow(p\vert r))$$. Syllogism, <jh> p (q | r) (q | r) r Syllogism </jh> gives us $$(p\rightarrow(q\vert r))\rightarrow(((q\vert r)\vert r)\rightarrow(p\vert r))$$. To continue, we need the statement $$q\rightarrow q/r\vert r$$. Call this statement $$L$$. We shall prove $$L$$ in two steps.

Step 1: $$q\rightarrow L$$
We prove this step by a chain of syllogisms. We begin by chaining Addition and Syllogism itself: <jh> q r Addition r q q r Syllogism applySyllogism </jh> This yields $$q\rightarrow((q\vert r)\rightarrow(r\vert r))$$. One more Syllogism <jh> (q | r) (r | r) (r | r) r Syllogism applySyllogism </jh> yields $$q\rightarrow((r/r\vert r)\rightarrow(q/r\vert r))$$. In order to arrive at $$L$$, we need the statement $$q\rightarrow(r/r\vert r)$$, which is an addition to a permuted Id: <jh> r Id       permute ((r | r) | r) q Addition applyRule </jh> We now implement this statement, <jh> q ((r | r) | r) ((r | r) | r) (¬ ((q | r) | r)) Syllogism applyRule applySyllogism </jh> completing the first step.

Step 2: $$(L\vert L)\rightarrow q$$
This is simply the syllogism lemma from above, with a few permutations: <jh> q (¬ ((q | r) | r)) SyllogismLemma (¬ ((q | r) | r)) q Permutation applySyllogism permute </jh>

Combination of the two steps
We can combine these two steps through a Syllogism, <jh> (¬ (q | (¬ ((q | r) | r)))) q q (¬ (q | (¬ ((q | r) | r)))) Syllogism applyRule applyRule </jh> to achieve $$L/L\vert L/L$$. This reduces to $$L$$ by Tautology: <jh> (q | (¬ ((q | r) | r))) Tautology applyRule </jh>

Continuation of the proof of Association
Now that we have proven $$L$$, what remains is the simple matter of implementing it in the syllogism derived at the very beginning of the proof: <jh> q ((q | r) | r) ((q | r) | r) (¬ (p | r)) Syllogism applyRule applySyllogism )) </jh>

Summation
Now that the long proof of Association is finished, the Nicod version of Summation, $$q/s\rightarrow(p\vert q/r\rightarrow p/s)$$, is just a consequence of Syllogism. <jh> thm (Summation  ((q | s) → ((p | (q | r)) → (p | s))) ( p q r s Syllogism (p | (q | r)) (q | s) (¬ (p | s)) Association applyRule )) </jh>

Export of Interface:Principia Mathematica propositional logic
In order to show that Nicod's system is as least as strong as the propositional logic of Principia Mathematica, we need to derive the Principia axioms within Nicod's system. In terms of Nicod's definition of the logical connectives, this is very simple, as the rule, Tautology, Addition, Permutation, Association and Summation are all either identical to or even more general than the corresponding Principia axioms.

Principia axioms with Nicod's logical connectives
We only need to invoke the correct special case of already proven statements. <jh> thm (applyModusPonens ((H1 p) (H2 (p → q))) q ( H1 H2 applyRule ))

thm (Taut  ((p ∨ p) → p) ( p Tautology ))

thm (Add  (q → (p ∨ q)) ( q (p | p) Addition ))

thm (Perm  ((p ∨ q) → (q ∨ p)) ( (p | p) (q | q) Permutation ))

thm (Assoc  ((p ∨ (q ∨ r)) → (q ∨ (p ∨ r))) ( (p | p) (q | q) (r | r) Association ))

thm (Sum  ((q → r) → ((p ∨ q) → (p ∨ r))) ( q (r | r) (p | p) q Summation )) </jh> This looks as if we're done: all Principia axioms have been derived verbatim. Still, an export would fail, for the following reason: in Interface:Principia Mathematica propositional logic, implication $$p\rightarrow q$$ is not an indefinable functor, but rather an abbreviation for $$(\neg p)\vee q$$. In Nicod's system, this translates to $$(p/p\vert p/p)\vert q/q$$, which is different from Nicod's definition of implication, $$p\vert q/q$$. So the Principia axioms are actually different from the theorems proven above. This was first explicitly mentioned by Bernstein, though it was probably obvious to Nicod as he provided the necessary transport theorems to convert the above theorems to the real Principia axioms.

Transport theorems
For the purpose of exportation, we shall prepend all Principia symbols with a dot in order to distinguish them from the symbols of Nicod's system. First, we subsume the well-formed formulas of Principia under Nicod's system: <jh> kindbind (wff .wff) </jh> Next, we define the logical connectives. Negation and Disjunction are used as indefinables in Principia, so we just set them to their Nicod equivalents: <jh> def ((.¬ p) (¬ p)) def ((.∨ p q) (p ∨ q)) </jh> For the remaining connectives, however, we use the Principia definitions: <jh> def ((.→ p q) ((.¬ p) .∨ q)) def ((.∧ p q) (.¬ ((.¬ p) .∨ (.¬ q)))) def ((.↔ p q) ((p .→ q) .∧ (q .→ p))) </jh> In particular, $$\rightarrow$$ is different from $$.\rightarrow$$. We now show that they are derivable from each other within Nicod's system. <jh> thm (ImplicationExport  ((p → q) → (p .→ q)) ( </jh> In other words, $$(p\vert q/q)\rightarrow((p/p\vert p/p)\vert q/q)$$. As the right-hand part is equal on both sides, we can prove this with Tautology and Syllogism: <jh> p Tautology ((p | p) | (p | p)) p p (q | q) Syllogism applyRule )) </jh> The reverse theorem is shown in the same way, except that we use Addition to create the reversed Tautology: <jh> thm (ImplicationImport  ((p .→ q) → (p → q)) ( p (p | p) Addition p ((p | p) | (p | p)) ((p | p) | (p | p)) (q | q) Syllogism applyRule )) </jh> In transporting the Principia axioms from $$\rightarrow$$ to $$.\rightarrow$$, it will be very convenient to have these two theorems handy as rules: <jh> thm (importImplication ((H (p .→ q))) (p → q) ( H       p q ImplicationImport applyRule ))

thm (exportImplication ((H (p → q))) (p .→ q) ( H       p q ImplicationExport applyRule )) </jh>

Axiom transport
All Principia axioms except Sum use implication only as their head symbol, so their transport is trivial: <jh> thm (.applyModusPonens ((H1 p) (H2 (p .→ q))) q ( H1 H2       importImplication applyRule ))

thm (.Taut  ((p .∨ p) .→ p) ( p Taut exportImplication ))

thm (.Add  (q .→ (p .∨ q)) ( q p Add exportImplication ))

thm (.Perm  ((p .∨ q) .→ (q .∨ p)) ( p q Perm exportImplication ))

thm (.Assoc  ((p .∨ (q .∨ r)) .→ (q .∨ (p .∨ r))) ( p q r Assoc exportImplication )) </jh> For Sum it is slightly more difficult, as implication appears three times: <jh> thm (.Sum  ((q .→ r) .→ ((p .∨ q) .→ (p .∨ r))) ( q r p Sum </jh> First, we transport the leftmost implication using a Syllogism: <jh> q r ImplicationImport (q .→ r) (q → r) (q → r) (¬ ((p .∨ q) → (p .∨ r))) Syllogism applyRule applyRule </jh> Next, we transport the rightmost implication: <jh> (p .∨ q) (p .∨ r) ImplicationExport applySyllogism </jh> And finally, we transport the heading implication: <jh> exportImplication )) </jh>

This completes the proof of the Principia axioms. We can now export the Interface:Principia Mathematica propositional logic: <jh> export (PRINCIPIA Interface:Principia_Mathematica_propositional_logic .) </jh>