constant | variable | function | |
constant | SUCCESS if constants are the same, FAIL otherwise | {variable/constant} | FAIL |
variable | {variable/constant} | {variable/variable} | {variable/function} if variable does not occur in function, FAIL otherwise |
function | FAIL | {variable/function} if variable does not occur in function, FAIL otherwise | the result of unifying the arguments if the functions are the same and the arguments unify, FAIL otherwise |