Как написать вид условного планирования в прологе?

Я попытался написать код пролога, который может понять программу студента, написанную на C #. Теперь я застрял в процессе распознавания утверждения «если» в студенческой программе. Например: ниже приведен код, который я ожидаю от студента.

int d = int.Parse(Console.ReadLine());  // value d is inputted by user
int s = 0;

if (d>0)
    s = 2;
else if (d==0)
    s = 1;
else
    s = 0;

Я определил цель этого ожидаемого кода как:

goal:- 
   hasVarName(Vid_s, s),
   hasVarName(Vid_d, d),
   hasVarValue(Vid_d, Vd),
   ((not(gt(Vd,0)); hasVarValue(Vid_s, 2)),           %eq: [Vd>0] -> [val_s = 2]
   ((gt(Vd,0); not(eq(Vd,0)); hasVarValue(Vid_s, 1)), %eq: [~(Vd>0)^(Vd=0)] -> [val_s = 1]
   ((gt(Vd,0); eq(Vd,0); hasVarValue(Vid_s, 0).       %eq: [~(Vd>0)^~(Vd=0)] -> [val_s = 0]

Проблема заключается в том, как я могу представить вышеуказанный код студента в прологе фактов и правил, чтобы выяснить, что цель удовлетворяется при любых возможных условиях.

Я пытался изменить первую часть кода студента, чтобы она стала похожа на факты, подобные приведенным ниже, но я не знаю, как представить утверждение студента «если» как факты / правила в прологе (я думаю, я не должен менять его на пролог «если», верно?)

hasVarName(varID_d, d)
hasVarValue(varID_d, val_d)   %it is unknown, so I represent it as symbol 'val_d'

hasVarName(varID_s, s)
hasVarValue(varID_s, 0)

И еще один, в моей цели, когда у меня есть сравнение, такое какgt(Vd,0) Я думаю, что я не могу использовать пролог больше, чем оператор, ниVd> 0 ниVd @> 0 причиной того, что значение в Vd на самом деле является определенным значением, введенным пользователем, но оно представляется как символическое значение (в данном случае это:val_d).

Примечание: используя вышеуказанную цель, я думаю, что определенная цель будет достигнута, если код студента будет изменен на следующий код.

int d = int.Parse(Console.ReadLine());  // value d is inputted by user
int s = 0;

if (d>0)
    s = 2;
else if (d==0)
    s = 1;

или же

int d = int.Parse(Console.ReadLine());  // value d is inputted by user
int s = 10;           // any random initialization

if (d>0)
{
    int x = 2;       // unnecessary step, but still Ok.
    s = x;
}
else if (d==0)
    s = 1;
else
    s = 0;

Но опять же, мне нужна помощь / идея, как этот код может быть представлен в прологе как действие / правило / факт для достижения цели.

Любая помощь очень ценится.

Большое спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос