Skip to content
Snippets Groups Projects
Commit 2ee822f0 authored by Michael Kohlhase's avatar Michael Kohlhase
Browse files

working on synthesis

parent edf4577d
Branches
No related tags found
No related merge requests found
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{mindmap} \usetikzlibrary{mindmap}
\usepackage{metalogo} \usepackage{metalogo}
\usepackage{dtklogos} %\usepackage{dtklogos}
\usetikzlibrary{shapes, snakes} \usetikzlibrary{shapes, snakes}
\begin{document} \begin{document}
\begin{tikzpicture}[xscale=.9] \begin{tikzpicture}[xscale=.9]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
\def\mathhub{MathHub.info\xspace} \def\mathhub{MathHub.info\xspace}
\def\mmt{MMT\xspace} \def\mmt{MMT\xspace}
\def\ommt{OMDoc/MMT\xspace} \def\ommt{OMDoc/MMT\xspace}
\def\imgdir{} \def\imgdir#1{#1}
\subsection{Introduction} \subsection{Introduction}
We define the Active Documents as semantically annotated documents associated with a We define the Active Documents as semantically annotated documents associated with a
...@@ -136,8 +136,6 @@ fragments are not yet supported by Planetary. ...@@ -136,8 +136,6 @@ fragments are not yet supported by Planetary.
DocDash Widget on the Right)} DocDash Widget on the Right)}
\end{figure} \end{figure}
\subsection{Architecture}\label{sec:mathhub:arch} \subsection{Architecture}\label{sec:mathhub:arch}
\mathhub has four main components (see Figure~\ref{fig:arch}): \mathhub has four main components (see Figure~\ref{fig:arch}):
\begin{compactenum}[\em i\rm)] \begin{compactenum}[\em i\rm)]
......
...@@ -4,113 +4,38 @@ ...@@ -4,113 +4,38 @@
We will now highlight the features of the ADP and Jupyther notebooks with a view towards a We will now highlight the features of the ADP and Jupyther notebooks with a view towards a
possible unification of the systems. possible unification of the systems.
\subsection{Active Documents} \emph{Active Documents} need a Player process (e.g. the Planetary system) that makes them
Active Documents need a Player system (e.g. the Planetary system) that makes them
executable, gives access to provenance and copyright/licensing information, and supports executable, gives access to provenance and copyright/licensing information, and supports
various forms of validation. Figure~\ref{fig:graph2} shows the situation in analogy to various forms of validation. Figure~\ref{fig:graph2} shows the situation in analogy to
Figure~\ref{fig:activedocs}: On the left we see an active document as it is seen by the Figure~\ref{fig:activedocs}: On the left we see an active document -- a web page in a
user: it contains text interspersed with regions that are interactive because they have browser -- as it is seen by the user: it contains text interspersed with regions that are
been bound to semantic services, which are executed by the player system -- in the middle interactive because they have been bound to semantic services, which are executed by the
-- that interprets the represented content structures -- here depicted by a theory graph player system -- in the middle -- that interprets the represented content structures --
on the right. the mathematical knowledge; here depicted by a theory graph on the right.
\begin{figure}[ht] \begin{figure}[ht]
\input{ActDocRepresentation} \input{ActDocRepresentation}
\caption{Active Documents}\label{fig:graph2} \caption{Active Documents}\label{fig:graph2}
\end{figure} \end{figure}
In \emph{Juypther the situation is similar}, the user interacts with a dynamic web page --
the Jupyther notebook -- in a browser that is a mathematical text interspersed with areas
\subsection{Jupyther} of interactivity: the computation cells. These can generate mathematical content and righ
media output into the notebook upon user request. We see the notebook on the left of
Project Jupyther is build by three main components: a web application, a representation of Figure~\ref{fig:graph3}. Again, we have a ``player process'': the Jupyther kernel that
it, called a notebook and the kernels, which are the key of communication between the runs the code for that notebook. This is depicted as the ``machine'' on the right, which
first two. relies on the mathematical knowledge enoded as mathematical program code.
The web application consists of a browser-based tool for interactive authoring of
documents which combine explanatory text, mathematics, computations and their rich media
output. This application leads to features such as in-browser editing for code, The
ability to execute code from the browser, display of the result of computation using rich
media representations etc.
The notebook documents are a representation of all content visible in the web application,
including inputs and outputs of the computations, explanatory text, mathematics, images,
and rich media representations of objects. Notebooks can be exported to different static
formats including HTML, reStructeredText, LaTeX, PDF, and slide shows. Furthermore, any
notebook document, available from a public URL or GitHub, can be shared via
"nbviewer". This service loads the notebook document from the URL and renders it as a
static web page.
For each notebook document that a user opens, the web application starts a kernel that
runs the code for that notebook. Each of these kernels communicate with the notebook web
application and web browser using a JSON over ZeroMQ/WebSockets message protocol.
\begin{figure}[ht] \begin{figure}[ht]
\input{JupyterRepresentation} \input{JupyterRepresentation}
\caption{Jupyter Communication}\label{fig:graph3} \caption{Jupyter Communication}\label{fig:graph3}
\end{figure} \end{figure}
\subsection{Similarities} This already hints at a synthesis of the two systems; we make this explicit in
Figure~\ref{fig:graph4}: We
The common features of the two system come in terms of user capacity: both act with
respect to the input of the user, either with prerequisites utilities, or with live code
as the demand.
A strong connection between the two is without doubt is the net of contents in which the
search is possible. Disregarding the fact that for the Active Documents is built by the
document player, whereas Jupyter has it contained into the machine, the whole idea of
interactivity is based on it. The approach to a collection of documents is seen as the
formation of the net, which is capable of providing the output.
Due to their similar characteristic, we believe that a combination between the Active
Documents and the Jupyter Project is feasible and can be complementary. In this sense, the
features of each application can be extended by the other, as presented in Figure
11. Adding the powerful Jupyter machine to the flexibility presented by the Active
Documents can extend the notion of a virtual notebook, making it both user-friendly and
efficient.
\subsection{Differences}
\subsubsection{User Interface}
While both the Active Documents and Project Jupyter provide a highly interactivity between
the user and the content itself, the means in which they make the communication possible
is different.
Since the Active Documents are focused on extending everything from a document, the user
is able to randomly check, modify or inspect any part of the it, with features such as
\textit{Definition Lookup, Semantic Folding, Prerequisites Navigation, Executable
Formulae} or \textit{Unit Conversion}. This form of processing grants the user to have
full access to the contents included in a paper, making the most out of interactivity.
In contrast to this user-friendliness, the web application of Project Jupyter provides a
much more rigid approach to the interactivity. The user is able to process the information
throughout insertion of written code. In this manner, the procedures of linking the
papers, lookup and other features from the Active Documents are not presented here,
keeping them obscure to the person using the application.
\subsubsection{Communication}
The linkage between sources and documents is the key to the communication inside the two
projects. While the Active Documents need a Document Player, such as the Planetary System,
in order to make the most out of its features, Jupyter is independent, with no need to
depend on another program.
In order to benefit from its great features, the Active Documents depend on a so called
document player. An example of this sort of communication is the Planetary System
discussed above. Capable of containing, organizing and exploring a vast collection of
documents, Planetary is the key of communication within the Active Documents.
On the other hand, Project Jupyter uses the kernels in order to include, link and produce
papers. Inside the program's machine, the interactivity of the documents is already
created, thus the attribute of the kernel is to exchange information and to provide the
output. Perhaps the most important difference between the two systems lies into their form
of providing the data to the user. While the Active Documents form the connection when
requested by the user, the Jupyter system stores all the connection and just addresses
them, in order to compute the command.
\subsection{Next Steps: Active Computational Documents}\label{sec:steps}
\begin{figure}[ht] \begin{figure}[ht]
\input{Syntesis} \input{Syntesis}
......
...@@ -2,9 +2,8 @@ ...@@ -2,9 +2,8 @@
\usepackage[landscape]{geometry} \usepackage[landscape]{geometry}
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{mindmap} % \usetikzlibrary{mindmap}
\usepackage{metalogo} % \usepackage{metalogo}
\usepackage{dtklogos}
\usetikzlibrary{shapes, snakes} \usetikzlibrary{shapes, snakes}
\begin{document} \begin{document}
\begin{tikzpicture}[xscale=.9] \begin{tikzpicture}[xscale=.9]
...@@ -25,47 +24,44 @@ ...@@ -25,47 +24,44 @@
\draw[style=thick, fill=cyan] (-12.5, -1.25) rectangle (-7.5, -3); \draw[style=thick, fill=cyan] (-12.5, -1.25) rectangle (-7.5, -3);
\node[align=left, text width=4cm] at (-9.75,-2) {Mathematics formulae inserted.}; \node[align=left, text width=4cm] at (-9.75,-2) {Mathematics formulae inserted.};
%% Jupyther Program % First machine
\path[draw, fill=blue!10] \path[draw, fill=blue!10]
(-5, -3) -- (-6, -3.5) --
(-5, 1.5) -- (-6, 1.5) --
(-5, 3) -- (-6.5, 1.5) --
(-4.75, 3) -- (-6, 1.75) --
(-6, 4) -- (-6, 3.5) --
(2, 4) -- (-5.75, 3.5) --
(0.75, 3) -- (-6.25, 4) --
(1, 3) -- (-2.75, 4) --
(1, 1) -- (-3.25, 3.5) --
(2.5, 0) -- (-2.5, 3.5) --
(1, 0) -- (-2.5, -3.5) --
(1, -3) --
cycle; cycle;
\node at (-4.5, 3) {\Huge J};
\node at (-4.5, 2) {\Huge U};
\node at (-4.5, 1) {\Huge P};
\node at (-4.5, 0) {\Huge Y};
\node at (-4.5, -1) {\Huge T};
\node at (-4.5, -2) {\Huge E};
\node at (-4.5, -3) {\Huge R};
\tikzstyle{every node} = [circle] \tikzstyle{every node} = [circle]
\node[fill=cyan] (a) at (-3.5, -2) { }; \node[fill=cyan] (a) at (-1.5, -2) { };
\node[fill=cyan] (b) at (-0.5, -2) { }; \node[fill=cyan] (b) at (1.5, -2) { };
\node[fill=cyan] (c) at (-0.5, 1) { }; \node[fill=cyan] (c) at (1.5, 1) { };
\node[fill=cyan] (d) at (-3.5, 1) { }; \node[fill=cyan] (d) at (-1.5, 1) { };
\node[fill=cyan] (e) at (-2, -0.5) { }; \node[fill=cyan] (e) at (0, -0.5) { };
\foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e} \foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e}
\draw [-] (\from) -- (\to); \draw [-] (\from) -- (\to);
\node[align=center, text width=4cm] at (-2,2) {\huge Program}; \node[align=center, text width=4cm] at (0,2) {\huge Notebook};
\end{tikzpicture} \end{tikzpicture}
\end{document} \end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{mindmap} \usetikzlibrary{mindmap}
\usepackage{metalogo} \usepackage{metalogo}
\usepackage{dtklogos} %\usepackage{dtklogos}
\usetikzlibrary{shapes, snakes} \usetikzlibrary{shapes, snakes}
\begin{document} \begin{document}
\begin{tikzpicture} \begin{tikzpicture}
...@@ -36,49 +36,50 @@ ...@@ -36,49 +36,50 @@
\draw[fill=cyan] (-11.55, -3.25) rectangle (-9.5, -2.75); \draw[fill=cyan] (-11.55, -3.25) rectangle (-9.5, -2.75);
\node[align=left, text width=2cm] at (-10.5,-3) {interactive.}; \node[align=left, text width=2cm] at (-10.5,-3) {interactive.};
%% Jupyther Program % First machine
\path[draw, fill=blue!10] \path[draw, fill=blue!10]
(-5, -3) -- (-6.5, -3.5) --
(-5, 1.5) -- (-6.5, 1.5) --
(-5, 3) -- (-7, 1.5) --
(-4.75, 3) -- (-6.5, 1.75) --
(-6, 4) -- (-6.5, 3.5) --
(2, 4) -- (-6.25, 3.5) --
(0.75, 3) -- (-6.75, 4) --
(1, 3) -- (-3.25, 4) --
(1, 1) -- (-3.75, 3.5) --
(2.5, 0) -- (-3, 3.5) --
(1, 0) -- (-3, -3.5) --
(1, -3) --
cycle; cycle;
\tikzstyle{every node} = [circle]
\node[fill=cyan] (a) at (-3.5, -2) { }; %% Jupyther Program
\node[fill=cyan] (b) at (-0.5, -2) { };
\node[fill=cyan] (c) at (-0.5, 1) { }; \node[circle,fill=cyan] (a) at (-2, 1) { };
\node[fill=cyan] (d) at (-3.5, 1) { }; \node[circle,fill=cyan] (b) at (0, 1) { };
\node[fill=cyan] (e) at (-2, -0.5) { }; \node[circle,fill=cyan] (c) at (0, 3) { };
\node[circle,fill=cyan] (d) at (-2, 3) { };
\node[circle,fill=cyan] (e) at (-1, 2) { };
\foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e} \foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e}
\draw [-] (\from) -- (\to); \draw [-] (\from) -- (\to);
\node[align=center, text width=4cm] at (-2,2) {\huge Program}; \node[align=center, text width=4cm] at (-1,3.5) {\huge Notebook};
%\draw [<->] (-8.5,0) -- (-7,0) node[pos=.5,sloped,above] {};
\draw [<->] (-8.5,0) -- (-5.5,0) node[pos=.5,sloped,above] {}; \node[align=center, text width=4cm] at (-1,-.3) {\huge Knowledge};
\node[draw, fill=cyan!30, thick] (a) at (-2, -3) {Thy};
\node[draw, fill=cyan!30, thick] (b) at (0, -3) {Thy};
\node[draw, fill=cyan!30, thick] (c) at (0, -1) {Thy};
\node[draw, fill=cyan!30, thick] (d) at (-2, -1) {Thy};
\node[draw, fill=cyan!30, thick] (e) at (-1, -2) {Thy};
\foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e}
\draw [-] (\from) -- (\to);
\end{tikzpicture} \end{tikzpicture}
\end{document} \end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
\begin{document} \begin{document}
\providecommand\myxscale{1} \providecommand\myxscale{1}
\providecommand\myyscale{1} \providecommand\myyscale{1}
\providecommand\imgdir{../img} \providecommand\imgdir[1]{#1}
\providecommand\myfontsize{\normalsize} \providecommand\myfontsize{\normalsize}
\begin{tikzpicture}[xscale=\myxscale,yscale=\myyscale]\myfontsize\sf \begin{tikzpicture}[xscale=\myxscale,yscale=\myyscale]\myfontsize\sf
\pgfdeclareimage[width=1cm]{user}{\imgdir/user} \pgfdeclareimage[width=1cm]{user}{user}
\pgfdeclareimage[width=1cm]{author}{\imgdir/author} \pgfdeclareimage[width=1cm]{author}{author}
\tikzstyle{system} = [rectangle, draw, fill=blue!20, text width=1.1cm, text centered, \tikzstyle{system} = [rectangle, draw, fill=blue!20, text width=1.1cm, text centered,
rounded corners, minimum height=.8cm,shade, rounded corners, minimum height=.8cm,shade,
top color=white, bottom color=blue!20] top color=white, bottom color=blue!20]
......
...@@ -52,22 +52,8 @@ ...@@ -52,22 +52,8 @@
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\tocsection {}{4}{A Joint Perspective and Generalization of Jupyther and Active Documents}}{16}{section.4} \contentsline {section}{\tocsection {}{4}{A Joint Perspective and Generalization of Jupyther and Active Documents}}{16}{section.4}
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{4.1}{Active Documents}}{16}{subsection.4.1} \contentsline {section}{\tocsection {}{5}{Conclusion}}{17}{section.5}
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{4.2}{Jupyther}}{16}{subsection.4.2} \contentsline {subsection}{\tocsubsection {}{}{Acknowledgements}}{18}{section*.2}
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{4.3}{Similarities}}{17}{subsection.4.3} \contentsline {section}{\tocsection {}{}{References}}{19}{section*.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{4.4}{Differences}}{17}{subsection.4.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\tocsubsubsection {}{4.4.1}{User Interface}}{17}{subsubsection.4.4.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\tocsubsubsection {}{4.4.2}{Communication}}{17}{subsubsection.4.4.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{4.5}{Next Steps: Active Computational Documents}}{18}{figure.12}
\defcounter {refsection}{0}\relax
\contentsline {section}{\tocsection {}{5}{Conclusion}}{19}{section.5}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\tocsubsection {}{}{Acknowledgements}}{19}{section*.2}
\defcounter {refsection}{0}\relax
\contentsline {section}{\tocsection {}{}{References}}{20}{section*.3}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment