arity fuzzy logic fuzzy set identifier knowledge base logic programming associates logic programming metaprogramming programming language programming language implementation programming paradigm prolog real number semantics underscore university of bristol