Размышления о математической логике и программировании.
Когда-то давно я изобретал инволюцию, расширяющую натуральные числа, которая бы меняла местами умножение и сложение. Вот так:
(a + b)` = a` * b`
(a * b)` = a` + b`
a`` = a
все началось с уравнений:
первое в действительных (и комплексных?) числах имеет два корня: 0 и 1, а второе - только один корень: 0. А хотелось сделать сложение и умножение равноправными. И тогда я подумал, а пусть первое уравнение тоже имеет только один корень: 1, но не 0. То есть
как натуральные числа N - свободный моноид с генератором 1 и сложением, так и «звездные» натуральные числа N* - свободный моноид с генератором 0 и умножением. Тогда,
пусть все такие числа различные и не нули (кроме первого, конечно же).
Дальше я все зафейлил, потому что не смог определить смешанные операции.
Потом я немного заматерел в математике, разобрался в теоркате и квантовой теории поля (да да, она здесь тоже будет). Узнал, что произвольные вычисления можно выразить в декартово-замкнутой категории, что тип функции - это результат в степени аргумент... и вспомнил свою старую идею. Алгебраические типы данных - это типы данных, на которых определено сложение и умножение. Немного упоровшись (матлогикой, конечно же), я придумал антиданные. Пусть операция «штрих» меняет местами аргумент и результат, тогда
чувствуете это?
(Void -> T)` = (T -> Void)
это же ах*енно...
слева под штрихом у меня данные, а справа... антиданные, поедатель, уничтожитель данных. А вдруг тип функций не такой уж и фундаментальный? Вдруг это не штрих определяется через функции а наоборот, можно определить функции через штрихи? То есть функции это и есть те самые смешанные операции, которые я зафейлил определить на натуральных числах.
Естественно, что бы определить смешанные операции, нужно что-то делать с дистрибутивностью, она явно нарушает симметрию между сложением и умножением. Оказывается, все уже сделали, есть такая теорема (я не спал всю ноч когда о ней узнал), которая повлияла на квантовую теорию поля и дает... континуум (действительные числа). Интересно, что в ней пришлось отказаться от дистрибутивности в пользу более слабой (и более симметричной) связи между умножением и сложением, в пользу модулярного закона.
И вот, я теперь думаю, как бы построить теорию типов с инволюцией и модулярным законом вместо дистрибутивного. Квантовая логика где-то рядом, но я еще не смог понять как из модулярного закона получить принцип неопределенности, хотя другие люди смогли.
Вот вопрос номер один этого топика, как кто видит теорию типов на квантовой логике? Не жрать же Q# от MS для квантовых вычислений. Нужен язык программирования отражающий суть.
Ну и второй вопрос более математический. Есть такое пространство Гильберта, это бесконечномерное пространство над действительными или комплексными числами, в котором все скалярные произведения конечны. Так вот, штриховые простые числа образуют что-то вроде базиса такого пространства в... натуральных числах. Их же нельзя разложить в сумму других чисел. Другими словами, простые числа не раскладываются на множители (кроме единицы), значит простые штриховые не раскладываются на слагаемые (кроме нуля, который и есть штриховая единица). Значит простые штриховые образуют аналог базиса? Но ведь их бесконечно много. Значит уже на натуральных числах есть... пространство Гильберта (конечно же, это не оно, ведь нету поля, да и вообще, упоротость какая-то). Так вот вопрос, а скорее не вопрос, а просто информация к размышлению... Как эта инволюция связанна с проблемами Гольдбаха и гипотезой Римана?
Может кто-то когда-то будет гуглить что-то такое и найдет эту тему. Может кто-то угостит вкусной ссылкой.