Pour formaliser la notion de traitement de l'information, il convient de formaliser
Nous allons d'abord montrer que l'information peut être représentée par un traitement d'information, ce qui permet de faire reposer toute la théorie sur le concept de traitement ou d'opération.
L'information la plus élémentaire concevable est binaire : vrai ou faux, 0 ou 1... On peut représenter cette information par une opération de choix entre deux possibilités, une fonction qui à deux arguments associe par exemple le premier pour la valeur vraie, et le second pour la valeur faux.
Des informations plus complexes peuvent être représentées par des structures, la plus élémentaires étant le couple de deux valeurs, qui peut être représenté par une fonction qui à la valeur vraie associe la première valeur du couple, et à la valeur faux la seconde.
Voyons maintenant comment on peut représenter le concept d'opération ou de fonction. Il s'agit de produire un certain nombre de résultats à partir d'un certain nombre de données. On peut en fait se limiter au cas où on produit un résultat à partir d'une donnée car plusieurs données ou résultats peuvent être représentés par une seule donnée ou un seule résultat, une structure regroupant ces éléments. D'autre part, la production d'un résultat par application d'une fonction à plusieurs arguments donnés peut être décomposée : l'application de la fonction au premier argument donne une nouvelle fonction qu'on applique au deuxième argument, et ainsi de suite.
On est donc ramené au problème de la représentation d'une fonction (ou combinateur) f qui produit un résultat y à partir d'un argument x. Les différents cas sont les suivants :
Cette décomposition s'arrête-t-elle ou continue-t-elle à l'infini ?
Si elle s'arrête, on peut alors représenter f par une combinaison finie de I, K et S
(ou même de K et S seulement car on peut remarquer que I = S K K).
Si elle est infinie, peut-on néanmoins la décrire de façon finie ?
Si on ne peut pas, elle n'est pas représentable par un expression finie.
Si on peut, quelle forme peut prendre cette représentation ?
On peut la représenter de façon récursive. Par exemple :
factorielle n = si n = 0 alors 1 sinon n * factorielle (n-1)
Une fonction récursive peut être définie comme le point fixe d'une fonctionnelle,
par exemple dans le cas de la factorielle, celle qui à f associe
la fonction qui à n associe (si n = 0 alors 1 sinon n * f (n-1)).
Un point fixe f d'une fonction F est un élément inchangé par F, c'est-à-dire
un f tel que F f = f.
On peut représenter le point fixe avec I, K et S de la façon suivante :
Le point fixe d'une fonction F est l'auto-application de la composée
de F et de l'auto-application.
On définit l'auto-application A par A x = x x, c'est-à-dire A = S I I,
et la composée : B f g x = f (g x).
Un point fixe de F noté Y F est donc A (B F A).
On a en effet :
En résumé, on peut représenter n'importe quelle opération et n'importe quelle structure de données par une combinaison par application des combinateurs de base I, K et S. Ces combinateurs sont définis par les règles :
Les règles définissant les combinateurs de base pourraient être formalisées par des règles telles que : "Si a est un terme, alors I a = a" mais cela aboutirait à deux types de propositions élémentaires :
En résumé, la logique combinatoire peut être formalisée axiomatiquement de la façon suivante :
Une autre approche de la logique combinatoire est décrite dans la Grande Encyclopédie Larousse. Elle consiste à voir une expression f k a1 a2 a3... comme une opération f agissant sur une pile a1 a2 a3... avec une continuation k. Les opérations de base sont :
La logique combinatoire peut être étendue par l'ajout de nouveaux éléments de base
appelés symboles, dont la sémantique est définie par des axiomes d'égalités entre
des termes contenant ces symboles. On obtient ainsi la logique combinatoire symbolique.
Par exemple, pour représenter une opération commutative on introduit un symbole
F avec bien sûr l'axiome d'existence et de réflexivité de F, F = F, mais
aussi l'axiome de commutativité qui doit exprimer F x y = F y x,
c'est-à-dire \x. \y. F x y = \x. \y. F y x, ou F = C F = S (K (S F)).
On peut représenter une théorie avec un nombre quelconque de symboles
Z1, ... Zn
et d'axiomes définissant ces symboles f1 Z1 ... Zn = g1 Z1 ... Zn, ... ,
fp Z1 ... Zn = gp Z1 ... Zn, par une théorie avec un seul symbole Z
et un seul axiome f Z = g Z, à savoir :
< f1 (Z s1) ... (Z sn), ... , fp (Z s1) ... (Z sn) > =
< g1 (Z s1) ... (Z sn), ... , gp (Z s1) ... (Z sn) >,
avec
et si a1 ... an = ai.
La logique propositionnelle classique est habituellement formalisée par les règles suivantes :
La difficulté pour formaliser la logique à partir de la logique combinatoire vient de l'existence du point fixe, qui entraine la possibilité de construire une proposition p telle que p = ~p, ou p = p => faux, ce qui, en logique classique ou même en logique intuitionniste, entraine une inconsistance :
Avec la logique combinatoire, la notion de proposition p est remplacée par celle d'égalité a = b. L'implication p =!> q devient (a = b) =!> (c = d) que l'on peut représenter par E! a b c = E! a b d, où E! est un symbole. De même pour =!> et E?.
Le modus ponens devient :
La règle p =?> p devient E? a b a = E? a b b
La règle p =!> (q =?> p) devient : si a = b alors E? c d a = E? c d b, que l'on peut obtenir par la règle d'égalité d'applications. Cette règle est donc inutile.
L'axiome d'application du modus ponens sous hypothèse
(p =?> (q =!> r)) =!> (p =?> q) =!> (p =?> r)
peut être obtenue par l'axiome
E? a b (f x) = E? a b f (E? a b x)
En effet, si on a
E? a b (E! c d e) = E? a b (E! c d f)
et E? a b c = E? a b d,
on peut inférer E? a b e = E? a b f.
En effet, on a :
En résumé, cette logique affaiblie permettant de manipuler des propositions égales à leur propre négation sans être inconsistante, peut être formalisée en logique combinatoire symbolique en ajoutant les symboles E! et E? définis par les axiomes :