$25
Introduction to Computer Science
Problem 3.1: cartesian products
Prove or disprove the following two propositions:
a) (A ∩ B) × (C ∩ D) = (A × C) ∩ (B × D)
b) (A ∪ B) × (C ∪ D) = (A × C) ∪ (B × D)
(1+1 = 2 points)
Problem 3.2: reflexive, symmetric, transitive
(3 points)
For each of the following relations, determine whether they are reflexive, symmetric, or transitive. Provide a reasoning.
a) The absolute difference of the integer numbers a and b is less than or equal to 3.
R = {(a,b)|a,b ∈ Z ∧ |a − b| ≤ 3}
b) The last digit of the decimal representation of the integer numbers a and b is the same.
R = {(a,b)|a,b ∈ Z ∧ (a mod 10) = (b mod 10)}
Problem 3.3: total, injective, surjective, bijective functions (1+1 = 2 points)
Are the following functions total, injective, surjective, or bijective? Expain why or why not.
a) f : N 7→ N with f(x) = 2x2
b) f : R 7→ R with f(x) = x2 + 6
Problem 3.4: function composition (1 point)
Given the functions f(x) = x + 1. g(x) = 2x, and h(x) = x2, determine an expression for the following function compositions:
a) f ◦ g
b) f ◦ h
c) g ◦ f
d) g ◦ h
e) h ◦ f
f) h ◦ g
g) f ◦ (g ◦ h)
h) h ◦ (g ◦ f)
Problem 3.5: list comprehensions (haskell) (1+1 = 2 points)
Your list comprehensions should be correct, they do not have to be efficient. You are not getting points for a list comprehension simply returning a hard coded solution list. In other words, your list comprehensions should continue to function correctly if parameters are changed.
a) Write a list comprehension that returns all positive factors of the number 210. Try to write the list comprehension in such a way that 210 can easily be replaced by a different number.
b) Write a list comprehension that returns a list of Pythagorean triads (a,b,c), where a,b,c are positive integers in the range 1..100 and the Pythagorean triad is defined as a2 + b2 = c2. The list should not contain any “duplicates” where a and b are swapped. If the list contains (3,4,5) (since 32 + 42 = 25 = 52), then is should not also include (4,3,5).