W językach takich jak Agda
, Idris
lub Haskell
z rozszerzeniami typu, istnieje =
typ coś w rodzaju poniższej`Refl` rzecz w rachunku kosztów budowy?
data a :~: b where
Refl :: a :~: a
a :~: b
oznacza, że a
i b
są takie same.
Czy taki typ można zdefiniować w calculus of constructions lub Morte (który jest językiem programowania opartym na rachunku budowy)?
Każdy typ indukcyjny może być kodowany w CoC, ale bez powiązanej zasady _dependent_ eliminacji (dostępna jest eliminacja zależna). (Zwróć także uwagę, że 'a: ~: b' jest typem, ale' Refl' jest wartością.) – chi
Rachunek konstrukcji jest "szczytem" kostki lambda. Haskell, Agda i Idris są "poniżej" CoC. Dlatego powinno być możliwe z prostego faktu, że CoC jest bardziej ekspresyjny. (Ktoś mógłby wskazać, czy się mylę w tym odliczeniu?) – Bakuriu
@Bakuriu W rzeczywistości, Agda/Coq są poza CoC, ponieważ umożliwiają one również typy indukcyjne z zależną eliminacją, której brakuje w CoC. Agda dowodzi także aksjomatu Streichera K, co oznacza, że dwa dowolne dowody "p, q" o tej samej równości 'a = b' muszą być równe (' p = q') - niedostępne w CoC lub Coq (aka CiC). – chi