Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>
Clone
HTTPS:
git clone https://vervis.peers.community/repos/yEzqv
SSH:
git clone USERNAME@vervis.peers.community:yEzqv
Branches
Tags
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:
- For every p, q, s and o
- If the following is true:
- p is inverse of q
- s p o
- Then the following is also true:
- o q s
I want to try choosing a minimal set or operators before I add variety for expressiveness. For example, here all I need is:
- For each
- And
- Statement-is-true
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:
- Name
- List of for-each parameters
- Condition
- Conclusion
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:
- Name: character string
- List of for-each parameters
- Condition: Set of statements, each of which must contain at least one of the parameters
- Conclusion: Set of statements, each of which must contain at least one of the parameters