#Yes, they should be forbidden
Yes, they should be forbidden
Semantically, there is no reason why Input
and Output
couldn't be used that way, except for their names (which wouldn't be a problem had they been called A
and B
instead).
Just like in Prolog, there is no reason why we couldn't use the second argument of a predicate to input things instead of the first.
However, Input
and Ouput
are not strictly symmetrical in Brachylog precisely because the execution is left to right, and Input
is on the very left of a rule and Output
on the very right.
Therefore there is actually a difference between the two variables. As such, since Input
is the default variable used to input things and Output
is the default variable to output things, it should always be that way so as to not get a potentially unfair advantage.
Note: this obviously does not apply to intermediate predicate calls in the code; there you can do anything you wish since it is part of golfing.