Logique combinatoire - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Avertissement: Cet article traite de la logique combinatoire, au sens qu'a ce mot en logique mathématique et en informatique théorique. Il ne doit pas être confondu avec ce que l'on appelle logique combinatoire en électronique.

La logique combinatoire est une notation introduite par Moses Schönfinkel et Haskell Curry pour supprimer le besoin de variables en mathématiques, pour formaliser rigoureusement la notion de fonction et pour minimiser le nombre d'opérateurs nécessaires pour définir le calcul des prédicats à la suite de Henry M. Sheffer. Plus récemment elle a été utilisée en informatique comme modèle théorique de calcul et comme base pour la conception de langages de programmation fonctionnels.

Le concept de base de la logique combinatoire est celui de combinateur qui est une fonction d'ordre supérieur ; elle utilise uniquement l'application de fonctions et éventuellement d'autres combinateurs pour définir de nouvelles fonctions d'ordre supérieur. Elle a des liens très forts avec le lambda calcul et avec la logique intuitionniste grâce à la correspondance de Curry-Howard.

Introduction

La logique combinatoire est fondée sur deux « opérations » de base (on dit aussi deux « combinateurs ») S et K que nous définirons plus loin ; plus précisément nous en définirons le comportement ou l'« intention », car la logique combinatoire est une approche de la logique qui montre plutôt comment marchent les choses que comment les objets peuvent être décrits, on dit alors que c'est une approche intentionnelle de la logique. Si l'on veut définir la fonction que nous appellerons C et qui prend trois paramètres et rend comme résultat le premier appliqué au troisième, le tout étant appliqué au second, on pourra l'écrire :

C ≡ S ((S (K S) K) (S (K S) K) S) (K K)

qui, comme on le voit, ne comporte pas de variable. On pourra regretter que l'avantage de ne pas utiliser de variables se paie par la longueur des expressions et une certaine illisibilité. Aujourd'hui la logique combinatoire est surtout utilisée par les logiciens pour répondre positivement à la question « Est-il possible de se passer de variables ? » et par les informaticiens pour compiler les langages fonctionnels.

La réduction

En fait, les transformations fonctionnent comme des réductions et pour cela on les note →. On obtient donc les deux règles de réduction de base de la logique combinatoire.

K x y → x,
S x y z → x z (y z).

Les combinateurs de base

Le plus simple des combinateurs est I (identité) défini par

I x = x.

Un autre combinateur simple est K, il fabrique des fonctions constantes, ainsi (K x) est la fonction qui, pour tout paramètre, retourne x, autrement dit

(K x) y = x

pour tous termes x et y. Comme en lambda-calcul, on associe les applications de gauche à droite, ce qui permet de supprimer des parenthèses, ainsi on écrit

K x y = x.

Un autre combinateur de base est S qui distribue le paramètre (ici z) aux applications composantes :

S x y z = x z (y z)

S applique le résultat de l'application de x à z au résultat de l'application de y à z.

I peut être construit à partir de S et K, en effet :

(S K K) x = S K K x
= K x (K x)
= x.

On décrète donc que I est un combinateur dérivé et que I = S K K et on décide de décrire tous les combinateurs à l'aide de S et K, ce qui est raisonnable car on peut montrer que cela suffit pour décrire « toutes » les fonctions d'une certaine forme.

Page générée en 0.072 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise