Zulip Chat Archive

Stream: lean4

Topic: Injectivity of function type constructor


Trebor Huang (Feb 14 2023 at 16:21):

Injectivity of type constructor is obviously anticlassical, as we can define an inductive type Bad : (Type -> Type) -> Type, whose sole existence implies an injective function from Type -> Type to Type, with which we can invoke Cantor's argument.

However, does injectivity of -> (let's not consider the dependent case first) break anything? This come up when I am contemplating the unprovability of HEq f g -> HEq x y -> HEq (f x) (g y). Is there any literature investigating this problem?

Reid Barton (Feb 14 2023 at 16:43):

I think the set-theoretic model like in Mario's thesis needs at most minor tweaks in order to validate injectivity of ->.

Reid Barton (Feb 14 2023 at 16:46):

Oh wait, it's slightly awkward to deal with A -> B with B empty but not A.

Reid Barton (Feb 14 2023 at 16:50):

Do you care about the interaction with propext? (false -> true) = (true -> true)

Trebor Huang (Feb 14 2023 at 17:08):

Ok, that breaks. So we definitely don't have HEq f g -> HEq x y -> HEq (f x) (g y) right? I will try to construct a disproof, but I should sleep now.

James Gallicchio (Feb 14 2023 at 18:20):

i suspect it's unprovable but not unsound when in Type u? :thinking: not sure though

Eric Wieser (Feb 14 2023 at 18:39):

Trebor Huang said:

Ok, that breaks. So we definitely don't have HEq f g -> HEq x y -> HEq (f x) (g y) right? I will try to construct a disproof, but I should sleep now.

docs#congr_heq ah, not quite

Mario Carneiro (Feb 14 2023 at 19:52):

For HEq f g -> HEq x y -> HEq (f x) (g y) you actually want injectivity only in the right argument - (A -> B) = (A -> C) implies B = C. As long as A is nonempty this is basically always true, but for A empty you need some additional tagging scheme to make it true (but it can still be done as long as B, C : Type u). For B, C : Prop it is false because of (false -> false) = (false -> true).

Mario Carneiro (Feb 14 2023 at 19:54):

For HEq f g -> HEq x y -> HEq (f x) (g y) this isn't an issue though, because x and y witness the nonemptiness of A

Mario Carneiro (Feb 14 2023 at 19:54):

For the values it is easy enough to ensure that this theorem holds, you just take HEq to mean ZFC = and then it is true


Last updated: Dec 20 2023 at 11:08 UTC