   (if (not= (attributes ctx-1) (attributes ctx-2))
     (illegal-argument "Cannot do context subposition, since attribute sets are not equal."))
   (let [new-objs (union (set-of [g 1] [g (objects ctx-1)])
-			(set-of [g 2] [g (objects ctx-2)]))
-	new-inz  (union (set-of [[g 1] m] [[g m] (incidence ctx-1)])
-			(set-of [[g 2] m] [[g m] (incidence ctx-2)]))]
+                        (set-of [g 2] [g (objects ctx-2)]))
+        new-inz  (union (set-of [[g 1] m] [[g m] (incidence ctx-1)])
+                        (set-of [[g 2] m] [[g m] (incidence ctx-2)]))]
     (make-context-nc new-objs (attributes ctx-1) new-inz)))
 
 (defn context-transitive-closure

  \\]."
  [ctx-1 ctx-2]
  (let [G_1 (objects ctx-1)
	G_2 (objects ctx-2)
	M_1 (attributes ctx-1)
	M_2 (attributes ctx-2)
	I_1 (incidence ctx-1)
	I_2 (incidence ctx-2)

	new-objs (cross-product G_1 G_2)
	new-atts (cross-product M_1 M_2)
	new-inz  (set-of [[g_1, g_2], [m_1, m_2]]
			 [[g_1,g_2] new-objs
			  [m_1,m_2] new-atts
			  :when (<=> (I_1 [g_1,m_1])
				     (I_2 [g_2,m_2]))])]
    (make-context-nc new-objs new-atts new-inz)))

;;;

  \\]"
  [ctx-1 ctx-2]
  (let [new-objs (cross-product (objects ctx-1) (objects ctx-2))
        new-atts (disjoint-union (attributes ctx-1) (attributes ctx-2))
        inzs     [(incidence ctx-1) (incidence ctx-2)]
        new-inz  (set-of [g, [m, idx]]
                         [g new-objs
                          [m, idx] new-atts
                          :when ((inzs idx) [(g idx) m])])]
    (make-context-nc new-objs new-atts new-inz)))

(defn context-xia-product
