<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mikhail.Belyaev</id>
		<title>SEWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mikhail.Belyaev"/>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Mikhail.Belyaev"/>
		<updated>2026-04-07T23:09:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection10.pdf&amp;diff=15527</id>
		<title>Файл:StaticAnalysis2018Lection10.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection10.pdf&amp;diff=15527"/>
				<updated>2018-04-25T15:15:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15526</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15526"/>
				<updated>2018-04-25T15:14:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 7===&lt;br /&gt;
&lt;br /&gt;
Bounded model checking. '''[[Медиа:StaticAnalysis2018Lection7.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 8===&lt;br /&gt;
&lt;br /&gt;
Межпроцедурность и с чем её едят. '''[[Медиа:StaticAnalysis2018Lection8.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 9===&lt;br /&gt;
&lt;br /&gt;
Память и указатели. Проблемы и решения. '''[[Медиа:StaticAnalysis2018Lection9.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 10===&lt;br /&gt;
&lt;br /&gt;
Анализ указателей. '''[[Медиа:StaticAnalysis2018Lection10.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат даже с учётом всех возможных условий в переходах&lt;br /&gt;
# Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 7 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 8 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой контекстно-чувствительный анализ знаков требует коэффициент k &amp;gt; 1&lt;br /&gt;
# Приведите пример решётки, для которой контекстно-чувствительный анализ в функциональном стиле является более ресурсозатратным, чем контекстно-чувствительный анализ по месту вызова с глубиной, например, 2&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 9 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15525</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15525"/>
				<updated>2018-04-25T15:14:37Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 7===&lt;br /&gt;
&lt;br /&gt;
Bounded model checking. '''[[Медиа:StaticAnalysis2018Lection7.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 8===&lt;br /&gt;
&lt;br /&gt;
Межпроцедурность и с чем её едят. '''[[Медиа:StaticAnalysis2018Lection8.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 9===&lt;br /&gt;
&lt;br /&gt;
Память и указатели. Проблемы и решения. '''[[Медиа:StaticAnalysis2018Lection9.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 10===&lt;br /&gt;
&lt;br /&gt;
Анализ указателей'''[[Медиа:StaticAnalysis2018Lection10.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат даже с учётом всех возможных условий в переходах&lt;br /&gt;
# Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 7 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 8 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой контекстно-чувствительный анализ знаков требует коэффициент k &amp;gt; 1&lt;br /&gt;
# Приведите пример решётки, для которой контекстно-чувствительный анализ в функциональном стиле является более ресурсозатратным, чем контекстно-чувствительный анализ по месту вызова с глубиной, например, 2&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 9 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15366</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15366"/>
				<updated>2018-04-10T16:27:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Практика */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 7===&lt;br /&gt;
&lt;br /&gt;
Bounded model checking. '''[[Медиа:StaticAnalysis2018Lection7.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 8===&lt;br /&gt;
&lt;br /&gt;
Межпроцедурность и с чем её едят. '''[[Медиа:StaticAnalysis2018Lection8.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 9===&lt;br /&gt;
&lt;br /&gt;
Память и указатели. Проблемы и решения. '''[[Медиа:StaticAnalysis2018Lection9.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат даже с учётом всех возможных условий в переходах&lt;br /&gt;
# Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 7 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 8 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой контекстно-чувствительный анализ знаков требует коэффициент k &amp;gt; 1&lt;br /&gt;
# Приведите пример решётки, для которой контекстно-чувствительный анализ в функциональном стиле является более ресурсозатратным, чем контекстно-чувствительный анализ по месту вызова с глубиной, например, 2&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 9 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection8.pdf&amp;diff=15365</id>
		<title>Файл:StaticAnalysis2018Lection8.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection8.pdf&amp;diff=15365"/>
				<updated>2018-04-10T16:23:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15364</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15364"/>
				<updated>2018-04-10T16:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 7===&lt;br /&gt;
&lt;br /&gt;
Bounded model checking. '''[[Медиа:StaticAnalysis2018Lection7.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 8===&lt;br /&gt;
&lt;br /&gt;
Межпроцедурность и с чем её едят. '''[[Медиа:StaticAnalysis2018Lection8.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 9===&lt;br /&gt;
&lt;br /&gt;
Память и указатели. Проблемы и решения. '''[[Медиа:StaticAnalysis2018Lection9.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат даже с учётом всех возможных условий в переходах&lt;br /&gt;
# Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 7 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 9 ===&lt;br /&gt;
&lt;br /&gt;
Не будет 🙌&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15200</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15200"/>
				<updated>2018-03-27T10:53:44Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Задание к лекции 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# Напишите вариант программы, для которой анализ открытости-закрытости файлов не показывает корректный результат даже с учётом всех возможных условий в переходах&lt;br /&gt;
# Предложите, каким образом можно решить описанные в лекции проблемы в этой ситуации&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection6.pdf&amp;diff=15199</id>
		<title>Файл:StaticAnalysis2018Lection6.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection6.pdf&amp;diff=15199"/>
				<updated>2018-03-27T10:50:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: Лекция 6 по курсу &amp;quot;Анализ ПО&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лекция 6 по курсу &amp;quot;Анализ ПО&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15198</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15198"/>
				<updated>2018-03-27T10:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 5===&lt;br /&gt;
&lt;br /&gt;
Интервальный анализ. Widening и narrowing. '''[[Медиа:StaticAnalysis2018Lection5.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 6===&lt;br /&gt;
&lt;br /&gt;
Path sensitivity. Анализ зависимостей. '''[[Медиа:StaticAnalysis2018Lection6.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 5 ===&lt;br /&gt;
&lt;br /&gt;
# Допустим, мы хотим реализовать оптимизирующий компилятор для языка TIP. Среди прочего, для работы ему требуется информация о размерах различных переменных: bool (1 bit), byte (8 bit signed), char (16 bit unsigned), int (32 bit signed), bigint (any integer), any (any other thing).&lt;br /&gt;
#* Предложите решетку для реализации анализа размера переменных&lt;br /&gt;
#** Нужно описать не только решетку для одного абстрактного значения, но и все другие решетки, требуемые для анализа целой программы&lt;br /&gt;
#* Опишите правила вычисления различных выражений&lt;br /&gt;
#* Придумайте нетривиальный пример программы на TIP для получившегося анализа и посмотрите, что для него получается&lt;br /&gt;
# Допишите реализацию метода widen в IntervalAnalysisWorklistSolverWithWidening [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/IntervalAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте придуманный вами анализ размера переменных в файле VariableSizeAnalysis.scala рядом.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 6 ===&lt;br /&gt;
&lt;br /&gt;
# --&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14980</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14980"/>
				<updated>2018-03-06T15:15:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 4 ===&lt;br /&gt;
&lt;br /&gt;
# Рассмотрим плоскую решётку над типами {Bool,Int} из задания 1. Если реализовать для неё анализ, каким по предложенной классификации он будет? Попробуйте выписать правила вывода.&lt;br /&gt;
# Дореализуйте live variables analysis [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/LiveVarsAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте reaching definitions analysis в файле ReachingDefsAnalysis.scala рядом.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14979</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14979"/>
				<updated>2018-03-06T15:09:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокочувствительных анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection4.pdf&amp;diff=14978</id>
		<title>Файл:StaticAnalysis2018Lection4.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection4.pdf&amp;diff=14978"/>
				<updated>2018-03-06T15:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: Лекция 4 по курсу &amp;quot;Анализ ПО&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лекция 4 по курсу &amp;quot;Анализ ПО&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14977</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14977"/>
				<updated>2018-03-06T15:08:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 3===&lt;br /&gt;
&lt;br /&gt;
Теория решеток и монотонный фреймворк. '''[[Медиа:StaticAnalysis2018Lection3.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 4===&lt;br /&gt;
&lt;br /&gt;
Примеры потокозависимых анализов. '''[[Медиа:StaticAnalysis2018Lection4.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета &lt;br /&gt;
Орхуса ([https://upload.wikimedia.org/wikipedia/commons/4/49/%C3%85rhus.ogg ˈɒːhuːˀs]), &lt;br /&gt;
откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 3 ===&lt;br /&gt;
&lt;br /&gt;
# Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?&lt;br /&gt;
# Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].&lt;br /&gt;
# Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14785</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14785"/>
				<updated>2018-02-24T01:17:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Практика */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Архуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis]в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14784</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14784"/>
				<updated>2018-02-24T01:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Практика */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
=== Задание к лекции 2 ===&lt;br /&gt;
&lt;br /&gt;
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis]в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.&lt;br /&gt;
# (опционально) Реализуйте пункт 2 в рамках пункта 1.&lt;br /&gt;
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14783</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14783"/>
				<updated>2018-02-24T01:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекция 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
=== Лекция 2===&lt;br /&gt;
&lt;br /&gt;
Анализ на основе систем типов. '''[[Медиа:StaticAnalysis2018Lection2.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
Примерный режим практик: нам выдаются задания, их надо делать и как-нибудь сдавать. Для зачёта скорее всего потребуется успеть сдать все задания.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на каком-нибудь GitHub.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection2.pdf&amp;diff=14782</id>
		<title>Файл:StaticAnalysis2018Lection2.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection2.pdf&amp;diff=14782"/>
				<updated>2018-02-24T01:07:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: Анализ программ, лекция 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Анализ программ, лекция 2&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Mikhail.Belyaev&amp;diff=14567</id>
		<title>Участник:Mikhail.Belyaev</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Mikhail.Belyaev&amp;diff=14567"/>
				<updated>2018-02-13T21:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: Новая страница: « Email: belyaev@kspt.icc.spbstu.ru[mailto:belyaev@kspt.icc.spbstu.ru]»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Email: belyaev@kspt.icc.spbstu.ru[mailto:belyaev@kspt.icc.spbstu.ru]&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14566</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14566"/>
				<updated>2018-02-13T21:06:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекция 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. '''[[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]'''&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
Примерный режим практик: нам выдаются задания, их надо делать и как-нибудь сдавать. Для зачёта скорее всего потребуется успеть сдать все задания.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на каком-нибудь GitHub.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14565</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14565"/>
				<updated>2018-02-13T21:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекция 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса. [[Медиа:StaticAnalysis2018Lection1.pdf|Слайды]]&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
Примерный режим практик: нам выдаются задания, их надо делать и как-нибудь сдавать. Для зачёта скорее всего потребуется успеть сдать все задания.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на каком-нибудь GitHub.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14564</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14564"/>
				<updated>2018-02-13T21:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
=== Лекция 1===&lt;br /&gt;
&lt;br /&gt;
Введение в предмет курса.&lt;br /&gt;
 &lt;br /&gt;
Слайды: [[Медиа:StaticAnalysis2018Lection1.pdf|Лекция 1]]&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
Примерный режим практик: нам выдаются задания, их надо делать и как-нибудь сдавать. Для зачёта скорее всего потребуется успеть сдать все задания.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на каком-нибудь GitHub.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14563</id>
		<title>Анализ программ 4MIT весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_4MIT_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14563"/>
				<updated>2018-02-13T20:59:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватели:&lt;br /&gt;
 &lt;br /&gt;
Ахин Марат ('''akhin@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
Беляев Михаил ('''belyaev@kspt.icc.spbstu.ru ''')&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
Лекция 1: [[Файл:StaticAnalysis2018Lection1.pdf|Лекция 1]]&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
Примерный режим практик: нам выдаются задания, их надо делать и как-нибудь сдавать. Для зачёта скорее всего потребуется успеть сдать все задания.&lt;br /&gt;
&lt;br /&gt;
'''НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП''' - это просьба от коллег из университета Орхуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на каком-нибудь GitHub.&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection1.pdf&amp;diff=14562</id>
		<title>Файл:StaticAnalysis2018Lection1.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:StaticAnalysis2018Lection1.pdf&amp;diff=14562"/>
				<updated>2018-02-13T20:55:44Z</updated>
		
		<summary type="html">&lt;p&gt;Mikhail.Belyaev: Лекция 1 по курсу &amp;quot;Статический анализ ПО&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лекция 1 по курсу &amp;quot;Статический анализ ПО&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mikhail.Belyaev</name></author>	</entry>

	</feed>