У мене є наступна набрана теорія
|- 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)