Holog Should Allow per Attribute in Any Term Within op Child of Expr
1 Issue Description
There is a RuleML 1.03 instance in exa/ called serialise_fail.ruleml (see also https://github.com/RuleML/deliberation-ruleml/blob/1.03/exa/Holog/nafhologeq/ or http://deliberation.ruleml.org/1.03/exa/Holog/nafhologeq/).
One thing that does not validate there is the @per attributes on Const, as that is not included in the holog module. For this to validate, @per needs to be allowed for any term element that appears in the <op> position of an <Expr>
2.1 Option 0
Status quo - no change.
2.2 Option 1
- Create a new pattern e.g. AnyTermExprOperator.choice
- Define this so that it mirrors AnyTerm.choice, but also allows @per
Details: The AnyTerm.choice pattern is defined in terms of these:
- individual (Ind)
- Make new definitions of each, e.g. SkolemExprOperator
- Use these to define AnyTermExprOperator
- Use AnyTermExprOperator for the content of <op> in Expr
- Put these new patterns into something like "holog_per_expansion_module"
- Include "holog_per_expansion_module" into holog drivers.
- Also, op_Expr.content is redefined when expr_...module is included into the holog drivers, so that the new pattern AnyTermExprOperator is used.
2.3 Option 2
Allow @per attribute on all elements that belong to the pattern AnyTerm.choice (see Option 1).
2.4 Option 3
Allow @per attribute on Const, which is needed only in higher-order languages (similar to, but less lenient than, Option 2).
Option 2 is quite lenient, as it allows @per attribute on many elements where it is not needed. Option 3 is a partial solution only, which could later be expanded to Option 2 or modified to Option 1.
3.1 Recommended Option
3.2 Accepted Option
Option 3 (for Version 1.03).
3.3 Related Issues
- Functional Languages Should Allow Expr Within repo
- General Issue of the level where @per is attached
4.1 Relax NG Modules
4.2 Relax NG Drivers
4.3 MYNG Engine
4.4 MYNG GUI
4.6 Unit Tests