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.
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.