CS476 Program Verification

Fall 2007

Time: Tuesday and Thursday, 9:30-10:45

Place: 1103 Siebel Center

Professor: José Meseguer

Office Hours: after class

News

Dec 10: Final Exam Questions

In problem 1, it is helpful to comment out the Multiset sort and the operations involving it. This should avoid many of the spurious errors generated by the ITP. In problem 4, the sorts State and Nat conflict with the model checker sorts with the same name. Those sorts may be renamed as needed to avoid syntax errors. Finally, in problem 6, the if statement without a body in the Listener class causes a parser error. This error may be fixed by adding an extra {} after the if statement. Thanks to Robert Blake for identifying these errors.

Dec 9: Updates

The JavaFAN slides have been updated. You may download the latest version from the lecture notes at the bottom of the page. Additionally, on the ITP exercises, Maude may print out many advisories. These are harmless, and can safely be ignored. If you want, you can disable them, by typing the command “set show advisories off .” before running ITP commands.

Dec 7: Final Posted

The final is now available, and is due at 5pm on Tuesday, Dec. 11. The final will require using the Maude Inductive Theorem Prover — both the original one, and the version from homework 6 with support for Java. Additionally, the final will require using JavaRL which can be downloaded from http://fsl.cs.uiuc.edu/index.php/Rewriting_Logic_Semantics_of_Java. An introduction to JavaRL can be found in the lecture notes for 12/04. The files for the final are listed below:

Dec 5: Javafan Examples

The examples from the Javafan presentation are available for download here.

Nov 13: Homework 6 Updated

The theoretical exercises in homework 6 have been updated a second time in the download below. Please download the homework again to get the updates.

Nov 11: Homework 6 Updated

The theoretical exercises in homework 6 have been updated in the download below. Please download the homework again to get the updates.

Nov 6: Homework 6

Download as PDF. Due on Nov. 27th. Exercise 4 requires the Maude ITP as used in previous homeworks while exercises 5 and 6 require a special version of the ITP that understands the Java semantics. This version of the ITP requires Maude 2.1.1, which is available for download from here and also installed on the CSIL machines at /home/class/fa07/cs476/bin/maude-2.1.1. In addition, you should download the ITP archive cs476_hw6.tar.gz available below along with the Maude modules for exercise 4:

Oct 21: Homework 5 Posted and ITP Updated

Download as PDF. Due on Nov. 6th. You should download the most recent version of the ITP before doing the exercises in this homework. The homework references the following modules and ITP goals:

Oct 9: Homework 4 Posted

Download as PDF. Due on Oct. 23rd. The homework references the following module and ITP goal:

Oct 8: scc.maude updated

The version of the Maude SCC on the course webpage has been updated from an obsolete older version. If you encounter errors when running the SCC, you should redownload the latest version.

Oct 5: Maude SCC updated

The version of Maude used for sufficient completeness checking has been updated. You may now run the SCC with Maude 2.3 using the command /home/class/fa07/cs476/bin/maude rather than /home/class/fa07/cs476/bin/maude-2.2. See the Maude SCC description for more details.

Sep. 25: Homework 3 Posted

Download as PDF. Due on Oct. 9. This homework references several Maude modules available below:

Sep. 6: Homework 2 Posted

Download as PDF. Due on Sep. 25.

Aug. 8: Homework 1 Posted

Download as PDF.

Overview

Examines formal methods for demonstrating correctness and other properties of programs; includes an overview of predicate calculus. Topics include: invariant assertions, Hoare axiomatics, well-founded orderings for proving termination, structural induction, computational induction, data structures, and parallel programs.

Requirements

  1. Participation
  2. Readings and automated deduction experiments
  3. Homeworks
  4. Take-home final exam
  5. For 1 unit, project or paper to be arranged with instructor

Texts

Software

All of the software used in this course is based on Maude, a reflective programming language based on term rewriting. In addition to Maude itself, we will use several tools written in Maude. In order to make things simpler for students, all of the software used in this course is installed on the CSIL Linux machines. If you prefer, you can also download and install the software on a PC.

Maude 2.3
on csil machines at /home/class/fa07/cs476/bin/maude and also available for download.
Full Maude 2.3b
Full Maude is required for other tools below. It is installed on csil machines at /home/class/fa07/cs476/lib/maude-2.3/full-maude.maude and also available for download. If it is placed in the same directory as the maude executable (as it is on the csil machines), then it may be loaded by typing “load full-maude” within Maude.
Maude Termination Tool (MTT)
Installed on the CSIL machines with instructions available from here.
Maude Church-Rosser Checker (CRC)
Requires Full Maude. It is installed on csil machines at /home/class/fa07/cs476/lib/maude-2.3/crchc2a.maude and also available for download. If it is placed in the same directory as the maude executable (as it is on the csil machines), then it may be loaded by typing “load crchc2a” within Maude after loading Full Maude.
Maude Coherence Checker (ChC)
Bundled with the Maude Church-Rosser checker, and may be loaded the same way.
Maude Sufficient Completeness Checker
This tool requires a special version of Maude 2.3 with extensions to the CETA library. These extensions are included in the version of Maude is installed on the CSIL machines at /home/class/fa07/cs476/bin/maude. Otherwise, you must download the executable from the website. Once you have the proper Maude version, download scc.maude. After installing this file into the same directory as the Maude executable, load the module you with to check, type “load scc” to load the scc, and type “(scc ModuleName .)” to check the module with the given name . See the tool website for more detailed instructions. Note that the SCC tool uses core Maude modules — not Full Maude modules. You need to remove the parenthesis around Maude modules before loading them.
Maude Inductive Theorem Prover (course version)
This tool can be used to prove inductive theorems about a equational specification. The version on the tool's website is different than the one used for this course which is listed below. Documentation is available in the course lecture notes for lecture 12 and in a Adobe pdf including in the download. The examples for lecture 12 are also available in the archive. The ITP should be used with Maude 2.3 or a more recent version.
Rewriting Logic Semantics of Java : JavaRL
Please see homepage for more details.

Homework Policy

All the assignments should be solved by each student individually. Although it is of course allowable to discuss contents of the course among students, such discussions should not include approaches to solve homework problems. Any such collaboration in homework would constitute a violation of the university's academic integrity.

Lecture Notes

No Date Last Updated Slides
1 08/23/12 08/28/07 lec01_aug_23.pdf
2 08/28/12 08/28/07 lec02_aug_28.pdf
2.1.jpg 2.4.jpg
2.2.jpg 2.5.jpg
2.3.jpg
3 08/30/12 08/28/07 lec03_aug_30.pdf
4 09/04/12 09/06/07 lec04_sep_04.pdf
5 09/06/12 09/06/07 lec05_sep_06.pdf
6 09/11/12 09/06/07 lec06_sep_11.pdf
7 09/13/12 09/17/07 lec07_sep_13.pdf
8 09/20/12 09/24/07 lec08_sep_20.pdf
9 09/25/12 09/24/07 lec09_sep_25.pdf
9.1.jpg
10 09/27/12 10/21/07 lec10_sep_27.pdf
10.1.jpg
11 10/02/12 10/21/07 lec11_oct_02.pdf
12 10/04/12 10/03/07 lec12_oct_04.pdf
14 10/11/12 10/09/07 lec14_oct_11.pdf
15 10/16/12 10/10/07 lec15_oct_16.pdf
16 10/18/12 10/18/07 lec16_oct_18.pdf
17 10/23/12 10/23/07 lec17_oct_23.pdf
18 10/25/12 10/23/07 lec18_oct_25.pdf
19 10/30/12 10/23/07 lec19_oct_30.pdf
20 11/01/12 11/01/07 lec20_nov_01.pdf
21 11/06/12 11/06/07 lec21_nov_06.pdf
22 11/08/12 11/06/07 lec22_nov_08.pdf
23 11/13/12 11/06/07 lec23_nov_13.pdf
24 11/15/12 11/12/07 lec24_nov_15.pdf
25 11/27/12 11/12/07 lec25_nov_27.pdf
26 11/29/12 11/28/07 lec26_nov_29.pdf
12/04/07 12/09/07 javafan.pdf
27 12/06/12 12/03/07 lec27_dec_06.pdf