Jouissance combinatoriale pour foys

J'essaie d'attirer foys vers le présent fil car il a parfois envie de parler de combinateurs, qui, il faut bien le reconnaitre, sont l'avenir de la science, mais ont eu un destin d'enfant non désiré et se sont fait massacrer par la recherche scientifique.

Depuis une trentaine d'années, ils reprennent de la vigueur, mais dans des cadres étriqués de typages qui les brident et découragent leurs utilisateurs.

Je fais rapidement une introduction au sujet (et désolé, je n'ai pas le temps, je vais utiliser MES lettres et pas celles qu'on trouve dans la littérature que je ne connais pas, qui est souvent "usine à gaz", à l'exception de $S,K,W$ (et surtout $K,W$))

1/ Soit $Z$ un ensemble doté d'un loi qu'on notera multiplicativement avec la convention que $abc$ veut dire $(ab)c$.

2/ Comme on est dans un fil ludique et que de toute façon on ne peut faire des bonnes maths que dans des théories contradictoires, je vais utiliser le signe $=$ dans un premier temps (il sera toujours temps de "pontifier" le sujet si besoin, ce sont les participants qui décideront)

3/ Il y a dans $Z$ 4 éléments désopilants. Je les ai choisis tels à cause de théorèmes de logique que j'ai prouvé qui trivialisent (j'utilise parfois un point virgule en lieu et place de "et" dans le latex) la notion de preuve. Les autres jeux (que je signalerai) n'ont pas l'efficacité des 4 que je présente.

4.1/ tout d'abord les célèbres $W,K,J$ qui sont tels que:

$$\forall u,v: (Wuv=uvv ; Kuv=u; Jx=x)$$

4.2/ Et mes deux stars, dont une est connue:

$$ \forall x,y,z: Dxyz = x(yz); Hxyz = yzx$$

5/ Pour info, je signale d'autres jeux complets de combinateurs:

5.1/ Le jeu $\{C;W;K\}$ avec $\forall a,b,c: Cabc=b(ac)$

5.2/ Le jeu $\{S;K\}$ avec $\forall a,b,c: Sabc = (ac)(bc)$, mais je n'aime pas du tout $S$, qui embouteille maladroitement $W, D,C,H,B$ qui sont de nature différente (profondément)

5.3/ Le jeu $\{D;B;K;W\}$ avec $\forall x,y: Bxy=yx$

5.4/ Le jeu $\{C;K;B_0;K;W\}$ avec $\forall x: B_0x = xJ$

5.5/ $\{M;G; K;W\}$ avec $\forall x,y,z: Mxyz=x(zy)$ et $Gxyz = xzy$

6/ Intérêt de ces groupes.

6.1/ Ils sont tous complets. Complet, ça veut dire que pour tout mot $m$ contenant une ou plusieurs fois la lettre $x$, vous pouvez grâce à eux, trouver (facilement) un mot $n$ ne contenant pas la lettre $x$, et appliquer les règles de calculs pour prouver (facilement) que $nx=m$

6.2/ Pourquoi je n'aime pas le groupe (pourtant historique) $\{S;K\}$? Parce qu'il ne permet pas de distinguer des opérations de la vie profondément différentes, que je vais décrire maintenant:

7.1/ Les combinateurs $M;C;D;H;G.B;B_0$ sont le développement durables et de nombreuses parties de leur ensemble sont complètes pour le DD. En effet, ils se contentent de déplacer ordre et parenthèses, mais ne jette rien ni ne duplique rien. C'est important quantiquement puisque les ressources quantiques ne peuvent pas être dupliquées sous peine de contradiction formelle et violente avec la relativité.

7.2/ Le combinateur $K$, très stable, offre directement un "jetage à la poubelle" d'une ressource. Mais il ne permet pas de dupliquer.

7.3/ Le dupliqueur est $W$. C'est lui qui offre sa puissance et son indécidabilité à la science (et sa contradiction).

8/ Pour simplifier, je suppose connue ou plutôt donnée la notion de phrase et un mot que je nomme "garantir". En outre, je suppose que pour toutes phrases $A,B$ et tout élément $u$ de $Z$:

$u$ garantir $A\to B$ ssi $(\forall v\in Z: v$ garantit $A$ implique $uv$ garantit $B)$.

C'est une version simplifiée mais peu importe (c'est la définition du forcing qui a permis à Cohen en 1963 de prouver l'indépendance de HC et de recevoir la médaille Field)


9/ Voici ce que garantissent nos célébrités ci-dessus (je vous laisse l'établir en exercice), et ce pour toutes phrases:

$M$ garantit $(B\to C)\to (A\to ((A\to B)\to C))$

$C$ garantit $(A\to B)\to ((B\to C)\to (A\to C))$

$D$ garantit $(B\to C)\to ((A\to B)\to (A\to C))$

$B$ garantit $A\to ((A\to B)\to B)$

$J$ garantit $A\to A$

$W$ garantit $(A\to (A\to B))\to (A\to B)$

$K$ garantit $A\to (B\to A)$

$B_0$ garantit $((A\to A)\to B)\to B$

$S$ garantit $(A\to (B\to C))\to ((A\to B)\to (A\to C))$

$G$ garantit $(A\to (B\to C))\to (B\to (A\to C))$

Je vous laisse en exercice écrire la garantie offerte par $H$ (j'ai mal à la main)

10/ Dès lors qu'un jeu est complet, vous disposez d'une logique de fond correspondante. Cela est dû au fait qu'un jeu complet permet de se passer de l'usine à gaz des séquents et des déchargement d'hypothèses, tout se fait à coup de LA SEULE règle du modus ponens.

11/ En effet, le point "action" (6.1) correspond au point "déduction" suivant:

Dès lors qu'on prend comme axiomes les phrases garanties par un jeu complet, on obtient que l'ensemble des théorèmes prouvés avec juste le modus ponens a la qualité suivante: "si en faisant des hypothèses $X$ auxquelles j'ajoute $A$, je peux prouver $B$ alors je peux prouver $(A\to B)$ à partir des seules hypothèses de $X$.

11.1/ La logique engendrée par les combinateurs du développement durable s'appelle "logique linéaire"

11.2/ La logique engendrée par les combinateurs du développement durable auxquels on ajoute $K$ s'appelle "logique affine"

11.3/ La logique engendrée par tous les combinateurs s'appelle "logique intuitionniste".

11.4/ En outre tout jeu complet est pour la linéaire (en termes d'actions les DevDur) est suffisant, il suffit d'ajoute rà la demande $K, W$ ou les deux selon ce qu'on veut mais "le coeur" du raisonnement reste intact.

12/ Mon système préféré (que je n'utilise pourtant presque jamais) est évidemment $\{D;H\}$. En voici les raisons:

12.1/ Il est Dev.Dur complet**

12.2/ il a un avantage vraiment impressionnant (qu'a aussi le jeu $\{C;D;B\}$):

tout mot peut se réécrire en un mot sans aucune parenthèse


Par superstition j'arrête là.

Enfin non,

13/ Le thème s'appelle "logique combinatoire". Les mots fabriqués s'appellent "termes du lambda calcul"

14/ ** pour tout mont $m$ contenant n fois la lettre $x$, il existe un mot $t$ tel que les règles de calcul permettent de prouver $m = txxxx\dots x$ où la lettre $x$ apparait $n$ fois, mais n'apparait dans $t$.

15/ Les contradictions célèbres s'expriment en termes: par exemple le théorème de Cantor est le terme $(WJ)(WJ)$. Le terme $B$ est le célèbre plongement Espace vers Bidual.

16/ $W(Cu(Cv)) =Suv$

17/ $[x\mapsto (uv)] := S(x\mapsto u)(x\mapsto v)$, c'est cette propriété célèbrissime qui a fait décoller l'importance de ce paradigme, puisque $[x\mapsto blabla]$ (qui est l'unique et puissant outil des maths) se retrouve programmé "bêtement" en algèbre.
Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi

Réponses

  • 18/ J'oubliais l'essentiel: j'ai longtemps cherché (sans trouver, ni trouver la preuve que ça n'existe pas) un jeu complet (DevDur ou pas) qui ne crée par de coupures.

    Je m'explique: Dans le jeu complet $\{C;W;K\}$, on a le problème que $Cuv$ (une fois regardé comme une instruction informatique) ne s'exécute pas. Et pourtant il garantit $$A\to C$. Dans les preuves de maths, hélas, il est un pointeur pour aller vers (proposer au sceptique) $A\to B$ ainsi que $B\to C$ (qui sont respectivement garantis par $u,v$. Le problème est que $B$ ne se voit pas dans $A\to C$.

    Par exemple $M$ n'a pas ce défaut: $M$ ne s'exécute qu'à partir de 3 arguments, mais avec 2 arguments il ne cache rien:

    $Muv$ garantit que $P:=(A\to B)\to C$, et on propose au sceptique $(B\to C)$ (garnti par $u$ et $A$ garanti par $v$. Hélas $\{M;K;W\}$ n'est pas complet.

    Les combinateurs acceptables DE CE POINT DE VUE sont: $W;B;B_0; M; K$. Même à eux tous, ils ne forment pas un système complet.

    19/ J'aurais aimé construire un système complet avec que des combinateurs "NOCUT". Mais j'ai l'impression que ce n'est pas possible, même restreint au DevDur.

    20/ Ca fait un bon problème ouvert pour foys (je pense qu'il est ouvert).
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • $H$ (a.k.a V) est de type $A\to B \to (A \to B \to C) \to C$.
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Comment obtenir $J$ avec $D$ et $H$ ?
    Faut-l rajouter $J$ à $D,H$ pour obtenir 14/ ?
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Oui tu as raison, je l'oublie toujours. Pour le devdur***, il faut TOUJOURS AJOUTER $J$. Même si on n'en a pas besoin, pour la raison que $J$ "ne fait rien" alors qu'une autre combinaison qui ferait l'effet de $J$ perdrait du temps à faire des manip inutiles, même si ce ne sont que des permutations.

    Et oui pour $H$ (par contre, j'ai modifié, je m'étais trompé, $Hxyz = yzx$ et non pas $zxy$), mais ça ne change pas grand chose sur la garantie.

    Cette nécessité provient de mon envie "qu'il fasse tout", donc qu'il réussie l'étape $ab(u)=H(u)ab$, MAIS AUSSI qu'il réussis à donner que $uxv = Hvux$ pour garantir la complétude.

    J'en profite pour montrer aux lecteurs le point fixe (que tu as toi-même signalé):

    Avec $a:= C(WJ)f$, on obtient $aa = f(WJa) = f(Jaa) = f(aa)$

    Il suit qu'avec $p:= C(WJ)$ vérifie que $[pf(pf)] = f ( [pf(pf)] )$

    et donc $pf(pf)$ qui vaut $Cp(pf)f = Cp(Cp)ff = W(Cp(Cp))f$ c'est à dire $f\mapsto pf(pf)$ peut s'écrire $q:=W(Cp(Cp))$ est tel que $\forall f : q(f)=f(q(f))$
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Remarque: on peut créer artificiellement $J$:

    $SKK = J$

    $WK = J$

    $CKW = J$

    En effet, $WK x = Kxx = x$
    $SKKx = (Kx)(Kx) = x$
    $CKWxy = W(Kx)y = Kxyy = xy$

    Mais je suis passé très vite sur l'admission de l'extensionalité, comme on peut le voir.

    Autre remarque (dans le DevDur): $B_0$ présente l'avantage d'être exécutable dès qu'il a un argument alors que ce n'est pas le cas de $B$.

    Ca correspond au raisonnement:

    $A$ donc $1\to A$ donc $(A\to B)\to (1\to B)$ donc $((1\to B)\to B) \to ((A\to B)\to B)$ donc $(A\to B)\to B$

    qui montre que $C;B_0;K'$ permette de construire $B$

    Si j'ai écrit $K'$ et pas $K$ c'est juste pour signaler que c'est un "K restreint" qu'on ne s'autorise qu'à utiliser comme suit (c'est un $K$ utiloisé en mode DevDur):

    $$A\to (1\to A)$$

    Autrement dit $x\mapsto [x()]$

    Et je pense que les gens qui ont construit le caml y ont vu une utilité puisque vaut mieux définir

    "let $a() = \dots$" que

    "let $a=\dots$"

    car dans le deuxième cas, $a$ s'exécute tout de suite et on est embêté.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Tu peux commenter cette affaire de "=" ? Et cette histoire de coupures ? C'est quoi les théorèmes de logique que tu as prouvés ? Désolé, je me souviens que dans un autre fil que je retrouve plus, tu avais des choses que tu ne répètes pas ici, mais je ne sais plus trop ce que c'était.
  • Oui je te ferai ça d'un PC. Pour le = c'est juste que l'usage étant informatique si je devais exposer ça vers un public sévère je prendrais < plutôt que = car on étudie aussi l'évolution dans le temps des mots de ce langage.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Georges Abitbol a écrit:
    Tu peux commenter cette affaire de "=" ? Et cette histoire de coupures ? C'est quoi les théorèmes de logique que tu as prouvés ? Désolé, je me souviens que dans un autre fil que je retrouve plus, tu avais des choses que tu ne répètes pas ici, mais je ne sais plus trop ce que c'était.
    Dans les posts de l'autre fil http://www.les-mathematiques.net/phorum/read.php?16,1801076,1802928#msg-1802928, on étudie une relation $<$ sur l'ensemble $\mathcal Z$ qui est réflexive, transitive et compatible avec l'opération envisagée.
    Mais on pourrait aussi supposer qu'elle est en plus symétrique (donc une relation d'équivalence et on travaille alors sur le quotient pour en faire une égalité. La possibilité d'avoir un quotient non trivial -sans quoi la théorie aurait peu d'intérêt- est conséquence du théorème de Church-Rosser démontré dans le fichier COQ mis en lien: si $\mathcal Z$ est un magma libre sur des lettres et si $a,b,c\in \mathcal Z$ sont tels que $a$ se réduit en $b$ et $c$ alors il existe $d\in \mathcal Z$ tel que $b$ et $c$ se réduisent en $d$; ceci force l'unicité des formes normales et donc, par exemple, le fait important que les booléens $K$ et $KI$ sont distincts dans le quotient. Il y a aussi un autre modèle ensembliste non trivial de logique combinatoire que j'ai vu dans un livre. J'essaierai de le retrouver).
    Le point de vue relation d'équivalence suffit pour les calculs, l'autre est utile pour certaines considérations d'info théorique (réécriture et implémentations diverses).

    NB: Je vais être très peu disponible jusqu'à dimanche et ne pourrai pas beaucoup intervenir dans le fil.
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Merci à foys d'avoir répondu, en partie, à ma place.

    La propriété signalée par foys s'appelle "la confluence" et concerne n'importe quel ordre (un ordre a ou n'a pas cette propriété). $$

    \forall x,y,z: [(x\geq y\wedge x\geq z)\to (\exists w: (w\leq y\wedge w\leq z))]

    $$ Mais attention, dans mon paradigme elle n'a aucune valeur car je ne me restreins pas du tout a priori à des structures ne contenant que les combinateurs usuels. Ces derniers servent juste de squelette pour virer les liaisons de variables ubuesques pour les gens qui se découragent à entrer un jour dans les maths.

    D'autre part, chaque lemme de confluence doit être redémontré souvent en fonction du système qu'on utilise. Initialement celle du lambda-calcul ne garantit pas de manière évidente celle des combinateurs car un terme normal (sans partie exécutable) pour tel jeu de combinateurs ne l'est absolument pas forcément une fois traduit en lambda calcul sans combinateurs.

    Exemple: $DK$ est normal alors qu'il s'écrit $$

    [x\mapsto (y\mapsto (z\mapsto (x(yz))))] [s\mapsto (t\mapsto s)]

    $$ en lambda calcul et ce dernier s'exécute en $$

    y\mapsto (z\mapsto ([s\mapsto (t\mapsto s)](yz))))

    $$ qui lui-même s'exécute en $$

    y\mapsto (z\mapsto ([t\mapsto (yz)])))

    $$ qui lui est "enfin" normal vu par le paradigme lambdaC
    Pour le $=$, le paradigme platonicien que j'évoque partiellement (autre fil) consiste, par principe, à ce que tout soit terme. Autrement dit, si on veut un égal, il faut que $u=v$ soit de la forme $Euv$, avec un $E$ ajouté aux axiomes qui fonctionnerait comme "égal" et renverrait une valeur de vérité interne (et conventionnellement on considère généralement que $vrai:=K$ et que $faux:= KJ$).

    Par exemple, on voudra que $(Euu) = K$

    Mézalor, les points fixes (et il y en a plein) de non vont te rendre égaux le vrai et le faux (et c'est tout l'intérêt et non pas le problème):

    Les tests s'écrivent comme suit: $abc$ signifie (if a then b else c). En particulier,

    abK signifie a=>b
    ab(KJ) signifie (a et b)
    aKb signifie (a ou b)
    a(KJ)K signifie non(a)

    En prenant $f (x) := x(x)(KJ)K$ et $e:=f(f)$, tu obtiens $K=(KJ)$. C'est le pradoxe fondateur de la crise des fondements.
    Je reviendrai plus tard sur l'histoire de coupures.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Et évidemment, j'ai "confortablement" décrit $f$ usuellement (avec une variable implicitement liée à la caml) pour toi, mais il faut comprendre que $f := MotFacileATrouver$ (je te laisse le faire).
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • En fait il n'existe aucune fonction non constante (edit) $f:\mathcal Z \to \{K,KJ\}$ de la forme $x\mapsto yx$ pour un certain $y$ et de plus si $K=KJ$ alors $\mathcal Z$ est un singleton puisque pour tous $x,y$ on a $KJxy=y$ et $Kxy=x$.

    En particulier ce "$E$" qui teste des égalité n'existe pas en fait (on a des $\mathcal Z$ qui ne sont pas des singletons).
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • @foys, attention : par "n'existe pas", je signale aux lecteurs que tu veux dire "ne peut pas être construits avec les combinateurs usuels".

    Mais c'est évident dès lors qu'on sait que, avec ces seuls combinateurs, on ne peut pas prouver $K=KJ$ d'une part et d'autre part que satisfaire l'attendu $E$ entraine $K=KJ$.

    Par contre, il ne faut pas laisser penser qu'on ne peut le rajouter comme axiome. Evidemment, ça entrainera $K=KJ$ (c'est même fait pour ça).

    Et évidemment que $K=KJ$ entraine $\forall x,y: x=y$, puisque on se rertouve en droit d'affirmer que $$x=Kxy=KJxy=Jy=y$$

    Mais une structure de cardinal 1 n'a jamais tué personne (y compris de cardinal 0 non plus d'ailleurs).

    De toute façon il n'est pas dans mon intention immédiate de collapser à 1 le cardinal de ce petit monde ludique. On va attendre un peu :-D
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • christophe c a écrit:
    @foys, attention : par "n'existe pas", je signale aux lecteurs que tu veux dire "ne peut pas être construits avec les combinateurs usuels".
    Non c'est une histoire de points fixes à nouveau.
    Aucune fonction caractéristique non triviale de $\mathcal Z$ n'est représentable par un combinateur, voici pourquoi:

    Soit $Y$ tel que $Yf = f(Yf)$ pour tout $f\in \mathcal Z$ (avec tes notations on peut prendre $Y:=D(WJ)(GD(WJ))$).
    Soit $V$ tel que $Vxyz = zxy$ pour tous $x,y,z$ (avec tes notations on peut prendre $V:=DGB$)

    Soient $a,p,q\in \mathcal Z$ tels que $ax\in \{K,KJ\}$ pour tous $x$, $aq=K$ et $ap=KJ$.

    Soit $t:= a(Y(D(Vpq)a)) \in \{K,KJ\}$
    Alors $Y(D(Vpq)a) =D(Vpq)a(Y(D(Vpq)a)) = Vpq(a(Y(D(Vpq)a))) = Vpqt = tpq$.

    Cas 1°) $t=K$. Alors $tpq = p$. Donc $Y(D(Vpq)a)=p$. Donc $a(Y(D(Vpq)a)) = KJ =t$. Donc $KJ=K$.
    Cas 2°) $t=KJ$. Alors $tpq = q$. Donc $Y(D(Vpq)a)=q$. Donc $a(Y(D(Vpq)a)) = K =t$. Donc $K=KJ$.
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Pour les curieux je donne un mini dictionnaire christophe/notations officielles
    Ne soyez pas esclave de vos notations
    Michèle Audin a écrit:
    Il est impossible d'écrire "Soit G le corps des nombres complexes"

    CC
    World

    B
    T
    C
    Q
    D
    B
    G
    C
    J
    I

    Voir aussi http://www.angelfire.com/tx4/cus/combinator/birds.html
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Merci foys je suis le plus gâté par ton info pour le coup. Tu as dû fouiller pour avoir le lexique world!! Je n'ai jamais cherché assez longtemps pour avoir un lexique.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Pour les lecteurs de mon téléphone je traduis ce que tu fais:

    La fonction if x=a then b else a rend a égal à b des qu'on lui donne un point fixe. Et conformément à la définition dont dom dit du mal :-D rien de mieux pour avoir a différent de b que de connaître une propriété de a que b n'a pas.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Je signale aussi que cette astuce est exploitée pour prouver l'universalité du LC: tout ensemble récursif stable par = vue comme relation sur les mots formels. est plein ou vide.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Et ils ne font M?

    Tssss ils sont tristes car M est un gros carrefour.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Appeler Q le composeur essentiel des maths quelle tristesse! Moi au moins je l'ai appelé C. :-D
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
Connectez-vous ou Inscrivez-vous pour répondre.