• Keine Ergebnisse gefunden

Exploratory Programming for Formal Concept Analysis — An Introduction to conexp-clj

N/A
N/A
Protected

Academic year: 2022

Aktie "Exploratory Programming for Formal Concept Analysis — An Introduction to conexp-clj"

Copied!
80
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Exploratory Programming for Formal Concept Analysis

An Introduction toconexp-clj

Daniel Borchmann

TU Dresden

May 24, 2013

http://www.math.tu-dresden.de/~borch/conexp-clj/icfca2013-tutorial.html

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 1 / 14

(2)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool?

Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

(3)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 2 / 14

(4)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

(5)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 2 / 14

(6)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

(7)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 2 / 14

(8)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

(9)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools

conexp-clj!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 2 / 14

(10)

Motivation Why another FCA Tool?

Main Question

Why another FCA tool? Many tools which can do things fast and well!

The “Problem”

But what if you want to do something else?

What if you want to process your results further on?

What if you want to do something from which you arenot completely sure of?

Solution

Need flexible “FCA scripting”

Hard to achieve with available tools conexp-clj!

(11)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 3 / 14

(12)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

(13)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 3 / 14

(14)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise)

FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

(15)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 3 / 14

(16)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for

High performance computations Data-intense computations GUI enthusiasts

(17)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for High performance computations

Data-intense computations GUI enthusiasts

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 3 / 14

(18)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for High performance computations Data-intense computations

GUI enthusiasts

(19)

Motivation Goods and Bads

Whatconexp-cljis good for

flexible tool to try out new ideas in FCA

suitable forexploratory programming, i. e. trying out new algorithms to see if they are correct and how they behave

compute non-trivial examples (pedagogical or otherwise) FCA scripting

Whatconexp-cljisnotgood for High performance computations Data-intense computations GUI enthusiasts

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 3 / 14

(20)

Motivation Main Features

Main Features ofconexp-clj(Overview) basic operations on formal contexts relational algebra with formal contexts

transparent IO for formal and many-valued contexts scaling for many-valued contexts

implicational theory and basic attribute exploration computing Luxenburger-bases and iceberg concept sets lattice layouts and lattice IO (some...)

a bit of fuzzy-FCA interface for Java interface for sage

(21)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM highly portable (JVM)

highly flexible (Lisp)

transparent access to all Java functionality compiled

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 5 / 14

(22)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM

highly portable (JVM) highly flexible (Lisp)

transparent access to all Java functionality compiled

(23)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM highly portable (JVM)

highly flexible (Lisp)

transparent access to all Java functionality compiled

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 5 / 14

(24)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM highly portable (JVM)

highly flexible (Lisp)

transparent access to all Java functionality compiled

(25)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM highly portable (JVM)

highly flexible (Lisp)

transparent access to all Java functionality

compiled

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 5 / 14

(26)

Basic Principles Design Principles

Implementation

implemented in Clojure, a Lisp dialect running on the JVM highly portable (JVM)

highly flexible (Lisp)

transparent access to all Java functionality compiled

(27)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 6 / 14

(28)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

(29)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 6 / 14

(30)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj

Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

(31)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 6 / 14

(32)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

(33)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 6 / 14

(34)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

(35)

Basic Principles Installing and Running

Prerequisites

Java 1.6 or higher (JRE sufficient)

Download and Installation

Go toconexp-clj’s website:http://github.com/exot/conexp-clj Move toHow to Run

Download one of the .zip files and unpack them where you want

Running

Run./bin/conexp-cljfor a simple (yet sufficient!) command-line interface

Run./bin/conexp-clj --guifor a “convenient” (but mostly broken) graphical user interface

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 6 / 14

(36)

Basic Principles Principle Workflow

Code user=>

1 1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

(37)

Basic Principles Principle Workflow

Code user=>1

1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 7 / 14

(38)

Basic Principles Principle Workflow

Code user=>1 1

user=>

(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

(39)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2)

3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 7 / 14

(40)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2) 3

user=>

(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

(41)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 7 / 14

(42)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . . user=>

(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

(43)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!")

nil user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 7 / 14

(44)

Basic Principles Principle Workflow

Code user=>1 1

user=>(+ 1 2) 3

user=>(make-context #{1 2 3} #{0 1 2} <=)

|0 1 2 --+---

1 |. x x 2 |. . x 3 |. . .

user=>(javax.swing.JOptionPane/showMessageDialog nil "Wow!") nil

user=>

(45)

Basic Principles An Example

Example

live!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 8 / 14

(46)

Basic Principles An Example

Example live!

(47)

Outlook More Concepts

Code (Functions) user=>

(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(48)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(49)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>

(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(50)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5)

8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(51)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>

(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(52)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(53)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>

(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(54)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5])

15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(55)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>

(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(56)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10))

362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(57)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>

(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(58)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6])

(7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

(59)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>

(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(60)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6])

(1 3 5) user=>

(61)

Outlook More Concepts

Code (Functions)

user=>(defn f [x] (+ x 3))

#’user/f user=>(f 5) 8

user=>(def f (fn [x] (+ x 3)))

Code (Functional Programming) user=>(reduce + [1 2 3 4 5]) 15

user=>(reduce * (range 1 10)) 362880

user=>(map f [4 5 6]) (7 8 9)

user=>(filter odd? [1 2 3 4 5 6]) (1 3 5)

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 9 / 14

(62)

Outlook Stegosaurus

Task

Is there a correlation between the number of intents and the number of pseudo intents of a formal context?

0 500 1,000 1,500 2,000 0

50 100 150 200 250

(63)

Outlook Stegosaurus

Task

Is there a correlation between the number of intents and the number of pseudo intents of a formal context?

0 500 1,000 1,500 2,000 0

50 100 150 200 250

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 10 / 14

(64)

Outlook Stegosaurus

Code

(defpoints (map(fn [_]

(let [ctx (reduce-context (random-context (rand-int 2048) 11

(rand)))]

(list(count(intents ctx))

(count(pseudo-intents ctx))))) (range 1 1000)))

(65)

Outlook In Case You Need Help

Code user=>

(doc make-context) ---

conexp.main/make-context

([objects attributes incidence])

Standard constructor for contexts. Takes a sequence of objects,

a sequence of attributes and either a set of pairs or function of

... nil

user=>(find-doc "formal context") ---

conexp.fca.implications/proper-premises-by-hypertrans ...

conexp.fca.implications/proper-premises-for-attribute ...

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 12 / 14

(66)

Outlook In Case You Need Help

Code

user=>(doc make-context)

---

conexp.main/make-context

([objects attributes incidence])

Standard constructor for contexts. Takes a sequence of objects,

a sequence of attributes and either a set of pairs or function of

... nil

user=>(find-doc "formal context") ---

conexp.fca.implications/proper-premises-by-hypertrans ...

conexp.fca.implications/proper-premises-for-attribute ...

user=>

(67)

Outlook In Case You Need Help

Code

user=>(doc make-context) ---

conexp.main/make-context

([objects attributes incidence])

Standard constructor for contexts. Takes a sequence of objects,

a sequence of attributes and either a set of pairs or function of

...

nil user=>

(find-doc "formal context") ---

conexp.fca.implications/proper-premises-by-hypertrans ...

conexp.fca.implications/proper-premises-for-attribute ...

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 12 / 14

(68)

Outlook In Case You Need Help

Code

user=>(doc make-context) ---

conexp.main/make-context

([objects attributes incidence])

Standard constructor for contexts. Takes a sequence of objects,

a sequence of attributes and either a set of pairs or function of

...

nil

user=>(find-doc "formal context")

---

conexp.fca.implications/proper-premises-by-hypertrans ...

conexp.fca.implications/proper-premises-for-attribute ...

user=>

(69)

Outlook In Case You Need Help

Code

user=>(doc make-context) ---

conexp.main/make-context

([objects attributes incidence])

Standard constructor for contexts. Takes a sequence of objects,

a sequence of attributes and either a set of pairs or function of

...

nil

user=>(find-doc "formal context") ---

conexp.fca.implications/proper-premises-by-hypertrans ...

conexp.fca.implications/proper-premises-for-attribute ...

user=>

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 12 / 14

(70)

The End Outlook and Further Development

The Future

A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

(71)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 13 / 14

(72)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance

More flexible IO system More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

(73)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 13 / 14

(74)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

(75)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 13 / 14

(76)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...)

C backend for better performance Retain flexibility, but increase speed

(77)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 13 / 14

(78)

The End Outlook and Further Development

The Future A better GUI

Java backend for more performance More flexible IO system

More documentation

Alternate Reality

Reimplementation in Guile (Scheme, Python, Lua, ...) C backend for better performance

Retain flexibility, but increase speed

(79)

The End Outlook and Further Development

Exercises!

Daniel Borchmann (TU Dresden) conexp-clj May 24, 2013 14 / 14

(80)

The End Outlook and Further Development

Thank You!

Referenzen

ÄHNLICHE DOKUMENTE

For the worst case, when a bipartite graph contains the vertex subsets of the same cardinality |V1 | = |V2 |, the algorithm requires the DP matrix one-quarter of the size of that

Secondly, Mie computations for extinction, absorption, scattering, back- scattering and asymmetric scattering are made with the 4 normalised distributions over the frequency range

Figure 3 exemplarily illustrates two cases where the algorithm extends the neighborhood of the cell with altitude 7 and precalculates the flow directions of all cells of the

These requirements are both gathered out of the mentioned works and derived from several scientific WfMSs: Kepler [Al04], Taverna [Oi06], and Triana [Ch05] are scientific

With the same method, we can read the intent and the extent of every formal concept in the diagram. For example, consider the concept circle labeled. Its extent consists of all

Specification Language: TASTYL, the TASTY input Language, allows to describe SFE protocols as sequence of operations on encrypted data based on combinations of Gar- bled Circuits

Now, using Theorem 7, it is easy to verify the main claim of [1], 5.25 - namely, the claim that the map V p defined in [1], 5.25 is a functorial group endomorphism of the Witt

The value of file- name specified on the command line will override any value of OCTAVE_INFO_FILE found in the environment, but not any commands in the system or user startup files