Tricks for Constructing Hilbert-Style Proofs Several times in my studies, I've come across Hilbert-style proof systems for various systems of logic, and when an author says, "Theorem: $\varphi$ is provable in system $\cal H$," or "Theorem: the following axiomatizations of $\cal H$ are equivalent: ...," I usually just take the author's word as an oracle instead of actually trying to construct a Hilbert-style proof (can you blame me?). However, I would like to change this habit and least be in a position where I could check these claims in principle.
On the few occasions where I actually did try to construct a (not-so-short) Hilbert-style proof from scratch, I found it easier to first construct a proof in the corresponding natural deduction system, show that the natural deduction system and the Hilbert system were equivalent, and then try to deconstruct the natural deduction system into a Hilbert-style proof (in the style of Anderson and Belnap). The problem with that (apart from being tortuous) is that I would need the natural deduction system first, and it's not always obvious to me how to construct the natural deduction system given the axioms (sometimes it's not so bad; it's easy to see, for instance, that $(A \rightarrow (A \rightarrow B)) \rightarrow (A \rightarrow B)$ corresponds to contraction; but it's not always that easy...).
So I'm wondering: are there "standard tricks" for constructing Hilbert-style proofs floating around out there? Or are there tricks for constructing a corresponding natural deduction system given a set of Hilbert axioms? Or is it better to just accept proof-by-oracle?
 A: It's a long list of postings, a lot of it in Polish notation that is hard to read. Anyway, the systematic way to do it is to define a translation algorithm from derivations in ND to derivations in axiomatic logic. This is done in my recent "Elements of Logical Reasoning" section 3.6.(c). ND is there written in SC notation with the open assumptions displayed at the left of a turnstile. 
I don't know if anyone ever mastered fully axiomatic logic. Russell was very bad at it, didn't even notice that one of his axioms was in fact a theorem! I needed the translation to be able to produce some of the more elaborate axiomatic derivations. Would be nice if someone implemented the algorithm. 
A: What works quite well, for small examples, is iterative deepening search strategy. This strategy will have the additional benefit, that it finds smaller proofs first. A little Prolog program that does such a search is seen here:
:- use_module(library(term/herbrand)).

hilbert(B, 'ax-mp'(P,Q,A), N) :-
   N > 0, M is N-1,
   sto(A),
   hilbert((A->B), P, M),
   hilbert(A, Q, M).
hilbert((A->_->A), 'ax-1', _).
hilbert(((A->B->C)->(A->B)->(A->C)), 'ax-2', _).

sto/1 is a constraint, that puts the argument under subject to occurs check. This is to avoid that cyclic propositional formulas are created during proof search. Here is an example proof, found by this program:
1   ax-2    (p->(u->p)->p)->(p->u->p)->p->p
2   ax-1    p->(u->p)->p
3 1,2   ax-mp   (p->u->p)->p->p
4   ax-1    p->u->p
5 3,4   ax-mp   p->p

Edit 14.12.2020:
There is a sequel, not using the Jekejeke Prolog specific sto/1 anymore, but rather the ISO core standard unify_with_occurs_check/2:
hilbert(B, 'ax-mp'(P,Q,A), N) :-
   N > 0, M is N-1,
   hilbert((A->B), P, M),
   hilbert(A, Q, M).
hilbert(X, 'ax-1', _) :- 
   unify_with_occurs_check(X, (A->_->A)).
hilbert(X, 'ax-2', _) :- 
   unify_with_occurs_check(X, ((A->B->C)->(A->B)->(A->C))).

A: Regarding "tricks for constructing a corresponding natural deduction system given a set of Hilbert axioms":  Constructing natural deduction systems corresponding to axiomatic propositional or first-order systems isn't too hard when most of the axioms have fairly clear 'meanings', but I think it gets a bit tricker with nonclassical logics.  Pelletier & Hazen's Natural Deduction gives a good overview of some different types of natural deduction systems.  See, in particular, §2.3, pp. 6–12, The Beginnings of Natural Deduction: Jaśkowski and Gentzen (and Suppes) on Representing Natural Deduction Proofs.  I think that there are three types of natural deduction systems that should be considered (in order of increasing ease of translation from the natural deduction system to the axiomatic system): Gentzen-style; Fitch-style (Jaśkowski's first method); and Suppes-style (Jaśkowski's second method).
Gentzen-style Natural Deduction
Gentzen-style natural deduction use proof trees composed of instances of inference rules.  Inference rules typically look like this:
$$
\begin{array}{c} A \quad B \\ \hline A \land B \end{array}\land I \qquad
\begin{array}{c} A \\ \hline A \lor B \end{array}\lor I \qquad
\begin{array}{c} [A] \\ \vdots \\ B \\ \hline  A \to B \end{array}\to I
$$
A significant difference between axiomatic systems and Gentzen-style natural deduction is that intermediate deductions can be cited by any later line in an axiomatic system, but can only used once in a proof tree. For instance, to prove $(P \land Q) \land P$ from $P \land Q$ requires three instances of the assumption $P \land Q$ in a proof tree:
$$
\frac{\displaystyle
  \frac{\displaystyle
  \frac{[P \land Q]}{Q} \quad \frac{[P \land Q]}{P}}{Q \land P} 
  \quad
  \frac{[P \land Q]}{P} }{
(Q \land P) \land P }
$$
There's no way to reuse the intermediate deduction of $P$ from $P \land Q$.  A naïve translation of a proof tree into corresponding axiomatic deductions will probably be pretty verbose with lots of repeated work (but it would be easy to check for and eliminate redundant deductions in the axiomatic proof).  A very nice benefit of these systems, however, is that it is very easy to determine where a rule can be applied, and whether a formula is "in-scope" for use as a premise.  Fitch-style and Suppes-style systems are more complicated in this regard.
Fitch-style Natural Deduction Systems
Fitch-style natural deduction systems for propositional logic have a type of subproof for conditional introduction.  These capture "Suppose $\phi$. … $\psi$. Therefore (no longer supposing $\phi$), $\phi \to \psi$.)  Even in this simplest type of subproof, the natural deduction has proof-construction rules about how lines in subproofs may be cited (e.g., a line outside of a subproof can't cite lines within the subproof).  Still, unlike proof trees, some reusability is gained.  For instance, in the Barwise & Etchemendy's Fitch (from Language, Proof, and Logic), would simplify the proof by reusing the deduction of $P$ from $P \land Q$:


*

*
*

*$P \land Q$ Assume.


*
*

*$P$ by conjunction elimination with 1.


*
*

*$Q$ by conjunction elimination with with 1.


*
*

*$Q \land P$ by conjunction introduction with 2 and 3.


*
*

*$(Q \land P) \land P$ by conjunction introduction with 2 and 4.



Some presentations allow for conditional introduction from any line top-level line within a subproof.  In these presentations, not only can intermediate deductions be reused, but entire subproofs:


*

*
*

*$P \land Q$ Assume.


*
*

*$P$ by conjunction elimination with 1.


*
*

*$Q$ by conjunction elimination with with 1.


*$(P \land Q) \to P$ by conditional introduction with 1–3.

*$(P \land Q) \to Q$ by conditional introduction with 1–3.


In the first-order case, not only are there subproofs for conditional introduction, but there are subproofs for introducing new 'temporary' individuals (e.g., generic instances for universal introduction, or witnesses for existential elimination).  These subproofs require special rules about where the individual of concern may appear.
Kenneth Konyndyk's Introductory Modal Logic gives Fitch-style natural deduction systems for T, S4, and S5.  In addition to a condtional introduction, these have modal subproofs for necessity-introduction, and those subproofs require special rules for reiterating formulae into the subproof.  For instance, in T, only a modal formula $\Box \phi$ can be reiterated into a subproof, and when it does, the $\Box$ is dropped.  That is, when $\Box \phi$ is outside a subproof, $\phi$ can be reiterated in (but only through one 'layer' of subproof).  In S4, $\Box\phi$ can still be reiterated into a modal subproof, but the $\Box$ need not be dropped.  In S5 both $\Box\phi$ and $\Diamond\phi$ can be reiterated into a modal subproof, and neither modality needs to be dropped. 
The point to all this is that in the propositional case, many Hilbert-style axioms correspond nicely to Fitch-style natural deduction style rules, but it seems that the nicest cases are those for boolean connectives.  E.g., 
$$ A \to \left( A \lor B \right) $$
and
$$ A \to \left( B \to (A \land B)\right) $$
turn into "left disjunction introduction" and "conjunction introduction" pretty easily.  However, more complicated axiom schemata (such as what would be used for universal introduction, or modal necessitation) that really require new types of subproofs for good natural deduction treatment are trickier to handle nicely.
Suppes-style Natural Deduction Systems
There are, of course, other formalizations of natural deduction than Fitch's.  Some of these might make for easier translation from axiomatic systems.  For instance, consider a proof of $(A \to (B \to (A \land B))) \land (B \to (A \to (A \land B)))$.  In a Fitch-style proof, the left conjunct, $A \to \dots$, would have to be proved in a subproof assuming $A$ containing a subproof containing $B$:


*

*
*

*Assume $A$.


*
*

*
*

*Assume $B$.



*
*

*
*

*$A \land B$ by conjunction introduction with 1 and 2.



*
*

*$B \to (A \land B)$ by conditional introduction with 2–3.


*$A \to (B \to (A \land B))$ by conditional introduction with 1–4.


Then another five lines are needed to get $B \to (A \to (A \land B))$, and an eleventh for the final conjunction introduction.  In Suppes's system, this is shorter (eight lines) because any in-scope assumption can be discharged by conditional introduction, so we can "get out of the subproofs" in different orders:


*

*{1} $A$ Assume.

*{2} $B$ Assume.

*{1,2} $A \land B$ $\land$-introduction with 1 and 2.

*{1} $B \to (A \land B)$ $\to$-introduction with 3.

*{} $A \to (B \to (A \land B))$ $\to$-introduction with 4.

*{2} $A \to (A \land B)$ $\to$-introduction with 3.

*{} $B \to (A \to (A \land B))$ $\to$-introduction with 4.

*{} $(A \to (B \to (A \land B))) \land (B \to (A \to (A \land B)))$ $\land$-introduction with 5 and 7.


(Note: some implementations of Fitch's system allow this for conditional introduction as well.  E.g., in Fitch from Barwise and Etchemendy's Language, Proof and Logic conditional introduction can cite a subproof that starts with an assumption $A$ and contains lines $B$ and $C$ to infer both $A \to B$ and $A \to C$.)
To use this approach, each inference rule must also specify how the set of tracked assumptions for its conclusion is determined based on the premises of the rule.  For most rules, the assumptions of a conclusion are just the union of the assumptions of the premises.  Conditional introduction is the obvious exception.  This approach also specifies that only lines with empty assumption sets are theorems.
This "tracking" approach, though, can be used for other properties too.  The same considerations apply:  each rule must specify how the tracked properties of the conclusion are computed from the premises, and the proof system must define which sentences are theorems.
For instance, in a system for first-order logic, the set of new individuals (for universal generalization or existential elimination) can be tracked, with most rules giving their conclusion the "union of the premises' individuals", with existential elimination and universal introduction the exceptions.  Theorems are those sentences with an empty set of individuals and an empty set of assumptions.
This approach works nicely for modal logics, too.  A Suppes-style proof system for K, for instance, in addition to tracking assumptions, tracks a "modal context", which is a natural number or $\infty$.  The modal context indicates how many "necessitation contexts" we're in (intuitively, how many times we should be able to apply necessity introduction to a formula).  In terms of Kripke semantics, the modal context is how far removed from the designated world we are.  Sentences without any assumptions have context $\infty$, corresponding to the $\vdash \phi / \vdash \Box\phi$ rule.  The inference rules require that their premises have compatible modal contexts (i.e., all non-$\infty$ modal contexts are the same).  The default modal propagation is that the context of the conclusion is the same as the minimum context of the premises.  The exceptions are that $\Box$ introduction subtracts 1, and $\Box$ elimination adds 1.  Theorems are those sentences that have no assumptions and modal context $\infty$.  


*

*{1} (0) $\Box P$ Assume.

*{2} (0) $\Box (P \to Q)$ Assume.

*{1} (1) $P$ $\Box$-elimination with 1.

*{2} (1) $P \to Q$ $\Box$-elimination with 2.

*{1,2} (1) $Q$ $\to$-elimination with 3 and 4.

*{1,2} (0) $\Box Q$ $\Box$-introduction with 5.

*{2} (0) $\Box P \to \Box Q$ $\to$-introduction with 6.

*{} ($\infty$) $\Box(P \to Q) \to (\Box P \to \Box Q)$ $\to$-introduction with 7.


In Suppes-style proof systems, the question is no longer about reiteration rules, about about property tracking and propagation rules.  The purposes are similar, but in practice, certain kinds of axiomatic systems might be easier to translate into one kind or another.
A: In propositional logic, the deduction metatheorem gives you a procedure to convert (a fair amount, at least) natural deduction proofs into Hilbert style proofs, given that the Hilbert system has
1) CqCpq as a theorem or an axiom schema,
and
2) CCpCqrCCpqCpr as a theorem or an axiom schema,
and
3) You can join axiom schema to the Hilbert-style system which you obtain from using the deduction metatheorem on the natural deduction inference rules for the connectives A, K, E, (and see the added part for N... it works a bit differently), or you already have those formulas as axioms as theorems.  For instance, for the disjunction elimination (or A-out) rule we first insist that on a rule which doesn't say anything about subproofs, but instead uses conditionals (which is "basically equivlaent" by the conditional introduction rule to a subproof rule).  So, in sequent notation the appropriate A-out rule goes 
Apq, Cpr, Cqr |-r.  
Thus, by using the deduction metatheorem a few times, we can obtain the axiom schema CApqCCprCCqrr, which allows us to rewrite a proof (o. k. this isn't the whole proof) like (Apq, CpCqq, CqCqq, Cqq) which uses the A-out rule as (Aab, CaCbb, CbCbb, CAabCCaCbbCCbCbbCbb, CCaCbbCCbCbbCbb, CCbCbbCbb, Cbb), which supposing we have Aab, CaCbb, and CbCbb consists of a proof which now just uses modus ponens and the new axiom schema.
Since all axiom schema obtained from natural deduction rules come as conditionals, this means that all steps in a natural deduction proof can get rewritten such that every step is either an instance of axiom (or theorem) schema, or follows from instances of axiom schema by modus ponens.  The in-most subproofs get rewritten first.  Note that each subproof in a natural deduction proof in a Fitch-Jaskowski style proof has only one assumption.  
As a better example, for the natural deduction proof:
 1 |  Kab assumption
 2 || a assumption
 3 || b 1 K-out-right (Kpq|-q)
 4 |  Cab 2-3 C-in
 5    CKabCab

we'll first want to ignore any parts were we used the C-in rule unless we introduce assumptions after using C-in rule.  We used the K-out rule in step 3, so we'll need to convert the deduction of that into a form that uses modus ponens only.  So, we'll need the axiom schema CKpqq.  Thus, the modus-ponens only natural deduction version goes without any uses of the C-in rule:
 1' |  Kab assumption
 2' || a assumption
 3' || CKabb instance of CKpqq
 4' || b 1, 3 modus ponens

Then lines 1-4 can converted using axiom schema 1) and 2) into CaKab, Caa, CaCKabb, and Cab as follows:
 1  | Kab assumption
 2  | CKabCaKab 1) q/Kab, p/a
 3  | CaKab 1, 2 modus ponens (see 1' above)
 4  | CaCCaaa 1) q/a, p/Caa (meaning q is substituted with a in axiom schema 1)
 5  | CCaCCaaaCCaCaaCaa 2) p/a, q/Caa, r/a
 6  | CCaCaaCaa 4, 5 modus ponens
 7  | CaCaa 1) q/a, p/a
 8  | Caa 6, 7 modus ponens (see 2' above)
 9  | CKabb instance of CKpqq
 10 | CCKabbCaCKabb 1) q/CKabb, p/a
 11 | CaCKabb 9, 10 modus ponens (see 3' above)
 12 | CCaCKabbCCaKabCab 2) p/a, q/Kab, r/b
 13 | CCaKabCab 11, 12 modus ponens
 14 | Cab 3, 13 modus ponens (see 4' above)

Now, using 1) and 2) we can derive CKabKab in 5 steps.  And we can derive each of CKabCKabCaKab, CKabCaKab, CKabCaCCaaa, CKabCCaCCaaaCCaCaaCaa, CKabCCaCaaCaa, CKabCaCaa, CKabCaa, CKabCKabb, CKabCCKabbCaCKabb, CKabCaCKabb, CKabCCaCKabbCCaKabCab, CKabCCaKabCab, CKabCab using the deduction metatheorem and axiom schema 1) and 2), in 3 steps.
If the consequent y of one of these formulas Cxy is an instance axiom schema, then we can derive Cxy by writing:
 a: y instance of axiom schema.
 b: CyCxy instance of axiom schema 1)
 c: Cxy a, b modus ponens.

If the consequent y of one of these formulas Cxy is a result of modus ponens in the previous scoped proof, then we already have Cjx and CjCxy in the new proof where j is the assumption of the subproof (here j is Kab).  The antecedent of CCpCqrCCpqCpr is CpCqr, which suggests the following steps:
 d: CCjCxyCCjxCjy instance of axiom schema 2)
 e: CCjxCjy d, CjCxy modus ponens since you have CjCxy in the new derivation
 f: Cjy e, Cjx modus ponens, since you have Cjx in the new derivation

Once you expand that out, you have a complete proof in the pure Hilbert style axiom system using only the axiom schema, the uniform rule of substitution, and modus ponens... which takes up 44 lines of text.
Added: Negations
Let's say your negation introduction (N-in) rule reads: 
"From a derivation which starts with p and ends with KqNq, we may infer Np [emphasis added]." or more shortly, "p, ..., KqNq|-Np" ("..." could come as empty and p could be the same as KqNq).
So, with that rule, you can write a natural deduction proof like the following:
 1 |  a assumption
 2 || Na assumption
 3 || KaNa 2, 1 K-in
 4 |  NNa 2-3 N-in
 5    CaNNa 1-4 C-in

But, that comes as fairly useless when looking for a proof which we can use the procedure from the demonstration of the deduction metatheorem on.  So, let's try something different:
 1 |  a assumption
 2 || Na assumption
 3 || KaNa 2, 1 K-in
 4 |  CNaKaNa 2-3 C-in

But, what use is step 4?  Well, consider the following derivation, which I'll post since you might not have seen its theorem before.
 1 |  CpKqNq assumption
 2 || p assumption
 3 || KqNq 2, 1 C-out
 4 |  Np 2-3 N-in
 5    CCpKqNqNp 1-4 C-in

Thus, CNaKaNa is the antecedent of a substitution instance of CCpKqNqNp, where p/Na, q/a.  So, you can use CCpKqNqNp as an axiom schema for changing a natural deduction proof which uses a negation introduction rule into a modus ponens only proof.  For our particular example we can then write:
 1 |  a assumption
 2 || Na assumption
 3 || CaCNaKaNa axiom schema CpCqKpq, p/a, q/Na
 4 || CNaKaNa 1, 3 modus ponens
 5 || KaNa 2, 4 modus ponens
 6 |  CNaKaNa 2-5 C-in
 7 |  CCNaKaNaNNa schema CCpKqNqNp, p/Na, q/a
 8 |  NNa 6, 7 modus ponens
 9    CaNNa 1-8 C-in

Thus using the conversion procedure we can obtain:
 1  | a assumption
 2  | CaCNaa 1), p/a, q/Na
 3  | CNaa 1, 2 modus ponens (CNa1 above)
 4  | CNaCCNaNaNa 1) p/Na, q/CNaNa
 5  | CCNaCCNaNaNaCCNaCNaNaCNaNa 2) p/Na, q/CNaNa, r/Na     
 6  | CCNaCNaNaCNaNa 4, 5 modus ponens
 7  | CNaCNaNa 1), p/Na, q/Na
 8  | CNaNa 7, 6 modus ponens (CNa2 above)
 9  | CCaCNaKaNaCNaCaCNaKaNa 1), p/CaCNaKaNa, q/Na
 10 | CaCNaKaNa schema CpCqKpq p/a, q/Na
 11 | CNaCaCNaKaNa 9, 10 modus ponens (CNa3 above)
 12 | CCNaCaCNaKaNaCCNaaCNaCNaKaNa 2), p/Na, q/a, r/CNaKaNa
 13 | CCNaaCNaCNaKaNa 11, 12 modus ponens
 14 | CNaCNaKaNa 3, 13 modus ponens (CNa4 above)
 15 | CCNaCNaKaNaCCNaNaCNaKaNa 2) p/Na, q/Na, r/KaNa
 16 | CCNaNaCNaKaNa 14, 15 modus ponens
 17 | CNaKaNa 8, 16 modus ponens (CNa5 above, as well as 6 above)
 18 | CCNaKaNaNNa axiom schema CCpKqNqNp, p/Na, q/a (7 above)
 19 | NNa 17, 18 modus ponens (8 above)

Then applying the conversion procedure again, you can get CaNNa for any system which has the following axiom/theorem schema set {CqCpq, CCpCqrCCpqCpr, CpCqKpq, CCpKqNqNp} and modus ponens as a rule of inference.
If your negation-out rule reads "From NNp, (you may) infer p", then the axiom/theorem schema you'll want is CNNpp, and in that case things work out more like how the other connectives work out.
On the other hand, if your negation-out rule reads something like "Np, ..., KqNq|-p", then you can use CCNpKqNqp (I'll supply a proof if you like) as the axiom/theorem schema for the modus ponens only proof, and things work out like the negation-introduction rule above.
Also, if you convert a bunch of formulas like this, you might want to start using symbols as shorthands at points in the proof for particular formulas, such as letter Greek letters stand for Cpq or CCprApr or #, %, ^, or whatever for KAprCpr.
A: I guess the first thing we want to recall here goes that if we want to prove theorem "t" in a Hilbert-system with modus ponens and uniform substitution as the only rules of inference, then we have to find Cxt as a theorem and x as a theorem.  If we have more rules of inference, then things become more complicated.  However, if we can confine our attention to the family of systems MP with just modus ponens and uniform substitution as rules of inference for a moment, I think we can get more insight into things.  Since in MP we need to find x, we basically want to find some lemma to prove t.  Consequently, your question then your excellent question becomes "if wanting to prove theorem t in a Hilbert system, how do we get good lemmas to help prove t?"
If we have the deduction meta-theorem, then we can clearly generate a whole class of lemmas.  But, as my first answer and your excellent question indicate, the deduction meta-theorem generates all too many lemmas and enough of them don't seem all that good in proving a theorem t.  The deduction meta-theorem for a system with {CqCpq, CCpCqrCCpqCpr} as its axioms doesn't just generate 2/3 of its theorems as substitution instances of CqCpq and CCpCqrCCpqCpr, it also will generate a substitution instance of the theorem of identity Cpp, as well as possibly other instances of CqCpq or CCpCqrCCpqCpr.  On top of that, the deduction meta-theorem isn't always provable in an MP system.  For instance, the three systems with axiom sets {CCpqCCqrCpr}, {CpCNpq}, and {CCNppp} don't have the deduction meta-theorem available.  Well, my intuition tells me that you won't have it in {CCpqCCqrCpr}, but I know that you won't have it in {CpCNpq} and {CCNppp}.
For {CCNppp}, only formulas which can get obtained via substitution exist.  No detachable formulas exist in such a system.  How do I know this?  Given the (meta) derivable rule of inference of condensed detachment for any MP system, it follows that every theorem of {CCNppp} is nothing more than a substitution instance of {CCNppp}.  The antecedent of CCNppp is CNpp, and if CCNppp is the only axiom available, then the form of CCNppp must match the form of CNpp by substitution in some way.  But, that is absurd, and thus nothing can get detached from CCNppp.  So, only substitution instances of CCNppp exist in {CCNppp}.  We can somewhat similarly reason that every theorem which can get obtain via detachment in {CpCNpq} is a substitution instance of the sequence S (CpCNpq, CNCpCNpqr, CNCNCpCNpqrs, CNCNCNCpCNpqrst, ...), since if theorem b appears later than theorem a in S, then if we assume b as the major premise in some theorem Dba, where D indicates the condensed detachment operation, we have an absurdity.  So, the deduction meta-theorem won't hold.
Condensed detachment, once understood, will give you the most general theorems L available for an MP system, in the sense that all other theorems T of that MP system come as dervivable from the set of theorems of L, while the converse fails.  If I understand condensed detachment correctly, given any two theorems condensed detachment also mechanically gives you a theorem of L, though it might take some practice with it to observe this.
So, basically for MP systems condensed detachment will generate what appears like a manageable set of lemmas to prove any theorem t.  Yes, condensed detachment, given a countable infinity of variables, can generate a countable infinity of theorems.  But, condensed detachment generates only the most general theorems, and probably can get said to generate theorems more slowly than the deduction metatheorem, possibly making it easier to find relevant lemmas for a theorem you want to prove in an MP system.
If you want a simple exercise to help you get started here in investigating propositional Hilbert-systems, I'll say that for {CCpqCCqrCpr} we can derive CCpqCCCprsCCqrs.  I'll put a hint which makes things easier in the comments below.
A: If I've understood its proof correctly, and I will admit that I can't do much more than see that the proof does work, if you have Cpp, CCpqCCqrCpr, CCpqCCrpCrq (equivalently CCqpCCprCqr), then what Zeman calls the principle of semi-semisubstitutivity will hold, and others have called something else (Halleck mentions Anderson and Belnap knowing it and calling it something else... but you've only mentioned them in connection to the Deduction Theorem here... if I understand the proof correctly, semi-substitutivity of implication can hold without the Deduction Thereom).  I don't understand it to the point where I know how to use it and provide you with an example at this point. 
A: The simplest "trick" here might seem like no trick at all... but I think it too useful to pass up.  You could get on a computer and use an automated theorem prover like Prover9, and its companion Mace4.  Then you read the deductions that the automated theorem prover gives you.  I want to emphasize that I'm NOT suggesting that you take the proof/counterexample generated by the computer as necessarily true or some sort of oracle.  You just use the automated theorem prover to check and see if the claim does hold.  In other words, study carefully the symbols the automated theorem prover gives you.  Perhaps you'll even learn how to better create proofs of your own for Hilbert systems this way.
A: I use Polish notation.
I think we would do better to look at particular examples in order to get a handle on this question.  How you can construct a proof varies to some extent depending on the Hilbert system you're looking at.  Some Hilbert systems, like the definition-free equivalential calculus, as well as definition-free Hilbert systems with only the Sheffer stroke "D" as a connective don't even have modus ponendo ponens or C-detachment "C$\alpha$$\beta$, $\alpha$ $\vdash$ $\beta$" as a usable rule of inference (modus ponendo ponens and other rules of inference may hold as valid, but you can't ever use them).  You have to use a  rule like 
"D$\alpha$D$\beta$$\gamma$, $\alpha$ $\vdash$ $\gamma$" or 
"D$\alpha$D$\beta$$\gamma$, $\alpha$ $\vdash$ $\beta$", and you have no definitions with which to represent the material conditional.
At the outset though you can probably almost always, apply the "primitive" rules of inference of the system on the axioms to get derivable rules of inference.  You can think of the rules of inference as object logic formulas in a way, and then apply uniform substitution on the rules.  And, for any system with C-detachment, you have a transitivity of rules...
"If $\alpha$, ..., $\chi$ $\vdash$ $\pi$ is a rule,
If $\pi$ $\vdash$ $\omega$ is also a rule, then
$\alpha$, ..., $\chi$ $\vdash$ $\omega$ is a rule"
Consequently, by substitution and this transitivity of such rules, you can sometimes derive even more rules without deriving any more formulas of the system.  If you use such rules to prove something from the axioms, and you kept track of what substitutions you made in the rules, then you have a blueprint for writing a proof using the primitive inference rules of the system.
Basically you can construct proofs in Hilbert systems using derived rules of inference, which for at least some, if not most theorems come as easier to use than the axioms.  Conditional introduction is or at least can get thought of as an example of just one such rule.  How the rules get derived (or would get derived) gives you clues as to how you would construct such a proof.  If you want to construct a proof from the primitive inference rules of the system (often modus ponendo ponens), consequently, you can prove what you want to using derived rules of inference, and then use construction procedures that the proofs of the derived rule of inferences outline to generate a proof from the primitive inference rule of the system.
A large class of derived rules includes rules of replacement (distinguished from the rule of uniform substitution).  How the replacement rules work depends on the connectives that you have at work.  If you have the material conditional "C", in Polish notation, and the theses (logical theorems OR axioms) CCpCqrCqCpr, and CCpqCCqrCpr, then anytime you have two conditional Cxy and Cyx (example CCpCqrCqCpr and CCqCprCpCqr are such a pair), you can replace any subformula x of a formula X with y in a formula which just has conditional symbols.  I know because I've read this in Merrie Bergmann's An Introduction to Many-Valued Logic and Fuzzy Logic.
Now you might think no derived rule of inference can surprise you and it an uninteresting topic to study.  But, I will try and convince you otherwise...
The implicational calculus (only the material conditional) can get axiomatized as follows:
1 CCpqCCqrCpr
2 CpCqp
3 CCCpqpp
CCpCqrCqCpr does come as derivable (you can run a theorem prover for this).  Now from 2 q/Cpq we get
4 CpCCpqp
Consequently, we have a rule of replacement for statement letters, because we have 3 and 4.  In particular, every statement letter in the implicational calculus "x" can get replaced by CCxyx.  From CCpqCCqrCpr and the considerations barely outlined above it consequently follows that CCCCpqpqCCqrCpr is a thesis of the implicational calculus.
I repeat, statement letters in some logical theories can get replaced by other formulas  un-uniformly and you still end up with logical theorems.
You can also study the sub-subsystems of the theory.  For example, you can study what you can derive just from CCpqCCqrCpr and detachment or axioms 1 and 2 under detachment or any of those possible combinations.  This can give you ready made formulas you can use anytime you have those theses or a set of those theses.
This note by no means come as comprehensive in general with respect to derivable rules of inference in Hilbert systems... or the many different ways in which you can construct Hilbert-style proofs.
Generalized Hypothetical Syllogism (GHS): From C$\alpha$C$\beta$...C$\pi$$\chi$, as well as C$\chi$$\omega$ we may infer C$\alpha$C$\beta$...C$\pi$$\omega$.
So, given these axioms:
1 CCpqCCqrCpr
2 CCpCqrCqCpr (these two come as needed for the proof of the derived rule to work)
3 CKpqp
4 CpCqKpq
By GHS on 4 and 3 we obtain:
5 CpCqp
The proof of the derived rule GHS starts (it requires induction for the full proof)
D1  CaCbc  given
D2  Ccd   given
D3  CCbcCCcdCbd  (by axiom 1)
D4  CCcdCCbcCbd  (by a derivable rule from 1 and 2)
D5  CCbcCbd    D2, D4 detachment
D6  CaCbd      (by the rule "from C$\alpha$$\beta$, C$\beta$$\gamma$ $\vdash$ C$\alpha$$\gamma$ using D1 and D5)
The derivable rule used to get D4 isn't necessary, since you can get it just from the sense of CCpCqrCqCpr and detachment.  But, either way, D1-D6 gives us a plan to construct a pure detachment proof from 1-4 above.
As an axiom 1:
1 CCpqCCqrCpr as an axiom 2:
2 CCpCqrCqCpr  as an axiom 3:
3 CKpqp   as an axiom 4:
4 CpCqKpq
Now CpCqKpq has form CaCbc, and CKpqp has form Ccd.  Since we want something with form CCbcCCcdCbd first, and the suggestion of the proof of GHS says we start with that, we substitute p/q, q/Kpq, r/p in CCpqCCqrCpr and obtain
5 CCqKpqCCKpqpCqp
Next we would use the derivable rule to get this instance of D4.  But, building it up requires far more work than we need to do, since D4 comes as a commutation of D3.  So, correspondingly we make substitutions in CCpCqrCqCpr so that 5 becomes the antecedent... p/CqKpq, q/CKpqp, r/Cqp yields
6 CCCqKpqCCKpqpCqpCCKpqpCCqKpqCqp   Now we may detach the consequent of 6, because of 5
7 CCKpqpCCqKpqCqp
7 has the form of D4 and thus 3 has the form of D2, and consequently we detach 8.
8 CCqKpqCqp
D1 here becomes axiom 4.  Thus we want to make 4 the antecedent of 1 first.  So, in 1 q/CqKpq yields
9 CCpCqKpqCCCqKpqrCpr   by detachment from 8 and 4 we then obtain
10 CCCqKpqrCpr
Now we substitute r/Cqp getting 11
11 CCCqKpqCqpCpCqp
And last we detach the consequent of 11, because of 8 yielding 12.
12 CpCqp
Most, if not all texts, can barely even scratch the surface of this topic.
Flipping what people do with natural deduction systems the other around, you can even derive rules using I'd call the Detachment Theorem as a schema for deriving rules of inference:
"From $\Gamma$ $\vdash$ C$\alpha$$\beta$, we may infer {$\Gamma$, $\alpha$} $\vdash$ $\beta$." Where "$\vdash$" indicates the symbol of assertion within a theory.  This gives you a set of hints for derivable rules of inference.  The consequences of doing this and its potential power, in my opinion, comes as enormous (though it doesn't give you every possible rule of inference of a system, it gives you a scheme for hints for new rules).  If you combine this with the rule of uniform substitution, you can get hints for entirely new rules from substituting in conditionals.  You don't need to detach anything to see hints for new, and derivable rules of inference if you have detachment, rules of inference for a propositional calculus.
For instance, suppose that you have some propositional calculus where detachment is NOT a primitive logical rule of inference, but you have Cpp as a thesis.  Then by substitution you can obtain CCpqCpq.  It follows that you have a relationship between the weak law of identity and detachment given The Detachment Theorem. 
A: The standard method to construct a Hilbert Style proof from a Natural Deduction proof is so called Bracket Abstraction. It appeared for example in Curry and Feys, Combinatory Logic, 1958. You can extract a Lambda Expression from a Natural Deduction proof for example:
     -------- (id)
      p |- p 
   ------------ (->I)
    p |- q -> p
   ---------------- (->I)
   |- p -> q -> p

The (id) corresponds to a variable in a Lambda Expression and the (->) corresponds to abstraction in a Lambda Expression. The above proof has the Lambda Expression λx.λy.x. For more details see the Curry-Howard isomorphism.
Bracket Abstraction can turn a Lambda Expression into an SKI Expression. And an SKI Expression corresponds to a Hilbert Style proof. But Bracket Abstraction can be difficult. One attempt might lead to S(KK)I which is this odd proof:
1. ax-2: (p -> p -> q -> p) -> (p -> p) -> p -> q -> p
2. ax-1: (p -> q -> p) -> p -> p -> q -> p
3. ax-1: p -> q -> p
4. ax-mp(2, 3): p -> p -> q -> p
5. ax-mp(1, 4): (p -> p) -> p -> q -> p
6. ax-0: p -> p
7. ax-mp(5, 6): p -> q -> p

If a little bit more is invested into the Bracket Abstraction the result might be the combinator K, and thus telling us that the Natural Deduction proof is already a Hilbert Style axiom in a certain axiomsystem.
Braket Abstraction can be put on the computer like here.
