The rule you reference above applies to inherited properties and really only comes into play in interfaces with multiple base interfaces that define properties by the same name. In your example the
f property is redefined in B, and thus not inherited from
A. Keep in mind here that the redefinition in Breplaces the definition in
A. The definitions aren't merged and that's why you're getting an error. If you define
f in B the same was as you have in C it all works.