J'ai la théorie typée suivante
|- 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)
avec des équations pour tous les termes:
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))
Je recherche une procédure de semi-décision qui pourra prouver des équations dans cette théorie étant donné un ensemble d'équations hypothétiques. Il n'est pas non plus clair si une procédure de décision complète existe ou non: il ne semble pas y avoir de moyen de coder le mot problème pour les groupes. Neel Krishnaswami a montré comment encoder le mot problème en cela, donc le problème général est indécidable. L'associativité et la sous-théorie de l'identité peuvent être facilement décidées en utilisant un modèle monoïde de la théorie, tandis que le problème complet est plus difficile que la fermeture de congruence. Toutes les références ou pointeurs seraient les bienvenus!
Voici un exemple explicite de quelque chose que nous espérons pouvoir prouver automatiquement:
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)