Основні відмінності полягають у двох вимірах - в базовій теорії та в тому, як вони можуть бути використані. Давайте просто зосередимося на останньому.
Як користувач, "логіка" специфікацій у системах типу LiquidHaskell та вдосконалення обмежується обмежуваними фрагментами, щоб перевірка (і умовивід) була повністю автоматичною, тобто не потрібно "доказів" такого типу, необхідних у повному обсязі. залежна установка. Це призводить до значної автоматизації. Наприклад, порівняйте сортування вставки в LH:
http://ucsd-progsys.github.io/lh-workshop/04-case-study-insertsort.html#/ordered-lists
проти Ідріса
https://github.com/davidfstr/idris-insertion-sort/blob/master/InsertionSort.idr
Однак автоматика приходить за ціною. Не можна використовувати довільні функції в якості специфікацій, як це можна в повністю залежному світі, що обмежує клас властивостей, які можна записати.
Таким чином, однією метою систем удосконалення є розширення класу того, що можна вказати, тоді як цілком залежних систем - автоматизувати
те, що можна довести. Можливо, є щасливий майданчик для зустрічей, де ми зможемо отримати найкраще з обох світів!