# About this course

We present a course developed by the team of Tomsk State University of Control Systems and Radioelectronics.

This course offers basic knowledge in mathematical logic.

The goals of mathematical logic are:

- To provide a formal language for mathematical statements that is easily translatable into the natural language and that allows compact and convenient notation.
- To offer clear and unambiguous interpretation of such statements that is at the same time simple and close to the natural mathematical concepts.

We made sure to make this course informative and interesting for everyone!

**What will I learn?**

Upon completion of the course, students will have acquired fundamental knowledge that is valuable in itself and will serve as the foundation for other studies. For example, software engineers strongly rely on logic-mathematical theories in their work.

• Natural languages possess a number of flaws - inaccuracy, polysemy, complexity.

• Knowledge of the simple yet powerful methods of mathematical statement transformations made possible by the language of logic is just as vital as is the knowledge of elementary algebra. No need to reinvent the wheel.

• Invented almost a century ago to address the needs of mathematics, mathematical logic has found application in theoretical and practical programming.

• When dealing with applied problems, a researcher has to switch between the descriptive language, mathematical language, the language of numerical methods and algorithms, and specific programming languages. The language of mathematical logic offers a great opportunity to practice this translation between languages and is used as a powerful formalised tool for transmission of information between distant languages.

**What do I need to know?**

Most of the course content will be understandable for students with only a high school level of education. Some minor sections of the course will require knowledge of imperative programming and elements of mathematical analysis.

**Course Structure**

The course consists of 7 chapters:

**Chapter 1 - Mission of mathematical logic:**

Goals, objectives, methods.

Relation between mathematics and mathematical logic.

Examples of logical errors, sophisms and paradoxes.

Brief history of mathematical logic, discussing how problems mathematical logic faced and solved in its development, and how mathematical logic integrates further and further into programming.

**Chapter 2 - Foundations of the set theory:**

Set theory is the basis for development of languages.

**Chapter 3 - Propositional logic:**

Propositional logic studies the simplest yet the most important formal language.

**Chapter 4 - First-order languages:**

The language of propositional logic has limited tools, so we talk about more complex languages based on predicate logic. The language of predicate logic offers tools for full and exact description of any formal notions and statements.

**Chapter 5 - Axiomatic method:**

The axiomatic method makes it possible to solve many logical problems, errors and paradoxes. It is widely used in today's mathematics and the knowledge of it is vital for anyone using functional and logical programming languages.

**Chapter 6 - Mathematical proof:**

Discussion of the types of mathematical proof and how proof can be aided with a computer.

**Chapter 7 - Algorithm theory:**

To learn about the possibilities of the algorithmic approach and the limitations of calculations, one must know the rigorous definition of algorithms and computability. The module offers these definitions and defines algorithmically unsolvable problems. The module introduces the concept of algorithm complexity, which is an important factor when selecting algorithms to solve problems. The module also compares problems by complexity - this knowledge makes it possible to use any search algorithm to solve problem instead of search for the good algorithm.