89
$\begingroup$

Because adjoint functors are just cool, and knowing that a pair of functors is an adjoint pair gives you a bunch of information from generalized abstract nonsense, I often find myself saying, "Hey, cool functor. Wonder if it has an adjoint?" The problem is, I don't know enough category theory to be able to check this for myself, which means I can either run and ask MO or someone else who might know, or give up.

I know a couple of necessary conditions for a functor to have a left/right adjoint. If it doesn't preserve either limits or colimits, for example, I know I can give up. Is there an easy-to-check sufficient condition to know when a functor's half of an adjoint pair? Are there at least heuristics, other than "this looks like it might work?"

$\endgroup$

10 Answers 10

79
$\begingroup$

The adjoint functor theorem as stated here and the special adjoint functor theorem (which can also both be found in Mac Lane) are both very handy for showing the existence of adjoint functors.

First here is the statement of the special adjoint functor theorem:

Theorem Let $G\colon D\to C$ be a functor and suppose that the following conditions are satisfied:
(i) $D$ and $C$ have small hom-sets
(ii) $D$ has small limits
(iii) $D$ is well-powered i.e., every object has a set of subobjects (where by a subobject we mean an equivalence class of monics)
(iv) $D$ has a small cogenerating set $S$
(v) $G$ preserves limits
Then $G$ has a left adjoint.

Example I think this is a pretty standard example. Consider the inclusion CHaus$\to$Top of the category of compact Hausdorff spaces into the category of all topological spaces. Both of these categories have small hom-sets, it follows from Tychonoff's Theorem that CHaus has all small products and it is not so hard to check it has equalizers so it has all small limits and the the inclusion preserves these. CHaus is well-powered since monics are just injective continuous maps and there are only a small collection of topologies making any subspace compact and Hausdorff. Finally, one can check that $[0,1]$ is a cogenerator for CHaus. So $G$ has a left adjoint $F$ and we have just proved that the Stone-Čech compactification exists.

If you have a candidate for an adjoint (say the pair $(F,G)$) and you want to check directly it is often easiest to try and cook up a unit and/or a counit and verify that there is an adjunction that way - either by using them to give an explicit bijection of hom-sets or by checking that the composites $$G \stackrel{\eta G}{\to} GFG \stackrel{G \epsilon}{\to} G$$ and $$F \stackrel{F \eta}{\to} FGF \stackrel{\epsilon F}{\to} F$$ are identities of $G$ and $F$ respectively.

I thought (although I am at the risk of this getting excessively long) that I would add another approach. One can often use existing formalism to produce adjoints (although this is secretly using one of the adjoint functor theorems in most cases so in some sense is only psychologically different). For instance as in Reid Barton's nice answer if one can interpret the situation in terms of categories of presheaves or sheaves it is immediate that certain pairs of adjoints exist. Andrew's great answer gives another large class of examples where the content of the special adjoint functor theorem is working behind the scenes to make verifying the existence of adjoints very easy. Another class of examples is given by torsion theories where one can produce adjoints to the inclusions of certain subcategories of abelian (more generally pre-triangulated) categories by checking that certain orthogonality/decomposition properties hold.

I can't help remarking that one instance where it is very easy to produce adjoints is in the setting of compactly generated (and well generated) triangulated categories. In the land of compactly generated triangulated categories one can wave the magic wand of Brown representability and (provided the target has small hom-sets) the only obstruction for a triangulated functor to have a right/left adjoint is preserving coproducts/products (and the adjoint is automatically triangulated).

$\endgroup$
4
  • 1
    $\begingroup$ I wish I could double-vote! I think this is a very nice expansion of your original answer. $\endgroup$ Nov 17, 2009 at 8:27
  • 7
    $\begingroup$ Cool! Stone-Čech from abstract nonsense! $\endgroup$ Nov 17, 2009 at 16:32
  • $\begingroup$ What a lovely answer. $\endgroup$ Nov 17, 2009 at 19:39
  • 1
    $\begingroup$ Well, in my limited experience Brown representability is very useful in pratice when you work with homotopy categories of model categories (which are complete cocomplete). The relevant functors on those big categories are sometimes hard to describe explicitely, although it may be possible to compute them on (some subclass of) compact objects. $\endgroup$ Aug 9, 2010 at 18:49
71
$\begingroup$

Lots of people-who-are-fond-of-adjoint-functor-theorems have responded to this post saying "adjoint functor theorems". Let me give a more mundane and rather different answer which fits much better into my world view.

In my experience (which may differ from others), the true answer is that category theorists have these adjoint functor theorems which work well in some cases, but whose problem, as I see it, is simply that they are quite general. I am certainly not a category theorist but I am a "working mathematician" and my experience with these general theorems has been quite negative. For example take the notion of free groups. I was talking to another staff member here once and they said they'd just set an UG project on constructing free groups and I said "can't you just say 'done by adjoint functor theorem'?" and we both laughed because we knew it was true. And then I actually went and looked up SAFT and checked that it could construct free groups---and it can't, because the category of groups (hardly an exotic or esoteric category!) does not have a small cogenerating set. As I write, the top answer here has 15 votes and a lovely statement of SAFT but if you can't get free groups with it then you surely have to question its usefulness. In fact, although this sort of goes against the grain of what most people are saying here, in my experience you would be crazy trying to invoke adjoint functor theorems to construct free groups: you're much better off making them yourself, not least because making them yourself will teach you much more about how the objects work.

My experience is that things like SAFT are almost always justified with the statement "Stone-Cech compactification!". I have heard this justification, and only this, so often now that the excuse is wearing thin.

So here is my answer: Yes, there are some general theorems. But if you're not a category theorist then in my experience they have limited applicability. You're better off thinking about things on your own, saying "hmm, here's an object with structure X, how might one naturally build an object with structure Y from it?". If you can go both ways you might well have constructed a pair of adjoint functors, and you could then try to check this by doing mathematics rather than waving general category-theory theorems which have specifically beein designed with a one-size-fits-all purpose in mind, and which don't apply to such exotic categories as the category of groups.

$\endgroup$
7
  • 3
    $\begingroup$ I agree with much of this. SAFT, in particular, seems to have few uses - though there are significant uses other than Stone-Cech. Regarding free groups, SAFT doesn't guarantee existence, but GAFT (General AFT = "the" AFT) does, as per my answer. $\endgroup$ Nov 18, 2009 at 8:49
  • 1
    $\begingroup$ I agree that SAFT has somewhat limited applicability and that it is often a good idea to try to actually build adjoints (as one often needs to understand them not just know they exist) and that this can be very enlightening. But I think that knowing the general categorical machinery exists is worthwhile in case one wants to use it. I also think that the feel of the proof of AFT is not unlike how one often goes about building these things by hand at least in some sense. In my opinion there are lots of general machines to which this comment and your answer applies. $\endgroup$ Nov 18, 2009 at 10:06
  • 1
    $\begingroup$ Greg: I disagree with your statement "the proof of AFT is not unlike how one often goes about building these things by hand". But that might well be because we're sampling from very different sample spaces. Here's an example of adjoints that has been fundamental in my mathematical career: pushforward and pullback of sheaves of abelian groups on schemes. Here pushforward and pullback are adjoints but neither construction, it seems to me, looks (to me) at all like what goes into AFT. [continued in a sec] $\endgroup$ Nov 18, 2009 at 18:52
  • 2
    $\begingroup$ @buzzard: It is probably true that our sample spaces are somewhat different. I mostly wanted to make it clear that I didn't mean the exact proof; it is probably the first place a lot of people run across the idea that "if you need to build something, take everything close enough and then beat it into submission with limits/colimits" which I think is useful. Also your example looks different to me. The first step is to build the inverse image which I think is best done in general via left Kan extension. Then one can play around and find out what one wants for sheaves of modules. $\endgroup$ Nov 18, 2009 at 20:41
  • 1
    $\begingroup$ In Lang's third edition Algebra, p. 66, there is an explicit construction of the free group using the Freyd Adjoint Functor Theorem. It's Jacques Tits'. $\endgroup$ Apr 5, 2017 at 1:24
51
$\begingroup$

Other people have mentioned the Adjoint Functor Theorems. Here's a different perspective.

There's a famous Cambridge exam question set by Peter Johnstone:

Write an essay on 
  (a) the usefulness, or
  (b) the uselessness, 
of the Adjoint Functor Theorems.  

I agree with the undertone of the question: the Adjoint Functor Theorems (AFTs) aren't as useful as you might think when you first meet them. They're not useless: but my own experience is that the range of situations in which I've had no easy way of constructing the adjoint, yet have been able to verify the hypotheses of an AFT, has been very limited.

Perhaps more useful than knowing the AFTs is knowing some large classes of situation where an adjoint is guaranteed to exist. Here are two such classes.

${}$1. Forgetful functors between categories of algebras. Any time you have a category $\mathcal{A}$ of algebras, such as Group, Ring, Vect, ..., the forgetful functor $\mathcal{A} \to \mathbf{Set}$ has a left adjoint. What's not quite so well-known is that you don't have to forget all the structure; that is, the codomain doesn't have to be Set.

For example, the functor $\mathbf{AbGp} \to \mathbf{Group}$ forgetting that a group is abelian automatically has a left adjoint. The functor $\mathbf{Ring} \to \mathbf{Monoid}$ forgetting the additive structure of a ring automatically has a left adjoint. The forgetful functor $\mathbf{Assoc} \to \mathbf{Lie}$, sending an associative algebra to its underlying Lie algebra (with bracket $[a, b] = a\cdot b - b \cdot a$) automatically has a left adjoint. (That might not look so much like a forgetful functor, but that's only because the bracket on an associative algebra isn't given as a primitive operation in the usual definition of associative algebra: it has to be derived from the other operations.)

The same can be said if you talk about topological groups, rings, etc, basically because Top has all small limits and colimits.

All that is a consequence of the General AFT (= 'the' AFT in some people's usage). To my mind it's the principal reason why it's worth learning or teaching the General AFT.

${}$2. Kan extensions. Let $F: \mathbf{A} \to \mathbf{B}$ be any functor between small categories. Then there's an induced functor $$ F^{*}: {[\mathbf{B}, \mathbf{Set}]} \to {[\mathbf{A}, \mathbf{Set}]} $$ defined by composition with $F$. (Here ${[\mathbf{B}, \mathbf{Set}]}$ means the category of functors from $\mathbf{B}$ to $\mathbf{Set}$, sometimes denoted ${\mathbf{Set}}^{\mathbf{B}}$.)

The fact is that $F^{*}$ always has both a left and a right adjoint. These are called left and right Kan extension along $F$. The same is true if you replace $\mathbf{Set}$ by any category with small limits and colimits.

This is really useful, though that might not be obvious. For example, suppose we're interested in representations of groups. A group can be regarded as a one-object category, and the category of representations of a group $G$ is just the functor category $[G, \mathbf{Vect}]$. Now take a group homomorphism $f: G \to H$. The induced functor $$ f^{*}: [H, \mathbf{Vect}] \to [G, \mathbf{Vect}] $$ sends a representation of $H$ to a representation of $G$ in the obvious way. And it's guaranteed to have both left and right adjoints. These adjoints turn a representation of $G$ into a representation of $H$, in a canonical way. I believe representation theorists call these the 'induced' and 'coinduced' representations, at least in the case that $G$ is a subgroup of $H$ and $f$ is the inclusion.

Exercise: let $G$ be a group. There are unique homomorphisms $G \to 1$ and $1 \to G$, where $1$ is the trivial group. Each of these two homomorphisms induces a functor "$f^{*}$" between the category $[G, \mathbf{Set}]$ of $G$-sets and the category $[1, \mathbf{Set}] = \mathbf{Set}$ of sets. These two functors each have adjoints on both sides. So we end up with six functors and four adjunctions. What are they?

The existence of Kan extensions is best derived from the theory of ends. In fact, ends allow you to describe them explicitly.

$\endgroup$
3
  • 5
    $\begingroup$ Is there a good place to learn about ends and coends with good (and not too sophisticated) examples? The page on the n-lab didn't help me that much because it goes very quickly into the enriched context and I think that your wonderful notes on category theory don't cover it. $\endgroup$ Aug 20, 2010 at 13:52
  • 2
    $\begingroup$ Fosco Loregian's notes are very helpful $\endgroup$
    – ಠ_ಠ
    Apr 18, 2017 at 2:41
  • 1
    $\begingroup$ They are, or at least I hope so! $\endgroup$
    – fosco
    May 28, 2019 at 20:40
16
$\begingroup$

Obligatory n-lab reference: adjoint functor theorems

Figuring out when functors had adjoints or not was something I did a lot of in Comparative Smootheology (section 8).

Edit: Thought I'd expand on my comment to Andrew Critch's answer. A simple application of the Special Adjoint Functor Theorem is to universal algebra where it becomes:

Theorem Let $D$ be a category that has finite products, is co-complete, is an $(E, M)$ category where $E$ is closed under finite products, is $E$-co-well-powered, and its finite products commute with filtered co-limits. Let $V$ be a variety of algebras. Let $F$ be a category with co-equalisers. Let $G : F \to DV$ (here, $DV$ is the category of $V$-algebra objects in $D$) be a covariant functor. Then the following statements are equivalent.

  1. $G$ has a left adjoint.
  2. The composition $|G| : F \to D$ of $G$ with the forgetful functor $DV \to D$ has a left adjoint.

In particular, if we take $D$ to be $Set$, the category of sets, then we obtain the following (which can be found in any text book on universal algebra), in which the variety of algebras $V$ is identified with its category of models in $Set$:

Corollary Let $F$ be a co-complete category, $V$ a variety of algebras. For a covariant functor $G : F \to V$, the following statements are equivalent.

  1. $G$ has a left adjoint.
  2. $G$ is representable by a co-$V$-algebra object in $F$.
  3. $|G|$ is representable by an object in $F$.

(And, of course, all of this can be turned round for adjoint pairs of contravariant functors)

In further particular, if $G : F \to V$ preserves underlying sets then $|G|$ is representable (by the initial $F$-object) and so $G$ has a left adjoint.

$\endgroup$
4
  • $\begingroup$ Thanks Andrew. I would like to be able to double-vote your expansion; it is the other example I had in mind and I'm glad you added this since you've given a much cleaner and more complete statement than I would have. $\endgroup$ Nov 17, 2009 at 9:14
  • $\begingroup$ Thanks for this; I wish I could accept both your answer and Greg's, since they're both clear and useful! You have my +1, anyway. $\endgroup$ Nov 17, 2009 at 16:35
  • $\begingroup$ I have to admit that I'm not overly happy with the "can only accept one answer" imposition by the software - I'd like to accept more than one on some of my questions. However, I think you made the right choice here. Stone-Cech outweighs anything else in my view. $\endgroup$ Nov 17, 2009 at 18:38
  • $\begingroup$ The link in the post (to Comparative Smootheology) is now dead. Here is arXiv link: arxiv.org/abs/0802.2225 - judging by the name it could be some version of the same text. $\endgroup$ Apr 3, 2018 at 4:22
16
$\begingroup$

I think frequently the easiest to check sufficient conditions are the following, which also make precise why "this looks like it might work" is so often successful:

Theorem: A functor $G: C\to D$ is a right adjoint functor (i.e. has a left adjoint) if and only if for each object $Y$ in $D$, there exists an initial morphism $\phi_Y:Y\to G(I_Y)$ from $Y$ to $G$. Moreover, once you find such an initial morphism from each $Y$ to $G$, the association $Y\mapsto I_Y$ extends in a unique way to act on morphisms defining a functor $F: D\to C$, which moreover is left adjoint to the original functor $G$.

This is well-known and easy to prove (well, depending on who you ask), but is non-trivial and involves many steps, which are explained relatively well here. (Essentially one is recovering the entire adjoint situation from just one functor and a unit transformation.)

Once you know it, you can really take confidence in "follow your nose"-style adjoint construction. It doesn't involve having an "initial guess" for the left adjoint (as a functor), but actually constructs it for you in a way that is uniquely determined by the limited data of the initial morphisms --- really unique, not just up to natural isomorphism.

As an example of how this can be useful, think of the inclusion functor $U$ from $AbGrp$ to $Grp$. It's easy to see that any group $H$ has an abelianization $Ab(H) = H/[H,H]$ in $AbGrp$ with a map
$H\to Ab(H)$ satisfying an initial (universal) property. But then by the above theorem, we can automatically extend this association in a unique way to act on morphisms as well, defining an abelianization functor $Ab$ which is left adjoint to the inclusion $U$.

This same trick expedites the construction of adjoints in pretty much any situation you can think of.


Edit: Sometimes this theorem is used as an alternative definition for adjoint functors in terms of universal morphisms. However you look at it, the real utility is knowing that this "weak", and in fact asymetric, condition actually implies the "stronger", symmetric definitions of adjoints via hom-sets or units/counits. I think it's really worthwhile to sift through the three different characterizations of adjoints given on Wikipedia.

$\endgroup$
7
  • 3
    $\begingroup$ To me, this result says "A functor has an adjoint if you can construct the adjoint." Freyd's adjoint functor theorem is more like "A functor has an adjoint if it looks like it has an adjoint" which seems more useful. $\endgroup$ Nov 17, 2009 at 7:39
  • 1
    $\begingroup$ No! It says "if you can build just a tiny bit of an adjoint, than the rest of it falls into place." I edited my answer to elaborate on this, because I think this fact doesn't get enough attention in general :) $\endgroup$ Nov 17, 2009 at 8:04
  • 1
    $\begingroup$ Isn't this "just" the characterization in terms of initial objects in comma categories? The work lies in showing uniquness of various morphisms, I'd have thought. In the course I took (waves at TL) it wasn't clear that this was a faster way to construct the free group functor than, say, applying GAFT. It all depends how (over)confident one is that there really is an adjoint pair $\endgroup$
    – Yemon Choi
    Nov 17, 2009 at 8:09
  • $\begingroup$ Well secretly you are building the unit and showing it gives bijections on hom-sets. It is a nice fact, and I am all for using the various definitions of adjunction as the situation warrants, but I feel like this still boils down to a sufficient condition for G to have an adjoint is that you can build one. Am I missing something? (By the way - I don't want this to sound snide - it is a good answer) $\endgroup$ Nov 17, 2009 at 8:12
  • $\begingroup$ @Yemen, it is "just" that :) @Greg, not quite: you don't build the unit, you start with it. Then you build a functor to make the unit an actual natural transformation. $\endgroup$ Nov 17, 2009 at 8:40
13
$\begingroup$

There are two parts to this answer.

  1. First, a functor must be continuous (cocontinuous) to have a left (right) adjoint. Most of the times, it is easy to check that a functor does not preserve (co)limits and thus it cannot have a a left (right) adjoint.

  2. (co)continuity is not enough to actually prove that a functor has the required adjoint, but it is almost good enough. Let me elaborate on this. If you have a functor $F:P\to Q$ between complete partial orders (and thus cocomplete) then it is an easy exercise to construct a left adjoint by taking a $\sup$ of an appropriate subset. This can be generalized in a straightforward way to any functor by taking an appropriate (co)limit. The bad news is that this (co)limit is in general over a large category so it may not exist. This is where the so-called solution-set conditions come in; they are way to trim down this large category to a small one.

As many people already said there are various variations of this type of conditions, from the more general but also very cumbersome to check solution-set condition to easier conditions which combine some form of well-poweredness (each object has only a set of subobjects -- or quotients, whatever the case may be) with the existence of a small separating (or generating) set. One that guarantees the existence of a right adjoint and that sticks out particularly in my memory is the existence of a small dense subcategory -- check chapter V of Kelly's book on enriched category for the precise details. It is particularly memorable, because many categories come with god-given small dense categories like presheaf categories (courtesy of Yoneda) and sheaf categories (because dense composed with left adjoint is dense).

Later edit: many people have complained about the limited usefulness of the adjoint functor theorems in that in many cases there is a direct, and thus much more enlightening, construction. But there are situations where such a direct construction is not available. One that I came across recently is when studying P. Johnstone's book Stone spaces, more precisely chapter III and the section on Manes' theorem about the monadicity of the category of compact Hausdorff spaces. In the sequel, P. Johnstone proves another result due to Manes, the fact that category of algebras (in the sense of universal algebra) in the category of compact Hausdorff spaces is also monadic. He remarks that one has to use the GAFT (and Beck's monadicity theorem) in this case, because there is no easy direct description of the left adjoint. Later in the book (somewhere, I am quoting from memory and do not have the book by me), he argues why there is no simple recipe for the left adjoint.

$\endgroup$
1
  • $\begingroup$ +1 for the "later edit" - good to see Manes' theorem and Beck monadicity in this thread. $\endgroup$ Jul 16, 2022 at 4:43
7
$\begingroup$

A special case I have found particularly tractable is when the categories involved are locally presentable.

Theorem: Suppose $\mathcal{C}$ and $\mathcal{D}$ are locally presentable categories, and $F : \mathcal{C} \to \mathcal{D}$ is a functor. Then:

  • $F$ has a left adjoint if and only if it preserves limits and is accessible
  • $F$ has a right adjoint if and only if it preserves colimits

(ref: nLab)

A lot of nice categories are locally presentable, and there are enough structure theorems that you can often quickly verify that a category is locally presentable.

$\endgroup$
2
  • 1
    $\begingroup$ More generally, a functor $F$ between accessible categories is a left (resp. right) adjoint iff it is accessible and preserves all small colimits (resp. limits). This is in Borceux's book. If $C$ is locally presentable, and $F$ preserves colimits, then it is automatically accessible (because $C$ is cocomplete, or alternatively because it is total). $\endgroup$ Oct 26, 2020 at 13:38
  • $\begingroup$ Are varieties (equational classes) locally presentable? $\endgroup$
    – FNH
    Mar 3, 2021 at 5:28
6
$\begingroup$

There's the Freyd Adjoint Functor Theorem.

A right adjoint functor is continuous (commutes with limits) and a left adjoint functor is cocontinuous (commutes with colimits). So, if a functor has a left adjoint then it is continuous because it is a right adjoint. The adjoint functor theorem is a partial converse to this fact in the case that the domain category is complete (has all small limits) and the functor satisfies a "smallness condition".

$\endgroup$
6
  • $\begingroup$ I did say "easy-to-check..." :) $\endgroup$ Nov 17, 2009 at 6:30
  • $\begingroup$ It isn't always "easy" although this depends on your definition ;) but they are surprisingly checkable in some situations. I'll try and think of some good examples where this is used and edit my answer to include them if that would help. $\endgroup$ Nov 17, 2009 at 6:35
  • $\begingroup$ I think by "easy" I mean "quickly verifiable?" Analogously to checking that some limit really doesn't commute, to check that it's not. But if you could illustrate an example, yeah, that'd be fantastic. $\endgroup$ Nov 17, 2009 at 6:54
  • 2
    $\begingroup$ This is usually very easy to check. It's at least as easy as finding the initial morphism in Andrew Critch's answer because it's often easier to prove a general condition than find a specific instance. For example, for the adjoint of the inclusion functor you don't even need to know that abelianisation exists! It's enough that the inclusion AbGrp to Grp preserves the underlying sets and the adjunction follows for free. $\endgroup$ Nov 17, 2009 at 7:35
  • $\begingroup$ It's not all that hard to verify the definition directly in a lot of cases. Do you mean "not tedious"-to-check? $\endgroup$
    – marc
    Nov 17, 2009 at 18:16
5
$\begingroup$

Here is one situation where left and right adjoints always exist. Let $\mathcal{C}$ and $\mathcal{D}$ be semisimple $k$-linear categories such that

  • $\mathcal{C}$ has only finitely many simple objects, and
  • for any simple object $X$ of $\mathcal{C}$ or $\mathcal{D}$, $\operatorname{End}(X) \cong k$.

The second condition is automatic if $k$ is algebraically closed. Under these circumstances, any $k$-linear functor $\mathcal{C} \to \mathcal{D}$ has both a left and a right adjoint, and their constructions are quite explicit.

This fact is useful for working with fusion categories over an algebraically closed field (which automatically satisfy the conditions on $\mathcal{C}$).

$\endgroup$
1
$\begingroup$

Certainly the fundamental theorem of the addition and the existence theorem of Freyd. However, this theorem is the base of a whole literature (eg categories reflective), to investigate whether and under what circumstances the conditions of the theorem of Freyd occurred

(See, for example, "Abstract and Concrete Categories - The Joy of Cats" in http://www.tac.mta.ca/tac/reprints/index.html, or the old H. Herrlich, Topologische Reflexionen und Coreflexionen. Lecture Notes in Mathematics 78).

But there Is another smart and strategic way to the existence or nature of a functor as added, because the theory of monads and tripleability, we can lift an adjoint to a functor posted a diagram with suitable assumptions (there are several theorems respect).

See "Triples, algebras and cohomology Jonathan Mock Beck "in http://www.tac.mta.ca/tac/reprints/index.html

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.