-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
is subobject classifier of setoids constructive? #200
Comments
The problem is that, constructively, the subterminal objects are not provably equivalent to 2 - you need excluded middle for that (to prove that subterminals are either inhabited or not). I'm pretty sure that the 'set' of subterminal objects is a Setoid, so that would be one place to start. The 'true' morphism would then give you an actual inhabitant. |
The 'answer' seems to be in Setoids in Type Theory, which I was just reading last night! Lemma 36. Omega is the Setoid of Prop. And that seems to need Choice. |
I'm pretty sure a better answer is in these slides, slide 18 in particular. The difference is that On the other hand, Benno van den Berg's PhD Thesis makes me doubt this again! |
I don't quite understand how the slides handle omega in haskell. is the proof-relevance there even crazier, with effects even on the proofs? |
The issue isn't so much picking Setoids-SubobjectClassifier : ∀ c → SubobjectClassifier (Setoids (suc c) (suc c))
Setoids-SubobjectClassifier c = record
{ Ω = ≅-setoid (liftC (suc c) c (suc c) (Setoids c c))
; terminal = {!!}
; true = {!!}
; universal = λ {U} {X} {f} f-mono → record
{ _⟨$⟩_ = λ x → lift record
{ Carrier = {!!}
; _≈_ = {!!}
; isEquivalence = {!!}
}
; cong = {!!}
}
; pullback = {!!}
; unique = {!!}
} Because Σ[ u ∈ Setoid.Carrier U ] Setoid._≈_ X (f ⟨$⟩ u) x However, this has type Taking a step back, this sort of makes sense. Agda is pretty predicative, and topoi are not, so no matter what we do we are going to run into trouble. We might want to look into ΠW-pretopoi, specifically the Predicative Topos of Bishop Sets. |
There is nothing left to do here, so closing. But because this was such useful information, I have used the wiki to remember this |
I am trying to show setoids are a topos except that I have trouble constructing a subobject classifier. during the proof, it involves to construct
h : Y => 2
, given an injectionf : X => Y
, whereh(y) = 1
only wheny
is in the image off
. This sounds Choice to me.Or can we have an alternative definition of subobject classifier so that this is constructive?
The text was updated successfully, but these errors were encountered: