logic-and-learning-lab/Popper

Learning more than one head.

Closed this issue · 4 comments

Is it possible?

Hi @pudumagico,

Popper learns definite programs, each clause has exactly one head literal. It cannot learn clauses with more than one head literal. The new version neither can learn programs with different head predicates in different clauses (there is an issue with multi-predicate learning).

Thanks @celinehocquette!
Although I was thinking of learning some auxiliary head rules that would be used to learn a 'final' head rule.
Is that possible? I have only seen examples with only one 'head_pred'.

It is possible to learn auxiliary predicates through predicate invention. Two examples are available here and here. In short, you must use 'enable_pi.' in your bias file.
In this case, Popper is allowed to define new head predicates which will be used in the learned program.
Does it help with what you are looking for?

@pudumagico Popper cannot currently learn programs with different head user-defined head predicate symbols, i.e. multiple head_pred declarations. However, it is something we could implement relatively easily. I'll add it as a todo.