 
 (defn transpose-context [ctx]
   (make-context (attributes ctx) (objects ctx) (set-of [m g] [[g m] (incidence ctx)])))
+
+(defn invert-context [ctx]
+  (make-context (objects ctx) (attributes ctx) (set-of [g m] [g (objects ctx)
+							      m (attributes ctx)
+							      :when (not ((incidence ctx) [g m]))])))
 
 (defn context-object-closure [ctx set-of-objects]
   (attribute-derivation ctx (object-derivation ctx set-of-objects)))

	  new-inz (filter #(and (new-obj (first %))
				(new-att (second %)))
			  inz)]
    (make-context new-obj new-att new-inz))))

(defn reduced? [ctx]
  (let [obj (objects ctx)

						    (attribute-derivation ctx #{n}))
				    (inz [g n]))))])))

(defn up-down-arrows [ctx] ; faster version?
  (intersection (up-arrows ctx) (down-arrows ctx)))

(defn reduce-context [ctx]
