TODO 4.79 KB
Newer Older
1 2 3 4
; -*-org-*-

* Général

5
** BUG:
6
+ [X] si 2 déclarations d'interprétations de la même constante dans un lexique, plusieurs solutions de parsing. Minmal example:
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

signature abs =
    o:type;
    a:o->o;
    HASH:o;
end

signature strings =
    o:type;
    a:o->o;
    epsilon = lambda x.x:o->o;
end

lexicon form(abs):strings=
    o:= o->o;
    a := lambda s. lambda z. a (s z);
    a := lambda s. lambda z. a (s z);
    HASH := epsilon;
end
# load o essai2.acgo;
# form parse a:o;
 -> 2 analyses.

30
+ [X] Bug: analyse d'une constante image d'une constante lève une exception:
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

signature trees =
    tree:type;
    une:tree;
end

signature strings =
    o:type;
    une:o->o;
end

lexicon yield(trees):strings =
    tree := o->o;
    une := une;
end

# yield parse une:tree;

49

50
** TODO Avant Prochaine release
51 52 53
+ [ ] ajouter parsing de types non atomiques
+ [ ] ajouter détection de nbre infini de solutions
+ [ ] permettre à ./acg de charger des fichiers .acgo
54 55
+ [ ] utiliser UF avec tableaux destructifs, et tester l'amélioration des performances
+ [ ] autoriser l'utilisation de symboles non fonctionnels
56
+ [ ] rajouter l'utf8
57
+ [ ] générer svg aussi pour la commande parse
58
+ [ ] Uniformiser les sorties avec logs
59

POGODALLA Sylvain's avatar
POGODALLA Sylvain committed
60 61 62
** Optimisation
+ [ ] magic rewriting
+ [ ] PersistentArray
63 64
+ [ ] parallélisme
+ [ ] Mettre un compteur des règles utilisés qui tienne compte du nombre de terminaux générés pour profiter de la linéarité et éviter d'essayer des règles qui rajouteraient des terminaux au-delà du nombre d'occurrences dans le terme à parser
POGODALLA Sylvain's avatar
POGODALLA Sylvain committed
65

66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
** Permettre l'utilisation des PersistentArray

** TODO Vérifier (et supprimer ou mettre en IFDEBUG) les assert


* datalog.ml
+ [ ] Vérifier pourquoi "pred_table" est paramètre de Rule.to_abstract
  et aussi de Datalog_AbstractSyntax.Rule.to_string
+ [ ] Vérifier pourquoi content est passé en paramètre dans les
  to_abstract alors que c'est un champ du record rule
+ [ ] Idem pour Rule.extract_consequence
+ [ ] Réfléchir à la possibilité de faire de l'unification directement
  entre contents. Ça réduirait par exemple les itérations dans
  "extract_consequence"
+ [X] Autoriser l'instanciation avec des variables encore présentes
+ [X] Implanter la réponse à une requête.
+ [ ] Ajouter dans le programme l'enregistrement de toutes les
  constantes et les parcourir pour ajouter aux faits ceux qui ont
  encore des variables.
+ [ ] Ajouter la possibilité d'étendre un programme datalog
+ [ ] changer le champ idb de prog en Set plutôt que list
+ [ ] changer edb et idb en Set plutôt que list
+ [ ] build_forest sans query n'est pas correct (il faut faire
  plusieurs forêts)
POGODALLA Sylvain's avatar
POGODALLA Sylvain committed
90 91 92 93 94
* reduction.ml
+ [ ] offrir la possibilité de construire une requête à partir de plusieurs terms
+ [ ] offrir la possibilité de construire une requête non totalement
  instanciée (utile ?). Prévoir modifications dans la manière de
  construire la forêt partagée après une requête.
95 96 97 98 99 100 101 102 103 104 105 106 107

* alterTrees.ml
+ [ ] changer la focused list des forêts en simple liste ?
+ [ ] garder trace de Link_to plutôt que de l'actual forest dans les move
+ [X] gérer les analyses infinies (ordre sur les chemins)

* unionFind.ml
+ [ ] Changer le rank dans "union" lorsque match de Value contre
  Link_to

* lambda.ml
+ [ ] Vérifier les passages de paramètres dans les
  unfold_{labs|abs|binder} pour l'affichage, et simplifier
108 109 110 111
+ [ ] reprendre partout l'utilisation des fonctions Format.printf, et
  les unifier pour les utiliser même quand simple "string" (si
  formattés, peut causer un problème d'assert dans la réduction à
  cause sans doute d'un "\n" qui reste)
112 113 114 115 116 117 118 119 120 121 122 123 124

* typeInference.ml
+ [ ] change or add inference (possibly with a signature) to principal
  typing
+ [ ] remove the level parameter (and any other useless parameter)
  from the inference_aux function (when no LOG occur)


* acg_lexicon.ml
+ [ ] add the int id (as in Lambda.Const i) in the map from the
  constant name for abstract constants
+ [ ] Définir le parsing pour les types non atomiques
+ [ ] Définir le parsing pour les almost linear terms
125 126
+ [ ] Vérifier que les Signature.expand_term ne sont pas redondants
  avec les Lambda.normalize ~id_to_term
127 128 129 130

* Divers
+ [ ] ajouter un espace de nommage pour les lexiques et signatures
+ [ ] Ajouter un -nooout option pour acgc ?
131 132
+ [ ] Vérifier ce qui se passe avec les différents parenthèsages lors
  du parsing
133 134 135 136 137 138 139 140 141 142 143 144 145


* Extension de signatures et lexiques
+ Warning signature: duplicate type or term definition (+ conflict with declaration)
+ Warning lexicon:
  + duplicate type or term interpretation
  + forgotten interpretations
+ Update lexicon if:
  + Interpretation
    1. new type/constant declaration in abstract signature  => check interpretation
    2. new or update type/constant definition in abstract or object signature => recompute lex
  + Composition
    1. one of the lexicon was updated => recompute lex