Zulip Chat Archive

Stream: Type theory

Topic: Commuting lift and dependent sums


πš πš˜πš“πšŒπš’πšŽπšŒπš‘ πš—πšŠπš πš›πš˜πšŒπš”πš’ (Nov 06 2024 at 20:33):

I believe that they following proposition is not provable in Lean (though I'd be very interested to be proven wrong):

example (A : Type 0) (B : A β†’ Type 0) :
    ULift.{1} (@Sigma.{0,0} A B) = @Sigma.{1,1} (ULift.{1} A) (fun a => ULift.{1} (B a.down)) := by
  sorry

Does anyone know if there is a model of Lean in which it is actually false?

Kevin Buzzard (Nov 06 2024 at 20:44):

Do you know the status of this simpler question:

example (A B : Type 0) : ULift.{1} (A Γ— B) = (ULift.{1} A Γ— ULift.{1} B) := sorry

?

Kevin Buzzard (Nov 06 2024 at 20:48):

And an even dumber question on my part: do you know if there is a model of Lean and two types X and Y in the same universe which can be put into bijection with each other but for which it is "false" that they are equal? By "false" I mean "false as in the sense of your question" but I don't really know what that means. Do you mean "provably false in Lean"?

Mario Carneiro (Nov 06 2024 at 21:42):

Yes, both of these two are false in a model that tags types with the names of the inductive types that are used to build them

πš πš˜πš“πšŒπš’πšŽπšŒπš‘ πš—πšŠπš πš›πš˜πšŒπš”πš’ (Nov 07 2024 at 07:59):

By "false" I mean "false as in the sense of your question" but I don't really know what that means.

There are numerous notions of "model of type theory", so the original question really is ambiguous. But if we restrict "model" to mean something of the same shape as #leantt, we'd expect that it comes with an interpretation function taking every (closed/variable-free) type AA to some set ⟦A⟧⟦A⟧. If it can also interpret any (closed) term e:Ae : A as another set ⟦e⟧∈⟦A⟧⟦e⟧ ∈ ⟦A⟧, then the question of whether the original equality is true in that model is asking whether ⟦ULift.1 (@Sigma.0,0 A B) = @Sigma.1,1 (ULift.1 A) (fun a => ULift.1 (B a.down))⟧⟦\texttt{ULift.{1} (@Sigma.{0,0} A B) = @Sigma.{1,1} (ULift.{1} A) (fun a => ULift.{1} (B a.down))}⟧ is nonempty.

Do you mean "provably false in Lean"?

I do not mean that; a provably false proposition would be false in every (sound) model, whereas I was just looking for one counterexample.

do you know if there is a model of Lean and two types X and Y in the same universe which can be put into bijection with each other but for which it is "false" that they are equal?

This sounds like univalence, and I think it might already be false in the "intended model" of #leantt? The interpretation of == is very strong, requiring both sides to be literally equal as sets. Then Ξ± + (Ξ² + Ξ³) ≃ (Ξ± + Ξ²) + Ξ³, but the two sets βŸ¦Ξ±βŸ§βŠ”(βŸ¦Ξ²βŸ§βŠ”βŸ¦Ξ³βŸ§)⟦α⟧ βŠ” (⟦β⟧ βŠ” ⟦γ⟧) and (βŸ¦Ξ±βŸ§βŠ”βŸ¦Ξ²βŸ§)βŠ”βŸ¦Ξ³βŸ§(⟦α⟧ βŠ” ⟦β⟧) βŠ” ⟦γ⟧ need not be equal (maybe depending on the specific encoding of disjoint unions).

πš πš˜πš“πšŒπš’πšŽπšŒπš‘ πš—πšŠπš πš›πš˜πšŒπš”πš’ (Nov 07 2024 at 08:14):

Yes, both of these two are false in a model that tags types with the names of the inductive types that are used to build them

Do you mean something like section 6.4 of #leantt? Indeed I guess we'd have different sequences of ulift/Ξ£ tags then.

But maybe a more interesting question: are the two ulift commutation equations consistent? It seems that they are; in #leantt they interpret as literally the same set because ulift is interpreted as nothing/the identity map.

Kevin Buzzard (Nov 07 2024 at 08:16):

They're true in the cardinality model right? So they're consistent? I barely know what I'm talking about here as is probably clear

πš πš˜πš“πšŒπš’πšŽπšŒπš‘ πš—πšŠπš πš›πš˜πšŒπš”πš’ (Nov 07 2024 at 08:19):

I guess so, I've just never seen the mythical 'cardinality model' written down :)


Last updated: May 02 2025 at 03:31 UTC