Some Opportunities
3.1 Certifying Algorithms
A very interesting trend in algorithm design is the idea of certifying algorithms,
those that produce a machine-checkable certicate of the validity of their output.
For example, a certifying planarity tester would not take a nite graph and
return a boolean, but rather would either produce an embedding of the graph
into the plane, or produce an embedding of a Kuratowski subgraph into the given
graph as proof that it is non-planar. This point of view is not only tremendously
practical as a means of ensuring code correctness, but it is also fundamentally
coherent with the emphasis on constructive mathematics in language research|
a certifying algorithm is a constructive proof that for every nite graph G either
there is an embedding of G into R2 or there is an embedding of K5 or K3;3 into
G. Constructively, one is required to produce a proof of one of the disjuncts
(not merely that both cannot be false), and in each case to explicitly exhibit
the embeddings (not merely that an embedding cannot fail to exist).
Certication provides a point of contact between existing work in languages
and algorithms that could well provide the basis for further coordination and
collaboration between the two areas. One possibility is to develop a construc-
tive formulation of the properties of algorithms that is, from a computational
viewpoint, sharper than the classical view. According to classical logic there is
no distinction between a graph being planar and the impossibility of a graph
being non-planar. But constructively there is all the dierence between the
mere existence" of an embedding in the plane (given by evidence that cannot
be used in a further computation) and the existence" of such an embedding
(which must be presented by an assignment of coordinates to the nodes, say, in
Rn). Mehlhorn's work shows that there is an important practical application
to drawing such a distinction, and demonstrates that in algorithms, as in other
settings [The Univalent Foundations Program, 2013], constructivity may be a
useful tool for obtaining practical results.