Hi!
There can be modalities (which are usually expressed as diamonds or boxes (operators) in modal logic):
DUTY_TO_PERFORM_ACTION(agent, action, time horizone) - agent should perform action within time horizon
BELIEF(agent, statement, time instant) - agent believes in statement at the time instant
Such modalities are important in robotics (e.g. AGI safety - what duties and permissions robots have) and in communication (modelling other agent believes, knowledge and reasoning styles).
Important point is, that by introducing modalities we also introduce additional axioms/meta-rules that connect modal statements (statements under modal operator) with the nonmodal statements and with the statements of other modalities (modal conversion). Example list of such metarules are available in
https://en.wikipedia.org/wiki/Modal_logic. Such metarules sometimes are debatable, e.g. rule in deontic logic: DUTY_TO_PERORM_ACTION(agent, action)->PERMISSION_TO_PERFORM_ACTION(agent, action) and such metarules sometimes lead to paradoxes (classical deontic logic is full of them), nevertheless, such metarules expresses additional knowledge about reality. And such metarules can be mined and used for constraining inference process (inference control)!
I have two questions regarding expression of modalities in OpenCog?:
1) how we can express modalities in Scheme/atomspace? -- One solution is to introduce new link types. Is such introduction possible? Maybe OpenCog have GenericLink for which the user can form derivation and for the derivation the user can define syntax (how many Nodes and of what Type are allowed in the new Link) and semantics (what processes are done, what is output and strenght values of the output)? I have not heard about such option;
-- Another solution is to use PredicateNode, e.g. belief can be expressed:
PredicateNode "agent_believe"
ConceptNode "Erving"
ConceptNode "Door is open"
The question is -
can we use other Node, Link, result of SatisfyingSetLink etc. in place of the literal "agent_believes"? Or we are bounded for using literal constants in the PredicateNode? If former is true, then the system is open for the arbitrary set of modalities and the system can generate new modalities!
2) how we can express metarules for modalities in OpenCog?:
My proposal is to use rules that accepts some patterns of predicates and that generates new predicates:
rule_body(obligation_predicate_type_nodes)->rule_head(new_permission_predicate_type_nodes)
Again - the question is about flexibility of the system:
if the system allows generation of new link types or new predicate then the system can mine/generate the relevant rules for the newly generate modalities!Of course, I am studying literature, experimenting, thinking about this, but maybe someone also has thought about those questions and has already something done - it would be nice to hear thoughts, proposals and experience!
Thanks!
p.s. I am sorry for sending this from new account, I don't know why Google groups do not show message from my regular account?