Explicit Inferences
This is an example of an explicit inference:
If I see you then you see me.
Explicit inferences are executable code. They will execute when the conditions of the inference match something in the context:
>> if i see you then you see me
if You see Me then I see You.
>> i see you
You see Me. I see You.
Infererence templates are retriggerable:
>> if an animal sees the princess then the animal is happy
if a animal sees the princess then the animal is happy.
>> the dog sees the princess
the dog sees the princess. the dog is happy.
>> the cat sees the princess
the cat sees the princess. the cat is happy.
Inference templates can have as many as four conditions and four consequences. Here is an example with three conditions and two consequences:
>> if the cat sleeps and the dog sleeps and the bird sleeps then i can sleep and you can go home
if the cat sleeps and the dog sleeps and the bird sleeps then You sleep and I go home.
>> the cat is sleeping
the cat sleeps.
>> the bird is sleeping
the bird sleeps.
>> the dog is sleeping
the dog sleeps. You sleep. I go home.
Inferences can chain, meaning the results of one can immediately feed another:
>> if i am happy then you are sad.
if You are happy then I am sad.
>> if i see a toy then i am happy.
if You see a toy then You are happy.
>> if i am at the beach then i see a ball.
if You are at the beach then You see a ball.
>> if the weather is hot then i am at the beach
if the weather is hot then You are at the beach.
>> the weather is hot
the weather is hot. You are at the beach. You see ball. You are happy. I am sad.
>> why
I am sad because You are happy.
>> why
You are happy because You see ball.
>> why
You see ball because You are at the beach.
>> why
You are at the beach because the weather is hot.
When concepts in the inference template are the similar, we have to differentiate them (make them orthogonal) with attributes. Here's a simple example. There are two dogs in the template. We use colors to tell them apart:
>> if a red dog sees a yellow dog then the red dog barks and the yellow dog runs
if a red dog sees a yellow dog then the red dog barks and the yellow dog runs.
>> the red dog sees the yellow dog
the red dog sees the yellow dog. the red dog barks. the yellow dog runs.
Naturally, we don't want to have to create inference templates for every possible combination of dog. We can make templates more general by enumerating the concepts in the inference template with attributes like "former" and "latter" or "first" and "second":
>> if a thing is near another thing then the latter thing is near the former thing
if a thing is by another thing then the thing is by the prior thing.
>> dog is near cat
dog is by cat. cat is by dog. dog is by cat.
>> where is dog
dog is by cat.
>> where is cat
cat is by dog.