====== LUP – Logical reasoning and programming ====== This page provides information for the class B4M36LUP - Logické usuzování a programování as well as its English-language counterpart BE4M36LUP - Logical reasoning and programming, which are taught jointly. The lectures are held in English if at least one student in the room is non-Czech. The course's aim is to explain selected significant methods of computational logic. These include algorithms for propositional satisfiability checking, logical programming in Prolog, and first-order theorem proving and model-finding. Time permitting, we will also discuss some complexity and decidability issues pertaining to the said methods. Lecturers: [[mailto:zelezny@fel.cvut.cz|Filip Železný]] and [[mailto:Karel.Chvalovsky@cvut.cz|Karel Chvalovský]] ===== Lectures ===== ^ ^ Date ^ Lecturer ^ Topic ^ Resources ^ | 1 | 23.9. | Chvalovský | Introduction and propositional logic (recap) | {{:courses:lup:lup1.pdf|slides}} | | 2 | 30.9. | Chvalovský | SAT solving---resolution, DPLL, and CDCL | {{:courses:lup:lup2.pdf|slides}} | | 3 | 7.10. | Chvalovský | SAT solving (cont'd) and introduction to SMT | {{:courses:lup:lup3.pdf|slides}} | | 4 | 14.10. | Chvalovský | Satisfiability modulo theories (SMT) | {{:courses:lup:lup4.pdf|slides}} | | 5 | 21.10. | Železný | Introduction to Prolog | {{ :courses:lup:prolog-1.pptx |}} | | 6 | 4.11. | Železný | Recursion, lists | see above | | 7 | 11.11. | Železný | SLD trees, cut, negation | {{ :courses:lup:prolog-2.ppt |}} | | 8 | 18.11. | Železný | Search in Prolog | {{ :courses:lup:prolog-3.ppt |}} | | 9 | 25.11. | Chvalovský | Answer set programming | {{:courses:lup:lup9.pdf|slides}} | | 10 | 2.12. | Chvalovský | First-order logic | {{:courses:lup:lup10.pdf|slides}} | | 11 | 9.12. | Chvalovský | First-order resolution | {{:courses:lup:lup11.pdf|slides}} | | 12| 16.12. | Chvalovský | Equality and model finding | {{:courses:lup:lup12.pdf|slides}} | | 13 | 6.1. | Chvalovský | Proof assistants | {{:courses:lup:lup13.pdf|slides}} | Note that the titles and topics of future lectures are tentative and subject to change. ===== Labs ===== ^ ^ Date ^ Tutor ^ Topic ^ Resources ^ | 1 | 23.9. | Chvalovský | General discussion and exercises on propositional logic | {{:courses:lup:lup1_labs.pdf|exercises}} | | 2 | 30.9. | Chvalovský | SAT solving | {{:courses:lup:lup2_labs.pdf|exercises}} | | 3 | 7.10. | Chvalovský | SAT solving (cont'd) | {{:courses:lup:lup3_labs.pdf|exercises}} | | 4 | 14.10. | Chvalovský | SAT solving (cont'd) and SMT | {{:courses:lup:lup4_labs.pdf|exercises}} | | 5 | 21.10. | Černoch | Prolog as a database | {{ :courses:lup:lup5_labs.pdf |exercises}} | | 6 | 4.11. | Černoch | Lists in Prolog | {{ :courses:lup:lup6_labs.pdf |exercises}} | | 7 | 11.11. | Černoch | Search strategies | {{ :courses:lup:lup7_labs.pdf |exercises}} | | 8 | 18.11. | Černoch | Cut and arithmetics | {{ :courses:lup:lup8_labs.pdf |exercises}} | | 9 | 25.11. | Chvalovský | Answer set programming | {{ :courses:lup:lup9_labs.pdf |exercises}} | | 10 | 2.12. | Chvalovský | First-order logic | {{ :courses:lup:lup10_labs.pdf |exercises}} | | 11 | 9.12. | Chvalovský | First-order resolution | {{ :courses:lup:lup11_labs.pdf |exercises}} | | 12 | 16.12. | Chvalovský | Equality and theorem provers | {{ :courses:lup:lup12_labs.pdf |exercises}} | | 13 | 6.1. | Chvalovský | Proof assistants | {{ :courses:lup:lup13_labs.pdf |exercises}} | ==== Tasks ==== ^ ^ Assigned ^ Deadline ^ Name ^ BRUTE label ^ Description ^ Points ^ | 1 | 14.10. | 11.11. | Scheduling | | {{:courses:lup:task1.pdf|task1}} | 20 | | 2 | 2.12. | 7.1. | Prolog | | {{:courses:lup:task2.pdf|task2}} | 15 | | 3 | 16.12. | 13.1. | Modal logic | | {{:courses:lup:task3.pdf|task3}} | 15 | ===== Grading ===== ==== Labs ==== There will be 3 tasks (for 20, 15, and 15 points) assigned during the semester. You submit your solutions through [[http://cw.felk.cvut.cz/upload/|UploadSystem]]. Late submissions are penalized. An assessment is awarded if you receive at least 25 points for all your solutions. ==== Examination ==== The exam will be a written test (50 points), see a {{:courses:lup:sample.pdf|sample}}, and to pass you need at least 25 points. You are eligible for a grade only after you receive the assessment for labs. However, you can still attend the exam. The final grade is based on the sum of points you receive for labs (max. 50 pts.) and the exam (max. 50 pts.) and follows university regulations: ^ Points ^ Grade ^ ^ ^ | 100-90 | A | 1 | excellent | | 89-80 | B | 1.5 | very good | | 79-70 | C | 2 | good | | 69-60 | D | 2.5 | satisfactory | | 59-50 | E | 3 | sufficient | | <50 | F | 4 | failed | ===== Links ===== ==== SAT/SMT ==== * [[http://satassociation.org/sat-smt-school.html|SAT/SMT Summer Schools]] * [[http://fmv.jku.at/picosat/| PicoSAT]] and [[https://pypi.org/project/pycosat/|pycosat]] * [[http://minisat.se/| MiniSat]] * [[http://smtlib.cs.uiowa.edu/|SMT-LIB]] * [[https://rise4fun.com/z3/tutorial| Getting Started with Z3: A Guide]] ==== TPTP ==== * [[http://www.tptp.org|The TPTP Problem Library]] for Automated Theorem Proving (Thousands of * Problems for Theorem Provers) * [[http://www.cs.miami.edu/~tptp/cgi-bin/SystemOnTPTP|System on TPTP]] - online interface for ATPs ==== Automated Theorem Provers ==== * [[http://www.eprover.org/|E prover]] * {{:courses:lup:eprover.gz| a compiled version for linux}} * [[https://vprover.github.io/|Vampire]] * [[http://www.cs.unm.edu/~mccune/prover9/|Prover 9]], the successor of [[http://www.cs.unm.edu/~mccune/otter/|Otter]] * [[http://deepthought.ttu.ee/it/gandalf/|Gandalf]] ==== Model Finders ==== * Paradox * {{:courses:lup:paradox.gz|compiled version 2.3 for linux}} * [[http://code.haskell.org/folkung/|version 2.3]] * [[http://www.cse.chalmers.se/~koen/code/folkung.tar.gz|experimental version 3]] from [[http://www.cse.chalmers.se/~koen/|author's web page]] * [[http://www.cs.unm.edu/~mccune/prover9/|Mace4]]