Fuzzy unification as a foundation of fuzzy logic programming