Разлики между Coq и Agda

За какво е предназначена всяка от тези програми и какво предлага една на другата? Освен това и двете системи последователни ли са и освен това базирани ли са на някаква основополагаща математическа теория?

Две неща ме интересуват:

  1. Лесен за монтаж
  2. Лесен за научаване

Търсих и това, което прочетох, изглежда много поляризирано, бих искал да знам разликите им от възможно най-обективната (човешка) гледна точка.


person Cristian Garcia    schedule 25.06.2014    source източник
comment
Разглеждали ли сте wiki.portal.chalmers.se/agda/ pmwiki.php?n=Main.AgdaVsCoq ?   -  person user3237465    schedule 25.06.2014
comment
Току-що направих, но има много неща, които не разбирам, тъй като това предполага, че знаете поне едно от тях.   -  person Cristian Garcia    schedule 26.06.2014
comment
Ако има неща, които не разбирате там, може би е подходящо да ги попитате тук?   -  person didierc    schedule 26.06.2014


Отговори (1)


Coq е проектиран с мисъл за доказване на теорема, докато Agda е проектиран с мисъл за програмиране с зависим тип.

Те са донякъде еквивалентни от теоретична страна (въпреки че имат разлики, Coq е малко по-консервативен в своите аксиоми и се придържа по-близо до математическата основа на CIC по подразбиране), но бих им се доверил почти еднакво в този момент. Например, и двете се оказаха непоследователни в третирането си на коиндукция, но са доста устойчиви на грешки в обикновената индуктивна част.

Според моя опит и двете са лесни за инсталиране на Linux система. Agda може да е малко по-лесна, когато Cabal работи, но по-ужасна, когато не работи. Coq може да дойде в комплект или можете да го изградите от източника, според моя опит е добре, но понякога става болезнено, защото трябва да се грижите за версиите както на OCaml, така и на camlp5.

По отношение на ученето, мисля, че Coq може да бъде по-лесен за научаване, защото има някои съществуващи книги, които са доста дълги и бавни (Software Foundations, Coq'Art и т.н.) и някои книги за напреднали (CPDT). За Agda беше малко по-суров според моя опит, основно PDF на Norell и уикито... От друга страна, Agda изисква по-малко учене, защото най-вече трябва да grok зависими типове, синтаксис и стандартна библиотека. Докато в Coq трябва да научите и за тактиката, което е съвсем друго!

Моята гледна точка би била: - ако възнамерявате да правите голяма разработка с големи доказателства, Coq вероятно е вашият безопасен избор - ако просто се интересувате от програмиране с някои зависими типове, Agda вероятно е по-харесваният избор

Научаването на единия така или иначе ще помогне много за научаването на другия, така че защо не опитате по малко и от двете? :)

person Ptival    schedule 25.06.2014
comment
От друга страна, стандартната библиотека на Agda може да бъде прочетена до ниво в FP със зависими типове, докато те са огромни части от стандартната библиотека на Coq, които са толкова стари, че стилът на доказателство е отхвърлен. - person gallais; 26.06.2014
comment
Вече има порт към Agda ;-) Основи на езика за програмиране в Agda plfa.github.io - person Musa Al-hassy; 19.10.2018