Learning the rule
The facts, the bias, the examples: the engine returns the program.
Result obtained on the server: two rules, “new customer and high amount” or “foreign card and different delivery address”, which cover the four cases to check and none of the other five.
[kb set "cmd_verif"]
[facts "cmd_verif"
"montant_eleve(c1)." "nouveau_client(c1)."
"montant_eleve(c2)." "nouveau_client(c2)." "carte_etrangere(c2)."
"carte_etrangere(c3)." "adresse_differente(c3)."
"carte_etrangere(c4)." "adresse_differente(c4)." "montant_eleve(c4)."
"montant_eleve(c5)." "nouveau_client(c6)." "carte_etrangere(c7)."
"adresse_differente(c8)." "nouveau_client(c8)."
"montant_eleve(c9)." "adresse_differente(c9)."]
$biais = [ilp:bias [JSON '{
"target": "a_verifier/1",
"predicates": [
{"name": "a_verifier", "modes": ["+commande"], "role": "head", "is_bk": false},
{"name": "montant_eleve", "modes": ["+commande"]},
{"name": "nouveau_client", "modes": ["+commande"]},
{"name": "carte_etrangere", "modes": ["+commande"]},
{"name": "adresse_differente", "modes": ["+commande"]}],
"types": {"commande": "symbolic"}, "max_body": 2, "max_clauses": 3}']]
$positifs = [JSON '[["c1"], ["c2"], ["c3"], ["c4"]]']
$negatifs = [JSON '[["c5"], ["c6"], ["c7"], ["c8"], ["c9"]]']
$regle = [ilp:learn $biais "a_verifier" $positifs $negatifs [JSON '[]'] [JSON '{"beam_width": 128, "seed": 7}'] "cmd_verif"]
$regle.program