# User:Michiexile/MATH198/Lecture 10

(Difference between revisions)
 Revision as of 17:05, 24 November 2009 (edit)← Previous diff Current revision (18:21, 2 December 2009) (edit) (undo) (6 intermediate revisions not shown.) Line 1: Line 1: - IMPORTANT NOTE: THESE NOTES ARE STILL UNDER DEVELOPMENT. PLEASE WAIT UNTIL AFTER THE LECTURE WITH HANDING ANYTHING IN, OR TREATING THE NOTES AS READY TO READ. - This lecture will be shallow, and leave many things undefined, hinted at, and is mostly meant as an appetizer, enticing the audience to go forth and seek out the literature on topos theory for further studies. This lecture will be shallow, and leave many things undefined, hinted at, and is mostly meant as an appetizer, enticing the audience to go forth and seek out the literature on topos theory for further studies. Line 23: Line 21: '''Definition''' A ''topos'' is a cartesian closed category with all finite limits and with a subobject classifier. '''Definition''' A ''topos'' is a cartesian closed category with all finite limits and with a subobject classifier. - It is worth noting that this is a far stronger condition than anything we can even hope to fulfill for the category of Haskell types and functions. The functional proogramming relevance will take a back seat in this lecture, in favour of usefulness in logic and set theory replacements. + It is worth noting that this is a far stronger condition than anything we can even hope to fulfill for the category of Haskell types and functions. The functional programming relevance will take a back seat in this lecture, in favour of usefulness in logic and set theory replacements. ===Properties of topoi=== ===Properties of topoi=== Line 47: Line 45: Looking back, though, there is no essential difference between this, and defining the predicate as the subset of the universe directly; the predicate-as-function appears, then, as the characteristic function of the subset. And types are added as easily - we specify each variable, each object, to have a set it belongs to. Looking back, though, there is no essential difference between this, and defining the predicate as the subset of the universe directly; the predicate-as-function appears, then, as the characteristic function of the subset. And types are added as easily - we specify each variable, each object, to have a set it belongs to. - This way, predicates really are subsets. Type annotations decide which set the predicate lives in. And we have everything set up in a way that open sup for the topos language above. + This way, predicates really are subsets. Type annotations decide which set the predicate lives in. And we have everything set up in a way that opens up for the topos language above. We'd define, for predicates $P, Q$ acting on the same type: We'd define, for predicates $P, Q$ acting on the same type: Line 60: Line 58: So we can mimic all these in a given topos: So we can mimic all these in a given topos: - We say that a ''universe'' $U$ is just an object in a given topos. + We say that a ''universe'' $U$ is just an object in a given topos. (Note that by admitting several universes, we arrive at a ''typed'' predicate logic, with basically no extra work.) A ''predicate'' is a subobject of the universe. A ''predicate'' is a subobject of the universe. + We can now proceed to define all the familiar logic connectives one by one, using the topos setting. While doing this, we shall introduce the notation $t_A: A\to\Omega$ for the morphism $t_A = A\to 1\to^{true}\Omega$ that takes on the value ''true'' on all of A. We note that with this convention, $\chi_{A_0}$, the characteristic morphism of a subobject, is the arrow such that $\chi_{A_0}\circ i = t_{A_0}$. '''Conjunction''': '''Conjunction''': - Given predicates $P, Q$, we need to define the ''conjunction'' $P\wedge Q$ as some $P\wedge Q: U\to\Omega$ that corresponds to both $P$ and $Q$ simultaneously. + Given predicates $P, Q$, we need to define the ''conjunction'' $P\wedge Q$ as some $P\wedge Q: U\to\Omega$ that corresponds to both $P$ and $Q$ simultaneously. - We can construct pullback diagrams + We may define $true\times true: 1\to\Omega\times\Omega$, a subobject of $\Omega\times\Omega$. Being a subobject, this has a characteristic arrow $\wedge:\Omega\times\Omega\to\Omega$, that we call the ''conjunction arrow''. - :[[Image:ToposConjunctionPart1.png]] [[Image:ToposConjunctionPart2.png]] + - in which $u = \chi_P\times\chi_Q$. Furthermore, the arrow $true\times\true: 1\to\Omega\times\Omega$ is monic, and thus has a classifier $\wedge:\Omega\times\Omega\to\Omega$. + - Now, we define $P\wedge Q$ as the composition $\wedge\circ\chi_P\times\chi_Q$, and observe that $P\wedge Q$ classifies the intersection $P\cap Q$. + Now, we may define $\chi_P\times\chi_Q:U\to\Omega\times\Omega$ for subobjects $P,Q\subseteq U$ - and we take their composition $\wedge\circ\chi_P\times\chi_Q$ to be the characteristic arrow of the subobject $P\wedge Q$. + + And, indeed, this results in a topoidal version of intersection of subobjects. '''Implication''': '''Implication''': - Next we define $\leq_1$ to be the equalizer of $\wedge$ and $proj_1$. Given $v\times w: T\to\Omega\times\Omega$, we write $v\leq_1 w$ if $v\times w$ factors through $\leq_1$. + Next we define $\leq_1: \Omega_1\to\Omega\times\Omega$ to be the equalizer of $\wedge$ and $proj_1$. Given $v, w: U\to\Omega$, we write $v\leq_1 w$ if $v\times w$ factors through $\leq_1$. Using the definition of an equalizer we arrive at $v\leq_1 w$ iff $v = v\wedge w$. From this, we can deduce Using the definition of an equalizer we arrive at $v\leq_1 w$ iff $v = v\wedge w$. From this, we can deduce Line 82: Line 81: :If $u\leq_1 v$ and $v\leq_1 w$ then $u\leq_1 w$. :If $u\leq_1 v$ and $v\leq_1 w$ then $u\leq_1 w$. :If $u\leq_1 v$ and $v\leq_1 u$ then $u=v$ :If $u\leq_1 v$ and $v\leq_1 u$ then $u=v$ - and thus, $\leq_1$ is a partial order on $[T\to\Omega]$. Intuitively, $u\leq_1 v$ if $v$ is at least as true as $u$. + and thus, $\leq_1$ is a partial order on $[U\to\Omega]$. Intuitively, $u\leq_1 v$ if $v$ is at least as true as $u$. - This relation corresponds to inclusion on subobjects. Note that $\leq_1:\Omega_1\to\Omega\times\Omega$, given from the equalizer, gives us $\Omega_1$ as a ''relation'' on $\Omega$ - a subobject of $\Omega\times\Omega$. Specifically, it has a classifying arrow $\Rightarrow:\Omega\times\Omega\to\Omega$. We write $h\Rightarrow k = \Rightarrow\circ h\times k$. And for subobjects $P,Q\subseteq A$, we write $P\Rightarrow Q$ for the subobject classified by $\chi_P\Rightarrow\chi_Q$. + This relation corresponds to inclusion on subobjects. Note that $\leq_1:\Omega_1\to\Omega\times\Omega$, given from the equalizer, gives us $\Omega_1$ as a ''relation'' on $\Omega$ - a subobject of $\Omega\times\Omega$. Specifically, it has a classifying arrow $\Rightarrow:\Omega\times\Omega\to\Omega$. We write $h\Rightarrow k = (\Rightarrow)\circ h\times k$. And for subobjects $P,Q\subseteq A$, we write $P\Rightarrow Q$ for the subobject classified by $\chi_P\Rightarrow\chi_Q$. It turns out, without much work, that this $P\Rightarrow Q$ behaves just like classical implication in its relationship to $\wedge$. It turns out, without much work, that this $P\Rightarrow Q$ behaves just like classical implication in its relationship to $\wedge$. '''Membership''': '''Membership''': - We can internalize the notion of ''membership'' as a subobject $\in^A\subseteq A\times\Omega^A$, and thus get the membership relation from a pullback: + We can internalize the notion of ''membership'' as a subobject $\in^U\subseteq U\times\Omega^U$, and thus get the membership relation from a pullback: :[[Image:ToposMembershipPullback.png]] :[[Image:ToposMembershipPullback.png]] - For generalized elements $x\times h: T\to A\times\Omega^A$, we write $x\in^A h[itex] for [itex]x\times h\in\in^A$. Both notations indicate $ev_A\circ h\times x = true$. + For elements $x\times h: 1\to U\times\Omega^U$, we write $x\in^U h for [itex]x\times h\in\in^U$. Yielding a subset of the product $U\times\Omega^U$, this is readily interpretable as a relation relating things in $U$ with subsets of $U$, so that for any $x,h$ we can answer whether $x\in^Uh$. Both notations indicate $ev_A\circ h\times x = true$. '''Universal quantification''': '''Universal quantification''': - For any object $A$, the maximal subobject of $A$ is $A$ itself, embedded with $1_A$ into itself. Thus, we have an arrow $t_A:1\to\Omega^A$ representing this subobject. Being a map from $1$, it is specifically monic, so it has a classifying arrow $\forall_A:\Omega^A\to\Omega$ that takes a given subobject of $A$ to $true$ precisely if it is in fact the maximal subobject. + For any object $U$, the maximal subobject of $U$ is $U$ itself, embedded with $1_U$ into itself. There is an arrow $\tau_U:1\to\Omega^U$ represents this subobject. Being a map from $1$, it is specifically monic, so it has a classifying arrow $\forall_U:\Omega^U\to\Omega$ that takes a given subobject of $U$ to $true$ precisely if it is in fact the maximal subobject. Now, with a relation $r:R\to B\times A$, we define $\forall a. R$ by the following pullback: Now, with a relation $r:R\to B\times A$, we define $\forall a. R$ by the following pullback: :[[Image:ToposForallPullback.png]] :[[Image:ToposForallPullback.png]] - where $\lambda\chi_r$ comes from the universal property of the exponential. + where $\lambda\chi_R$ comes from the universal property of the exponential. '''Theorem''' For any $s:S\to B$ monic, $S\subseteq \forall a.R$ iff $S\times A\subseteq R$. '''Theorem''' For any $s:S\to B$ monic, $S\subseteq \forall a.R$ iff $S\times A\subseteq R$. Line 115: Line 114: :[[Image:ToposTrivialSequent.png]] [[Image:ToposForallConnective.png]] [[Image:ToposSubstitution.png]] :[[Image:ToposTrivialSequent.png]] [[Image:ToposForallConnective.png]] [[Image:ToposSubstitution.png]] and connect them up to derive and connect them up to derive - :$*$ + :[[Image:ToposFalsumDerivation.png]] - :$\forall w.w : \forall w.w$ + - :$\forall w.w : w$ + - :$\forall w.w : \phi$ + for any $\phi$ not involving $w$ - and we can always adjust any $\phi$ to avoid $w$. for any $\phi$ not involving $w$ - and we can always adjust any $\phi$ to avoid $w$. Line 143: Line 139: Here, the rule we use as defining property is Here, the rule we use as defining property is - :[[Image:ToposExistentsConnective.png]] + :[[Image:ToposExistsConnective.png]] Before we leave this exploration of logic, some properties worth knowing about: Before we leave this exploration of logic, some properties worth knowing about: Line 160: Line 156: then suddenly we're back in classical logic, and can prove $\neg\neg\phi\Rightarrow\phi$ and $\phi\or\neg\phi$. then suddenly we're back in classical logic, and can prove $\neg\neg\phi\Rightarrow\phi$ and $\phi\or\neg\phi$. - ====Examples==== + ====Examples: Sheaves, topology and time sheaves==== + + The first interesting example of a topos is the category of (small enough) sets; in some sense clear already since we've been modelling our axioms and workflows pretty closely on the theory of sets. + + Generating logic and set theory in the topos of sets, we get a theory that captures several properties of ''intuitionistic logic''; such as the lack of Boolean negation, of exclusion of the third, and of double negation rules. + + For the more interesting examples, however, we shall introduce the concepts of ''topology'' and of ''sheaf'': + + '''Definition''' A (set-valued) ''presheaf'' on a category $C$ is a contravariant functor $E: C^{op}\to Set$. + + Presheaves occur all over the place in geometry and topology - and occasionally in computer science too: There is a construction in which a functor $A\to Set$ for a discrete small category $A$ identified with its underlying set of objects as a set, corresponds to the data type of ''bags'' of elements from $A$ - for $a\in A$, the image $F(a)$ denotes the multiplicity of $a$ in the bag. + + '''Theorem''' The category of all presheaves (with natural transformations as the morphisms) on a category $C$ form a topos. + + '''Example''' Pick a category on the shape + :[[Image:GraphsAsPresheaves.png]] + A contravariant functor on this category is given by a pair of sets $G_0, G_1$ and a pair of function $source, target: G_1\to G_0$. Identities are sent to identities. + + The category of presheaves on this category, thus, is the category of graphs. Thus graphs form a topos. + + The subobject classifier in the category of graphs is a graph with two nodes: in and out, and five arrows: + :$in \to^{all} in$ + :$in \to^{both} in$ + :$in \to^{source} out$ + :$out \to^{target} in$ + :$out \to^{neither} out$ + Now, given a subgraph $H \leq G$, we define a function $\chi_H:G\to\Omega$ by sending nodes to in or out dependent on their membership. For an arrow $a$, we send it to all if the arrow is in $H$, and otherwise we send it to both/source/target/neither according to where its source and target reside. + + To really get into sheaves, though, we introduce more structure - specifically, we define what we mean by a ''topology'': + + '''Definition''' Suppose $P$ is a partially ordered set. We call $P$ a ''complete Heyting algebra'' if + * There is a top element $1$ such that $x\leq 1 \forall x\in P$. + * Any two elements $x, y$ have an infimum (greatest lower bound) $x\wedge y$. + * Every subset $Q\subseteq P$ has a supremum (least upper bound) $\bigvee_{p\in P} p$. + * $x\wedge(\bigvee y_i) = \bigvee x\wedge y_i$ + + Note that for the partial order by inclusion of a family of subsets of a given set, being a complete Heyting algebra is the same as being a topology in the classical sense - you can take finite unions and any intersections of open sets and still get an open set. + + If $\{x_i\}$ is a subset with supremum $x$, and $E$ is a presheaf, we get functions $e_i:E(x)\to E(x_i)$ from functoriality. We can summarize all these $e_i$ into $e = \prod_i e_i: E(x)\to\prod_i E(x_i)$. + + Furthermore, functoriality gives us families of functions $c_{ij}: E(x_i)\to E(x_i\wedge x_j)$ and $d_{ij}: E(x_j)\to E(x_i\wedge x_j)$. These can be collected into $c: \prod_i E(x_i)\to\prod_{ij}E(x_i\wedge x_j)$ and $d:\prod_j E(x_j)\to\prod_{ij}E(x_i\wedge x_j)$. + + '''Definition''' A presheaf $E$ on a Heyting algebra is called a ''sheaf'' if it satisfies: + :$x = \bigvee x_i$ + implies that + :[[Image:SheafEqualizer.png]] + is an equalizer. If you have seen sheaves before, you may recognize this as the covering axiom. + + In other words, $E$ is a sheaf if whenever $x=\bigvee x_i$ and $c(\alpha) = d(\alpha)$, then there is some $\bar\alpha$ such that $\alpha = e(\bar\alpha)$. + + '''Theorem''' The category of sheaves on a Heyting algebra is a topos. + + For context, we can think of sheaves over Heyting algebras as sets in a logic with an expanded notion of truth. Our Heyting algebra is the collection of truth values, and the sheaves are the fuzzy sets with fuzziness introduced by the Heyting algebra. + + Recalling that subsets and predicates are viewed as the same thing, we can view the set $E(p)$ as the part of the fuzzy set $E$ that is at least $p$ true. + + As it turns out, to really make sense of this approach, we realize that ''equality'' is a predicate as well - and thus can hold or not depending on the truth value we use. + + '''Definition''' Let $P$ be a complete Heyting algebra. A ''$P$-valued set'' is a pair $(S,\sigma)$ of a set $S$ and a function $\sigma: S\to P$. A ''category of fuzzy sets'' is a category of $P$-valued sets. A morphism $f:(S,\sigma)\to(T,\tau)$ of $P$-valued sets is a function $f:S\to T$ such that $\tau\circ f = \sigma$. + + From these definitions emerges a fuzzy set theory where all components of it being a kind of set theory emerges from the topoidal approach above. Thus, say, subsets in a fuzzy sense are just monics, thus are injective on the set part, and such that the valuation, on the image of the injection, increases from the previous valuation: $(T,\tau)\subseteq(S,\sigma)$ if $T\subseteq S$ and $\sigma|_T = \tau$. + + To get to topoi, though, there are a few matters we need to consider. First, we may well have several versions of the empty set - either a bona fide empty set, or just a set where every element is never actually there. This issue is minor. Much more significant though, is that while we can easily make $(S,\sigma)$ give rise to a presheaf, by defining + :$E(x) = \{s\in S: \sigma(s)\geq x\}$ + this definition will not yield a sheaf. The reason for this boils down to $E(0) = S \neq 1$. We can fix this, though, by adjoining another element - $\bot$ - to $P$ giving $P^+$. The new element $\bot$ is imbued with two properties: it is smaller, in $P^+$, than any other element, and it is mapped, by $E$ to $1$. + + '''Theorem''' The construction above gives a fuzzy set $(S,\sigma)$ the structure of a sheaf on the augmented Heyting algebra. + + '''Corollary''' The category of fuzzy sets for a Heyting algebra $P$ forms a topos. + + '''Final note''' While this construction allows us to make ''membership'' a fuzzy concept, we're not really done fuzzy-izing sets. There are two fundamental predicates on sets: equality and membership. While fuzzy set theory, classically, only allows us to make one of these fuzzy, topos theory allows us - rather easily - to make both these predicates fuzzy. Not only that, but membership reduces - with the power object construction - to equality testing, by which the fuzzy set theory ends up somewhat inconsistent in its treatment of the predicates. + + ===Literature=== + + At this point, I would warmly recommend the interested reader to pick up one, or more, of: + * Steve Awodey: Category Theory + * Michael Barr & Charles Wells: Categories for Computing Science + * Colin McLarty: Elementary Categories, Elementary Toposes - ====Sheaves, topology and time sheaves==== + or for more chewy books + * Peter T. Johnstone: Sketches of an Elephant: a Topos Theory compendium + * Michael Barr & Charles Wells: Toposes, Triples and Theories ===Exercises=== ===Exercises=== Line 168: Line 243: No homework at this point. However, if you want something to think about, a few questions and exercises: No homework at this point. However, if you want something to think about, a few questions and exercises: - # blah + # Prove the relations showing that $\leq_1$ is indeed a partial order on $[U\to\Omega]$. + # Prove the universal quantifier theorem. + # The ''extension'' of a formula $\phi$ over a list of variables $x$ is the sub-object of the product of domains $A_1\times\dots\times A_n$ for the variables $x_1,\dots,x_n=x$ classified by the interpretation of $\phi$ as a morphism $A_1\times\dots\times A_n\to\Omega$. A formula is ''true'' if it classifies the entire product. A ''sequent'', written $\Gamma:\phi$ is the statement that using the set of formulae $\Gamma$ we may prove $\phi$, or in other words that the intersection of the extensions of the formulae in $\Gamma$ is contained in the extension of $\phi$. If a sequent $\Gamma:\phi$ is true, we say that $\Gamma$ ''entails'' $\phi$. (some of the questions below are almost embarrassingly immediate from the definitions given above. I include them anyway, so that a ''catalogue'' of sorts of topoidal logic inferences is included here) + ## Prove the following entailments: + ### Trivial sequent: $\phi:\phi$ + ### True: $:true$ (note that true classifies the entire object) + ### False: $false:\phi$ (note that false classifies the global minimum in thepreorder of subobjects) + ## Prove the following inference rules: + ### Implication: $\Gamma,\phi:\psi$ is equivalent to $\Gamma:\phi\Rightarrow\psi$. + ### Thinning: $\Gamma:\phi$ implies $\Gamma,\psi:\phi$ + ### Cut: $\Gamma,\psi:\phi$ and $\Gamma:\psi$ imply $\Gamma:\phi$ if every variable free in $\psi$ is free in $\Gamma$ or in $\phi$. + ### Negation: $\Gamma, \phi: false$ is equivalent (implications both ways) to $\Gamma: \neg\phi$. + ### Conjunction: $\Gamma:\phi$ and $\Gamma:\psi$ together are equivalent to $\Gamma:\phi\wedge\psi$. + ### Disjunction: $\Gamma,\phi:\theta$ and $\Gamma,\psi:\theta$ together imply $\Gamma, \phi\vee\psi: \theta$. + ### Universal: $\Gamma:\phi$ is equivalent to $\Gamma:\forall x.\phi$ if $x$ is not free in $\Gamma$. + ### Existential: $\Gamma,\phi: \psi$ is equivalent to $\Gamma,\exists x.\phi:\psi$ if $x$ is not free in $\Gamma$ or $\psi$. + ### Equality: $:q=q$. + ### Biconditional: $(v\Rightarrow w)\wedge(w\Rightarrow v):v=w$. We usually write $v\Leftrightarrow w$ for $v=w$ if $v,w:A\to\Omega$. + ### Product: $p_1u = p_1u', p_2u = p_2u' : u = u'$ for $u,u'\in A\times B$. + ### Product revisited: $:(p_1(s\times s')=s)\wedge(p_2(s\times s')=s')$. + ### Extensionality: $\forall x\in A. f(x) = g(x) : f = g$ for $f,g\in[A\to B]$. + ### Comprehension: $(\lambda x\in A. s)x = s$ for $x\in A$. + ## Prove the following results from the above entailments and inferences -- or directly from the topoidal logic mindset: + ### $:\neg(\phi\wedge\neg\phi)$. + ### $:\phi\Rightarrow\neg\neg\phi$. + ### $:\neg(\phi\vee\psi)\Rightarrow(\neg\phi\wedge\neg\psi)$. + ### $:(\neg\phi\wedge\neg\psi)\Rightarrow\neg(\phi\wedge\psi)$. + ### $:(\neg\phi\vee\neg\psi)\Rightarrow\neg(\phi\vee\psi)$. + ### $\phi\wedge(\theta\vee\psi)$ is equivalent to $(\phi\wedge\theta)\vee(\phi\wedge\psi)$. + ### $\forall x.\neg\phi$ is equivalent to $\neg\exists x.\phi$. + ### $\exists x\phi\Rightarrow\neg\forall x.\neg\phi$. + ### $\exists x\neg\phi\Rightarrow\neg\forall x.\phi$. + ### $\forall x\phi\Rightarrow\neg\exists x.\neg\phi$. + ### $\phi:\psi$ implies $\neg\psi:\neg\phi$. + ### $\phi:\psi\Rightarrow\phi$. + ### $\phi\Rightarrow\not\phi:\not\phi$. + ### $\not\phi\vee\psi:\phi\Rightarrow\psi$ (but not the converse!). + ### $\neg\neg\neg\phi$ is equivalent to $\neg\phi$. + ### $(\phi\wedge\psi)\Rightarrow\theta$ is equivalent to $\phi\Rightarrow(\psi\Rightarrow\theta)$ (currying!). + ## Using the Boolean negation rule: $\Gamma,\neg\phi:false$ is equivalent to $\Gamma:\phi$, prove the following additional results: + ### $\neg\neg\phi:\phi$. + ### $:\phi\vee\neg\phi$. + ## Show that either of the three rules above, together with the original negation rule, implies the Boolean negation rule. + ### The converses of the three existential/universal/negation implications above. + ## The restrictions introduced for the cut rule above block the deduction of an entailment $:\forall x.\phi\Rightarrow\exists x.\phi$. The issue at hand is that $A$ might not actually have members; so choosing one is not a sound move. Show that this entailment can be deduced from the premise $\exists x\in A. x=x$. + ## Show that if we extend our ruleset by the quantifier negation rule $\forall x\Leftrightarrow \neg\exists x.\neg$, then we can derive the entailment $:\forall w: w=t \vee w = false$. From this derive $:\phi\vee\neg\phi$ and hence conclude that this extension gets us Boolean logic again. + # A ''topology'' on a topos $E$ is an arrow $j:\Omega\to\Omega$ such that $j\circ true=true$, $j\circ j=j[itex] and [itex]j\circ\wedge = \wedge\circ j\times j$. For a subobject $S\subseteq A$ with characteristic arrow $\chi_S:A\to\Omega$, we define its $j$-closure as the subobject $\bar S\subseteq A$ classified by $j\circ\chi_S$. + ## Prove: + ### $S\subseteq\bar S$. + ### $\bar S = \bar{\bar S}$. + ### $\bar{S\cap T} = \bar S\cap\bar T$. + ### $S\subseteq T$ implies $\bar S\subseteq\bar T$. + ### $\bar{f^{-1}(S)} = f^{-1}(\bar S)$. + ## We define $S$ to be $j$-closed if $S=\bar S$. It is $j$-dense if $\bar S=A$. These terms are chosen due to correspondences to classical pointset topology for the topos of sheaves over some space. For a logical standpoint, it is more helpful to look at $j$ as a modality operator: "''it is $j$-locally true that''" Given any $u:1\to\Omega$, prove that the following are topologies: + ### $(u\to -): \Omega\to\Omega$ (the ''open topology'', where such a $u$ in a sheaf topos ends up corresponding to an open subset of the underlying space, and the formulae picked out are true on at least all of that subset). + ### $u\vee -): \Omega\to\Omega$ (the closed topology, where a formula is true if its disjunction with $u$ is true -- corresponding to formulae holding over at least the closed set complementing the subset picked out) + ### $\neg\neg: \Omega\to\Omega$. This may, depending on the topos, end up being interpreted as ''true so far as global elements are concerned'', or ''not false on any open set'', or other interpretations. + ### $1_\Omega$. + ## For a topos $E$ with a topology $j$, we define an object $A$ to be a ''sheaf'' iff for every $X$ and every $j$-dense subobject $S\subseteq X$ and every $f:S\to A$ there is a unique $g:X\to A$ with $f=g\circ s$. In other words, $A$ is an object that cannot see the difference between $j$-dense subobjects and objects. We write $E_j$ for the full subcategory of $j$-sheaves. + ### Prove that any object is a sheaf for $1_\Omega$. + ### Prove that a subobject is dense for $\neg\neg$ iff its negation is empty. Show that $true+false:1+1\to\Omega$ is dense for this topology. Conclude that $1+1$ is dense in $\Omega_{\neg\neg}$ and thus that $E_{\neg\neg}$ is Boolean.

## Current revision

This lecture will be shallow, and leave many things undefined, hinted at, and is mostly meant as an appetizer, enticing the audience to go forth and seek out the literature on topos theory for further studies.

## Contents

### 1 Subobject classifier

One very useful property of the category Set is that the powerset of a given set is still a set; we have an internal concept of object of all subobjects. Certainly, for any category (small enough) C, we have a contravariant functor $Sub(-): C\to Set$ taking an object to the set of all equivalence classes of monomorphisms into that object; with the image Sub(f) given by the pullback diagram

If the functor Sub( − ) is representable - meaning that there is some object $X\in C_0$ such that Sub( − ) = hom( − ,X) - then the theory surrounding representable functors, connected to the Yoneda lemma - give us a number of good properties.

One of them is that every representable functor has a universal element; a generalization of the kind of universal mapping properties we've seen in definitions over and over again during this course; all the definitions that posit the unique existence of some arrow in some diagram given all other arrows.

Thus, in a category with a representable subobject functor, we can pick a representing object $\Omega\in C_0$, such that Sub(X) = hom(X,Ω). Furthermore, picking a universal element corresponds to picking a subobject $\Omega_0\hookrightarrow\Omega$ such that for any object A and subobject $A_0\hookrightarrow A$, there is a unique arrow $\chi: A\to\Omega$ such that there is a pullback diagram

One can prove that Ω0 is terminal in C, and we shall call Ω the subobject classifier, and this arrow $\Omega_0=1\to\Omega$ true. The arrow χ is called the characteristic arrow of the subobject.

In Set, all this takes on a familiar tone: the subobject classifier is a 2-element set, with a true element distinguished; and a characteristic function of a subset takes on the true value for every element in the subset, and the other (false) value for every element not in the subset.

### 2 Defining topoi

Definition A topos is a cartesian closed category with all finite limits and with a subobject classifier.

It is worth noting that this is a far stronger condition than anything we can even hope to fulfill for the category of Haskell types and functions. The functional programming relevance will take a back seat in this lecture, in favour of usefulness in logic and set theory replacements.

### 3 Properties of topoi

The meat is in the properties we can prove about topoi, and in the things that turn out to be topoi.

Theorem Let E be a topos.

• E has finite colimits.

#### 3.1 Power object

Since a topos is closed, we can take exponentials. Specifically, we can consider $[A\to\Omega]$. This is an object such that $hom(B,[A\to\Omega]) = hom(A\times B, \Omega) = Sub(A\times B)$. Hence, we get an internal version of the subobject functor. (pick B to be the terminal object to get a sense for how global elements of $[A\to\Omega]$ correspond to subobjects of A)

#### 3.2 Internal logic

We can use the properties of a topos to develop a logic theory - mimicking the development of logic by considering operations on subsets in a given universe:

Classically, in Set, and predicate logic, we would say that a predicate is some function from a universe to a set of truth values. So a predicate takes some sort of objects, and returns either True or False.

Furthermore, we allow the definition of sets using predicates:

$\{x\in U: P(x)\}$

Looking back, though, there is no essential difference between this, and defining the predicate as the subset of the universe directly; the predicate-as-function appears, then, as the characteristic function of the subset. And types are added as easily - we specify each variable, each object, to have a set it belongs to.

This way, predicates really are subsets. Type annotations decide which set the predicate lives in. And we have everything set up in a way that opens up for the topos language above.

We'd define, for predicates P,Q acting on the same type:

$\{x\in A : \top\} = A$
$\{x\in A : \bot\} = \emptyset$
$\{x : (P \wedge Q)(x)\} = \{x : P(x)\} \cap \{x : Q(x)\}$
$\{x : (P \vee Q)(x)\} = \{x : P(x)\} \cup \{x : Q(x)\}$
$\{x\in A : (\neg P)(x) \} = A \setminus \{x\in A : P(x)\}$

We could then start to define primitive logic connectives as set operations; the intersection of two sets is the set on which both the corresponding predicates hold true, so $\wedge = \cap$. Similarily, the union of two sets is the set on which either of the corresponding predicates holds true, so $\vee = \cup$. The complement of a set, in the universe, is the negation of the predicate, and all other propositional connectives (implication, equivalence, ...) can be built with conjunction (and), disjunction (or) and negation (not).

So we can mimic all these in a given topos:

We say that a universe U is just an object in a given topos. (Note that by admitting several universes, we arrive at a typed predicate logic, with basically no extra work.)

A predicate is a subobject of the universe.

We can now proceed to define all the familiar logic connectives one by one, using the topos setting. While doing this, we shall introduce the notation $t_A: A\to\Omega$ for the morphism $t_A = A\to 1\to^{true}\Omega$ that takes on the value true on all of A. We note that with this convention, $\chi_{A_0}$, the characteristic morphism of a subobject, is the arrow such that $\chi_{A_0}\circ i = t_{A_0}$.

Conjunction: Given predicates P,Q, we need to define the conjunction $P\wedge Q$ as some $P\wedge Q: U\to\Omega$ that corresponds to both P and Q simultaneously.

We may define $true\times true: 1\to\Omega\times\Omega$, a subobject of $\Omega\times\Omega$. Being a subobject, this has a characteristic arrow $\wedge:\Omega\times\Omega\to\Omega$, that we call the conjunction arrow.

Now, we may define $\chi_P\times\chi_Q:U\to\Omega\times\Omega$ for subobjects $P,Q\subseteq U$ - and we take their composition $\wedge\circ\chi_P\times\chi_Q$ to be the characteristic arrow of the subobject $P\wedge Q$.

And, indeed, this results in a topoidal version of intersection of subobjects.

Implication: Next we define $\leq_1: \Omega_1\to\Omega\times\Omega$ to be the equalizer of $\wedge$ and proj1. Given $v, w: U\to\Omega$, we write $v\leq_1 w$ if $v\times w$ factors through $\leq_1$.

Using the definition of an equalizer we arrive at $v\leq_1 w$ iff $v = v\wedge w$. From this, we can deduce

$u\leq_1 true$
$u\leq_1 u$
If $u\leq_1 v$ and $v\leq_1 w$ then $u\leq_1 w$.
If $u\leq_1 v$ and $v\leq_1 u$ then u = v

and thus, $\leq_1$ is a partial order on $[U\to\Omega]$. Intuitively, $u\leq_1 v$ if v is at least as true as u.

This relation corresponds to inclusion on subobjects. Note that $\leq_1:\Omega_1\to\Omega\times\Omega$, given from the equalizer, gives us Ω1 as a relation on Ω - a subobject of $\Omega\times\Omega$. Specifically, it has a classifying arrow $\Rightarrow:\Omega\times\Omega\to\Omega$. We write $h\Rightarrow k = (\Rightarrow)\circ h\times k$. And for subobjects $P,Q\subseteq A$, we write $P\Rightarrow Q$ for the subobject classified by $\chi_P\Rightarrow\chi_Q$.

It turns out, without much work, that this $P\Rightarrow Q$ behaves just like classical implication in its relationship to $\wedge$.

Membership: We can internalize the notion of membership as a subobject $\in^U\subseteq U\times\Omega^U$, and thus get the membership relation from a pullback:

For elements $x\times h: 1\to U\times\Omega^U$, we write $x\in^U h$ for $x\times h\in\in^U$. Yielding a subset of the product $U\times\Omega^U$, this is readily interpretable as a relation relating things in U with subsets of U, so that for any x,h we can answer whether $x\in^Uh$. Both notations indicate $ev_A\circ h\times x = true$.

Universal quantification: For any object U, the maximal subobject of U is U itself, embedded with 1U into itself. There is an arrow $\tau_U:1\to\Omega^U$ represents this subobject. Being a map from 1, it is specifically monic, so it has a classifying arrow $\forall_U:\Omega^U\to\Omega$ that takes a given subobject of U to true precisely if it is in fact the maximal subobject.

Now, with a relation $r:R\to B\times A$, we define $\forall a. R$ by the following pullback:

where λχR comes from the universal property of the exponential.

Theorem For any $s:S\to B$ monic, $S\subseteq \forall a.R$ iff $S\times A\subseteq R$.

This theorem tells us that the subobject given by $\forall a.R$ is the largest subobject of B that is related by R to all of A.

Falsum: We can define the false truth value using these tools as $\forall w\in\Omega.w$. This might be familiar to the more advanced Haskell type hackers - as the type

x :: forall a. a
which has to be able to give us an element of any type, regardless of the type itself. And in Haskell, the only element that inhabits all types is
undefined
.

From a logical perspective, we use a few basic inference rules:

and connect them up to derive

for any φ not involving w - and we can always adjust any φ to avoid w.

Thus, the formula $\forall w.w$ has the property that it implies everything - and thus is a good candidate for the false truth value; since the inference

is the defining introduction rule for false.

Negation: We define negation the same way as in classical logic: $\neg \phi = \phi \Rightarrow false$.

Disjunction: We can define

$P\vee Q = \forall w. ((\phi\Rightarrow w)\wedge(\psi\Rightarrow w))\Rightarrow w$

Note that this definition uses one of our primary inference rules:

as the defining property for the disjunction, and we may derive any properties we like from these.

Existential quantifier: Finally, the existential quantifier is derived similarly to the disjunction - by figuring out a rule we want it to obey, and using that as a definition for it:

$\exists x.\phi = \forall w. (\forall x. \phi \Rightarrow w)\Rightarrow w$

Here, the rule we use as defining property is

Before we leave this exploration of logic, some properties worth knowing about: While we can prove $\neg(\phi\wedge\neg\phi)$ and $\phi\Rightarrow\neg\neg\phi$, we cannot, in just topos logic, prove things like

$\neg(\phi\wedge\psi)\Rightarrow(\neg\phi\vee\neg\psi)$
$\neg\neg\phi\Rightarrow\phi$

nor any statements like

$\neg(\forall x.\neg\phi)\Rightarrow(\exists x.\phi)$
$\neg(\forall x.\phi)\Rightarrow(\exists x.\neg\phi)$
$\neg(\exists x.\neg\phi)\Rightarrow(\forall x.\phi)$

We can, though, prove

$\neg(\exists x.\phi)\Rightarrow(\forall x.\neg\phi)$

If we include, extra, an additional inference rule (called the Boolean negation rule) given by

then suddenly we're back in classical logic, and can prove $\neg\neg\phi\Rightarrow\phi$ and $\phi\or\neg\phi$.

#### 3.3 Examples: Sheaves, topology and time sheaves

The first interesting example of a topos is the category of (small enough) sets; in some sense clear already since we've been modelling our axioms and workflows pretty closely on the theory of sets.

Generating logic and set theory in the topos of sets, we get a theory that captures several properties of intuitionistic logic; such as the lack of Boolean negation, of exclusion of the third, and of double negation rules.

For the more interesting examples, however, we shall introduce the concepts of topology and of sheaf:

Definition A (set-valued) presheaf on a category C is a contravariant functor $E: C^{op}\to Set$.

Presheaves occur all over the place in geometry and topology - and occasionally in computer science too: There is a construction in which a functor $A\to Set$ for a discrete small category A identified with its underlying set of objects as a set, corresponds to the data type of bags of elements from A - for $a\in A$, the image F(a) denotes the multiplicity of a in the bag.

Theorem The category of all presheaves (with natural transformations as the morphisms) on a category C form a topos.

Example Pick a category on the shape

A contravariant functor on this category is given by a pair of sets G0,G1 and a pair of function $source, target: G_1\to G_0$. Identities are sent to identities.

The category of presheaves on this category, thus, is the category of graphs. Thus graphs form a topos.

The subobject classifier in the category of graphs is a graph with two nodes: in and out, and five arrows:

$in \to^{all} in$
$in \to^{both} in$
$in \to^{source} out$
$out \to^{target} in$
$out \to^{neither} out$

Now, given a subgraph $H \leq G$, we define a function $\chi_H:G\to\Omega$ by sending nodes to in or out dependent on their membership. For an arrow a, we send it to all if the arrow is in H, and otherwise we send it to both/source/target/neither according to where its source and target reside.

To really get into sheaves, though, we introduce more structure - specifically, we define what we mean by a topology:

Definition Suppose P is a partially ordered set. We call P a complete Heyting algebra if

• There is a top element 1 such that $x\leq 1 \forall x\in P$.
• Any two elements x,y have an infimum (greatest lower bound) $x\wedge y$.
• Every subset $Q\subseteq P$ has a supremum (least upper bound) $\bigvee_{p\in P} p$.
• $x\wedge(\bigvee y_i) = \bigvee x\wedge y_i$

Note that for the partial order by inclusion of a family of subsets of a given set, being a complete Heyting algebra is the same as being a topology in the classical sense - you can take finite unions and any intersections of open sets and still get an open set.

If {xi} is a subset with supremum x, and E is a presheaf, we get functions $e_i:E(x)\to E(x_i)$ from functoriality. We can summarize all these ei into $e = \prod_i e_i: E(x)\to\prod_i E(x_i)$.

Furthermore, functoriality gives us families of functions $c_{ij}: E(x_i)\to E(x_i\wedge x_j)$ and $d_{ij}: E(x_j)\to E(x_i\wedge x_j)$. These can be collected into $c: \prod_i E(x_i)\to\prod_{ij}E(x_i\wedge x_j)$ and $d:\prod_j E(x_j)\to\prod_{ij}E(x_i\wedge x_j)$.

Definition A presheaf E on a Heyting algebra is called a sheaf if it satisfies:

$x = \bigvee x_i$

implies that

is an equalizer. If you have seen sheaves before, you may recognize this as the covering axiom.

In other words, E is a sheaf if whenever $x=\bigvee x_i$ and c(α) = d(α), then there is some $\bar\alpha$ such that $\alpha = e(\bar\alpha)$.

Theorem The category of sheaves on a Heyting algebra is a topos.

For context, we can think of sheaves over Heyting algebras as sets in a logic with an expanded notion of truth. Our Heyting algebra is the collection of truth values, and the sheaves are the fuzzy sets with fuzziness introduced by the Heyting algebra.

Recalling that subsets and predicates are viewed as the same thing, we can view the set E(p) as the part of the fuzzy set E that is at least p true.

As it turns out, to really make sense of this approach, we realize that equality is a predicate as well - and thus can hold or not depending on the truth value we use.

Definition Let P be a complete Heyting algebra. A P-valued set is a pair (S,σ) of a set S and a function $\sigma: S\to P$. A category of fuzzy sets is a category of P-valued sets. A morphism $f:(S,\sigma)\to(T,\tau)$ of P-valued sets is a function $f:S\to T$ such that $\tau\circ f = \sigma$.

From these definitions emerges a fuzzy set theory where all components of it being a kind of set theory emerges from the topoidal approach above. Thus, say, subsets in a fuzzy sense are just monics, thus are injective on the set part, and such that the valuation, on the image of the injection, increases from the previous valuation: $(T,\tau)\subseteq(S,\sigma)$ if $T\subseteq S$ and σ | T = τ.

To get to topoi, though, there are a few matters we need to consider. First, we may well have several versions of the empty set - either a bona fide empty set, or just a set where every element is never actually there. This issue is minor. Much more significant though, is that while we can easily make (S,σ) give rise to a presheaf, by defining

$E(x) = \{s\in S: \sigma(s)\geq x\}$

this definition will not yield a sheaf. The reason for this boils down to $E(0) = S \neq 1$. We can fix this, though, by adjoining another element - $\bot$ - to P giving P + . The new element $\bot$ is imbued with two properties: it is smaller, in P + , than any other element, and it is mapped, by E to 1.

Theorem The construction above gives a fuzzy set (S,σ) the structure of a sheaf on the augmented Heyting algebra.

Corollary The category of fuzzy sets for a Heyting algebra P forms a topos.

Final note While this construction allows us to make membership a fuzzy concept, we're not really done fuzzy-izing sets. There are two fundamental predicates on sets: equality and membership. While fuzzy set theory, classically, only allows us to make one of these fuzzy, topos theory allows us - rather easily - to make both these predicates fuzzy. Not only that, but membership reduces - with the power object construction - to equality testing, by which the fuzzy set theory ends up somewhat inconsistent in its treatment of the predicates.

### 4 Literature

At this point, I would warmly recommend the interested reader to pick up one, or more, of:

• Steve Awodey: Category Theory
• Michael Barr & Charles Wells: Categories for Computing Science
• Colin McLarty: Elementary Categories, Elementary Toposes

or for more chewy books

• Peter T. Johnstone: Sketches of an Elephant: a Topos Theory compendium
• Michael Barr & Charles Wells: Toposes, Triples and Theories

### 5 Exercises

No homework at this point. However, if you want something to think about, a few questions and exercises:

1. Prove the relations showing that $\leq_1$ is indeed a partial order on $[U\to\Omega]$.
2. Prove the universal quantifier theorem.
3. The extension of a formula φ over a list of variables x is the sub-object of the product of domains $A_1\times\dots\times A_n$ for the variables $x_1,\dots,x_n=x$ classified by the interpretation of φ as a morphism $A_1\times\dots\times A_n\to\Omega$. A formula is true if it classifies the entire product. A sequent, written Γ:φ is the statement that using the set of formulae Γ we may prove φ, or in other words that the intersection of the extensions of the formulae in Γ is contained in the extension of φ. If a sequent Γ:φ is true, we say that Γ entails φ. (some of the questions below are almost embarrassingly immediate from the definitions given above. I include them anyway, so that a catalogue of sorts of topoidal logic inferences is included here)
1. Prove the following entailments:
1. Trivial sequent: φ:φ
2. True: :true (note that true classifies the entire object)
3. False: false (note that false classifies the global minimum in thepreorder of subobjects)
2. Prove the following inference rules:
1. Implication: Γ,φ:ψ is equivalent to $\Gamma:\phi\Rightarrow\psi$.
2. Thinning: Γ:φ implies Γ,ψ:φ
3. Cut: Γ,ψ:φ and Γ:ψ imply Γ:φ if every variable free in ψ is free in Γ or in φ.
4. Negation: Γ,φ:false is equivalent (implications both ways) to $\Gamma: \neg\phi$.
5. Conjunction: Γ:φ and Γ:ψ together are equivalent to $\Gamma:\phi\wedge\psi$.
6. Disjunction: Γ,φ:θ and Γ,ψ:θ together imply $\Gamma, \phi\vee\psi: \theta$.
7. Universal: Γ:φ is equivalent to $\Gamma:\forall x.\phi$ if x is not free in Γ.
8. Existential: Γ,φ:ψ is equivalent to $\Gamma,\exists x.\phi:\psi$ if x is not free in Γ or ψ.
9. Equality: :q = q.
10. Biconditional: $(v\Rightarrow w)\wedge(w\Rightarrow v):v=w$. We usually write $v\Leftrightarrow w$ for v = w if $v,w:A\to\Omega$.
11. Product: p1u = p1u',p2u = p2u':u = u' for $u,u'\in A\times B$.
12. Product revisited: $:(p_1(s\times s')=s)\wedge(p_2(s\times s')=s')$.
13. Extensionality: $\forall x\in A. f(x) = g(x) : f = g$ for $f,g\in[A\to B]$.
14. Comprehension: $(\lambda x\in A. s)x = s$ for $x\in A$.
3. Prove the following results from the above entailments and inferences -- or directly from the topoidal logic mindset:
1. $:\neg(\phi\wedge\neg\phi)$.
2. $:\phi\Rightarrow\neg\neg\phi$.
3. $:\neg(\phi\vee\psi)\Rightarrow(\neg\phi\wedge\neg\psi)$.
4. $:(\neg\phi\wedge\neg\psi)\Rightarrow\neg(\phi\wedge\psi)$.
5. $:(\neg\phi\vee\neg\psi)\Rightarrow\neg(\phi\vee\psi)$.
6. $\phi\wedge(\theta\vee\psi)$ is equivalent to $(\phi\wedge\theta)\vee(\phi\wedge\psi)$.
7. $\forall x.\neg\phi$ is equivalent to $\neg\exists x.\phi$.
8. $\exists x\phi\Rightarrow\neg\forall x.\neg\phi$.
9. $\exists x\neg\phi\Rightarrow\neg\forall x.\phi$.
10. $\forall x\phi\Rightarrow\neg\exists x.\neg\phi$.
11. φ:ψ implies $\neg\psi:\neg\phi$.
12. $\phi:\psi\Rightarrow\phi$.
13. $\phi\Rightarrow\not\phi:\not\phi$.
14. $\not\phi\vee\psi:\phi\Rightarrow\psi$ (but not the converse!).
15. $\neg\neg\neg\phi$ is equivalent to $\neg\phi$.
16. $(\phi\wedge\psi)\Rightarrow\theta$ is equivalent to $\phi\Rightarrow(\psi\Rightarrow\theta)$ (currying!).
4. Using the Boolean negation rule: $\Gamma,\neg\phi:false$ is equivalent to Γ:φ, prove the following additional results:
1. $\neg\neg\phi:\phi$.
2. $:\phi\vee\neg\phi$.
5. Show that either of the three rules above, together with the original negation rule, implies the Boolean negation rule.
1. The converses of the three existential/universal/negation implications above.
6. The restrictions introduced for the cut rule above block the deduction of an entailment $:\forall x.\phi\Rightarrow\exists x.\phi$. The issue at hand is that A might not actually have members; so choosing one is not a sound move. Show that this entailment can be deduced from the premise $\exists x\in A. x=x$.
7. Show that if we extend our ruleset by the quantifier negation rule $\forall x\Leftrightarrow \neg\exists x.\neg$, then we can derive the entailment $:\forall w: w=t \vee w = false$. From this derive $:\phi\vee\neg\phi$ and hence conclude that this extension gets us Boolean logic again.
4. A topology on a topos E is an arrow $j:\Omega\to\Omega$ such that $j\circ true=true$, $j\circ j=j[itex] and [itex]j\circ\wedge = \wedge\circ j\times j$. For a subobject $S\subseteq A$ with characteristic arrow $\chi_S:A\to\Omega$, we define its j-closure as the subobject $\bar S\subseteq A$ classified by $j\circ\chi_S$.
1. Prove:
1. $S\subseteq\bar S$.
2. $\bar S = \bar{\bar S}$.
3. $\bar{S\cap T} = \bar S\cap\bar T$.
4. $S\subseteq T$ implies $\bar S\subseteq\bar T$.
5. $\bar{f^{-1}(S)} = f^{-1}(\bar S)$.
2. We define S to be j-closed if $S=\bar S$. It is j-dense if $\bar S=A$. These terms are chosen due to correspondences to classical pointset topology for the topos of sheaves over some space. For a logical standpoint, it is more helpful to look at j as a modality operator: "it is j-locally true that" Given any $u:1\to\Omega$, prove that the following are topologies:
1. $(u\to -): \Omega\to\Omega$ (the open topology, where such a u in a sheaf topos ends up corresponding to an open subset of the underlying space, and the formulae picked out are true on at least all of that subset).
2. $u\vee -): \Omega\to\Omega$ (the closed topology, where a formula is true if its disjunction with u is true -- corresponding to formulae holding over at least the closed set complementing the subset picked out)
3. $\neg\neg: \Omega\to\Omega$. This may, depending on the topos, end up being interpreted as true so far as global elements are concerned, or not false on any open set, or other interpretations.
4. 1Ω.
3. For a topos E with a topology j, we define an object A to be a sheaf iff for every X and every j-dense subobject $S\subseteq X$ and every $f:S\to A$ there is a unique $g:X\to A$ with $f=g\circ s$. In other words, A is an object that cannot see the difference between j-dense subobjects and objects. We write Ej for the full subcategory of j-sheaves.
1. Prove that any object is a sheaf for 1Ω.
2. Prove that a subobject is dense for $\neg\neg$ iff its negation is empty. Show that $true+false:1+1\to\Omega$ is dense for this topology. Conclude that 1 + 1 is dense in $\Omega_{\neg\neg}$ and thus that $E_{\neg\neg}$ is Boolean.