Аннотация
Тема реферата «Исследование производной»
Руководитель: Гиниятуллина Рауфа Нурловна.
Автор: Миннегареев Роман
Предмет: математика
Класс, образовательное учреждение: 11 «а» класс МКОУ СОШ №18 п. Октябрьский
Реферат выполнен в рамках предметной области «Математика». Работа содержит все основные составные элементы реферата: введение, основная часть, заключение, приложение. Общий объем страниц, включая приложения, составляет 33 страницы. Во введении сформулированы актуальность, цель и задачи выполненной работы.
Аннотация
Тема реферата «Исследование производной»
Руководитель: Гиниятуллина Рауфа Нурловна.
Автор: Миннегареев Роман
Предмет: математика
Класс, образовательное учреждение: 11 «а» класс МКОУ СОШ №18 п. Октябрьский
Реферат выполнен в рамках предметной области «Математика». Работа содержит все основные составные элементы реферата: введение, основная часть, заключение, приложение. Общий объем страниц, включая приложения, составляет 33 страницы. Во введении сформулированы актуальность, цель и задачи выполненной работы.
Рассматриваются методы решения систем линейных алгебраических уравнений с трехдиагональными, симметричными и положительно определенными матрицами коэффициентов.
Similar to 20110327 systems of_typed_lambda_calculi_moskvin_lecture08 (14)
The document discusses concurrency and synchronization in distributed computing. It provides an overview of Petr Kuznetsov's research at Telecom ParisTech, which includes algorithms and models for distributed systems. Some key points discussed are:
- Concurrency is important due to multi-core processors and distributed systems being everywhere. However, synchronization between concurrent processes introduces challenges.
- Common synchronization problems include mutual exclusion, readers-writers problems, and producer-consumer problems. Tools for synchronization include semaphores, transactional memory, and non-blocking algorithms.
- Characterizing distributed computing models and determining what problems can be solved in a given model is an important area of research, with implications for distributed system design.
The document discusses weakly supervised learning from video and images using convolutional neural networks. It describes using scripts as weak supervision for learning actions from movies without explicit labeling. Methods are presented for jointly learning actors and actions from scripts, and for action learning with ordering constraints. The use of CNNs for object and action recognition in images is also summarized, including work on training CNNs using only image-level labels without bounding boxes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and emphasizes that undefined behavior does not guarantee a predictable result. It concludes with a quiz to find bugs in a code sample and links to additional reading materials.
AddressSanitizer, ThreadSanitizer, and MemorySanitizer are compiler-based tools that detect bugs like buffer overflows, data races, and uninitialized memory reads in C/C++ programs. AddressSanitizer instruments loads and stores to detect out-of-bounds memory accesses. ThreadSanitizer intercepts synchronization calls to detect data races between threads. MemorySanitizer tracks initialized and uninitialized memory using shadow memory to find uses of uninitialized values. The tools have found thousands of bugs with low overhead. Future work includes supporting more platforms and languages and detecting additional bug classes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and quizzes the reader to find bugs in a code sample. It recommends resources for further reading on debugging techniques and thread sanitizers that can detect races and data races.
This document provides examples and snippets of code for MapReduce, Pig, Hive, Spark, Shark, and Disco frameworks. It also includes two sections of references for related papers and Disco documentation. The examples demonstrate basic MapReduce jobs with drivers, mappers, and reducers in Java, Pig and Hive queries, Spark and Shark table operations, and a Disco MapReduce job.
2. Интуиционистская пропозициональная логика второго
порядка PROP2
Существует изоморфизм между λ2 и логической системой
PROP2.
Типы в λ2 формулы в PROP2.
Термы в λ2 доказательства в PROP2.
PROP2 конструктивная система; в ней, например, закон
Пирса
∀α β. ((α → β) → α) → α
невыводим.
2
3. PROP2: →
Импликация унаследована от PROP:
Правило удаления → Правило введения →
[σ]
.
.
.
σ→τ σ τ
PROP2
τ σ→τ
Γ M : σ→τ Γ N:σ Γ, x:σ M:τ
λ2
Γ MN : τ Γ λ xσ. M : σ → τ
3
4. PROP2: ∀
Правила введения и удаления квантора ∀ соответствуют уни-
версальным Λ-абстракции и применению:
Правило удаления ∀ Правило введения ∀
τ1 . . . τn
.
.
.
∀α. σ σ
PROP2 , α ∈ FV(τ1, . . . , τn)
σ[α := τ] ∀α. σ
Γ M : ∀α. σ Γ τ : ∗ Γ, α:∗ M:σ
λ2
Γ M τ : σ[α := τ] Γ Λα. M : ∀α. σ
4
6. Свойства ⊥
Напомним, что ⊥ ≡ ∀α. α.
Терм этого типа позволяет породить терм любого типа
σ : ∗, x : ⊥ (x σ) : σ
σ:∗ λx⊥. (x σ) : ⊥ → σ
Однако тип ⊥ не населён в λ2 не существует замкнутого
терма с таким типом.
С логической точки зрения ⊥ это абсурд, заведомо ложное
утверждение.
6
7. Связка ¬ (отрицание)
В λ2 связка ¬ может быть определена так:
¬σ ≡ σ → ⊥
Правило удаления ¬ Правило введения ¬
[σ] [σ]
.
.
. .
.
.
σ ¬σ τ ¬τ
τ ¬σ
Покажем, что они выразимы в λ2.
7
8. Связка ¬ (2)
Удаление ¬. Тип
σ → ¬σ → τ ≡ σ → (σ → ⊥) → τ ≡ σ → (σ → ∀α. α) → τ
Терм этого типа (в контексте Γ = σ : ∗, τ : ∗)
λxσ. λf σ→⊥. f x τ
Из противоречия следует все что угодно.
Введение ¬. Тип
(σ → τ) → (σ → ¬τ) → ¬σ ≡ (σ → τ) → (σ → τ → ⊥) → σ → ⊥
Терм этого типа
λ f σ→τ. λ gσ→τ→⊥. λ xσ. g x (f x)
Доказательство приведением к нелепости reductio ad absurdum.
8
9. Связка ∧ (конъюнкция)
В λ2 связка ∧ может быть определена так:
σ ∧ τ ≡ ∀α. (σ → τ → α) → α
α ∈ FV(σ), α ∈ FV(τ).
Правила удаления ∧ Правило введения ∧
σ∧τ σ∧τ σ τ
σ τ σ∧τ
Покажем, что они выразимы в λ2.
9
10. Введение ∧
Введение ∧. Тип
σ → τ → (σ ∧ τ) ≡ σ → τ → (∀α. (σ → τ → α) → α)
Терм этого типа
λ xσ yτ. Λ α. λ f σ→τ→α. f x y
В стандартной интерпретации λ2, как языка программирова-
ния, этот терм описывает пару (двухэлементный кортеж):
σ : ∗, τ : ∗, x : σ, y : τ x, y : σ × τ
10
11. Удаление ∧
Удаление ∧ (1). Тип (σ ∧ τ) → σ ≡ (∀α. (σ → τ → α) → α) → σ
Терм этого типа
λ fσ ∧ τ. f σ (λ xσ yτ. x)
σ : ∗, τ : ∗, f : σ ∧ τ f σ : (σ → τ → σ) → σ
σ : ∗, τ : ∗, f : σ ∧ τ f σ (λ xσ yτ. x) : σ
Удаление ∧ (2). Тип (σ ∧ τ) → τ ≡ (∀α. (σ → τ → α) → α) → τ
Терм этого типа
λ f σ∧τ. f τ (λ xσ yτ. y)
σ : ∗, τ : ∗, f : σ ∧ τ f τ : (σ → τ → τ) → τ
σ : ∗, τ : ∗, f : σ ∧ τ f τ (λ xσ yτ. y) : τ
11
12. Связка ∨ (дизъюнкция)
В λ2 связка ∨ может быть определена так:
σ ∨ τ ≡ ∀α. (σ → α) → (τ → α) → α
α ∈ FV(σ), α ∈ FV(τ).
Правило удаления ∨ Правила введения ∨
[σ] [τ]
σ∨τ .
.
. .
.
.
ρ ρ σ τ
ρ σ∨τ σ∨τ
Покажем, что они выразимы в λ2.
12
13. Введение ∨
Введение ∨ (1). Тип
σ → (σ ∨ τ) = σ → (∀α. (σ → α) → (τ → α) → α)
Терм этого типа
λ xσ. Λ α. λ fσ→α gτ→α. f x
Введение ∨ (2). Тип
τ → (σ ∨ τ) = τ → (∀α. (σ → α) → (τ → α) → α)
Терм этого типа
λ yτ. Λ α. λ fσ→α gτ→α. g y
13
14. Удаление ∨
Удаление ∨. Тип
(σ ∨ τ) → (σ → ρ) → (τ → ρ) → ρ
= (∀α. (σ → α) → (τ → α) → α) → (σ → ρ) → (τ → ρ) → ρ
Терм этого типа
λ hσ∨τ fσ→ρ gτ→ρ. h ρ f g
Построение терма
σ : ∗, τ : ∗, ρ : ∗, h : σ ∨ τ h ρ : (σ → ρ) → (τ → ρ) → ρ
Это правило носит название доказательство разбором слу-
чаев.
14
15. Экзистенциальные типы
Трактовка ∀α. σ:
Функция из типов в термы, которая любому типу τ ставит
в соответствие терм с типом σ[α := τ].
Для σ = α → α имеем σ[α := τ] = τ → τ:
Λα. λxα. x : ∀α. α → α
(Λα. λxα. x)τ →β λxτ. x : τ → τ
Трактовка ∃α. σ:
Пара из некоторого типа τ и терма, имеющего тип σ[α := τ].
Для σ = α → γ имеем:
γ, λxγ. x : ∃α. α → γ
поскольку σ[α := γ] = γ → γ и λxγ. x : γ → γ.
15
16. ∃ (квантор существования)
В λ2 ∃ может быть определён так:
∃α . σ ≡ ∀β. (∀α. σ → β) → β
β ∈ FV(σ).
Правило удаления ∃ Правило введения ∃
[σ]
∃α. σ .
.
.
ρ σ[α := τ]
ρ ∃α. σ
Покажем, что они выразимы в λ2.
16
17. Введение ∃
Введение ∃. Тип
σ[α := τ] → ∃α. σ = σ[α := τ] → ∀β. (∀α. σ → β) → β
Терм этого типа (в контексте Γ = τ : ∗)
λ xσ[α:=τ]. Λβ. λf∀α. σ→β. f τ x
Построение терма
τ : ∗, σ : ∗, β : ∗, f : ∀α. σ → β f τ : σ[α := τ] → β
τ : ∗, σ : ∗, β : ∗, f : ∀α. σ → β, x : σ[α := τ] fτx : β
17
19. Кодирование в λ2: булев тип
Bool = ∀α. α → α → α
Констант этого типа в точности две: TRUE : Bool и FALSE : Bool:
TRUE = Λα. λ tα fα. t
FALSE = Λα. λ tα fα. f
Условный оператор задаёт способ использования для Bool:
IIF : Bool → ρ → ρ → ρ
IIF = λ eBool.λxρ yρ. e ρ x y
IIF e = λxρ yρ. e ρ x y
IIF e x y = e ρ x y
Комбин´торный
а синтаксис часто удобнее лямбд.
19
20. Кодирование в λ2: булев тип (2)
Проверка (в контексте ρ : ∗, a : ρ, b : ρ)
IIF TRUE a b →β TRUE ρ a b
= (Λα. λtα fα. t) ρ a b
→β (λ tρ fρ. t) a b
→β a
IIF FALSE a b →β FALSE ρ a b
= (Λα. λtα fα. f) ρ a b
→β (λ tρ fρ. f) a b
→β b
20
21. Кодирование в λ2: булев тип (3)
Операторы AND, OR и NOT.
AND : Bool → Bool → Bool
AND x y = Λα. λtα fα. x α (y α t f) f
Синим выделено отличие от бестиповой лямбды.
OR : Bool → Bool → Bool
OR x y = ??? самостоятельно
NOT : Bool → Bool
NOT x = ??? самостоятельно
21
22. Кодирование в λ2: двухэлементный кортеж
Тип пары значений с типами σ и τ (произведение типов σ × τ)
можно задать так:
σ × τ ≡ ∀α. (σ → τ → α) → α
Отметим, что σ × τ ≡ σ ∧ τ.
Любые два значения a : σ и b : τ порождают значение a, b
типа их произведения σ × τ:
PAIR a b ≡ a, b ≡ Λ α. λ fσ→τ→α. f a b
Тип этого конструктора пары
σ→τ→σ × τ ≡ σ → τ → ∀α. (σ → τ → α) → α
22
23. Кодирование в λ2: двухэлементный кортеж (2)
Две проекции пары p : σ × τ
FST : σ × τ → σ ≡ (∀α. (σ → τ → α) → α) → σ
FST p ≡ p σ (λ xσ yτ. x)
SND : σ × τ → τ ≡ (∀α. (σ → τ → α) → α) → τ
SND p ≡ p τ (λ xσ yτ. y)
Итератор для пары p : σ × τ
UNCURRY : (σ → τ → ρ) → σ × τ → ρ
UNCURRY ≡ λfσ→τ→ρ pσ×τ. p ρ f
UNCURRY f p ≡ p ρ f
Выразите FST и SND в терминах UNCURRY.
23
24. Кодирование в λ2: размеченное объединение
Тип размеченного объединения значений типов σ и τ (суммы
типов σ + τ) можно задать так:
σ + τ ≡ ∀α. (σ → α) → (τ → α) → α
Отметим, что σ + τ ≡ σ ∨ τ.
В σ + τ хранится либо значение типа σ, либо типа τ, инъек-
тированные в него одним из двух конструкторов
INJL : σ → σ + τ
INJL a ≡ Λα. λ fσ→α gτ→α. f a
INJR : τ → σ + τ
INJR b ≡ Λα. λ fσ→α gτ→α. g b
24
25. Кодирование в λ2: размеченное объединение (2)
σ + τ ≡ ∀α. (σ → α) → (τ → α) → α
Итератор для размеченного объединения hσ+τ
(разбор случаев):
CASES : (σ → ρ) → (τ → ρ) → (σ + τ) → ρ
CASES ≡ λfσ→ρ gτ→ρ hσ+τ. h ρ f g
CASES f g h ≡ h ρ f g
ρ задает тип результата разбора, а f и g являются обработ-
чиками допустимых вариантов хранения.
25
26. Кодирование в λ2: размеченное объединение (3)
TST1 : Bool + Nat
TST1 ≡ INJL FALSE ≡ Λα. λ fBool→α gNat→α. f FALSE
TST2 : Bool + Nat
TST2 ≡ INJR 42 ≡ Λα. λ fBool→α gNat→α. g 42
CASES f g h ≡ h ρ f g, где f : σ → ρ, g : τ → ρ, h : σ + τ
NOT : Bool → Bool ISZRO : Nat → Bool
CASES NOT ISZRO TST1 : Bool
CASES NOT ISZRO TST1 →β NOT FALSE →β TRUE
CASES NOT ISZRO TST2 : Bool
CASES NOT ISZRO TST2 →β ISZRO 42 →β FALSE
26
27. Кодирование в λ2: натуральные числа
Каков тип, например, 3 = λz s. s (s (s z))?
Если выбрать z : α, то из аппликаций ясно, что s : α → α.
Поэтому естественно определить
Nat = ∀α. α → (α → α) → α
(или, переставив в абстракции s и z, ∀α. (α → α) → α → α)
Конструкторы для Nat
ZERO : Nat
ZERO = Λα. λzα sα→α. z
SUCC : Nat → Nat
SUCC n = Λα. λzα sα→α. s (n α z s)
Индуктивный параметр перевычисляется .
27
28. Кодирование в λ2: натуральные числа (2)
Любое натуральное число выразимо через конструкторы
n = Λα. λ zα sα→α. sn(z) = SUCCn(ZERO)
В ЯП конструкторы часто вводят как примитивы:
data Nat = ZERO | SUCC Nat
Итератор для n : Nat
IT : ρ → (ρ → ρ) → Nat → ρ
IT ≡ λxρ fρ→ρ nNat. n ρ x f
IT x f n ≡ n ρ x f
28
29. Кодирование в λ2: натуральные числа (3)
Итерирование происходит ожидаемым образом
(контекст ρ : ∗, x : ρ, f : ρ → ρ; IT x f n ≡ n ρ x f):
IT x f ZERO ≡ (Λα. λzα sα→α. z) ρ x f
→β (λzρ sρ→ρ. z) x f
→β (λsρ→ρ. x) f
→β x
IT x f (SUCC n) ≡ (Λα. λzα sα→α. s (n α z s)) ρ x f
→β (λzρ sρ→ρ. s (n ρ z s)) x f
→β (λsρ→ρ. s (n ρ x s)) f
→β f (n ρ x f)
= f (IT x f n)
29
30. Кодирование в λ2: натуральные числа (4)
Рекурсия в терминах итерации
XZ : σ → σ × Nat
XZ x ≡ x, ZERO
FS : (σ → Nat → σ) → σ × Nat → σ × Nat
FS f p ≡ f (FST p) (SND p), SUCC (SND p)
REC : Nat → σ → (σ → Nat → σ) → σ
REC n x f ≡ FST (IT (XZ x) (FS f) n)
Итерирование IT x f n ≡ n ρ x f идёт с типом ρ ≡ σ × Nat.
В частности,
PRED : Nat → Nat
PRED n ≡ REC n ZERO (λ xNat yNat. y)
30
31. Кодирование в λ2: списки
Каков тип [3, 7, 42] = λn c. c 3 (c 7 (c 42 n))?
Если выбрать n : α, то c : Nat → α → α. Определим
ListNat ≡ ∀α. α → (Nat → α → α) → α
List σ ≡ ∀α. α → (σ → α → α) → α
Конструкторы для List σ
NIL : List σ
NIL ≡ Λα. λnα cσ→α→α. n
CONS : σ → List σ → List σ
CONS x l ≡ Λα. λnα cσ→α→α. c x (l α n c)
[3, 7, 42] = CONS 3 (CONS 7 (CONS 42 NIL))
31
32. Кодирование в λ2: списки (2)
Итератор для l : List σ (свёртка)
FOLD : ρ → (σ → ρ → ρ) → List σ → ρ
FOLD ≡ λxρ fσ→ρ→ρ lList σ. l ρ x f
FOLD x f l ≡ l ρ x f
Проверьте, что свёртка ведёт себя ожидаемо, то есть
FOLD x f NIL β x
FOLD x f (CONS e l) β f e (l ρ x f)
= f e (FOLD x f l)
Пример свёртки:
FOLD [3, 7, 42] x f = f 3 (f 7 (f 42 x))
32
33. Общая теория (индуктивных типов Мартин-Лёфа)
Рассмотрим
SomeType = ∀α. τ1 → τ2 → . . . → τn → α
где τi зависит от α, имея α по крайней мере в самой правой
позиции: τi = . . . → α
Количество конструкторов равно n ( арности SomeType):
≡ ∀α. α → α 1 штука
σ × τ ≡ ∀α. (σ → τ → α) → α 1 штука
Bool ≡ ∀α. α → α → α 2 штуки
σ + τ ≡ ∀α. (σ → α) → (τ → α) → α 2 штуки
List σ ≡ ∀α. α → (σ → α → α) → α 2 штуки
33
34. Теория типов Мартин-Лёфа: тип конструктора
SomeType = ∀α. τ1 → τ2 → . . . → τn → α
Арность i-го конструктора равна арности τi.
Тип i-го конструктора fi : τi[α := SomeType].
Например, для списка fi : τi[α := List σ]:
List σ ≡ ∀α. α → (σ → α → α) → α
NIL : List σ
CONS : σ → List σ → List σ
34
35. Теория типов Мартин-Лёфа: код конструктора
Пусть τi = σ → τ → α → α. Тип i-го конструктора
fi : σ → τ → SomeType → SomeType
Построение i-ого конструктора однозначная процедура:
SomeType
fi = λxσ xτ a1
1 2 . {...} : σ → τ → SomeType → SomeType
fi x1 x2 a1 = {...} : SomeType
τ τ
fi x1 x2 a1 = Λα. λt11 t22 . . . tτn . ti {...}
n
τ τ
fi x1 x2 a1 = Λα. λt11 t22 . . . tτn . ti x1 x2 (a1 α t1 t2 . . . tn)
n
Индуктивные параметры реконструируются .
NIL ≡ Λα. λnα cσ→α→α. n
CONS x l ≡ Λα. λnα cσ→α→α. c x (l α n c)
35
36. Теория типов Мартин-Лёфа: итераторы
Если SomeType = ∀α. τ1 → τ2 → . . . → τn → α, то тип итератора
IT : τ1[α := ρ] → τ2[α := ρ] → . . . → τn[α := ρ] → SomeType → ρ
Код итератора тривиален; для s : SomeType имеем
τ [α:=ρ] τ [α:=ρ] τ [α:=ρ] SomeType
IT = λx11 x22 . . . xnn s . s ρ x1 x2 . . . xn
IT x1 x2 . . . xn s = s ρ x1 x2 . . . xn
Вспомним итераторы
σ+τ CASES f g h ≡ h ρ f g
σ×τ UNCURRY f p ≡ p ρ f
List σ FOLD x f l ≡ l ρ x f
36
37. Домашнее задание
Реализуйте функции OR : Bool → Bool → Bool и NOT : Bool → Bool.
Задайте в λ2 перечислительный тип Three, населённый ровно
тремя константами ONE : Three, TWO : Three, THREE : Three.
Выпишите его конструкторы и итератор для него.
Реализуйте функцию SHIFT : Three → Three со следующим по-
ведением:
SHIFT ONE = TWO
SHIFT TWO = THREE
SHIFT THREE = ONE
37
38. Домашнее задание (2)
Выразите FST и SND в терминах UNCURRY.
Выразите PLUS и MULT для Nat в терминах IT.
Выразите MAP : (σ → τ) → List σ → List τ в терминах FOLD.
Определите в λ2 индуктивный тип Tree σ τ, задающий бинар-
ное дерево, хранящее в узлах значения типа σ, а в листьях
типа τ.
Выпишите его конструкторы и итератор для него.
38
39. Литература (1)
TAPL гл. 23, 24
Benjamin C. Pierce, Types and Programming Languages, MIT
Press, 2002
http://www.cis.upenn.edu/~bcpierce/tapl
ITT гл. 5
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay
http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html
39
40. Литература (2)
ОЯП гл. 9
Дж.Митчелл, Основания языков программирования,
М.-Ижевск, НИЦ РХД, 2010
PAT гл. 11
Jean-Yves Girard, Paul Taylor, Yves Lafont, Proofs and Types,
Cambridge University Press, 1989
40