a) Since \\( m \rightarrow n \\) implies that m divides n, then the product \\( x \times y \\) should contain one morphism \\( x \times y \rightarrow x \\) and one \\( x \times y \rightarrow y \\). So basically, we want \\( x \times y \\) such as it divides both \\( x \\) and \\( y \\). And that's the greatest common divisor of those two numbers: 3

b) Similarly, we want the product to be both a subset of \\( \{a,b,c\} \\) and \\( \{b,c,d\} \\). And that is the intersection: \\( \{b, c\} \\)

c) In this one we have that \\( a \times b \rightarrow a \\) and \\( a \times b \rightarrow b ||) should be a tautology. So this should be the `and` operator and the value is `False`

In any case, we can test (not prove) all of those with this Haskell code:

https://gist.github.com/folivetti/e0ded9e8469388b6d00676d394a92c0d

b) Similarly, we want the product to be both a subset of \\( \{a,b,c\} \\) and \\( \{b,c,d\} \\). And that is the intersection: \\( \{b, c\} \\)

c) In this one we have that \\( a \times b \rightarrow a \\) and \\( a \times b \rightarrow b ||) should be a tautology. So this should be the `and` operator and the value is `False`

In any case, we can test (not prove) all of those with this Haskell code:

https://gist.github.com/folivetti/e0ded9e8469388b6d00676d394a92c0d