The proof-theoretical foundations for proof search in first-order and higher-order logic are provided by Gentzen's sequent calculus. For implementation, a unification procedure has been put on top of that.
The problem in implementing proof search is deciding at what point the unification should happen. The sequent calculus tells us to instantiate a variable in the moment the rule for the existential quantifier is applied. However, at that moment, the machine has no way to know with what the variable should be instantiated. Only later when the proof search reaches an identity axiom, this knowledge is revealed (of course, the human reasoner always has the possibility of making a clever guess).
In practical implementations this problem is usually solved by laziness. One keeps a "hole" in the proof and postpones the unification to the very end of the proof. While this clearly works well for practical purposes, it is a disaster for the theory of proofs, because there is no well defined notion of "proof object". There are only meta-language descriptions.
The notion of deep inference that can solve that problem in a very elegant way by simply postponing the application of the rule that removes the existential quantifier. This is easily possible by working inside the formula, which is not possible with the sequent calculus which has to remove the quantifier in order to get access to the formula inside in the first place. This can give a proper proof theoretical treatment to the implementations.
An internship or master's thesis could be developped around the following specific tasks: