add semantic predicate
ordered choice for multiple rule defs