Язык программирования формальных документов

Круглый стол

Арсений Жижелев, Праймтолк / zhizhelev@primetalk.ru

1. Язык логики медицинских документов

  • функциональный (λ-исчисление)
  • идентификаторы с пробелами
  • вывод типов
  • гибкая ассоциативность на основе типов

Пример


    let   minimal required age   be   18  years;
    let   required gender   be   "m";
    let   constraints   be
           minimal age constraint &&
           gender constraint;
    require constraints;
    if   "J0135"   is billed
    then
        policy failed
    else
        not applicable
					

  let   minimal age constraint   be (
     let   age   be of type   Long;
     let   minimal required age   be of type   Long;

     age < minimal required age
  );

  let gender constraint be (
    let   gender            be of type   String;
    let   required gender   be of type   String;

    gender != required gender
  );
					

2. SAT-решатели

  • Доказывают теоремы
  • NP-полная задача
  • эффективные алгоритмы - миллионы ограничений на сотни тысяч переменных

пример


assert  x1 && !x5 && x4
assert !x1 &&  x5 && x3 && x4
					

  (x1 ∨ ¬x5 ∨ x4) ∧ (¬x1 ∨ x5 ∨ x3 ∨ x4)
					

 1 -5 4
-1 5 3 4
					
  • найти значения x1, ... xn
  • или доказать невозможность
    
     1
    -1
    					            

3. SMT-решатели

  • Доказывают теоремы, включающие
    • линейные неравенства над вещественными переменными
    • теорию массивов и списков
    • теорию битовых векторов (int32, ...)
  • эффективные специализированные алгоритмы для этих теорий

Вывод совместимости типов


def max(x: Int, y: Int): { v: Int => v >= x && v >= y } =
  if (x > y) x else y

type NonNegative = { v: Int => v >= 0}

def sqrt(z: NonNegative): Double =
  scala.math.sqrt(z.toDouble)

val u: Int = ???
sqrt(max(0,u))
					

4. Модель договора

  • мета условия (преамбула/заключение) (о контракте)
    • тип договора
    • стороны
    • срок действия
    • термины и определения
  • предмет договора
    • обязательства сторон
    • возможности/права сторон
    • условные (по событию) обязанности и возможности

События

  • выполнение действия по договору
  • наступление внешних условий
  • истечение сроков с указанных событий
  • события оформляются актами
  • оракул гарантирует соответствие актов реальному миру

Формулировка контракта в темпоральной логике

  • проверка выполнимости требований контракта для цепочки событий
  • вычисление следствий из префикса цепочки событий
  • осуществление автоматических действий по контракту, играя роль одной из сторон

Обсуждение

  • приложения (юриспруденция, строительство, медицина)
    • контракты
    • нормативные документы
  • программное обеспечение
    • языки/IDE
    • алгоритмы обработки
    • репозитории формализованных документов
  • источники финансирования
    • kick starter/patreon
    • venture funds
    • ...