There is an unsaved comment in progress. You will lose your changes if you continue. Are you sure you want to reopen the work item?
Like a fact, an interface can define predecessors, fields, queries, and predicates. Unlike a fact, all members (including predecessors and fields) are abstract. A fact implementing an interface must declare all members, or be abstract.
Interfaces exist to allow multiple inheritance. I'm not sure that this is necessary. I haven't found a model that requires it. Try to find an alternative that allows multiple inheritance of facts without violating the single-inheritance rule of the host language.
Perhaps abstract facts implicitly define an interface in the host language.