From 815063053ef46e3baad68564585c306fc559eaad Mon Sep 17 00:00:00 2001
From: Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>
Date: Mon, 29 Feb 2016 17:07:37 +0100
Subject: Some minor corrections in accompanying texts.

---
 prolog/problems/family_relations/cousin_2/common.py |  5 +++++
 prolog/problems/family_relations/cousin_2/sl.py     | 10 +++++++++-
 prolog/problems/family_relations/intro_sl.html      |  4 ++--
 3 files changed, 16 insertions(+), 3 deletions(-)

(limited to 'prolog/problems')

diff --git a/prolog/problems/family_relations/cousin_2/common.py b/prolog/problems/family_relations/cousin_2/common.py
index c6d07c7..86ef5cc 100644
--- a/prolog/problems/family_relations/cousin_2/common.py
+++ b/prolog/problems/family_relations/cousin_2/common.py
@@ -40,6 +40,7 @@ hint_type = {
     'cousin_vs_sibling': Hint('cousin_vs_sibling'),
     'cousin_to_oneself': Hint('cousin_to_oneself'),
     'cousin_need_not_be_parent': Hint('cousin_need_not_be_parent'),
+    'predicate_always_false': Hint('predicate_always_false'),
 }
 
 test_cases = [
@@ -84,6 +85,10 @@ def hint(code, aux_code):
             return [{'id': 'gender_is_irrelevant_markup', 'start': m[0], 'end': m[1]} for m in marks] + \
                    [{'id': 'gender_is_irrelevant'}]
 
+        # target predicate seems to always be false
+        if not prolog.engine.ask_truth(engine_id, 'cousin(_, _)'):
+            return [{'id': 'predicate_always_false'}]
+
         # precedence fail (AND block vs OR block)
         # case in point: parent(PX, X), parent(PY, Y), brother(PX, PY) ; sister(PX, PY)
         #  or this case: parent(PX, X), parent(PY, Y), sister(PX, PY) ; brother(PX, PY)
diff --git a/prolog/problems/family_relations/cousin_2/sl.py b/prolog/problems/family_relations/cousin_2/sl.py
index 5b82305..c1380bf 100644
--- a/prolog/problems/family_relations/cousin_2/sl.py
+++ b/prolog/problems/family_relations/cousin_2/sl.py
@@ -40,7 +40,7 @@ hint = {
 
     'precedence_fail': '''\
 <p>Si morda narobe upošteval prioriteto operatorjev IN ter ALI?</p>
-<p>Operator IN veže močneje od ALI, če želiš spremeniti prioriteto,
+<p>Operator IN veže močneje od ALI; če želiš spremeniti prioriteto,
 lahko uporabiš oklepaje.</p>
 ''',
 
@@ -58,6 +58,14 @@ Imata morda <code>X</code> in <code>Y</code> istega starša?</p>
 
     'cousin_need_not_be_parent': '''\
 <p>Bratranec/sestrična pravzaprav ne rabi imeti otrok...</p>
+''',
+
+    'predicate_always_false': '''\
+<p>Vse kaže, da tvoj predikat vedno vrne "false". Si mu dal pravilno ime, si se morda pri imenu zatipkal?</p>
+<p>Če je ime pravilno, se morda splača preveriti tudi, če se nisi zatipkal kje drugje,
+je morda kakšna pika namesto vejice ali obratno, morda kakšna spremenljivka z malo začetnico?</p>
+<p>Možno je seveda tudi, da so tvoji pogoji prestrogi ali celo nemogoči (kot bi bila npr. zahteva,
+da je <code>X</code> hkrati starš in sestra od <code>Y</code>).</p>
 ''',
 
 #     'interesting_tidbit': '''\
diff --git a/prolog/problems/family_relations/intro_sl.html b/prolog/problems/family_relations/intro_sl.html
index 0e1147b..54d2e1e 100644
--- a/prolog/problems/family_relations/intro_sl.html
+++ b/prolog/problems/family_relations/intro_sl.html
@@ -143,7 +143,7 @@ so vsi argumenti lahko vhodi in izhodi hkrati. Nič ni strogo definirano. Temu
 bomo pogovorno rekli, da prolog deluje v vse (več) smeri. Vprašali smo seveda,
 kdo je starš od Williama.
 </p><p>
-Privoščimo silahko še več.
+Privoščimo si lahko še več.
 </p>
 <pre>
 ?- parent(X, Y).
@@ -346,7 +346,7 @@ ancestor(X, Y) :-
     parent(X, Y)
     ;
     parent(X, Z),
-ancestor(Z, Y).
+    ancestor(Z, Y).
 </pre>
 <p>
 Uporabili smo podpičje, logični „ali“. Preberimo pravilo: <em>če</em> je
-- 
cgit v1.2.1