Аннотация
Тема реферата «Исследование производной»
Руководитель: Гиниятуллина Рауфа Нурловна.
Автор: Миннегареев Роман
Предмет: математика
Класс, образовательное учреждение: 11 «а» класс МКОУ СОШ №18 п. Октябрьский
Реферат выполнен в рамках предметной области «Математика». Работа содержит все основные составные элементы реферата: введение, основная часть, заключение, приложение. Общий объем страниц, включая приложения, составляет 33 страницы. Во введении сформулированы актуальность, цель и задачи выполненной работы.
4.1 Материалы модуля
4.2 k-перестановки из n элементов
4.3 Урновые схемы и схемы раскладки по ящикам.
4.4 Подсчет отображений конечных множеств
4.5 Рекуррентные соотношения
Аннотация
Тема реферата «Исследование производной»
Руководитель: Гиниятуллина Рауфа Нурловна.
Автор: Миннегареев Роман
Предмет: математика
Класс, образовательное учреждение: 11 «а» класс МКОУ СОШ №18 п. Октябрьский
Реферат выполнен в рамках предметной области «Математика». Работа содержит все основные составные элементы реферата: введение, основная часть, заключение, приложение. Общий объем страниц, включая приложения, составляет 33 страницы. Во введении сформулированы актуальность, цель и задачи выполненной работы.
4.1 Материалы модуля
4.2 k-перестановки из n элементов
4.3 Урновые схемы и схемы раскладки по ящикам.
4.4 Подсчет отображений конечных множеств
4.5 Рекуррентные соотношения
Евгений Котельников. Зависимые типы в HaskellFProg
Системы зависимых типов позволяют оперировать данными на уровне типов, что может значительно повысить точность спецификации программ. Несмотря на отсутствие поддержки самих зависимых типов в Haskell, некоторые их свойства могут быть реализованы с помощью расширений языка. Будет представлен ряд техник, приближающий Haskell к возможностям языков вроде Agda, Coq и Epigram. Доклад имеет вводный характер и не требует предварительных знаний в обсуждаемых в нём темах.
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. Предварительные замечания (1)
Типы представляют собой объекты синтаксической природы
и могут быть присвоены лямбда-термам.
Если M терм и тип α присвоен M, то пишут
M:α
Например, в большинстве систем I : α → α, то есть тожде-
ственной функции может быть приписан тип α → α. Если x,
являющийся аргументом функции I, имеет тип α, то значе-
ние I x тоже имеет тип α.
В общем случае α → β является типом функции из α в β.
2
3. Предварительные замечания (2)
Есть два семейства систем типов.
Системы в стиле Карри: Термы те же, что и в бестиповой
теории. Каждый терм обладает множеством различных ти-
пов (пустое, одно- или многоэлементное, бесконечное).
Системы в стиле Чёрча: Термы аннотированные вер-
сии бестиповых термов. Каждый терм имеет тип (обычно
уникальный), выводимый из способа, которым терм анноти-
рован.
Иногда используют такую терминологию:
Системы в стиле Карри лямбда-исчисление с присваива-
нием типов.
Системы в стиле Чёрча системы типизированного лямбда-
исчисления.
3
4. Предварительные замечания (3)
Програмистский подход: термы интерпретируются как про-
граммы, а типы как их частичные спецификации.
Системы в стиле Карри: неявная типизация (например, Haskell,
Ocaml).
Системы в стиле Чёрча: явная типизация (большинство ти-
пизированных языков).
Логический подход: типы интерпретируются как высказы-
вания, а термы как их доказательства.
4
5. Типы системы λ→ (1)
Самая простая система это просто типизированное λ-
исчисление (λ→ или Simple Type Theory (STT)).
Множество типов T системы λ→ определяется индуктивно:
α, β, . . . ∈ T (переменные типа)
σ, τ ∈ T ⇒ (σ → τ) ∈ T (типы пространства функций)
В абстрактном синтаксисе:
T ::= V | T → T
Здесь V = {α, β, . . .} множество типовых переменных.
Соглашение: α, β, γ используем для типовых переменных, а
σ, τ, ρ для произвольных типов.
5
7. Как типизировать термы? (1)
Если терм переменная как угодно:
x : α, y : α → β, z : (α → β) → ((α → β) → β) → β.
Если терм аппликация M N, то
M должно быть функцией, то есть иметь стрелочный тип
M : σ → τ;
N должно быть подходящим аргументом, то есть иметь
тип N : σ;
вся аппликация должна иметь тип результата применения
функции: (M N) : τ.
Например, для x : α, y : α → β имеем (y x) : β.
Добавив z : β → γ, получим z (y x) : γ.
А какие должны иметь типы x и y, чтобы x (y x) : β?
7
8. Как типизировать термы? (2)
Если терм абстракция λx. M, то тип должен быть стрелоч-
ным (λx. M) : σ → τ, причём тип аргумента x : σ и тип тела
абстракции M : τ.
Например, для x : α имеем (λx. x) : α → α.
А надо ли здесь отдельно указывать, что x : α?
Если не указать, то допустимо и (λx. x) : β → β и даже (λx. x) :
(α → β) → (α → β) стиль Карри.
Если указать (λx : α. x) : α → α, то тип терма определяется
однозначно стиль Чёрча.
Типизируйте по Чёрчу: λx : ?. λy : ?. x (y x) : ?
8
9. Как типизировать термы? (3)
Правила ассоциативности для типов (вправо), аппликации
(влево) и абстракции (вправо) хорошо согласованы друг с
другом:
F : α → (β → (γ → δ)) (M : α, N : β, P : γ)
(F M) : β → (γ → δ)
((F M) N) : γ → δ
(((F M) N) P) : δ
Q:ρ
(λy : τ. Q) : τ → ρ
(λx : σ. (λy : τ. Q)) : σ → (τ → ρ)
Зелёные скобки опускаются.
9
10. Предтермы системы λ→ а ля Карри
Множество предтермов (или псевдотермов) Λ строится
из переменных из V = {x, y, z, . . .} с помощью аппликации и
абстракции:
x∈V ⇒ x∈Λ
M, N ∈ Λ ⇒ (M N) ∈ Λ
M ∈ Λ, x ∈ V ⇒ (λx. M) ∈ Λ
В абстрактном синтаксисе
Λ ::= V | (Λ Λ) | (λV. Λ)
То есть предтермы это термы бестипового λ-исчисления.
10
11. Предермы системы λ→ а ля Чёрч
Множество предтермов ΛT строится из переменных из V =
{x, y, z, . . .} с помощью аппликации и аннотированной типами
абстракции:
x ∈ V ⇒ x ∈ ΛT
M, N ∈ ΛT ⇒ (M N) ∈ ΛT
M ∈ ΛT, x ∈ V, σ ∈ T ⇒ (λx : σ. M) ∈ ΛT
В абстрактном синтаксисе
ΛT ::= V | (ΛT ΛT) | (λV: T. ΛT)
Все соглашения о скобках и ассоциативности те же, что в Λ.
11
12. Примеры предтермов
Система λ→ а ля Карри:
λx y. x
λf g x. f (g x)
λx. x x
Система λ→ а ля Чёрч:
λx : α. λy : β. x ≡ λxα yβ. x
λx : α. λy : α. x ≡ λxα yα. x
λf : α. λg : β. λx : γ. f (g x) ≡ λfα gβ xγ. f (g x)
λf : (β → γ). λg : (α → β). λx : α. f (g x) ≡ λfβ→γ gα→β xα. f (g x)
λx : α. x x ≡ λxα. x x
12
13. Утверждение о типизации
Утверждение (о типизации) в λ→ а ля Карри имеет вид
M:τ
где M ∈ Λ и τ ∈ T. Тип τ иногда называют предикатом, а
терм M субъектом утверждения.
(λx. x) : α → α (λx. x) : (α → β) → α → β (λx y. x) : α → β → α
Для λ→ а ля Чёрч надо лишь заменить Λ на ΛT
(λx : α. x) : α → α (λxα→β. x) : (α → β) → α → β (λxα yβ. x) : α → β → α
13
14. Объявления
Объявление это утверждение (о типизации) с термовой
переменной в качестве субъекта.
x:α
y:β
f:α→β
g : (α → β) → γ
14
15. Контексты
Контекст это множество объявлений с различными пе-
ременными в качестве субъекта.
Γ = {x1 : σ1, x2 : σ2, . . . , xn : σn}
(контекст иногда называют базисом или окружением)
Фигурные скобки множества иногда опускают:
Γ = x : α, y : β, f : α → β, g : (α → β) → γ
Контексты можно расширять, добавляя объявление новой
переменной:
∆ = Γ , z : α → γ = x : α, y : β, f : α → β, g : (α → β) → γ, z : α → γ
Контекст можно рассматривать как (частичную) функцию
из множества переменных V в множество типов T.
15
16. Правила типизации λ→ а ля Карри
Утверждение M : τ называется выводимым в контексте Γ ,
обозначение
Γ M:τ
если его вывод может быть произведен по правилам:
(x : σ) ∈ Γ ⇒ Γ x:σ
Γ M : σ → τ, Γ N:σ ⇒ Γ (M N) : τ
Γ, x:σ M:τ ⇒ Γ (λx. M) : σ → τ
Если существуют Γ и τ, такие что Γ M : τ, то предтерм M
называют (допустимым) термом.
16
17. Правила типизации λ→ а ля Карри (2)
(аксиома) Γ x : σ, если (x : σ) ∈ Γ
Γ M:σ→τ Γ N:σ
(удаление →)
Γ (M N) : τ
Γ, x:σ M:τ
(введение →)
Γ (λx. M) : σ → τ
Пример дерева вывода типа для λx y. x
x : α, y : β x:α
x:α (λy. x) : β → α
(λx y. x) : α → β → α
То есть для любых α, β ∈ T верно (λx y. x) : α → β → α.
17
18. Правила типизации λ→ а ля Чёрч
(аксиома) Γ x : σ, если (x : σ) ∈ Γ
Γ M:σ→τ Γ N:σ
(удаление →)
Γ (M N) : τ
Γ, x:σ M:τ
(введение →)
Γ (λx : σ. M) : σ → τ
Вывод типа для λxα yβ. x проще
x : α, y : β x:α
x:α (λy : β. x) : β → α
(λx : α. λy : β. x) : α → β → α
То есть для каждых α, β ∈ T верно (λxα yβ. x) : α → β → α.
18
19. Правила для λ→ а ля Карри : естественный вывод
Правила типизации в терминах естественного вывода (от-
брасываемые допущения зачёркиваются):
Правило удаления → Правило введения →
[x : σ]
.
.
.
M:σ → τ N:σ M:τ
(M N) : τ (λx. M) : σ → τ
[x : α]2 [y : β]1
x:α
1
(λy. x) : β → α
2
(λx y. x) : α → β → α
19
20. Правила для λ→ а ля Чёрч : естественный вывод
Правила типизации в терминах естественного вывода (от-
брасываемые допущения зачёркиваются):
Правило удаления → Правило введения →
[x : σ]
.
.
.
M:σ → τ N:σ M:τ
(M N) : τ (λx : σ. M) : σ → τ
[x : α]2 [y : β]1
x:α
1
(λy : β. x) : β → α
2
(λx : α. λy : β. x) : α → β → α
20
21. Типизируем λf g x. g (f x) и S = λx y z. x z (y z) а ля Карри
[f : α → β]3 [x : α]1
[g : β → γ]2
f x:β
g (f x) : γ
1
λx. g (f x) : α → γ
2
λg x. g (f x) : (β → γ) → α → γ
3
λf g x. g (f x) : (α → β) → (β → γ) → α → γ
[x : α → β → γ]3 [z : α]1 [y : α → β]2 [z : α]1
x z:β→γ y z:β
x z (y z) : γ
1
λz. x z (y z) : α → γ
2
λy z. x z (y z) : (α → β) → α → γ
3
λx y z. x z (y z) : (α → β → γ) → (α → β) → α → γ
21
22. Типизируем λf g x. g (f x) и S = λx y z. x z (y z) а ля Чёрч
[f : α → β]3 [x : α]1
[g : β → γ]2
f x:β
g (f x) : γ
1
λx : α. g (f x) : α → γ
2
λg : β → γ. λx : α. g (f x) : (β → γ) → α → γ
3
λf : α → β. λg : β → γ. λx : α. g (f x) : (α → β) → (β → γ) → α → γ
[x : α → β → γ]3 [z : α]1 [y : α → β]2 [z : α]1
x z:β→γ y z:β
x z (y z) : γ
1
λz : α. x z (y z) : α → γ
2
λy : α → β. λz : α. x z (y z) : (α → β) → α → γ
3
λx : α → β → γ. λy : α → β. λz : α. x z (y z) : (α → β → γ) → (α → β) → α → γ
22
27. Литература (1)
LCWT гл. 3
Henk Barendregt, Lambda calculi with types,
Handbook of logic in computer science (vol. 2), Oxford University
Press, 1993
ITT гл. 3
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay
http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html/
27
28. Литература (2)
TAPL гл. 9
Benjamin C. Pierce, Types and Programming Languages, MIT
Press, 2002
http://www.cis.upenn.edu/ bcpierce/tapl
I2FP гл. 4.1
John Harrison, Introduction to Functional Programming
http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/
русский перевод: http://code.google.com/p/funprog-ru/
28