plwonksProgramming language enthusiasts from Indiana University
http://wonks.github.io/
Mon, 22 Apr 2024 20:31:25 +0000Mon, 22 Apr 2024 20:31:25 +0000Jekyll v3.9.5A Computer Science Perspective on the Foundations of Quantum Computing<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Monday, April 29</li>
<li><strong>Time:</strong> 4:00 PM-5:00 PM</li>
<li><strong>Location:</strong> Luddy Hall 4063 (BLIF-4063)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>Quantum information processing is believed to revolutionize classical
optimization algorithms, classical search algorithms, and classical learning
theories. Although there is indeed much evidence for such a potentiality, there
are — to date — no definitive theoretical or practical demonstrations of any
quantum computational advantage.</p>
<p>Part of the reason for this uncertain state of affairs is that the boundary
between classical and quantum computing is not well-understood. In this talk, we
will explore the foundations of quantum computing and their connections to
classical computing from a variety of semantically motivated perspectives. We
will first review how some of the ingredients of quantum computing (e.g.,
reversibility and the complex numbers) are irrelevant for separating classical
from quantum computing. We will then explore two recently developed
characterizations of quantum computing that are “almost” classical.</p>
<p>Our technical approach is to design computationally universal quantum
programming languages by, as modest as possible, extensions to classical
programming languages. The first approach demonstrates that a computationally
universal quantum programming language emerges from the amalgamation of two
classical languages glued by complementarity. The second approach demonstrates
that a computationally universal quantum programming language emerges from a
classical programming language extended with just a few square roots of certain
key functions. These more subtle perspectives provide some insight at the
possible semantic sources of quantum advantage and may suggest new classes of
applications in which quantum computing could provide an advantage over
classical computing.</p>
Mon, 29 Apr 2024 16:00:00 +0000
http://wonks.github.io/sabry/spring2024/2024/04/29/sabry.html
http://wonks.github.io/sabry/spring2024/2024/04/29/sabry.htmlSabrySpring2024Tensor Implementations in Malt (A Deep Learning Toolkit)<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Thursday, April 25</li>
<li><strong>Time:</strong> 1:30 PM-2:30 PM</li>
<li><strong>Location:</strong> TBA</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p><a href="https://github.com/themetaschemer/malt">Malt</a> is a minimalist deep learning
library that is designed to support the book The Little Learner: A Straight Line
to Deep Learning, by Daniel P. Friedman and Anurag Mendhekar. Tensors are the
main data structures over which the functions provided by Malt operate on. I
will be talking about the alternate ways in which tensors are implemented in
Malt.</p>
Thu, 25 Apr 2024 13:30:00 +0000
http://wonks.github.io/shetty/spring2024/2024/04/25/shetty.html
http://wonks.github.io/shetty/spring2024/2024/04/25/shetty.htmlShettySpring2024Rhombus, a New Racket Language Without Parentheses<iframe src="https://www.youtube.com/embed/UTX2ih_jGms" frameborder="0" allowfullscreen=""></iframe>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Wednesday, February 7</li>
<li><strong>Time:</strong> 11:15 AM-12:15 PM</li>
<li><strong>Location:</strong> Luddy Hall 0119 (BLIF-0119)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>I will talk about and demo Rhombus, a new language built on Racket
that features both Racket-style macros and conventional syntax,
as well as a variety of other interesting features.</p>
Wed, 07 Feb 2024 11:15:00 +0000
http://wonks.github.io/tobin-hochstadt/spring2024/2024/02/07/tobin-hochstadt.html
http://wonks.github.io/tobin-hochstadt/spring2024/2024/02/07/tobin-hochstadt.htmlTobin-HochstadtSpring2024The Holy Grail of Gradual Security<ul>
<li><a href="http://wonks.github.io/slides/chen-jan-24-2024.pdf"><strong>Slides (in PDF)</strong></a></li>
</ul>
<p><img src="/images/chen_jan_2024.png" alt="ChenJan2024" /></p>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Wednesday, January 24</li>
<li><strong>Time:</strong> 11:15 AM-12:15 PM</li>
<li><strong>Location:</strong> Info (aka Myles Brand Hall) East 150 (BLI-E150)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>Languages with gradual information-flow control combine static and
dynamic techniques to prevent security leaks. Gradual languages
should satisfy the gradual guarantee: programs that only differ in the
precision of their type annotations should behave the same modulo cast
errors. Unfortunately, Toro et al. [2018] identify a tension between
the gradual guarantee and information security; they were unable to
satisfy both properties in the language \(\mathrm{GSL}_\mathsf{Ref}\)
and had to settle for only satisfying information-flow security.
Azevedo de Amorim et al. [2020] show that by sacrificing type-guided
classification, one obtains a language that satisfies both noninterference
and the gradual guarantee. Bichhawat et al. [2021] show that both properties
can be satisfied by sacrificing the no-sensitive-upgrade mechanism,
replacing it with a static analysis.</p>
<p>In this talk I present our new gradual security-typed language,
\(\lambda_{\mathtt{IFC}}^\star\), that satisfies both noninterference and
the gradual guarantee without making any sacrifices. \(\lambda_{\mathtt{IFC}}^\star\)
(1) enforces information flow security,
(2) satisfies the gradual guarantee,
(3) enjoys type-guided classification, and
(4) utilizes NSU checking to enforce implicit flows through the heap
with no static analysis required.
<!-- The definition of $$\lambda_{\mathtt{IFC}}^\star$$ -->
<!-- and its gradual guarantee proof are fully mechanized in Agda. -->
The key to the design of \(\lambda_{\mathtt{IFC}}^\star\) is to
walk back the unusual decision in \(\mathrm{GSL}_\mathsf{Ref}\) to include the unknown
label among the runtime security labels. We mechanize the
definition of \(\lambda_{\mathtt{IFC}}^\star\) in Agda and prove the gradual guarantee.
On the technical side, the semantics of \(\lambda_{\mathtt{IFC}}^\star\) is
the first gradual information-flow control language to be specified using
coercion calculi (a la Henglein), thereby expanding the coercion-based theory of
gradual typing.</p>
<p>(<a href="https://homes.luddy.indiana.edu/chen512">Tianyu</a> is a PhD student
advised by Prof. <a href="https://wphomes.soic.indiana.edu/jsiek">Jeremy Siek</a>.)</p>
Wed, 24 Jan 2024 11:15:00 +0000
http://wonks.github.io/chen/spring2024/gradual/gradualtypes/gradualtyping/security/2024/01/24/chen.html
http://wonks.github.io/chen/spring2024/gradual/gradualtypes/gradualtyping/security/2024/01/24/chen.htmlChenSpring2024GradualGradualTypesGradualTypingSecurityExact Recursive Probabilistic Programming<iframe src="https://www.youtube.com/embed/XcfLydK32AY" frameborder="0" allowfullscreen=""></iframe>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Wednesday, December 13</li>
<li><strong>Time:</strong> 11:15 AM-12:15 PM</li>
<li><strong>Location:</strong> Luddy Hall 1106 (BLIF-1106) “Dorsey Hall Auditorium”</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>(joint work with David Chiang and Colin McDonald)</p>
<p>Recursive calls over recursive data are useful for generating probability distributions, and probabilistic programming allows computations over these distributions to be expressed in a modular and intuitive way. Exact inference is also useful, but unfortunately, existing probabilistic programming languages do not perform exact inference on recursive calls over recursive data, forcing programmers to code many applications manually. We introduce a probabilistic language in which a wide variety of recursion can be expressed naturally, and inference carried out exactly. For instance, probabilistic pushdown automata and their generalizations are easy to express, and polynomial-time parsing algorithms for them are derived automatically. We eliminate recursive data types using program transformations related to defunctionalization and refunctionalization. These transformations are assured correct by a linear type system, and a successful choice of transformations, if there is one, is guaranteed to be found by a greedy algorithm.</p>
Wed, 13 Dec 2023 11:15:00 +0000
http://wonks.github.io/shan/fall2023/2023/12/13/shan.html
http://wonks.github.io/shan/fall2023/2023/12/13/shan.htmlShanFall2023Universe Hierarchies and (Generalized) Universe Polymorphism<h2 id="recording-and-slides">Recording and Slides</h2>
<iframe src="https://www.youtube.com/embed/olEMwmvTsHk" frameborder="0" allowfullscreen=""></iframe>
<ul>
<li><a href="http://wonks.github.io/slides/mugen-angiuli-dec-6-2023.pdf"><strong>Slides (in PDF)</strong></a></li>
</ul>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Wednesday, December 6</li>
<li><strong>Time:</strong> 11:15 AM-12:15 PM</li>
<li><strong>Location:</strong> Luddy Hall 1104 (BLIF-1104)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>Dependent type theory expresses type dependency and quantification in terms of a
hierarchy of <em>type universes</em> whose elements are other types. In this talk, I
will motivate universe hierarchies by discussing how they resolve paradoxes in
naive set theory. Next, I will discuss a few mechanisms for <em>universe
polymorphism</em> implemented in proof assistants to avoid code duplication.</p>
<p>Finally, I will talk about joint work with Favonia and Reed Mullanix (“An
Order-Theoretic Analysis of Universe Polymorphism”, POPL 2023) in which we
formulate general notions of universe hierarchies and universe polymorphism,
give some examples of exotic but consistent universe hierarchies, and prove that
any universe-polymorphic type theory can be presented via McBride’s “crude but
effective stratification.”</p>
Wed, 06 Dec 2023 11:15:00 +0000
http://wonks.github.io/angiuli/fall2023/2023/12/06/angiuli.html
http://wonks.github.io/angiuli/fall2023/2023/12/06/angiuli.htmlAngiuliFall2023An Introduction to Step-Indexed Logical Relations via Type Safety for STLC + fix<h2 id="recording-and-slides">Recording and Slides</h2>
<iframe src="https://www.youtube.com/embed/f8WpBngZehA" frameborder="0" allowfullscreen=""></iframe>
<ul>
<li><a href="http://wonks.github.io/slides/siek-nov-29-2023.pdf"><strong>Slides (in PDF)</strong></a></li>
</ul>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Wednesday, November 29</li>
<li><strong>Time:</strong> 11:15 AM-12:15 PM</li>
<li><strong>Location:</strong> Luddy Hall 1104 (BLIF-1104)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>The logical relations technique is widely used to prove properties of programming languages,
from simple applications such as termination of the simply-typed lambda calculus, to more
advanced ones such as proving noninterference for languages with information-flow security.
For languages that are not strongly normalizing, one usually adapts the logical relations
proof technique by using step-indexing. Doing so by hand is tedious, so Dreyer, Ahmed, and Birkedal
created a temporal logic named LSLR that hides some of the work.</p>
<p>In this talk I give an introduction to using a step-indexed logic to define logical relations and to
prove type safety of the simply-typed lambda calculus with fix (general recursion).</p>
Wed, 29 Nov 2023 11:15:00 +0000
http://wonks.github.io/siek/fall2023/2023/11/29/siek.html
http://wonks.github.io/siek/fall2023/2023/11/29/siek.htmlSiekFall2023One Weird Trick to Untie Landin's Knot<iframe src="https://www.youtube.com/embed/XNgE8kBfSz8" frameborder="0" allowfullscreen=""></iframe>
<h2 id="time-and-location">Time and Location</h2>
<ul>
<li><strong>Date:</strong> Friday, October 13</li>
<li><strong>Time:</strong> 3:00-4:00 PM</li>
<li><strong>Location:</strong> Info East 130 (BLI-E130)</li>
</ul>
<h2 id="abstract">Abstract</h2>
<p>In this work, we explore Landin’s Knot, which is understood as a pattern for encoding general recursion, including non-termination, that is possible after adding higher-order references to an otherwise terminating language. We observe that this isn’t always true—higher-order references, by themselves, don’t lead to non-termination. The key insight is that Landin’s Knot relies not primarily on references storing functions, but on unrestricted quantification over a function’s environment. We show this through a closure converted language, in which the function’s environment is made explicit and hides the type of the environment through impredicative quantification. Once references are added, this impredicative quantification can be exploited to encode recursion. We conjecture that by restricting the quantification over the environment, higher-order references can be safely added to terminating languages, without resorting to more complex type systems such as linearity, and without restricting references from storing functions.</p>
Fri, 13 Oct 2023 15:00:00 +0000
http://wonks.github.io/koronkevich/fall2023/2023/10/13/koronkevich.html
http://wonks.github.io/koronkevich/fall2023/2023/10/13/koronkevich.htmlKoronkevichFall2023Futures in Racket; now and tomorrow<h2 id="abstract">Abstract</h2>
<p>Racket provides parallelism via futures, however there are so many caveats that achieving real parallel computation isn’t possible in most situations. In this talk, I will talk about what futures are, the current state of futures in Racket, and how Racket on Chez will hopefully enable users to create actual parallel programs using futures.</p>
Fri, 03 Nov 2017 04:15:00 +0000
http://wonks.github.io/spall/fall2017/2017/11/03/spall.html
http://wonks.github.io/spall/fall2017/2017/11/03/spall.htmlSpallFall2017Felt: Multilingual Literate Racket Programming Without Weaving<iframe src="https://www.youtube.com/embed/539qdXBtmAY" frameborder="0" allowfullscreen=""></iframe>
<h2 id="abstract">Abstract</h2>
<p>Existing tools for literate programming in Racket, such as scribble/lp2,
focus on a style of literate programming that is very close to Knuth’s
original vision, where small slices of programs are explained in the
order that makes sense for a particular narrative, and then assembled
into both documentation and programs. But for for some programs, this is
more of a burden than a help. Felt is another Scribble language that
provides a somewhat different approach to module-oriented multilingual
literate programming for situations where the code itself is the point
of the document.</p>
Fri, 27 Oct 2017 04:30:00 +0000
http://wonks.github.io/christiansen/fall2017/2017/10/27/christiansen.html
http://wonks.github.io/christiansen/fall2017/2017/10/27/christiansen.htmlChristiansenFall2017