In COQ the type prod (with one constructor pair) corresponds to cartesian product and the type sig (with one constructor exist) to dependent sum but how is described the fact that the cartesian product is a particular case of dependent sum? I wonder there is a link between prod and sig, for instance some definitional equality but I don't find it explicitely in the reference manual.
Relation between types prod and sig in COQ
1.2k Views Asked by AudioBubble At
2
There are 2 best solutions below
0

A product is the special case of a dependent sum precisely when the dependent sum is isomorphic to the common product type.
Consider the traditional summation of a series whose terms do not depend on the index: the summation of a series of n
terms, all of which are x
. Since x
does not depend upon the index, usually denoted i
, we simplify this to n*x
. Otherwise, we would have x_1 + x_2 + x_3 + ... + x_n
, where each x_i
can be different. This is one way of describing what you have with Coq's sigT
: a type that is an indexed family of x
s, where the index is a generalization of the differing data constructors typically associated with variant types.
As a matter of fact, the type
prod
is more akin tosigT
thansig
:From a meta-theoretic point of view, prod is just a special case of sigT where your
snd
component does not depend on yourfst
component. That is, you could define:They can not be definitionally equal though, since they are different types. You could show a bijection:
But that's not very interesting... :)