Prolog compact?

#prolog #calc #derivative

#пролог #calc #производная

Вопрос:

У меня проблема, мне нужно сжать производный результат следующим образом:

 0*x*x   2*(1*x   x*1) =====> example: 0 2*(2*x) =====> 0 2*4*x====>8*x
  

Возможно ли это? Спасибо за вашу помощь.

С уважением, Вольтер

Комментарии:

1. Обычно это называется упрощением.

Ответ №1:

Да, это возможно, просто требуется некоторая работа. Вам нужно будет написать атомарные правила, такие как

 rule(0*_, 0).
rule(_*0, 0).
rule(1*X, X).
rule(X*1, X).
  

и реализуйте предикат фиксированной точки (возможно, цикл, управляемый сбоем), который применяет правила до сходимости.

Комментарии:

1. спасибо за ответ, но как разбить эту «строку» на атомарные формулы?

2. мне нужен цикл для распаковки всех терминов?

3. @flatronflow: вы захотите написать DCG для ваших выражений.