Popper icon indicating copy to clipboard operation
Popper copied to clipboard

Learning more than one head.

Open pudumagico opened this issue 2 years ago • 4 comments

Is it possible?

pudumagico avatar Jul 05 '22 11:07 pudumagico

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

celinehocquette avatar Jul 07 '22 10:07 celinehocquette

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

pudumagico avatar Jul 07 '22 15:07 pudumagico

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?

celinehocquette avatar Jul 07 '22 16:07 celinehocquette

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

andrewcropper avatar Jul 08 '22 05:07 andrewcropper