@override Term substitute(Map<Variable, Node>? bindings) => Term(name, arguments.map((arg) => arg.substitute(bindings)));