morte

`Refl` thing in Calculus of Constructions?

本小妞迷上赌 提交于 2019-12-03 12:32:41
问题 In languages such as Agda , Idris , or Haskell with type extensions, there is a = type sort of like the following data a :~: b where Refl :: a :~: a a :~: b means that a and b are the same. Can such a type be defined in the calculus of constructions or Morte (which is programming language based on the calculus of construction)? 回答1: The standard Church-encoding of a :~: b in CoC is: (a :~: b) = forall (P :: * -> * -> *). (forall c :: *. P c c) -> P a b Refl being Refl a :: a :~: a Refl a = \

`Refl` thing in Calculus of Constructions?

眉间皱痕 提交于 2019-12-03 03:05:39
In languages such as Agda , Idris , or Haskell with type extensions, there is a = type sort of like the following data a :~: b where Refl :: a :~: a a :~: b means that a and b are the same. Can such a type be defined in the calculus of constructions or Morte (which is programming language based on the calculus of construction)? The standard Church-encoding of a :~: b in CoC is: (a :~: b) = forall (P :: * -> * -> *). (forall c :: *. P c c) -> P a b Refl being Refl a :: a :~: a Refl a = \ (P :: * -> * -> *) (h :: forall (c::*). P c c) -> h a The above formulates equality between types . For