Add introduction

This commit is contained in:
engboris 2024-06-16 23:55:16 +02:00
parent 1568dfbeaf
commit c8f553d685
7 changed files with 143 additions and 19 deletions

View File

@ -5,9 +5,17 @@ weight: 50
# Exercices # Exercices
## Bases de connaissance et requêtes ## Opérations sur listes
## Relations 1. Proposer une constellation répondant à l'étoile `@-last(l R);` pour une liste
`l` telle que `R` contiendra le dernier élément de `l`.
2. Proposer une constellation répondant à l'étoile `@-length(l R) R;` pour une
liste `l` telle que `R` contiendra la taille de `l`.
3. Proposer une constellation répondant à l'étoile `@-nth(i l R) R;`
pour un entier `i` en unaire et une liste `l` telle que `R` contiendra le `i`ème
élément de `l`.
## Parcours de graphes ## Parcours de graphes
@ -15,8 +23,6 @@ weight: 50
### Parcours performatif ### Parcours performatif
## Opérations sur listes
## Conversions d'entiers ## Conversions d'entiers
### Décimal vers unaire ### Décimal vers unaire

View File

@ -39,10 +39,10 @@ On peut aussi opter pour une représentation avec polarités internes :
### Test liste vide ### Test liste vide
``` ```
+empty(e); +empty?(e);
@-empty(e) ok; @-empty?(e) ok;
@-empty(1:e) ok; @-empty?(1:e) ok;
``` ```
### Concaténation ### Concaténation
@ -57,9 +57,9 @@ On peut aussi opter pour une représentation avec polarités internes :
### Inverse d'une liste ### Inverse d'une liste
``` ```
+rev_acc(e ACC ACC); +rev-acc(e ACC ACC);
-rev_acc(T H:ACC R) +rev_acc(H:T ACC R); -rev-acc(T H:ACC R) +rev-acc(H:T ACC R);
-rev_acc(L e R) +rev(L R); -rev-acc(L e R) +rev(L R);
@-rev(a:b:c:d:e R) R; @-rev(a:b:c:d:e R) R;
``` ```

View File

@ -3,4 +3,12 @@ title: "Large star collider"
weight: 30 weight: 30
--- ---
(soon) # Large Star Collider
Le Large Star Collider (LSC) est une réalisation informatique possible de la
résolution stellaire qui fait des choix de conception pour s'adapter aux
pratiques de programmation.
Il s'agit uniquement d'un noyau minimal de fonctionnement qui permet de calculer
d'après les principes de résolution stellaire. D'autres couches peuvent exister
par dessus pour l'étendre (metalangages, langages de macros etc).

View File

@ -3,4 +3,33 @@ title: "Résolution stellaire"
weight: 20 weight: 20
--- ---
(soon) # Résolution stellaire
La résolution stellaire est le langage utilisé dans la syntaxe transcendantale.
Il s'agit d'un langage fonctionnant par interaction asynchrone d'agents
indépendants. Cette interaction se base sur un algorithme d'unification servant
de noyau minimal du calcul.
Il représente le calcul par un réseau de contraintes syntaxiques qui doivent
être résolues pour propager de l'information. Le résultat du calcul correspond
aux informations laissées par les réseaux qui sont restés cohérents jusqu'au
bout sand rencontrer de conflits.
Ce sont des idées qui existent déjà en programmation logique mais qui sont
reformulées et utilisées différemment. En particulier, on attache aucun sens
logique aux objets (même si on peut les voir comme tel, ils ne sont pas censés
représenter pas des relations ou des objets de systèmes logiques).
Ce calcul peut être compris de plusieurs manières. C'est :
- un calcul de processus
- un langage de programmation par contrainte
- une variante des clauses disjonctives avec règle de résolution de Robinson
- une généralisation non planaire des tuiles de Wang ou des abstract tile
assembly models (aTAM)
- une généralisation des tuiles flexibles de Jonoska utilisés en calcul ADN
- une généralisation des briques LEGO
- un langage de bas niveau exprimant le sens logique
- une boîte à outils pour construire des types/formules
- une généralisation des structures de preuves de Jean-Yves Girard
- une forme de réseaux d'interaction de Lafont ne reposant sur aucune règle
autre que les principes d'unification de termes

View File

@ -3,4 +3,15 @@ title: "Syntaxe transcendantale"
weight: 10 weight: 10
--- ---
(soon) # Syntaxe transcendantale
La logique vit habituellement dans des *systèmes logiques* tous ou plus ou moins
compatibles entre eux. On peut parler de pluralisme logique.
Les logiques fonctionnent habituellement avec une base calculatoire appelée
*syntaxe* qui suit les règles dictées par une autre syntaxe de plus haut niveau
qu'on appelle *sémantique*. En particulier, sont imposés : les objets
utilisable, leur forme, leurs interactions possibles et les formules ou
spécifications que l'on peut exprimer.
TODO

View File

@ -5,16 +5,16 @@ weight: 20
# Rayons # Rayons
Soit une variable de la forme `[A-Z][A-Z 0-9]*` ou un symbole de fonction Soit une variable de la forme `[A-Z] [A-Z 0-9 _ -]* '*` ou un symbole de fonction
polarisé ou non par `+` ou `-` de la forme `(+|-)?[a-z 0-9 _]+` appliqué à une polarisé ou non par `+` ou `-` de la forme `(+|-)?[a-z 0-9] [a-z A-Z 0-9 _ -]* '* '?'?` appliqué à une
séquence ordonnée d'autres rayons en arguments (séquence possiblement vide dans séquence ordonnée d'autres rayons en arguments (séquence possiblement vide dans
le cas d'une constante) : le cas d'une constante) :
`X`, `a`, `f(X)`, `+f(X)`, `-f(-h(a, Y1), X2)`, `+add_dec(0, 2, 2)`. `X`, `a`, `f(X)`, `+f(X)`, `-f(-h(a, Y1), X2)`, `+add-dec(0, 2, 2)`.
Les virgules séparant les arguments peuvent être omises : Les virgules séparant les arguments peuvent être omises :
`-f(-h(a Y1) X2)`, `+add_dec(0 2 2)`, `string(hello i am X)`. `-f(-h(a Y1) X2)`, `+add-dec(0 2 2)`, `string(hello i am X)`.
# Concaténation # Concaténation
@ -31,13 +31,15 @@ Une séquence non-ordonnée de rayons terminant par un point-virgule `;`:
X a +f(X); X a +f(X);
``` ```
L'étoile vide est `[]`.
# Constellations # Constellations
Une séquence non-ordonnée d'étoiles : Une séquence non-ordonnée d'étoiles :
``` ```
X a +f(X); -f(-h(a Y1) X2); X a +f(X); -f(-h(a Y1) X2);
+add_dec(0 2 2); +add-dec(0 2 2);
``` ```
Toutes les variables sont locales à leur étoile. Donc, toutes les occurrences Toutes les variables sont locales à leur étoile. Donc, toutes les occurrences
@ -48,6 +50,9 @@ ligne.
Il n'y a pas de sensibilité à l'indentation ou aux sauts de ligne. Il n'y a pas de sensibilité à l'indentation ou aux sauts de ligne.
{{< /hint >}} {{< /hint >}}
La constellation vide est `{}` (elle peut apparaître en résultat
mais on ne peut pas l'écrire en tant qu'utilisateur).
# Focus # Focus
Pour choisir des points de départ du calcul, il est possible de préfixer Pour choisir des points de départ du calcul, il est possible de préfixer
@ -56,7 +61,7 @@ certaines étoiles (de notre choix) avec un symbole de *focus* `@`.
``` ```
@X a +f(X); @X a +f(X);
@-f(-h(a Y1) X2); @-f(-h(a Y1) X2);
+add_dec(0 2 2); +add-dec(0 2 2);
``` ```
# Commentaires # Commentaires

View File

@ -50,3 +50,68 @@ else
``` ```
car cela requiert des mécanismes de liaisons séquentielles. car cela requiert des mécanismes de liaisons séquentielles.
{{< /hint >}} {{< /hint >}}
## Bases de connaissance et requêtes
Prendre la base de connaissance suivante :
```
+father(francisco paulo);
+father(joao paulo);
+father(ana francisco);
+mother(rita roberta);
+mother(joao roberta);
+mother(francisco roberta);
+mother(roberta maria);
```
1. Quelle étoile ajouter pour demander si le père d'ana est francisco de telle
sorte à ce que l'exécution renvoie ok quand c'est bien le cas ?
{{< hint info >}}
@-father(ana francisco) ok;
{{< /hint >}}
2. Même exercice pour demander qui est la mère de joao de telle sorte à ce que
l'exécution renvoie le nom de la mère de joao.
{{< hint info >}}
@-mother(joao X) X;
{{< /hint >}}
3. Même exercice pour demander qui sont les enfants de roberta et paulo.
{{< hint info >}}
+children(X M F) -mother(X M) -father(X F);
@-children(X roberta paulo) X;
{{< /hint >}}
4. Définir une constellation qui permet de donner le grand-père d'une personne.
{{< hint info >}}
+grand-father(X GF) -father(X F) -father(F GF);
{{< /hint >}}
5. Définir une requête qui permet de lister toutes les relations de
petit-fils/grand-père.
{{< hint info >}}
+grand-father(X GF) -father(X F) -father(F GF);
@-grand-father(X Y) grand-father(X Y);
{{< /hint >}}
6. Donner une nouvelle représentation de la base de connaissance qui permet de
lister toutes les relations père et mère à l'aide d'une étoile
`@-parent(R X Y) parent(R X Y)``R` correspond à la relation entre `X` et `Y`.
{{< hint info >}}
```
+parent(father francisco paulo);
+parent(father joao paulo);
+parent(father ana francisco);
+parent(mother rita roberta);
+parent(mother joao roberta);
+parent(mother francisco roberta);
+parent(mother roberta maria);
```
{{< /hint >}}