Currently, the Input and the Ouput are always the first and last variable of a rule.
Most of the time, when the first of last token of a rule is a variable, we don't want that variable to be unified with either the Input or the Output, requiring an additional token to break implicit unification, which is annoying.
The input and Output should be implicitely available only when the first/last token of a rule is a predicate.