Sample dialogs: C:\logicagent>ruby logicagent.rb I have loaded C:/logicagent/logicagent-api.yaml. > All metals are solid. Okay, All metals are solid. > Mercury is a metal. Okay, Mercury is a metal. > a metal is all metals Okay, a metal is all metals. > is Mercury solid? Yes, Mercury is solid. > why is Mercury solid? Mercury is solid because: mercury is a metal, and a metal is all metals, and all metals are solid > Mercury is not solid. Okay, Mercury is not solid. > Iron is a metal. Okay, Iron is a metal. > Is iron solid? Yes, iron is solid. > is Mercury solid? No, Mercury is not solid. > is mercury a metal? Yes, mercury is a metal. > is iron a metal? Yes, iron is a metal. --- > Socrates is a god. Okay, Socrates is a god. > gods are immortal Okay, gods are immortal. > gods includes a god Okay, gods = a god. > is Socrates immortal? Yes, Socrates is immortal. > why is Socrates immortal? Socrates is immortal because: Socrates is a god, and a god = gods, and gods are immortal > forget that Socrates is a god. Okay I have forgotten that Socrates is a god. > is Socrates immortal? I have no knowledge that Socrates is immortal. --- The "is" relation is transitive. The graph can store other relations, such as "=" which is reflexive, symmetric, and transitive: --- > reset graph Okay, I have reset the graph. > a = b Okay, a = b. > does a = a? Yes, a = a. > does a = b? Yes, a = b. > does b = a? Yes, b = a. > b = c Okay, b = c. > does a = c? Yes, a = c. > print graph a = b a = a b = a b = b b = c c = b c = c --- The graph can also store multiple edges (or relations): --- > All birds have wings. Okay, All birds have wings. > All ostriches are birds. Okay, All ostriches are birds. > birds are all birds Okay, birds are all birds. > do all ostriches have wings? Yes, all ostriches have wings > why do all ostriches have wings? all ostriches have wings because: all ostriches are birds, and birds are all birds, and all birds have wings --- robertscottmitchell@yahoo.com