Are you suggesting that a good definition of "constant" is "equal to a function of the form \x -> y0"?
This definition has exactly the same problems as "quasi-constant", for instance the obvious function Bool -> Circle is constant in a lot of different ways.
Guillaume
Does this this property induce some kind of contractility result, in the same way that (x x' : X) -> x = x' implies that X is contractible? It seems to me that this is saying that the image g(X) is contractible, though I'm not sure if this is phrasible in HoTT.
-Jason
Right, sorry. I was thinking that at least when X is inhabited you get the same definition as "quasi-constant", but that's wrong, with your definition there are no more coherence issues.
Guillaume
Le 24 juil. 2013 13:29, "Martin Escardo" <escardo...@googlemail.com> a écrit :
>
> On 24/07/13 01:28, Michael Shulman wrote:
>>
>> On Tue, Jul 23, 2013 at 5:23 PM, Guillaume Brunerie
>> <guillaume...@gmail.com> wrote:
>>>
>>> Are you suggesting that a good definition of "constant" is "equal to a
>>> function of the form \x -> y0"?
>>>
>>> This definition has exactly the same problems as "quasi-constant", for
>>> instance the obvious function Bool -> Circle is constant in a lot of
>>> different ways.
>>
>>
>> Why is that a problem (and why is it the same problem)? Note that
>> with such a definition, the type of all constant functions
>>
>> \sm{f:X->Y}{y0:Y} (f = \lam{x} y0)
>>
>> is equivalent to Y, which seems sensible to me: to give a constant
>> function is exactly to give the point at which it is constant.
>
>
> The type of such constant functions X->Y is not equivalent to Y if X
> is empty.
Yes it is. A constant function is a map f : X -> Y together with a y0 : Y and an equality f = \x -> y0.
When X is empty, such a constant function is just a point in Y.
> And, if you restrict attention to pointed types X, then the two
> notions of constancy are equivalent. So the only difference is when X
> is potentially empty, and that you require Y to be pointed.
They are logically equivalent but not equivalent. For instance there are Circle-many constant maps Unit -> Circle but (Circle × Int)-many such quasi-constant maps (because you need to provide an additional proof that f(tt) = f(tt))
Guillaume
Do you have any real-world example of a constant function X -> Y (in your sense) for which you cannot prove (or it's difficult to prove) that it factors through ||X|| ?
For instance you gave earlier the example of given a : Nat -> Bool and X = {n : Nat | a n = 1}, there is a constant function f : X -> X defined by f n = (the smallest m <= n such that a m = 1).
Let's prove that this map factors through ||X||.
Consider the type A = {n : Nat | a n = 1 and for all m < n, a m = 0}. A is the type of all smallest n such that a n = 1.
It's easy to see that A is a prop (there is at most one smallest such n), and moreover there is a map X -> A : if there is some n0 such that a n0 = 1, then there is a smallest one because you can check everyone below n0.
Hence there is a map ||X|| -> A and it's easy to see that the composition X -> ||X|| -> A -fst-> X is the map f above.
Guillaume
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
To unsubscribe from this group and stop receiving emails from it, send an email to HomotopyTypeTheory+unsub...@googlegroups.com.
Do you have any real-world example of a constant function X -> Y (in your sense) for which you cannot prove (or it's difficult to prove) that it factors through ||X|| ?
For instance you gave earlier the example of given a : Nat -> Bool and X = {n : Nat | a n = 1}, there is a constant function f : X -> X defined by f n = (the smallest m <= n such that a m = 1).
Let's prove that this map factors through ||X||.