У меня есть следующая типизированная теория
|- 1_X : X -> X
f : A -> B, g : B -> C |- compose(g,f) : A -> C
F, f : A -> B |- apply(F,f) : F(A) -> F(B)
с уравнениями для всех членов:
f : A -> B, g : B -> C, h : C -> D |- compose(h,compose(f,g)) = compose(compose(h,f),g)
f : A -> B |- compose(f,1_A) = f
f : A -> B |- compose(1_B,f) = f
F |- apply(F,1_X) = 1_F(X)
f, f : A -> B, g : B -> C |- apply(F,compose(g,f)) = compose(apply(F,g),apply(F,f))
Я ищу процедуру полу-решения, которая сможет доказать уравнения в этой теории, учитывая набор гипотетических уравнений. Также не ясно, существует ли полная процедура принятия решения или нет: кажется, нет никакого способа закодировать слово проблема для групп в нее. Нил Кришнасвами показал, как закодировать слово «проблема» в этом, так что общая проблема неразрешима. Субтеория ассоциативности и тождества может быть легко решена с помощью моноидальной модели теории, в то время как полная проблема сложнее, чем закрытие конгруэнтности. Любые ссылки или указатели будут приветствоваться!
Вот явный пример того, что мы надеемся, что сможем автоматически доказать:
f : X -> Y, F, G,
a : F(X) -> G(X), b : G(X) -> F(X),
c : F(Y) -> G(Y), d : G(Y) -> F(Y),
compose(a,b) = 1_F(X), compose(b,a) = 1_G(X),
compose(c,d) = 1_F(Y), compose(d,c) = 1_G(Y),
compose(c,apply(F,f)) = compose(apply(G,f),a)
|- compose(d,apply(G,f)) = compose(apply(F,f),b)