Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>

[[ 🗃 ^yEzqv rel4tion-wiki ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/yEzqv

SSH: git clone USERNAME@vervis.peers.community:yEzqv

Branches

Tags

master :: projects / idan /

inference.mdwn

Inference

I’d like to develop a formal way to express how one fact is built-in to imply another fact. Right now entailment works just in my head and through common sense or nli:descriptions. Obviously it’s not enough. It doesn’t mean I’m developing heavy inference software; I just want to formalize the rules.

For now, for simplicity and a clear mind, I’ll ignore what existing logical programming languages and data languages do. Datalog, Prolog, etc. I’ll just suggest my own syntax.

Basically, what is an inference rule? First of all, it is a fact. “If this, then that”. Always. Everywhere. Therefore, we can say it is a logic formula which comes as a statement: “This formula is true”. Let’s try a simple example. In Smaoin there is a property smaoin:is_inverse_of, which states that two properties are the inverse of each other. We can have a statement like this:

myns:p smaoin:is_inverse_of myns:q .

What does it mean? Given a statement like this:

s myns:p o .

We may conclude that this is also true:

o myns:q s .

Therefore, our formula should work like this:

I want to try choosing a minimal set or operators before I add variety for expressiveness. For example, here all I need is:

I’d like to try formalizing it. Of course the syntax is not final or anything - just suggesting.

	rule inverse-property
		foreach p, q, s, o
		if
			[p   smaoin:is_inverse_of   q] and
			[s   p   o]
		then
			[o   q   s]

Let’s try to design the basic abstract syntax. A rule may have the following components:

Since each rule containing an or operator in the if part may be split into several rules, and assuming or in the Conclusion part is not useful, we may define the components like this:

[See repo JSON]