Basic Logic: The Power of Truth

3 min readAug 23, 2022


Going on with the topic of our previous article, we now discuss one of the features of logical Knowledge Representation Languages (KRLs) that distinguishes it from other languages used for KR: Truth.

In the mentioned article, we talked about SKOS (Simple Knowledge Representation System) and if you go back to it you will see that this is all just about representing simple semantic relationships between concepts. For instance, ECONOMIC INTEGRATION is a narrower concept with relation to ECONOMIC COOPERATION, whereas in comparison to this ECONOMIC POLICY is a broader concept. SKOS is also adequate to represent associations and hierarchical relations of concepts in non-trivial ways. For instance, the following (source: is a labeled collection rooting in the concept MILK:

So, not so easy to read, thus belying the “simple” in SKOS, and providing very basic knowledge representation. We could go on adding to this collection concepts such as SHEEP MILK, HORSE MILK, etc., but we cannot do so for, say, SOY MILK, because the above collection is for “milk by source animal” only. This is what it is meant when we say that SKOS is a controlled vocabulary: we cannot just add whatever we like to a collection of concepts.

This is already not bad, but often we are interested in getting new facts from very large knowledge bases and for this controlled vocabularies, or other kinds of KRLs, are not adequate. We tell you why. Facts are supposed to be true, so much so that when you say “This is a fact” you could equally say “This is true.” Prolog, a logical KRL, does exactly this: when you write cat(fritz) to mean that Fritz is a cat, your Prolog implementation interprets this as a rule stating this truth:

cat(fritz) :- true.

Now suppose that you have a very large knowledge base of animals — an indispensable thing if you work in a veterinary clinic — and some customer requested an appointment for their pet Fritz. Could this be a cat? You consult your database with the query

?- cat(fritz).

which is Prolog for “Is Fritz a cat?”, and the reply you get is True (or Yes). Of course, cats are animals, and you can easily create the Prolog rule

animal(X) :- cat(X).

which conveys formally the fact that if something (X) is a cat, then it is an animal. Now, if in doubt — sometimes we forget the obvious — you can query your database for

?- animal(fritz).

And you will get a True reply, even if the fact animal(fritz) is not in your base. (Remember the modus ponens rule? Yep, that’s it.) If Fritz is a pedigree cat, then you will need to retrieve facts about its pedigree, namely its parents. You can have additional data in your knowledge base like mother_kitten(X,Y)and father_kitten(X,Y), from which you can build rules like

parent_kitten(X,Y) :- father_kitten(X,Y).

parent_kitten(X,Y) :- mother_kitten(X,Y).

These rules will allow you to retrieve the facts you require about Fritz’s parents, and a rule like the following one will allow you to know all (possibly many) Fritz’s siblings:

sibling(X,Y) :- parent_kitten(Z,X), parent_kitten(Z,Y).

Now, imagine the chore of having to check a veterinary database of, say, 1000 pets without these amazing logical tools. But the application of logical truth goes well beyond saving you from doing chores; these kinds of rules applied over knowledge bases of airports, railways, and other high-security systems, can actually save you from disasters and other ordeals. For this reason — that we refer to as the power of truth — logical AI is frequently chosen for these kinds of systems, as well as for other key applications. In future articles, we will tell you more about this power of logical AI that lends true power to it, and especially why it is important for Tau.

If you’re interested in groundbreaking tech, consider giving Tau a follow.

Read the previous article from the Basic Logic series here.

Learn more about Tau and its cryptocurrency Agoras at

Join our growing community for interesting discussions on Telegram.




Understanding Each Other