In Sprachen wie Agda
, Idris
oder Haskell
mit Typ-Erweiterungen gibt es eine =
Typen Art wie die folgenden`Refl 'Ding in der Kalkül der Konstruktionen?
data a :~: b where
Refl :: a :~: a
a :~: b
bedeutet, dass a
und b
gleich sind.
Kann ein solcher Typ in calculus of constructions oder Morte definiert werden (was ist die Programmiersprache, die auf der Konstruktionskalkulation basiert)?
Jeder induktive Typ kann in CoC codiert werden, aber ohne zugehöriges _abhängiges_ Eliminierungsprinzip (eine nicht abhängige Eliminierung ist möglich). (Beachten Sie auch, dass 'a: ~: b 'ein Typ ist, aber' Refl 'ein Wert ist.) – chi
Das Kalkül von Konstruktionen ist die" Spitze "des Lambda-Würfels. Haskell, Agda und Idris sind "unter" CoC. Daher sollte die einfache Tatsache, dass CoC expressiver ist, möglich sein. (Jemand könnte darauf hinweisen, wenn ich falsch in diesem Abzug bin?) – Bakuriu
@Bakuriu Eigentlich sind Agda/Coq jenseits CoC, da sie auch induktive Typen mit abhängiger Eliminierung erlauben, die CoC fehlt. Agda beweist auch Streichers Axiom K, was besagt, dass zwei beliebige Beweise "p, q" der gleichen Gleichheit "a = b" gleich sein müssen ("p = q") - nicht verfügbar in CoC oder Coq (auch bekannt als CiC). – chi