Table of Contents |
---|
About Assignments
- Some assignments may offer additional problems for extra credit, which is recorded separately.
- We will use intangibles, such as active participation in class as well as extra credit for those close to grade boundaries.
- Homeworks may require use of the course software, or simply a write-up with pencil and paper.
- Machine-checked assignments must be submitted via the course software before the start of lecture on the due date.
- Written parts of the assignments must be submitted in pdf before the start of lecture on the due date.
- For typesetting deductions in LaTeX, we use, for example, bussproofs.sty or LKproof/proof.sty
Examples can be found in assignment sources, recitations and elsewhere - You are encouraged to typeset your homework solutions. Scans of handwritten homework solutions of a similarly high quality will be accepted. Messy or confusing or unreadable proofs, however, will be rejected without review.
Assignment Schedule
The Assignment Schedule is tentative!Collaboration and Academic Integrity
All assignments in this course are individual assignments. The work must be your own. Do not copy any parts of the solution from anyone, and do not look at other students solutions. Do not make any parts of your solutions available to anyone and make sure no one else can read your files. The university policies and procedures on academic integrity will be applied rigorously.
We may modify this policy on some specific assignments. If so, it will be clearly stated in that particular assignment.
It is always permissible to clarify vague points in assignments, discuss course material from notes or lectures, and to give help or receive help in using the course software such as proof checkers, compilers, or model checkers.
Due Dates
Assignments generally are posted Tuesday after lecture and are due the following Tuesday. Written homeworks are to be handed in at the beginning of lecture on the due date. Machine-checked assignments must be submitted via the course software before the start of lecture on the due date. We will try our best to return graded homework during the recitations in the following week.
3 late days can be used throughout the semester. Each late day beyond the 3 free ones will deduct 25% from an assignment's total possible score. Each late day extends the due date of one assignment by 24 hours.
Software
Tutch Proof Checker
In the first part of this course you will be using a proof checker called Tutch (short for Tutorial Proof Checker). As the name indicates, it checks the validity of formal proofs that users provide.
On the Andrew computers, Tutch is installed in /afs/andrew/course/15/317/bin
. The executable files are tutch
, submit
and status
;
they should work under linux.andrew.cmu.edu
and directly on the machines in the cluster with Linux. The easiest way to run them is with
/afs/andrew/course/15/317/bin/tutch -r hw2.req hw2.tutwhere
hw2.req
is the file of required conjectures that we provide and the file hw2.tut
contains your proof or proofs of those conjectures.
[ Documentation | Tutch Overview | Examples]
[ Vim syntax | Emacs mode by Evan Cavallo | Arch package using MLton by Rahul Mann]
KeYmaera I
For sequent proofs, you will be using the KeYmaera I theorem prover for constructive logic, which is a sibling of the KeYmaera X theorem prover. Kudos to Nathan Fulton, Stefan Mitsch, and Giselle Reis for implementing KeYmaera I on top of KeYmaera X.[KeYmaera I | Cheat Sheet]
SML
For this course we continue to use Standard ML of New Jersey (SML/NJ) that you are familiar with from 15-150 Functional Programming.
If you are a masters student and have not taken 15-150 before, you are expected to have acquired a background in functional programming and pick up sufficient proficiency in SML along the way.
[SML/NJ
| SML base library
| SML/NJ Libraries]
Prolog
For this course we are using GNU Prolog.
The Andrew installation of GNU Prolog can be run either by running the script:
/afs/andrew/course/15/317/bin/runprologor by adding the directory
/afs/andrew/course/15/317/bin
to your PATH and running gprolog
.
You can also download a distribution, e.g., from the GNU Prolog web site or directly from your operating system and install it on your own machine.
Most installations of vim and emacs have editing modes for Prolog code, but the default is to treat .pl
files as Perl code.
Switching files to Prolog mode works as follows:
- vim:
:setf prolog
- Emacs:
M-x prolog-mode
enables the Prolog menus and^C ^L
consults the current file with Prolog. If that does not work, install prolog mode for emacs and add it:
(setq load-path (cons "~/.emacs.d/prolog.el" load-path)) (autoload 'run-prolog "prolog" "Start Prolog interpreter." t) (autoload 'prolog-mode "prolog" "Major mode for Prolog." t) (autoload 'mercury-mode "prolog" "Major mode for Mercury." t) (setq prolog-system 'gnu) (add-to-list 'auto-mode-alist '("\\.pl\\'" . prolog-mode))[GNU Prolog | Documentation | Newsgroup ]