Ошибка заключается в том, что предикат sumli объявлен с аргументами N и C как входными, в то время как в определении он используется рекурсивно как N+1 и Count1. Это означает, что на самом деле предикат sumli является недетерминированным (вызывается несколько раз для разных входных значений N), а не процедурным (вызывается только один раз с определенными аргументами). Чтобы устранить эту ошибку, измените декларацию предиката sumli следующим образом:
sumli : (unsigned N, unsigned Sum [out]) .
Затем корректируйте определение предиката sumli, чтобы оно соответствовало новой декларации:
sumli(N,0):- N>8,!. sumli(N,C):- месяц(_, N, Count),NextN = N+1,sumli(NextN,Count1),C=Count1+Count.
Эти изменения должны устранить ошибку и позволить правильно вычислять количество дней в летних месяцах.
Ошибка заключается в том, что предикат sumli объявлен с аргументами N и C как входными, в то время как в определении он используется рекурсивно как N+1 и Count1. Это означает, что на самом деле предикат sumli является недетерминированным (вызывается несколько раз для разных входных значений N), а не процедурным (вызывается только один раз с определенными аргументами). Чтобы устранить эту ошибку, измените декларацию предиката sumli следующим образом:
sumli : (unsigned N, unsigned Sum [out]) .Затем корректируйте определение предиката sumli, чтобы оно соответствовало новой декларации:
sumli(N,0):- N>8,!.sumli(N,C):- месяц(_, N, Count),NextN = N+1,sumli(NextN,Count1),C=Count1+Count.
Эти изменения должны устранить ошибку и позволить правильно вычислять количество дней в летних месяцах.