У вас есть ошибка в вашем n+1
шаге. Я подозреваю, что это потому, что вы новичок в Haskell и его правилах приоритета.
moll (n+1)
не так, как вы пишете moll 2n
- Я предполагаю, что вы имеете в виду, что moll (2*n)
, поскольку moll 2n
ошибка синтаксиса Haskell.
В любом случае, moll (n+1)
фактически moll n + n + 1
, или с дополнительной скобки добавлены только, чтобы быть явным:
(moll n) + (n + 1)
То есть, вы применяете moll
к n
, а затем добавить n + 1
в результате чего ,
Отсюда вы должны иметь возможность применить гипотезу индукции и идти вперед.
Более явно, так как вы, кажется, все еще возникают проблемы:
moll (n+1) == (moll n) + (n + 1) (by m.2)
== (doll n) + (n + 1) (by induction hypot.)
== (sol 0 n) + (n + 1) (by d.1)
Теперь, как леммы:
sol x n == (sol 0 n) + x
Это можно доказать индукцией по n
. Это, очевидно, справедливо и для n
равна 0.
Для леммы по индукции шага:
sol x (n+1) == (sol (x + (n+1)) n) (By d.2, for (n+1) > 0)
== (sol 0 n) + (x + (n+1)) (By the induction hypot.)
== (sol 0 n) + (n+1) + x (This is just math; re-arranging)
== ((sol 0 n) + (n+1)) + x
== (sol (n+1) n) + x (By the induction hypot. again)
== (sol 0 (n+1)) + x (By d.2 again)
Это второй раз, когда я использовал индукционную гипотезу может показаться немного странным, но помните, что гипотеза индукции говорит:
sol x n == (sol 0 n) + x
Для всех x
. Поэтому я могу применить его к любому добавлению к (sol 0 n)
, включая n+1
.
Теперь вернемся к главному доказательству, используя лемму:
moll (n+1) == (sol 0 n) + (n + 1) (we had this before)
== sol (n+1) n (by our lemma)
== sol 0 (n+1) (by d.2)
== doll (n+1) (by d.1)
Вы, возможно, потребуется обобщить оператор так, что в 'включает sol'. Что-то вроде 'sol acc n = ... что-то с помощью moll, acc, n'. Как только вы докажете, что по индукции вы можете установить 'acc = 0', чтобы LHS сводится к' doll n', и, надеюсь, RHS сводится к 'moll n', доказывая исходную цель. – chi
Я знаю, что это, вероятно, не так, как должно было, но в этом случае я бы скорее доказал, что 'mol n = 1 + sum [1 ..n] = кукла n', которая кажется более простой (оба кажутся тривиальными индукциями на первый взгляд) – Carsten
Исправьте заголовок. – Jubobs