cnf(3,plain,q(b) | r(a),
inference(resolution,
[status(thm)],
[ one : [bind(X,$fot(b))] ,
two : [bind(Y,$fot(a))] ] ) ).
recording that the variable X of the parent named one is
bound to the first-order term b (the $fot functor is used
to indicate that the informational data is logical, rather than an "arbitrary
Prolog term"), and the variable Y of the parent named two is
bound to the first-order term a.
While the recording standard (or similar) described above is already possible in the TPTP syntax, and various implemented parsers would accept such recording, it does add complexity to the parent list. The Metis system, which aims to be TPTP compliant, currently records variable bindings in the second arguments of its inference records, e.g.,
cnf(3,plain,q(b) | r(a),
inference(resolution,
[status(thm), bind(1,X,$fot(b)), bind(2,Y,$fot(a))],
[one, two]) ).
This alternative simplifies the parsing of the parents list (there are
probably some parsers who cannot parse more than simple names in the parents
list), without adding complexity to the parsing of the information about the
inference as a whole.
However, duplicating the parents makes for unpleasant error-checking,
as there are a lot of cases (missing bindings (but is that illegal?,
can I have some but not all?), inconsistent (different parents in
binding than in the inference), extra bindings not associated with any
parent, etc.). While some of these questions have obvious answers
(e.g., missing bindings are legal as not all variables have to get bound in an
inference), different parents in binding than in the inference is a problem
and you know only too late.