Cela va très loin en fait. Étrange que Wikipedia ne le mentionne jamais.
Ce que vous cherchez, ce sont des épreuves très dures qui peuvent probablement être atteintes avec des choses comme les épreuves de Fitch . Nous essayons donc de déduire des choses de nos données données. Il existe de nombreux constructeurs à l'épreuve de Fitch qui font beaucoup de travail pour vous. Mais certains exercices ne sont tout simplement pas à prouver.
Je ne sais pas si l'utilisateur doit faire les calculs. Si c'est le cas, soyez conscient de choses comme 3SAT , qui sont des problèmes insolubles pour le temps polynomial.
Quant aux structures de données que vous souhaitez utiliser, je pense que vous voulez avoir une sorte de Rule
classe. La règle peut être n'importe quoi, selon le type. Il n'y a pas beaucoup de règles dans les logiques de prédicat , donc cela peut être surmonté en héritant (if, iff, et, or, not ...). Ces règles doivent seulement être évaluées. Et la seule chose qu'une règle peut faire, c'est retourner vrai ou faux. Parce que c'est ce que vous faites avec les logiques de prédicat. À l'université, on m'a recommandé de lire ce livre de John Kelly .
Revenons aux classes: vous devriez voir ces problèmes comme vous verriez implémenter des calculs normaux avec les mathématiques. Qu'est-ce qu'un +
opérateur? Il contient deux paramètres, qui peuvent être une nouvelle équation en soi, ou juste un nombre. Je pense que vous avez la même chose avec les règles. Ils peuvent avoir de nouvelles règles comme paramètre, ou simplement un booléen (appelé prédicat).
J'espère que cela vous aide beaucoup, surtout les références. Si vous voulez en savoir plus ou si je vais dans la mauvaise direction, dites-le moi.