>>533
>本当に必要な情報は第何引数にnameがあるかというようなもの。

そのとおりだと思うし、これがすべてだね

>>529の発想を裏返せば、
「C言語の関数やJavaのメソッドは引数と関数名(メソッド名)の意味が定義されていない」
から大問題だという話になる
あるいはSmalltalk/Objective-Cのメッセージ定義やRubyのハッシュ引数などのように、
名前で引数に意味を与えることのできる言語以外は一切認めない....ように見える

自分なら>>528は単純に書く

person(1, yamada, tokyo).
person(2, yamada, osaka).
company(1, yamada, tokyo).
company(2, yamada, osaka).
person_company(1, 1).
person_company(2, 2).

Prologにおける>>529の制約はナンセンスだと思う