summaryrefslogtreecommitdiff
path: root/prolog/problems/family_relations
diff options
context:
space:
mode:
authorTimotej Lazar <timotej.lazar@fri.uni-lj.si>2017-02-27 18:35:01 +0100
committerTimotej Lazar <timotej.lazar@fri.uni-lj.si>2017-02-27 18:35:01 +0100
commit92c49ac708e04e545da6e7aafe91cac8f223f475 (patch)
treefe56e0e2e5e40e863cb993d85cd0e09d39e545de /prolog/problems/family_relations
parent320f6db34b5da13e259c3a55db9996a456bf8839 (diff)
Prolog: add bugs files for the first six groups
Diffstat (limited to 'prolog/problems/family_relations')
-rw-r--r--prolog/problems/family_relations/ancestor_2/bugs.json260
-rw-r--r--prolog/problems/family_relations/aunt_2/bugs.json252
-rw-r--r--prolog/problems/family_relations/brother_2/bugs.json115
-rw-r--r--prolog/problems/family_relations/cousin_2/bugs.json547
-rw-r--r--prolog/problems/family_relations/descendant_2/bugs.json251
-rw-r--r--prolog/problems/family_relations/grandparent_2/bugs.json134
-rw-r--r--prolog/problems/family_relations/mother_2/bugs.json84
-rw-r--r--prolog/problems/family_relations/sister_2/bugs.json340
8 files changed, 1983 insertions, 0 deletions
diff --git a/prolog/problems/family_relations/ancestor_2/bugs.json b/prolog/problems/family_relations/ancestor_2/bugs.json
new file mode 100644
index 0000000..f56f5c7
--- /dev/null
+++ b/prolog/problems/family_relations/ancestor_2/bugs.json
@@ -0,0 +1,260 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"ancestor\") (args variable)))",
+ "(clause (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (binop variable \"==\"))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"grandparent\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"grandparent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (binop \"==\" variable))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"==\"))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"ancestor\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (binop \"==\" variable))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (binop \"==\" variable))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (binop variable \"is\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"ancestor\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"ancestor\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"ancestor\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"is\"))",
+ "(clause (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"ancestor\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"ancestor\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "rules": [
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"ancestor\") (args variable)))"
+ ],
+ "distribution": [
+ 49,
+ 0
+ ],
+ "quality": 0.9629885382291584
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 39,
+ 0
+ ],
+ "quality": 0.9541530529030873
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"ancestor\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 170
+ ],
+ "quality": 0.9514788098199769
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 34,
+ 0
+ ],
+ "quality": 0.9470223522722367
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 33,
+ 0
+ ],
+ "quality": 0.9453306576768873
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"ancestor\") (args variable)))"
+ ],
+ "distribution": [
+ 33,
+ 0
+ ],
+ "quality": 0.9453306576768873
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))))"
+ ],
+ "distribution": [
+ 32,
+ 0
+ ],
+ "quality": 0.9435307541149079
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 31,
+ 0
+ ],
+ "quality": 0.9416119920933244
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 22,
+ 0
+ ],
+ "quality": 0.9157923393616936
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 16,
+ 0
+ ],
+ "quality": 0.884763343524827
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8655912886026441
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 10,
+ 79
+ ],
+ "quality": 0.8502921553589384
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 52,
+ 172
+ ],
+ "quality": 0.7525612821040794
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.7358835810639816
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"sister\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.7012043532450386
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (binop variable \"is\"))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.7012043532450386
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"ancestor\") (args (args variable))) (binop \"\\==\" variable))"
+ ],
+ "distribution": [
+ 5,
+ 0
+ ],
+ "quality": 0.6649699835988584
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"ancestor\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"ancestor\") (args variable))) (compound (functor \"ancestor\") (args variable)))"
+ ],
+ "distribution": [
+ 43,
+ 84
+ ],
+ "quality": 0.6159501919553191
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/aunt_2/bugs.json b/prolog/problems/family_relations/aunt_2/bugs.json
new file mode 100644
index 0000000..3dfc1db
--- /dev/null
+++ b/prolog/problems/family_relations/aunt_2/bugs.json
@@ -0,0 +1,252 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"mother\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))))",
+ "(clause (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"brother\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"aunt\") (args variable))))",
+ "(clause (compound (functor \"mother\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"female\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"sister\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (binop variable \"\\==\") (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\=\"))"
+ ],
+ "rules": [
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 1,
+ 65
+ ],
+ "quality": 0.947889568617913
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))"
+ ],
+ "distribution": [
+ 7,
+ 151
+ ],
+ "quality": 0.9379739504789125
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 24,
+ 0
+ ],
+ "quality": 0.914813761663181
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 20,
+ 0
+ ],
+ "quality": 0.8970351219221164
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"sister\") (args (args variable))))"
+ ],
+ "distribution": [
+ 17,
+ 0
+ ],
+ "quality": 0.8783140596236834
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args variable))))"
+ ],
+ "distribution": [
+ 15,
+ 0
+ ],
+ "quality": 0.8622447942091449
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"mother\") (args variable)) (compound (functor \"sister\") (args (args variable))))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8526064437591069
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 13,
+ 0
+ ],
+ "quality": 0.8415381256574634
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 13,
+ 0
+ ],
+ "quality": 0.8415381256574634
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"sister\") (args variable)))"
+ ],
+ "distribution": [
+ 48,
+ 217
+ ],
+ "quality": 0.8109202887628649
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"sister\") (args (args variable))) (binop variable \"\\==\"))"
+ ],
+ "distribution": [
+ 11,
+ 0
+ ],
+ "quality": 0.8101710193035057
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args (args variable)))) (compound (functor \"sister\") (args variable)))"
+ ],
+ "distribution": [
+ 10,
+ 0
+ ],
+ "quality": 0.792429870081551
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"aunt\") (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 9,
+ 0
+ ],
+ "quality": 0.7676282421060165
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 8,
+ 0
+ ],
+ "quality": 0.7381905943393422
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.7045898992557954
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.6624455004031453
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/brother_2/bugs.json b/prolog/problems/family_relations/brother_2/bugs.json
new file mode 100644
index 0000000..252bcdf
--- /dev/null
+++ b/prolog/problems/family_relations/brother_2/bugs.json
@@ -0,0 +1,115 @@
+{
+ "patterns": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"male\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"male\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"male\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (binop variable \"\\==\") (compound (functor \"male\") (args variable)))",
+ "(clause (binop variable \"\\=\") (compound (functor \"male\") (args variable)))",
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (binop variable \"\\=\") (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (compound (functor \"not\") (args (binop \"=\" variable))))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"not\") (args (binop variable \"=\"))))"
+ ],
+ "rules": [
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))"
+ ],
+ "distribution": [
+ 0,
+ 102
+ ],
+ "quality": 0.9873786600439431
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (binop \"\\=\" variable))"
+ ],
+ "distribution": [
+ 0,
+ 39
+ ],
+ "quality": 0.9574307072764063
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"male\") (args variable)) (binop variable \"\\=\"))"
+ ],
+ "distribution": [
+ 0,
+ 34
+ ],
+ "quality": 0.9526649947812729
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"brother\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))"
+ ],
+ "distribution": [
+ 4,
+ 102
+ ],
+ "quality": 0.9462163947101927
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))"
+ ],
+ "distribution": [
+ 1,
+ 43
+ ],
+ "quality": 0.9357128569764824
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"brother\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"male\") (args variable)))"
+ ],
+ "distribution": [
+ 9,
+ 80
+ ],
+ "quality": 0.8661764695637234
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 9,
+ 0
+ ],
+ "quality": 0.7899147086754702
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/cousin_2/bugs.json b/prolog/problems/family_relations/cousin_2/bugs.json
new file mode 100644
index 0000000..cf1bafe
--- /dev/null
+++ b/prolog/problems/family_relations/cousin_2/bugs.json
@@ -0,0 +1,547 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"grandparent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"grandparent\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args variable)) (compound (functor \"grandparent\") (args variable)))",
+ "(clause (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"grandparent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"brother\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"sister\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"brother\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (binop variable \"\\==\") (compound (functor \"parent\") (args (args variable))))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (binop variable \"\\==\")))",
+ "(clause (head (binop \"\\==\" variable)))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"aunt\") (args (args variable))))",
+ "(clause (compound (functor \"aunt\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (binop variable \"\\==\") (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"aunt\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sibling\") (args variable)))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (binop variable \"\\==\") (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"sibling\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sibling\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (binop variable \"\\==\"))",
+ "(clause (compound (functor \"aunt\") (args variable)))",
+ "(clause (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"aunt\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"aunt\") (args variable)))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))))",
+ "(clause (head (compound (functor \"parent\") (args variable))))",
+ "(clause (head (compound (functor \"parent\") (args (args variable)))))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sibling\") (args (args variable))))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (binop variable \"\\==\") (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args variable)))",
+ "(clause (compound (functor \"male\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"uncle\") (args (args variable))))",
+ "(clause (compound (functor \"sibling\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop (compound (functor \"parent\") (args (args variable))) \"\\==\"))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (binop \"\\==\" (compound (functor \"parent\") (args (args variable)))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (binop (compound (functor \"parent\") (args (args variable))) \"\\==\"))",
+ "(clause (head (compound (functor \"rel\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (binop \"\\==\" variable) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"brother\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"grandparent\") (args (args variable))) (binop \"\\==\" (compound (functor \"parent\") (args (args variable)))))",
+ "(clause (compound (functor \"male\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"uncle\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"brother\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"brother\") (args (args variable))) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"sister\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"sister\") (args variable)) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"grandparent\") (args variable)) (binop variable \"==\"))",
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"brother\") (args variable)) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"cousin\") (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"rel\") (args variable)))",
+ "(clause (binop (compound (functor \"parent\") (args (args variable))) \"\\==\") (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"uncle\") (args variable)))",
+ "(clause (binop \"\\==\" (compound (functor \"parent\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"rel\") (args (args variable))))",
+ "(clause (compound (functor \"grandparent\") (args variable)) (binop \"==\" variable))",
+ "(clause (binop variable \"\\==\") (compound (functor \"sister\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"sister\") (args variable)))",
+ "(clause (head (compound (functor \"uncle\") (args variable))) (compound (functor \"brother\") (args variable)))",
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"mother\") (args (args variable))))"
+ ],
+ "rules": [
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 133,
+ 6
+ ],
+ "quality": 0.94016212482336
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 29,
+ 0
+ ],
+ "quality": 0.933779474141905
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"grandparent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 131,
+ 9
+ ],
+ "quality": 0.9176017146530752
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"grandparent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 122,
+ 9
+ ],
+ "quality": 0.9115239358917779
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 1,
+ 46
+ ],
+ "quality": 0.9076289132901347
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 32,
+ 1
+ ],
+ "quality": 0.9018227532951513
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)))"
+ ],
+ "distribution": [
+ 3,
+ 61
+ ],
+ "quality": 0.8974982076912563
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))"
+ ],
+ "distribution": [
+ 1,
+ 40
+ ],
+ "quality": 0.8923400808585659
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))))"
+ ],
+ "distribution": [
+ 5,
+ 69
+ ],
+ "quality": 0.8778775682779553
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"sister\") (args (args variable))))"
+ ],
+ "distribution": [
+ 6,
+ 73
+ ],
+ "quality": 0.8765880199817603
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))",
+ "(clause (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 4,
+ 53
+ ],
+ "quality": 0.8692566844984977
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"brother\") (args variable)))"
+ ],
+ "distribution": [
+ 5,
+ 59
+ ],
+ "quality": 0.8673836719098068
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8498355518209159
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8498355518209159
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop variable \"\\==\"))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8498355518209159
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 5,
+ 51
+ ],
+ "quality": 0.8470067221446368
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 3,
+ 41
+ ],
+ "quality": 0.8454701631582257
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"male\") (args variable)))"
+ ],
+ "distribution": [
+ 13,
+ 0
+ ],
+ "quality": 0.8369844665046267
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (binop variable \"\\==\")))"
+ ],
+ "distribution": [
+ 13,
+ 0
+ ],
+ "quality": 0.8369844665046267
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))"
+ ],
+ "distribution": [
+ 19,
+ 117
+ ],
+ "quality": 0.8367214651159391
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 20,
+ 118
+ ],
+ "quality": 0.8317204395318585
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 17,
+ 0
+ ],
+ "quality": 0.8245830644763305
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 12,
+ 0
+ ],
+ "quality": 0.8207906119330671
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 26,
+ 134
+ ],
+ "quality": 0.814618215172423
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args variable)))"
+ ],
+ "distribution": [
+ 27,
+ 136
+ ],
+ "quality": 0.8145742550525583
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"sister\") (args variable)))"
+ ],
+ "distribution": [
+ 11,
+ 0
+ ],
+ "quality": 0.801889173359944
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"brother\") (args variable)))"
+ ],
+ "distribution": [
+ 8,
+ 0
+ ],
+ "quality": 0.7274216707800343
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"sister\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 1,
+ 15
+ ],
+ "quality": 0.7117650610669528
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))"
+ ],
+ "distribution": [
+ 2,
+ 18
+ ],
+ "quality": 0.7085607880281732
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))"
+ ],
+ "distribution": [
+ 2,
+ 18
+ ],
+ "quality": 0.7085607880281732
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"\\=\"))"
+ ],
+ "distribution": [
+ 4,
+ 19
+ ],
+ "quality": 0.6686625243584223
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 63,
+ 138
+ ],
+ "quality": 0.6674026842607351
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"brother\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"sister\") (args (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 20
+ ],
+ "quality": 0.6144839912537575
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"brother\") (args variable)))",
+ "(clause (compound (functor \"brother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 39,
+ 63
+ ],
+ "quality": 0.5661405653076401
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"cousin\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"\\==\" variable))"
+ ],
+ "distribution": [
+ 65,
+ 65
+ ],
+ "quality": 0.4334631379481499
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/descendant_2/bugs.json b/prolog/problems/family_relations/descendant_2/bugs.json
new file mode 100644
index 0000000..0eeaccc
--- /dev/null
+++ b/prolog/problems/family_relations/descendant_2/bugs.json
@@ -0,0 +1,251 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"descendant\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"descendant\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descendant\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"descendant\") (args variable)))",
+ "(clause (binop variable \"==\"))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"ancestor\") (args variable)))",
+ "(clause (binop \"==\" variable))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"child\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"child\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"ancestor\") (args (args variable))))",
+ "(clause (head (compound (functor \"descdendant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"descdendant\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"descandant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descandant\") (args variable)))"
+ ],
+ "rules": [
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"ancestor\") (args variable)))"
+ ],
+ "distribution": [
+ 1,
+ 105
+ ],
+ "quality": 0.973626841987995
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descendant\") (args variable)))"
+ ],
+ "distribution": [
+ 64,
+ 0
+ ],
+ "quality": 0.9705736245082147
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"descendant\") (args (args variable))))"
+ ],
+ "distribution": [
+ 63,
+ 0
+ ],
+ "quality": 0.9700883375409743
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 2,
+ 110
+ ],
+ "quality": 0.9654522191878034
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"descendant\") (args (args variable))))"
+ ],
+ "distribution": [
+ 32,
+ 0
+ ],
+ "quality": 0.9401859078473961
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args variable))))"
+ ],
+ "distribution": [
+ 29,
+ 0
+ ],
+ "quality": 0.933957780902709
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"descendant\") (args variable)))"
+ ],
+ "distribution": [
+ 28,
+ 0
+ ],
+ "quality": 0.9315914615339456
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 28,
+ 0
+ ],
+ "quality": 0.9315914615339456
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"descendant\") (args variable)))"
+ ],
+ "distribution": [
+ 3,
+ 71
+ ],
+ "quality": 0.924459733681661
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 20,
+ 0
+ ],
+ "quality": 0.9044160072989779
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 16,
+ 0
+ ],
+ "quality": 0.8838503753702701
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"descendant\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"descendant\") (args (args variable))))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 64
+ ],
+ "quality": 0.8711158595238758
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"descendant\") (args variable)))",
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"descendant\") (args (args variable))))"
+ ],
+ "distribution": [
+ 8,
+ 65
+ ],
+ "quality": 0.849709057252787
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descdendant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.7136115876115294
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args (args variable)))) (compound (functor \"ancestor\") (args (args variable))))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.7136115876115294
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"descandant\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.7136115876115294
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"descandant\") (args variable)))"
+ ],
+ "distribution": [
+ 5,
+ 0
+ ],
+ "quality": 0.6665876404448069
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"descendant\") (args variable))) (compound (functor \"descendant\") (args variable)))"
+ ],
+ "distribution": [
+ 34,
+ 72
+ ],
+ "quality": 0.627337822618307
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop variable \"==\"))"
+ ],
+ "distribution": [
+ 4,
+ 0
+ ],
+ "quality": 0.6108003755618978
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/grandparent_2/bugs.json b/prolog/problems/family_relations/grandparent_2/bugs.json
new file mode 100644
index 0000000..03ebb02
--- /dev/null
+++ b/prolog/problems/family_relations/grandparent_2/bugs.json
@@ -0,0 +1,134 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"grandparent\") (args (args variable))))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"grandparent\") (args variable)))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"male\") (args variable)))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args (compound (functor \"parent\") (args variable)))))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"grandparent\") (args variable)))"
+ ],
+ "rules": [
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 0,
+ 39
+ ],
+ "quality": 0.9610730922668185
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 8,
+ 198
+ ],
+ "quality": 0.9536702271177137
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 12,
+ 0
+ ],
+ "quality": 0.8356509258426985
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 10,
+ 0
+ ],
+ "quality": 0.8071381578664112
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 8,
+ 0
+ ],
+ "quality": 0.7681743107725475
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))) (compound (functor \"grandparent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.741594251804507
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.741594251804507
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.741594251804507
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 7,
+ 0
+ ],
+ "quality": 0.741594251804507
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"grandparent\") (args variable))) (compound (functor \"parent\") (args (compound (functor \"parent\") (args variable)))))"
+ ],
+ "distribution": [
+ 5,
+ 0
+ ],
+ "quality": 0.6643380722879881
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/mother_2/bugs.json b/prolog/problems/family_relations/mother_2/bugs.json
new file mode 100644
index 0000000..a65eb29
--- /dev/null
+++ b/prolog/problems/family_relations/mother_2/bugs.json
@@ -0,0 +1,84 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"mother\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"mother\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"mother\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"mother\") (args (args variable)))))",
+ "(clause (head (compound (functor \"mother\") (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"mother\") (args (args variable)))) (compound (functor \"female\") (args variable)))",
+ "(clause (head (binop variable \"=\")))"
+ ],
+ "rules": [
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"mother\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 1,
+ 178
+ ],
+ "quality": 0.987052705253526
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"mother\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 0,
+ 79
+ ],
+ "quality": 0.9826262170902895
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"mother\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 18,
+ 0
+ ],
+ "quality": 0.890899775723019
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"mother\") (args variable))))"
+ ],
+ "distribution": [
+ 9,
+ 0
+ ],
+ "quality": 0.7987809210948922
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 6,
+ 0
+ ],
+ "quality": 0.720112523275646
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (binop variable \"=\")))"
+ ],
+ "distribution": [
+ 4,
+ 0
+ ],
+ "quality": 0.6198615754492156
+ }
+ ]
+} \ No newline at end of file
diff --git a/prolog/problems/family_relations/sister_2/bugs.json b/prolog/problems/family_relations/sister_2/bugs.json
new file mode 100644
index 0000000..2fa8351
--- /dev/null
+++ b/prolog/problems/family_relations/sister_2/bugs.json
@@ -0,0 +1,340 @@
+{
+ "patterns": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\=\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"\\=\"))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (binop variable \"\\==\") (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (binop variable \"\\==\") (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"female\") (args variable)) (binop \"\\==\" variable))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"parent\") (args variable)))",
+ "(clause (binop variable \"\\=\") (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"parent\") (args variable)))",
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))",
+ "(clause (binop variable \"\\=\") (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop variable \"\\==\"))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop \"\\=\" variable))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"not\") (args (binop \"=\" variable))))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"not\") (args (binop variable \"=\"))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"female\") (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"==\"))",
+ "(clause (compound (functor \"female\") (args variable)) (binop \"\\=\" variable))",
+ "(clause (binop (compound (functor \"parent\") (args variable)) \"==\" (compound (functor \"parent\") (args variable))))",
+ "(clause (binop \"\\==\" variable) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"not\") (args (binop variable \"=\"))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"not\") (args (binop \"=\" variable))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"mother\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop \"==\" variable))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"==\" (compound (functor \"parent\") (args (args variable)))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop (compound (functor \"parent\") (args (args variable))) \"==\"))",
+ "(clause (compound (functor \"parent\") (args variable)) (binop variable \"=\\=\"))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"=\\=\" variable))",
+ "(clause (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"mother\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"sibling\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"not\") (args (binop variable \"=\"))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"sibling\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"=\\=\" variable))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"=\" (compound (functor \"parent\") (args (args variable)))))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"=\\=\"))",
+ "(clause (head (compound (functor \"sibling\") (args variable))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"mother\") (args (args variable))))",
+ "(clause (head (compound (functor \"sibling\") (args (args variable)))) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"mother\") (args variable)) (compound (functor \"mother\") (args variable)))",
+ "(clause (compound (functor \"sibling\") (args variable)) (compound (functor \"female\") (args variable)))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"feamle\") (args variable)))",
+ "(clause (compound (functor \"female\") (args variable)) (binop (compound (functor \"parent\") (args (args variable))) \"==\"))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop (compound (functor \"parent\") (args (args variable))) \"=\"))",
+ "(clause (head (compound (functor \"sister\") (args variable))) (binop variable \"=\\=\"))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"feamle\") (args variable)))",
+ "(clause (binop (compound (functor \"parent\") (args variable)) \"=\" (compound (functor \"parent\") (args variable))))"
+ ],
+ "rules": [
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 131,
+ 0
+ ],
+ "quality": 0.98752268394827
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop \"\\==\" variable) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 45,
+ 0
+ ],
+ "quality": 0.960805156909999
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop variable \"\\==\") (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 37,
+ 0
+ ],
+ "quality": 0.9514793639924134
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))",
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (binop \"\\=\" variable))"
+ ],
+ "distribution": [
+ 1,
+ 72
+ ],
+ "quality": 0.9491654216200829
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\=\"))"
+ ],
+ "distribution": [
+ 3,
+ 81
+ ],
+ "quality": 0.9323996349698898
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))",
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 4,
+ 95
+ ],
+ "quality": 0.9294071429039249
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args (args variable))))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"female\") (args variable)) (binop variable \"\\==\"))"
+ ],
+ "distribution": [
+ 4,
+ 89
+ ],
+ "quality": 0.9257398293889815
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 25,
+ 0
+ ],
+ "quality": 0.9244949834569286
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop \"\\==\" variable))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (binop variable \"\\==\"))"
+ ],
+ "distribution": [
+ 17,
+ 184
+ ],
+ "quality": 0.9097159118083122
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args (args variable)))) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 21,
+ 0
+ ],
+ "quality": 0.9090981834363482
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop \"\\=\" variable) (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 19,
+ 0
+ ],
+ "quality": 0.899813945496532
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop variable \"\\=\") (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 17,
+ 0
+ ],
+ "quality": 0.8864346621831894
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 14,
+ 0
+ ],
+ "quality": 0.8577342713242664
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"female\") (args variable))))"
+ ],
+ "distribution": [
+ 11,
+ 0
+ ],
+ "quality": 0.8143191401362178
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 11,
+ 0
+ ],
+ "quality": 0.8143191401362178
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args variable)))"
+ ],
+ "distribution": [
+ 10,
+ 0
+ ],
+ "quality": 0.7963231180678917
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (compound (functor \"parent\") (args (args variable))))"
+ ],
+ "distribution": [
+ 10,
+ 0
+ ],
+ "quality": 0.7963231180678917
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop \"\\==\" variable) (compound (functor \"female\") (args variable)))"
+ ],
+ "distribution": [
+ 9,
+ 0
+ ],
+ "quality": 0.7745383217844619
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (binop (compound (functor \"parent\") (args variable)) \"==\" (compound (functor \"parent\") (args variable))))"
+ ],
+ "distribution": [
+ 9,
+ 0
+ ],
+ "quality": 0.7745383217844619
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"mother\") (args (args variable))))"
+ ],
+ "distribution": [
+ 8,
+ 0
+ ],
+ "quality": 0.7500360114235385
+ },
+ {
+ "class": false,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args (args variable)))))"
+ ],
+ "distribution": [
+ 8,
+ 0
+ ],
+ "quality": 0.7500360114235385
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (compound (functor \"female\") (args variable)) (compound (functor \"not\") (args (binop variable \"=\"))))"
+ ],
+ "distribution": [
+ 0,
+ 6
+ ],
+ "quality": 0.6828971360185574
+ },
+ {
+ "class": true,
+ "condition": [
+ "(clause (head (compound (functor \"sister\") (args variable))) (compound (functor \"female\") (args variable)))",
+ "(clause (compound (functor \"parent\") (args (args variable))) (compound (functor \"not\") (args (binop variable \"=\"))))"
+ ],
+ "distribution": [
+ 0,
+ 7
+ ],
+ "quality": 0.6384215810360028
+ }
+ ]
+} \ No newline at end of file