Knowledge representation / persistent, extensible, transient predicates
- persistent predicates represent persistent knowledge, that is, knowledge that is represented completely and immutably in the logic theory—e.g.: my birthplace and birthdate.
- extensible predicates represent extensible knowledge, that is, knowledge that is per see non mutable, yet is only partially known and represented in the logic theory—.g., birthplace and birthdate of my friends.
- transient predicates represent contingent knowledge, that is, knowledge that is intrinsically transient, and is represented mutably in the logic theory—e.g., my current position on a map.
- [Cfr. http://apice.unibo.it/xwiki/bin/view/Publications/AcltAiia95]
W.r.t. assert & retract: persistent predicates would cause both to fail; extensible predicates cause would cause retract to fail; transient predicate allow success of both.
Standard Prolog behaviour is achieved by considering all predicates as transient by default.
Specific directive predicates or behaviours could be introduced to build more articulated Prolog behaviours beyond standard one.
- a classic tuProlog behaviour should be introduced that considers by default loaded predicates as persistent, and any other predicate as transient.
- a pair of predicate directives such as static/1 and dynamic/1 should be introduced to be able override standard and by tuProlog behaviour, respectively; so, :-static(p/n) makes p/n persistent in a standard prolog setting, :-dynamic(p/n) makes p/n transient (even though loaded) in a classic tuprolog setting
- a triplet of predicates persistent/1, extensible/1, transient/1 should be introduced to provide the full range of required predicate behaviour, possibly interacting properly with both the standard prolog and the classic tuProlog setting, yet possibly introducing a new ACLT setting where either the default is static for loaded predicates, transient for unspecified ones, yet any predicate can be suitably re-defined via one of the three directive.
A suitable organisation of the machinery should be obviously designed accordingly, as discussed via Teams on 29/1/2021 with Andrea Omicini, Roberta Calegari & Giovanni Ciatto (last two basically sleeping through all the discussion).