Skip to content

Latest commit

 

History

History
72 lines (54 loc) · 1.83 KB

IncompleteContexts.org

File metadata and controls

72 lines (54 loc) · 1.83 KB

Incomplete Contexts in conexp-clj

Incomplete Contexts are used to represent contexts where some relations are unknown. See papers by Burmeister and Holzer for an introduction.

(def K (make-incomplete-context-from-matrix
        [1 2 3 4]
        [:a :b :c]
        [0 1 "?" "?" "?" 0 1 1 0 "?" "?" 1]))

K
  |:a :b :c 
--+---------
1 |.  x  ?  
2 |?  ?  .  
3 |x  x  .  
4 |?  ?  x  

We can compute possible and certain derivations:

(possible-attribute-derivation K [:a])
#{4 3 2}
(certain-attribute-derivation K [:a])
#{3}

and we can test if an implication is satisfiable in an incomplete context:

(satisfiable? (make-implication [:a] [:b]) K)
true
(satisfiable? (make-implication [:a] [:b :c]) K)
false

There are some convenience functions to convert between formal and incomplete contexts, e.g., to-incomplete-context, to-formal-context, incomplete-context->possible-incidences-context, incomplete-context->certain-incidences-context, and to draw the (certain/possible) concept lattice for an incomplete context, draw-certain-concept-lattice, draw-possible-concept-lattice.

Also, there is support for attribute exploration with incomplete information. Additionally there is support for attribute exploration with multiple experts that have compatible views (collaboration strategies) and incompatible views (shared implications).