15-819K Logic Programming
The following are the final project reports that have
been submitted in this course. The project reports are accessible
only from CMU.
- A Linear Logic with Affirmations for Authorization, Kumar Avijit, Deepak Garg, and Michael Carl Tschantz
- Alias Analysis for Assembly, David Brumley and James Newsome
- Logical Compilation, Chris Casinghino, Sean McLaughlin, and Noam Zeilberger
- Pattern Unification in the Singleton Calculus, William Lovas and Jake Donham
- An Interpretation of Constraint Handling Rules in Linear Logic, Neelakantan R. Krishnaswami
- A Simple Module System for Twelf, Dan Licata, Rob Simmons, and Daniel Lee
- Mode, Reduction, and Termination Analysis for LolliMon, Ruy Ley-Wild
- LFTON: Efficient Compilation of Quasi-Functional LF Logic Programs, Jason Reed and Tom Murphy VII
- Probabilistic Logic Programming and Undecidability, Fritz Obermeyer
- Termination Specification and Checking in Elf, Carsten Varming
Projects are a major component of this class, making up 55% of the
grade. Projects start after the midterm and should be completed by the
end of the semester. Projects can be done in groups with up to three
students. They proceed in three phases: white paper, proposal, and
report. The deadlines on the white paper and proposals are strict.
The point distribution is 100 pts for the project proposal
450 points for the final report.
Projects can be of different kinds; see some sample scenarios below. It is not required that
each project have design, theory, and implementation components,
although this is natural since the course is concerned with programming
The white paper is a short document, 3-5 pages, which sketches a
proposed project. It should lay out some background, the problem, the
method by which it is approached, and the expected outcome. It should
cite the most relevant literature. The white paper is not graded,
although I will provide feedback to each group.
The proposal is a more extensive document, 10 pages, which
highlights preliminary results, partial algorithms or implementations,
and goes into more detail on the approach, including possible alternatives,
and measures of success. The proposal will be graded.
The report is in the style of a technical report with no particular
target on page numbers. It should detail background, approach,
and results in the manner of a conference or journal paper, possibly
supplemented by code. Literature should be cited in a scholarly manner.
Specifics of the contents will depend on the nature of the
A project could attack a particular logic program analysis
problem, such as advanced type, mode, or termination checking
for logic programs. Typically, such a project would consist of a the
design of an algorithm, its correctness proof, a prototype implementation,
and a critical or empirical evaluation of the results.
Implementation of Advanced Features
A project could attack implementation of an advanced logic
programming idea such as saturating forward chaining or quiescence.
Typically, such a project would consist of an implementation technique,
some prototype code, and an empirical evaluation of its efficiency.
Novel Language Design
A project could develop a novel logic programming language
such as epistemic, spatial, or temporal logic programming. Typically,
such a project would consist of the definition of a logic or
fragment thereof, sample programs that illustrate its expressive
power, and some meta-theoretic analyses. If feasible, it could
also have a prototype implementation.
Logic Programming Applications
A project could develop an application of logic programming.
This could either be in area where it is not standard practice,
or where current practice can be improved with novel features
in the logic programming language.