язык работы с КМАС (Yafoll сообщение 1)Alex Shkotin
Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык для работы с такими системами - YAFOLL (Yet Another First Order Logic Language).
Показывается применимость таких систем для построения математической модели части реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах объектов и процессов предметной области.
Дается математическое обоснование S.O.L.I.D принципов с помощью логики Хоара, из которого следует, что S.O.L.I.D верны не только для ООП, но и для статического полиморфизма, но и для императивного программирования вообще.
This work introduces quantum bialgebras, which differ from the standard Uq(sl2) by presence of von Neumann regular Cartan-like generators and the associated idempotents. Both invertible and von Neumann regular antipodes on such bialgebras are presented explicitly; the latter case leads to a von Neumann-Hopf algebra structure. Also, explicit forms of some particular R-matrices (also invertible and von Neumann regular) are presented, and the latter respects the Pierce decomposition. Some finite dimensional representations for those algebras are constructed.
Обработка коллекций наизнанку: как применить много функций к одному аргументу...corehard_by
Современный язык C++ подвергается всё большему влиянию понятий и методов, заимствованных из парадигмы функционального программирования. В этом докладе представлен пример типично функционального решения, пригодного для довольно широкого круга практических задач. В противоположность привычной обработки коллекций (функции fmap, std::transform), где набор значений пропускается через единственную функцию, можно делать наоборот - подать одно значение на коллекцию функций. Есть несколько способов едалать это, один из них подробно описан здесь. Доклад охватывает как математические свойства, так и реализацию на языке C++, выполненную с использованием вариадических шаблонах и метапрограммирования.
Докладчик: Евгений Тюменцев, HWdTech, Омск.
«Будет дано небольшое введение в теорию формальных языков программирования. Разобран пример построения транслятора для небольшого языка программирования и рассказано, как это можно применять на проектах или, например, при выполнении лабораторных работ в ВУЗе
Опыт работы в ИТ-отрасли 12 лет. Был программистом, системным архитектором, руководителем проектов. Специализируюсь на разработке серверных, многопоточных, высокопроизводительных приложений.
16 лет преподаю в ОмГУ (ИМИТ, ФКН). Читаемые дисциплины: Проектирование ПО, разработка серверов и серверных приложений. Руковожу курсовыми и дипломными работами.»
язык работы с КМАС (Yafoll сообщение 1)Alex Shkotin
Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык для работы с такими системами - YAFOLL (Yet Another First Order Logic Language).
Показывается применимость таких систем для построения математической модели части реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах объектов и процессов предметной области.
Дается математическое обоснование S.O.L.I.D принципов с помощью логики Хоара, из которого следует, что S.O.L.I.D верны не только для ООП, но и для статического полиморфизма, но и для императивного программирования вообще.
This work introduces quantum bialgebras, which differ from the standard Uq(sl2) by presence of von Neumann regular Cartan-like generators and the associated idempotents. Both invertible and von Neumann regular antipodes on such bialgebras are presented explicitly; the latter case leads to a von Neumann-Hopf algebra structure. Also, explicit forms of some particular R-matrices (also invertible and von Neumann regular) are presented, and the latter respects the Pierce decomposition. Some finite dimensional representations for those algebras are constructed.
Обработка коллекций наизнанку: как применить много функций к одному аргументу...corehard_by
Современный язык C++ подвергается всё большему влиянию понятий и методов, заимствованных из парадигмы функционального программирования. В этом докладе представлен пример типично функционального решения, пригодного для довольно широкого круга практических задач. В противоположность привычной обработки коллекций (функции fmap, std::transform), где набор значений пропускается через единственную функцию, можно делать наоборот - подать одно значение на коллекцию функций. Есть несколько способов едалать это, один из них подробно описан здесь. Доклад охватывает как математические свойства, так и реализацию на языке C++, выполненную с использованием вариадических шаблонах и метапрограммирования.
Докладчик: Евгений Тюменцев, HWdTech, Омск.
«Будет дано небольшое введение в теорию формальных языков программирования. Разобран пример построения транслятора для небольшого языка программирования и рассказано, как это можно применять на проектах или, например, при выполнении лабораторных работ в ВУЗе
Опыт работы в ИТ-отрасли 12 лет. Был программистом, системным архитектором, руководителем проектов. Специализируюсь на разработке серверных, многопоточных, высокопроизводительных приложений.
16 лет преподаю в ОмГУ (ИМИТ, ФКН). Читаемые дисциплины: Проектирование ПО, разработка серверов и серверных приложений. Руковожу курсовыми и дипломными работами.»
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)
Два способа представления логических систем в системах
типов:
• Прямое представление:
одна система типов одна логика;
• Logical Framework:
одна система типов много логик.
Логические связки и их правила введения и удаления:
Прямое представление: из системы типов;
Logical Framework: из предзаданного контекста.
2
3. Высказывания-как-типы (2)
Пусть A высказывание некоторой логики L, [[A]] его ин-
терпретация (тип) в некоторой системе типов.
Основные мета-вопросы:
• корректность (soundness):
Если A доказуемо в L, то [[A]] обитаем.
• полнота (completness):
Если [[A]] обитаем, то A доказуемо в L.
3
4. Высказывания-как-типы в системах λ-куба
Корректность.
Имеет место для всех вершин куба.
Полнота.
Имеет место для левой грани куба.
При некоторых оговорках выполняется для λP.
Не имеет места для λPω.
Подробнее [LCWT 5.4].
4
5. Прямое представление логики в λP (1)
В λP можно вложить минимальную логику предикатов пер-
вого порядка.
Домены и формулы логики представляются типами, сигна-
тура задается в контексте:
Γ ≡ A : ∗, a : A, f : A → A, P : A → ∗, Q : A → ∗, R : A → A → ∗
Связки: импликация представляется как →, а квантор ∀ как
Π:
∀x ∈ A. P x ∼ Πx : A. P x
∀x ∈ A. R x x ⇒ P x ∼ Πx : A. R x x → P x
Правила введения и удаления это лямбда-абстракция и
аппликация.
5
6. Прямое представление логики в λP (2)
A:∗ A→∗ :
Если A это тип, рассматриваемый как множество, то A → ∗
представляет собой кайнд предикатов над A.
A : ∗, P : A → ∗, a : A Pa : ∗
Если a ∈ A, и P предикат над A, то P a это тип, рассмат-
риваемый как высказывание (истинное, если тип населен, и
ложное в противном случае).
Различие между множествами и предикатами можно ввести
явно:
A : ∗s, P : A → ∗p, a : A P a : ∗p
6
7. Прямое представление логики в λP (3)
A : ∗, R : A → A → ∗ Πa : A. R a a : ∗
Если R бинарный предикат над A, то ∀a ∈ A. R a a высказы-
вание.
A : ∗, P : A → ∗, Q : A → ∗ Πa : A. P a → Q a : ∗
Это высказывание утверждает, что предикат P, рассматри-
ваемый как множество, вложен в предикат Q.
7
8. Прямое представление логики в λP (4)
A : ∗, P : A → ∗ Πa : A. P a → P a : ∗
Это высказывание утверждает рефлексивность вложения.
Доказательство рефлексивности вложения.
A : ∗, P : A → ∗ λa : A. λx : P a. x : Πa : A. P a → P a : ∗
Дерево вывода:
A : ∗, P : A → ∗, a : A, x : P a x : Pa
A : ∗, P : A → ∗, a : A λx : P a. x : P a → P a
A : ∗, P : A → ∗ λa : A. λx : P a. x : Πa : A. P a → P a
8
9. Прямое представление логики в λP (5)
В контексте
Γ ≡ A : ∗, P : A → ∗, Q : ∗
имеем
Γ (Πa : A. P a → Q) → (Πa : A. P a) → Q : ∗
Γ , a0 : A λf : (Πa : A. P a → Q). λg : (Πa : A. P a). f a0 (g a0)
: Πf : (Πa : A. P a → Q). Πg : (Πa : A. P a). Q ≡
(Πa : A. P a → Q) → (Πa : A. P a) → Q
Это высказывание доказывает , что
(∀a ∈ A. P a ⇒ Q) ⇒ (∀a ∈ A. P a) ⇒ Q
является истинным для непустых структур A.
9
10. Прямое представление логики в λP2
Напомним, что ⊥ ≡ ΠA : ∗. A ≡ ∀A. A.
Пусть Γ ≡ A : ∗, R : A → A → ∗, тогда
Γ (Πa : A. Πb : A. R a b → R b a → ⊥) → (Πa : A. R a a → ⊥) : ∗
Это высказывание утверждает, что асимметричное бинарное
отношение иррефлексивно
(∀a, b ∈ A. R a b ⇒ R b a ⇒ ⊥) ⇒ (∀a ∈ A. R a a ⇒ ⊥)
Докажите это утверждение, приведя терм такого типа.
10
11. Прямое представление логики в λω
В λ2 было:
σ + τ ≡ Πα : ∗. (σ → α) → (τ → α) → α
σ : ∗, τ : ∗ σ+τ :∗
В λω можно ввести
∨ : ∗→∗→∗
∨ ≡ λσ : ∗. λτ : ∗. σ + τ
Тогда σ → ∨ σ τ тавтология:
σ : ∗, τ : ∗ λ xσ α∗ fσ→α gτ→α. f x : σ → ∨ σ τ
Докажите, что ∧ σ τ → σ и ∧ σ τ → τ тавтологии.
11
12. Прямое представление логики в λPω
В λP можно диагонализовать имеющийся бинарный пре-
дикат
A : ∗, P : A → A → ∗, a : A Paa : ∗ :
A : ∗, P : A → A → ∗ λa : A. P a a : A → ∗ :
В λPω можно задать оператор диагонализации , абстраги-
руясь по предикату
A:∗ λP : A → A → ∗. λa : A. P a a : (A → A → ∗) → (A → ∗) :
и по домену
λA : ∗. λP : A → A → ∗. λa : A. P a a : ΠA : ∗. ΠP : A → A → ∗. Πa : A. ∗ :
12
13. Logical Framework (LF)
• Система типов используется как метасистема.
• Объектная логическая система задаётся в контексте, в
том числе там задаются и правила вывода.
• Сигнатура логики также задаётся контексте.
Logical Framework позволяет вложить различные логические
системы в одну систему типов.
13
14. PROP через LF в λP (1)
Минимальная пропозициональная логика PROP.
Вводится специальный тип имён высказываний prop:
prop : ∗
Импликация связывает два высказывания
⇒ : prop → prop → prop
Импликацию будем записывать инфиксно
x : prop, y : prop x ⇒ y : prop
14
15. PROP через LF в λP (2)
Конструктор типа (типовый оператор)
T : prop → ∗
поднимает имя высказывания p : prop в тип его доказа-
тельства T p : ∗.
Населенность типа T p соответствует доказуемости высказы-
вания p.
Введение и удаление импликации
imp intr : Πa : prop. Πb : prop. (T a → T b) → T (a ⇒ b)
imp elim : Πa : prop. Πb : prop. T (a ⇒ b) → T a → T b
15
16. PROP через LF в λP (3)
Например, доказательство, что из a следует a:
Представление логики Формула Доказательство
Прямое кодирование a→a λx : a. x
LF-вложение T (a ⇒ a) imp intr a a (λx : T a. x)
16
17. PROP через LF в λP (4)
Контекст сигнатура для PROP:
ΣPROP ≡ prop : ∗,
T : prop → ∗,
⇒ : prop → prop → prop,
imp intr : Πa : prop. Πb : prop. (T a → T b) → T (a ⇒ b)
imp elim : Πa : prop. Πb : prop. T (a ⇒ b) → T a → T b
Теорема. LF-кодирование PROP в λP корректно, то есть
PROP p ⇒ ∃ M, a1 , . . . , an [ΣPROP , a1 : prop, . . . , an : prop λP M : T p]
Теорема. LF-кодирование PROP в λP полно, то есть
ΣPROP , a1 : prop, . . . , an : prop λP M : T p ⇒ PROP p
17
18. PROP через LF в λP (5)
Пример. Докажем, что a ⇒ (b ⇒ a).
Пусть Γ ≡ ΣPROP , a : prop, b : prop, тогда
Γ, x:T a (λy : T b. x) : T b → T a
Γ, x:T a imp intr b a (λy : T b. x) : T (b ⇒ a)
Γ λx : T a. imp intr b a (λy : T b. x) : T a → T (b ⇒ a)
Γ imp intr a (b ⇒ a) (λx : T a. imp intr b a (λy : T b. x))
: T (a ⇒ (b ⇒ a))
Γ imp intr [ ] [ ] (λx : T a. imp intr [ ] [ ] (λy : T b. x))
: T (a ⇒ (b ⇒ a))
для справки
imp intr : Πa : prop. Πb : prop. (T a → T b) → T (a ⇒ b)
18
19. PRED через LF в λP (1)
Минимальная логика предикатов (над доменом A) PRED.
ΣPRED ≡ prop : ∗, T : prop → ∗, A : ∗, f : A → A, R : A → A → prop,
⇒ : prop → prop → prop,
imp intr : Πa : prop. Πb : prop. (T a → T b) → T (a ⇒ b),
imp elim : Πa : prop. Πb : prop. T (a ⇒ b) → T a → T b,
∀ : (A → prop) → prop,
∀ intr : ΠP : A → prop. (Πx : A. T (P x)) → T (∀P),
∀ elim : ΠP : A → prop. T (∀P) → Πx : A. T (P x)
Квантификация ∀x ∈ A. P x представляется как ∀(λx : A. P x).
Предикаты теперь обычные функции, а не типовые операто-
ры!
Теорема. LF-кодирование PRED в λP корректно и полно.
19
20. PRED через LF в λP (2)
Пример. Докажите, что
∀z ∈ A.(∀x, y ∈ A. R x y) ⇒ R z z
Решение. Тип этого утверждения в LF:
T (∀(λz : A. (∀(λx : A. (∀(λy : A. R x y)))) ⇒ (R z z)))
Терм этого типа:
∀ intr [ ](λz : A. imp intr [ ] [ ] (λf : T (∀(λx : A. (∀(λy : A. R x y)))).
∀ elim [ ] (∀ elim [ ] f z) z))
для справки
imp intr : Πa : prop. Πb : prop. (T a → T b) → T (a ⇒ b)
∀ intr : ΠP : A → prop. (Πx : A. T (P x)) → T (∀P)
∀ elim : ΠP : A → prop. T (∀P) → Πx : A. T (P x)
20
21. Домашнее задание (1)
Для прямого представления логики в λP найдите контекст и
терм, доказывающий утверждения
(∀x ∈ A. P x ⇒ Q x) ⇒ (∀x ∈ A. P x) ⇒ (∀x ∈ A. Q x)
(∀x ∈ A. P x ⇒ ∀z ∈ A. R z z) ⇒ (∀x ∈ A. P x) ⇒ (∀z ∈ A. R z z)
Докажите первое из этих утверждений в λP, рассматривае-
мой как LF для минимальной логики предикатов PRED.
21
22. Домашнее задание (2)
В λω определим σ × τ ≡ Πα : ∗. (σ → τ → α) → α и
∧ : ∗→∗→∗
∧ ≡ λσ : ∗. λτ : ∗. σ × τ
Для прямого представления логики в λω докажите, что ∧ σ τ →
σ и ∧ σ τ→τ тавтологии.
В λω определим
¬ : ∗→∗
¬ ≡ λα : ∗. α → ⊥
Для прямого представления логики в λω докажите, что (σ →
τ) → (¬ τ → ¬ σ) тавтология.
22
23. Домашнее задание (3)
В λP2 найдите терм M, такой что для Γ ≡ A : ∗, R : A → A → ∗
Γ M : (Πa : A. Πb : A. R a b → R b a → ⊥) → (Πa : A. R a a → ⊥)
Иными словами докажите (в прямом представления логики
в λP2), что асимметричное бинарное отношение иррефлек-
сивно.
В λP, рассматриваемой как LF для минимальной пропози-
циональной логики, докажите, что (a ⇒ b) ⇒ ((b ⇒ c) ⇒ (a ⇒
c)), то есть сконструируйте терм типа T ((a ⇒ b) ⇒ ((b ⇒ c) ⇒
(a ⇒ c))) в контексте a : prop, b : prop, c : prop.
23
24. Литература (1)
ITT гл. 6
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay
http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html
LCWT гл. 5.4
Henk Barendregt, Lambda calculi with types,
Handbook of logic in computer science (vol. 2), Oxford University
Press, 1993
24
25. Литература (2)
ATTAPL гл. 2
Benjamin C. Pierce, editor.
Advanced Topics in Types and Programming Languages, MIT,
2005
25