In the classical and intuitionistic propositional calculi, it is straightforward, using natural deduction, to derive $((A \land C) \lor (B \land C))$ from $(A \lor B) \land C$:

    • Assume $(A \lor B) \land C$.
    • $A \lor B$ by conjunction elimination with 1.
    • $C$ by conjunction elimination with 1.
      • Assume $A$.
      • $A \land C$ by conjunction introduction with 3 and 4.
      • $(A \land C) \lor (B \land C)$ by disjunction introduction with 5.
      • Assume $B$.
      • $B \land C$ by conjunction introduction with 3 and 7.
      • $(A \land C) \lor (B \land C)$ by disjunction introduction with 8.
    • $(A \land C) \lor (B \land C)$ by disjunction elimination with 2, 4–6, and 7–9.

In a categorical treatment of the same, conjunction is a product, disjunction is a coproduct, and the task is to find an arrow $h\colon (A \lor B) \land C \to (A \land C) \lor (B \land C)$. I've been drawing commutative diagrams for a few hours yet, and no such arrow is presenting itself. The logic has products, coproducts, and exponentials, and should be, as I understand it, bicartesian closed. That definition of bicartesian closed includes the condition that products distribute over coproducts, and adds an appropriate equation. Do I have to appeal to that equation to get $h$, or can I demonstrate the arrow I want without it?

As to motivation, I've already got arrows $f\colon A \land C \to D$ and $g\colon B \land C \to D$, so I can construct the coproduct arrow $[f,g]\colon (A \land C) \lor (B \land C) \to D$. Had I $h$, I could construct what I really want: $h \circ [f,g]\colon (A \lor B) \land C \to D$. If I can't construct an arrow $h$, as described, I'd still be fine with a way of demonstrating, given an arrow $(A \lor B) \land C \to D$, another arrow $(A \land C) \lor (B \land C) \to D$ that doesn't appeal to an arrow like $h$.

  • $\begingroup$ There is always a canonical morphism $A \times C + B \times C \to (A + B) \times C$, in any category. $\endgroup$ – Zhen Lin Apr 30 '13 at 17:19
  • $\begingroup$ @ZhenLin Wikipedia has an article on distributive categories, giving Set as an example of a distributive category, and Grp as an example of a category that is not distributive. Wouldn't a non-distributive category lack a categorical morphism $A \times C + B \times C \to (A + B) \times C$? $\endgroup$ – Joshua Taylor Apr 30 '13 at 17:33
  • $\begingroup$ As I said, the canonical morphism always exists. I did not say anything about it being an isomorphism. (It is constructed using the universal property of coproducts, of course.) $\endgroup$ – Zhen Lin Apr 30 '13 at 17:35
  • $\begingroup$ Dually, $(A \times B) + C \to (A + C \times B + C)$ always exists as well. Going in the other direction is where things get trickier. $\endgroup$ – camccann Apr 30 '13 at 17:43
  • 1
    $\begingroup$ The canonical morphism is so named because it follows directly from the definitions of the product and coproduct, so it doesn't really tell you anything about its inverse (which may not exist). $\endgroup$ – camccann Apr 30 '13 at 18:08

You can curry $f$ and $g$ to get arrows $f' \colon A \to D^C$ and $g' \colon B \to D^C$. The copairing of those is then $[f',g']\colon (A \lor B) \to D^C$, which can then be uncurried to get an arrow $(A \lor B) \land C \to D$. This approach can also be used to construct the distribution arrow, if you want that instead.

Note that this only relies on conjunction providing a monoidal closed category, and does not require that conjunction be the categorical product. A dual construction is possible in a co-closed (is that the right term?) category using co-currying to distribute over a product, such as in linear logic where multiplicative disjunction distributes over additive conjunction.

  • $\begingroup$ Thanks! That's exactly what I needed. I had to take a look for a moment and figure out exactly how to uncurry, but that's pretty straightforward. Just so anyone else reading this question knows: (1) From $(A \lor B) \land C$ take the projection to $A \lor B$ and compose with $[f',g']$ to get $(A \lor B) \land C \to D^C$. (2) From $(A \lor B) \land C$, take the projection to $C$. (3) Take the product arrow of the arrows from (1) and (2) to get an arrow $(A \lor B) \land C \to D^C \land C$. (4) Compose the arrow from (3) with the eval arrow for $D^C$ to get $(A \lor B) \land C \to D$. $\endgroup$ – Joshua Taylor Apr 30 '13 at 15:43
  • $\begingroup$ @JoshuaTaylor: The definition of a monoidal closed category includes that currying is a bijection, so it isn't actually necessary to derive that. I believe it's also possible to derive both directions using only the eval arrow and without relying on the product projections. This is all pretty easy to reconstruct in a cartesian closed category, though. $\endgroup$ – camccann Apr 30 '13 at 15:56
  • $\begingroup$ At the moment, I'm using categorical representations for proof translation (e.g., mapping $f \colon B \to C$ in $\mathbf{C}[x\colon \top \to A]$ to an arrow $f'\colon B \land A \to C$ in $\mathbf{C}$). I want as much proof structure on hand as possible, so I'm trying to not appeal to equations when I can derive the equivalence otherwise. One possible application is automatically translating natural deduction proofs to Hilbert-style proofs, as discussed in this question. Later proof simplification will use lots of equational theory, though. $\endgroup$ – Joshua Taylor Apr 30 '13 at 16:19
  • $\begingroup$ @JoshuaTaylor: If you're working in an intuitionistic setting, quite a few tools along these lines already exist in the context of typed lambda calculi--e.g., the proof in your question can be read off directly as a lambda term whose type is the formula being proved, and a program that can convert it to use only function composition and application exists (and is used largely to entertain other programmers). $\endgroup$ – camccann Apr 30 '13 at 16:55
  • $\begingroup$ Some of the proof systems I'll be looking at aren't intuitionistic, but those tools are still valuable references. In fact, many of the translations I'll be looking at aren't for getting from $\mathbf{C}[x]$ to $\mathbf{C}$. For instance, one translation will take proof calculi for modal logics to their counterparts in the first-order encoding of their Kripke semantics. $\endgroup$ – Joshua Taylor Apr 30 '13 at 17:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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