Hi~
I often get verbose print result, such as R.only(A|A|B), which is worse than R.only(A|B), and if B is a subclass of A, then a better one is R.only(A). You also might have got And([R.only(A|A|B)], R.only(A|B)]), that is really redundant.
In semantics, A|A == A, they are identified with each other.
One day, I wanted to check that R.value(a) in x.is_instance_of (instead of a in x.R), I printed x.is_instance_of, it shown (partly)
[R.only(A|A|OneOf(a)), R.only(A|OneOf(a))], where a is instance of A, thus it gave me False. It would be a long list in large ontology, but there was no what you looked for yet. I really hope that we define an eazy-using function to check x is instance of y