diff --git a/doc/report/applications.tex b/doc/report/applications.tex
index 287b3ec3e49efd698e9b903df1d3c066a272e29c..b22a954bb4e0c0c4c2e29a0e71366c44083f4d57 100644
--- a/doc/report/applications.tex
+++ b/doc/report/applications.tex
@@ -154,36 +154,47 @@ implementations.
     problems with a given property (runtime complexity). We need
     to consider where each of these three components might be stored.
 
-    \textbf{Symbolic Aspect} First, let us consider
+    \textbf{Symbolic and Concrete Aspects} First, let us consider
     algorithms. Algorithms can be formulated as computer code which
-    should be accessible from storage for symbolic knowledge. But
-    symbolic knowledge encodes just the algorithm itself, not what the
-    algorithm is for nor is it possible to quickly evaluate properties
-    such as $NP$~completeness for querying. Such meta data needs to be
-    stored in a separate index.
-
-    \textbf{Organizational Aspect} The purpose of a given algorithm
-    (what problem it solves) as well as meta properties such as time
-    and space complexity needs to be stored in a separate index. For
-    this to be easy to look up, we propose to file this meta
-    information as organizational knowledge. It certainly isn't easily
-    searchable from symbolic or narrative knowledge and nor is it
-    concrete knowledge as we are talking about general properties of
-    algorithms.
-
-    While ULO has a concept of \texttt{ulo:theorem}
-    and \texttt{ulo:proof}, there is no native way to represent
-    (a)~problems (e.g.\ the traveling salesman problem) and
-    (b)~algorithms that compute a given problem. If ULO had such a
-    concept, we could then introduce new data predicates that tell us
-    something about the properties of problems and
-    algorithms. Organized in such a schema, query~$\mathcal{Q}_2$
-    would be easy to service.
-
-    Of course the question here is whether adding another first level
-    concept to ULO is a good idea or whether it would be better to
-    think of another ontology for algorithms. We leave this for later
-    discussion.
+    can be understood as symbolic knowledge (code represented as a
+    syntax tree) or as concrete knowledge (code as text
+    files)~\cites[pp. 8--9]{tetra}{virt}. Either way, we will not be
+    able to query these indices for what problem a given algorithm is
+    solving, nor is it possible to infer properties as complex as
+    $NP$-completeness automatically. Meta data of this kind needs to be
+    stored in a separate index for organizational knowledge, it being
+    the only fit.
+
+    \textbf{Organizational Aspect} If we wish to look up properties
+    about algorithms from organizational knowledge, we first have to
+    think about how to represent this information. We propose to
+    approaches, one using the existing ULO ontology and one that
+    recommends extending ULO to nativly support the concept of
+    algorithms. Both approaches have their distinct trade-offs.
+
+    \textbf{Representing Algorithms} As a first approach, we can try
+    to represent algorithms and problems in terms of existing ULO
+    predicates. As ULO does have a concept of \texttt{theorem} and
+    \texttt{proof}, it might be tempting to exploit the Curry-Howard
+    correspondence and represent algorithms understood as programs in
+    terms of proofs.  But that does not really capture the canonical
+    understanding of algorithms; algorithms are not actually programs,
+    rather there are programs that implement algorithms. Even if we do
+    work around this problem, it is not clear how to represent
+    problems (e.g.\ the traveling salesman problem or the sorting
+    problem) in terms of theorems (propositions, types) that get
+    implemented by a proof (algorithm, program).
+
+    As algorithms make up an important part of certain areas of
+    research, it might be reasonable to introduce native level support
+    for algorithms in ULO or separately in another ontology. An
+    argument for adding support directly to ULO is that ULO aims to be
+    universal and as such should not be without algorithms. An
+    argument for a separate ontology is that what we understand as ULO
+    data sets (Isabelle, Coq) exports already contain triplets from
+    other ontologies (e.g.\ Dublin Core meta data~\cite{dcreport,
+    dcowl}) and keeping concepts separate is not entirely
+    unattractive in itself.
 
     \item \textbf{$\mathcal{Q}_3$ ``Find integer sequences whose
     generating function is a rational polynomial in $\sin(x)$ that has
diff --git a/doc/report/references.bib b/doc/report/references.bib
index 19cd42f612bb86e8e52eeac0ec2ccccb743e08cd..b964641bd71b0fbc6d7f0b4f62fa4c724671287f 100644
--- a/doc/report/references.bib
+++ b/doc/report/references.bib
@@ -186,3 +186,14 @@
     urldate = {2020-07-07},
     url = {https://gl.mathhub.info/ulo/ulo}
 }
+
+@inproceedings{virt,
+  title={Virtual theories--a uniform interface to mathematical knowledge bases},
+  author={Wiesing, Tom and Kohlhase, Michael and Rabe, Florian},
+  booktitle={International Conference on Mathematical Aspects of Computer and Information Sciences},
+  pages={243--257},
+  year={2017},
+  organization={Springer},
+  url = {https://kwarc.info/people/frabe/Research/WKR_virtual_17.pdf},
+  urldate = {2020-07-09},
+}