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.