This is my review of the PRD document the 2008-12-25 PRD document snapshot.
The present version is a significant improvement on an earlier version, which I read. The new document is much more rigorous and better organized. I have several substantive comments, which are elaborated upon later, and a few editorial comments.
Usually facts are considered part of the knowledge base, so this remark can be confusing to some readers.
Would be appropriate to briefly explain this notion here.
This is an awkward and unclear sentence. Please use something like this instead:
Please replace with: This notation is not intended to be a concrete syntax, and so it leaves out many details. The only concrete syntax for RIF-PRD is its XML syntax.
An unclear sentences. Please rephrase.
This section was copied from BLD at the time when it had a problem. The context of individuals was not defined at the time, and there was an inconsistency in the definition of the context for the nullary symbols of the form f(). This has now been fixed in BLD, so please transfer the changes from there.
For production rules you need to use Herbrand domains. Otherwise, the definition of the models would be broken (as it is right now). PRD uses inflationary semantics for negation, and using general domains is problematic in this context.
Since BLD's semantics maps everything into the domain (including predicate formulas), the domain for PRD's semantic structures should consist of all terms, all atomic formulas, plus all the domains for the data types.
This definition is incorrect, if you have PRD negation. If Ψ has negation, for instance, And(p not q) then this definition is not strong enough to ensure that, say, p |= And(p not q).
What production systems do is different from logical entailment. You are constructing semantic Herbrand structures instead. You start with the Herbrand semantic structure that satisfies all the facts and nothing else, find a rule whose premises are all true in that structure, and then you fire the head of the rule. This creates a new structure, and so on. In fact, I do not think that you need the motion of logical entailment in the first place. You do need the notion of condition satisfaction, but it should be satisfaction in particular Herbrand structures, not the notion that you are defining. (The current document defines entailment of conditions by ground facts, not the notion of satisfaction in semantic structures.)
This definition seems broken, and is an overkill in any case. Why not simply define it as σ(Ψ) ⊆ Φ?
Here the reader starts to run into notational problems. At least, I did, especially trying to get through the definitions that use symbols defined a page or two ago. For instance, L is used for actions, W is used for ground condition formulas, T for terminal states, etc. These sometimes occur with subscripts. At some point it becomes hard to follow. I suggest that better mnemonic symbols are used. For instance, gActions, FinalStates, gConds, etc.
This is rather indirect and looks cryptic. I'd like to also add that this happens when the only actions are asserts, and there is no negation.
Here the term "strategy" is used, but it was never defined, even syntactically. I presume that here it must be a strategy identifier. But what is its syntax? Is it a constant? a Unicode string of chars? something else?
Cannot quite figure out what this is supposed to mean. An atomic subclass formula? This is one of the cases where the use of atomic garbles the sentence. In other cases the use of this term as a noun is just awkward.
Replace which by whose.
Not clear which Joe is meant: Joe the Hen or Joe the chicken.
Mark it as a definition so that it would be easier to find.
What is this thing that is uniquely identifying the rule? Is it the rule itself? You never talked about these identifiers before. Furthermore, why not define ground instances of the rules in the usual way, i.e., as the result of substitution of ground terms for variables?
It is confusing and unnecessary to write histories backwards. There is no advantage in making them into stacks, and this assumption does not seem to be used anywhere. So, it is just another distraction for the reader in a place where it is already hard to read.
Cannot understand what is meant here.
What is "input strategy" (input to what?)? A conflict resolution strategy?
The last two lines in that definition are unclear. Please rephrase.
The symbol ACTIONS has not been defined. Moreover, the definition of extractActions is not clear to me.
Please remind what TRS,LS is. (Earlier I suggested to use better mnemonics, which would have made such reminders less important.)
Same definition, bullet 3: (h,s h') - a missing comma.
Here you are talking about rule instances as things obtained from rules by substituting terms for variables. This is how I also suggested to define rule instances before. However, your definition is different, and so here you are using the term rule instance in a possibly different sense. This is confusing and most likely is unnecessary.
Here you are using the construct rule(rri). What is this? Earlier you defined only rule(ri).
Earlier you defined states to be pairs.
What are these "input" and "output" functions? At this point I felt that it does not make sense to continue reading until all the above issues are resolved.