diff --git a/pr10.cql b/pr10.cql
index bb4e262d6b40a215124257ed9b5b0a787064e9e9..33aace038270de6b93921a9b4d017c94c0cdbb5f 100644
--- a/pr10.cql
+++ b/pr10.cql
@@ -1,5 +1,8 @@
 .in
-B:1
+S:3,
+T:3
 
 .out
-B;
\ No newline at end of file
+S x T;
+filter (\(r) -> r[1]==r[2] and r[5]==r[6]);
+map (\(r) -> r[3,4]);
diff --git a/pr8.cql b/pr8.cql
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..909ff3ad5e863029c59b2c84f8d1ce9d95459c5d 100644
--- a/pr8.cql
+++ b/pr8.cql
@@ -0,0 +1,9 @@
+.in
+P:4,
+Q:4
+
+.out
+P x Q;
+filter (\(r) -> r[4]==r[8]);
+let f = \(p,q) -> if (isEmpty(q)) then p else q;
+map (\(r) -> [f(r[1],r[5]), f(r[2], r[6]), f(r[3], r[7]), f(r[4], r[8])]);
diff --git a/pr9.cql b/pr9.cql
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..42885d24d171cfd558b0b3ddfd607373e0fbfbcf 100644
--- a/pr9.cql
+++ b/pr9.cql
@@ -0,0 +1,13 @@
+.in
+R:2
+
+.out
+R x R x R;
+
+filter ( \(r) -> 
+                    r[2] == r[3]
+                    and
+                    r[4] == r[5]
+                 
+        );
+map (\(r) -> r[1,6]);