If you're using elab reflection, I'd highly recommend using the Emacs
mode for Idris, because I spent a fair bit of time adding features to it
that are useful for debugging Elab scripts.
In particular, because elaborator reflection works with TT, it can be
very useful to see the TT representation of a type signature. In Emacs,
this is done by right-clicking the type signature and picking "Show
core" from the menu. If you don't have a mouse, then C-c C-SPC provides
the same menu from the keyboard, or C-c C-m c for this particular command.
This also works in REPL expressions and in error messages. As far as I
know, nobody has yet implemented these features for other editors,
unfortunately.
The docstring for resolveTC says:
Language.Reflection.Elab.Tactics.resolveTC : (fn : TTName) -> Elab ()
Attempt to solve the current goal with an interface dictionary
Arguments:
fn : TTName -- the name of the definition being elaborated (to
prevent Idris
from looping)
This means that, if the current goal is an interface (such as
Uninhabited (S Z = Z) or Uninhabited Void or Functor List), it can be
dispatched using "resolveTC" which does the interface dictionary
resolution that Idris normally does when you call a function like "map"
or "absurd". In Coq, this is called type class resolution and it happens
as part of the unification procedure, if I've understood correctly.
The name that's a parameter to resolveTC is a way of breaking cycles
when defining interface dictionaries. Just pass whatever you're
currently elaborating or building as the name there.
/David