]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/matita.txt
version 0.7.1
[helm.git] / helm / matita / matita.txt
index 62f13367539deb44234e01007a56c025b7720bbb..6310a8f71eeee7f09870e2a2f66e2b33b54027d6 100644 (file)
@@ -2,35 +2,92 @@
 (**********************************************************************)
 
 TODO
-- implementare macro in matitaScript.ml        (check, hint, ..) -> Gares
-- script outline                                         -> Zack
+- Guardare il commento
+  (*CSC: this code is suspect and/or bugged: we try first without reduction
+  and then using whd. However, the saturate_term always tries with full
+  reduction without delta. *)
+  in primitiveTactics.ml. Potrebbe essere causa di rallentamento della apply
+  oltre che di bug!
+- Bug di cut&paste: se si fa cut&paste di testo lockato si ottiene testo
+  lockato!
+- Dare errore significativo al posto di NotWellTypedInterpreation
+- Implementare menu edit: find/replace/cut/copy/undo/etc.
+- Bug vari nella generazione dei principi di eliminazione:
+   1. generazione nomi (usa ref incrementata localmente)
+   2. prodotti dipendenti come non-dipendenti (visibili eseguendo passo
+      passo il test inversion.ma)
+   3. usato trucco outtype non dipendenti per il case
+- elim_intros_simpl e rewrite_simpl: ora non viene usata dal
+             ^^^^^^           ^^^^^^
+  toplevel la variante che semplifica. Capire quali sono i problemi
+  e/o cosa fare delle varianti con semplificazione.
+- eta_expand non usata da nessuno?
+- notazione -> Luca e Zack
+- eliminare eta_fix? (aspettare notazione)
+- bug di refresh del widget quando si avanza ("swap" tra la finestra dei
+  sequenti e la finestra dello script)
+- feedback su hyperlink nei sequenti e nel browser: rendere visibili gli
+  hyperlink (cursore a "manina"? hyperlink evidenziati?). La maction che
+  collassa la prova e' fastidiosa: la prova si chiude se non si clicca
+  correttamente su un hyperlink
+- disabilitare (set_sensitive false) menu e bottoni mentre matita sta
+  processando lo script per evitare interazioni pericolose
+- bug di ferruccio: fare un refresh dei nomi dopo l'applicazione
+  di una tattica. Di quali nomi fare refresh? (Andrea) di quelli
+  veramente ambigui, ovvero dell'ultimo binder tale che sotto di
+  esso un nome viene usato in maniera ambigua. Esempio:
+  \lambda x. \lambda x. (x x) (dove una x e' -2) ==> fare refresh
+  \lambda x. \lambda x. (x x) (dove entrambe sono -1) ==> non fare refresh
+- a volte genera termini con variabili legate da piu' binder
+  Capita quando un tipo dall'environment (e.g. \lambda x.T)
+  viene inserito in un contesto (e.g. x:nat) dove le variabili
+  sono gia' state legate in precedenza.
+- script outline -> Zack
 - cicBrowser: riagganciare(?) resa di termini scritti
-  nella URL(??)                                                  ->
-- menu contestuale (tasto dx) nel sequent viewer         ->
-- controllo per script modificato o meno prima di uscire  ->
-- riattaccare hbugs (brrr...)                            -> Zack
-- spostare il codice di creazione delle tabelle da
-  MatitaDb, al momento quelle create da matita possono
-  andare out of sync con quelle create dai file .sql
-- commenti exeguibili (forse devono essere una lista e non 
-  un singolo executable e forse devono contenere anche Note 
-  e non solo Executable
+  nella URL(??)
+- menu contestuale (tasto dx) nel sequent viewer -> attende notazione
+- riattaccare hbugs (brrr...)                             -> Zack
+- gestione dei path per include: il path deve essere assoluto? da decidere ...
+- highlight degli errori di parsing nello script (usando lo sfondo come per la
+  parte lockata di testo, da ripulire quando si modifica il testo o si sposta il
+  punto di esecuzione)
+- salvare la parte di testo lockata dagli effetti di undo/redo (come?????)
+- supportare l'apertura di piu' script contemporaneamente in tab/finestre
+  diversi/e
 
 DONE
-- tree update in background                              -> Gares
-- update del getter in background                        -> Zack
-- agganciare href_callback del sequent_viewer            -> Zack
-- shortcut varie per script handling                     -> Zack
-- operazioni rimanenti su script (top, bottom, jump)     -> Zack
-- lighting-ls-getter in matita                           -> Gares
-- riagganciare toolbar                                   -> Zack
+- controllo per script modificato o meno prima di uscire  -> Gares
+- LApply deve prendere in input gli identificatori che va a generare;
+  lascio a Ferruccio la scelta della sintassi concreta    -> Ferruccio
+- fare tornare a matitac -1 quando lo stato finale e' 
+  diverso da No_proof, non eseguire comandi quando lo 
+  stato e' diverso da No_proof                            -> CSC
+- uri_of_term and term_of_uri: cambiare il tipo per far 
+  tornare delle uri!!!                                    -> CSC
+- intro = intros 1                                        -> Gares
+- timetravel (urimanager)                                 -> Gares
+- implementare macro in matitaScript.ml                   -> Gares
+- history deve aggiornare anche la whelp bar              -> Gares
+- commenti exeguibili (forse devono essere una lista e non 
+  un singolo executable e forse devono contenere anche Note 
+  e non solo Executable)                                  -> Gares
+- spostare il codice di creazione delle tabelle da
+  MatitaDb, al momento quelle create da matita possono
+  andare out of sync con quelle create dai file .sql      -> Gares
+- tree update in background                               -> Gares
+- update del getter in background                         -> Zack
+- agganciare href_callback del sequent_viewer             -> Zack
+- shortcut varie per script handling                      -> Zack
+- operazioni rimanenti su script (top, bottom, jump)      -> Zack
+- lighting-ls-getter in matita                            -> Gares
+- riagganciare toolbar                                    -> Zack
 - evitare che n-mila tattiche Goal siano nello script
-  (una per ogni cambio di tab)                           -> Zack
-- implementazione comandi rimanenti in matitaEngine.ml   -> Gares
-- sintassi per gli alias                                 -> Gares
-- implementazione script handling (sopra engine)         -> Zack
+  (una per ogni cambio di tab)                            -> Zack
+- implementazione comandi rimanenti in matitaEngine.ml    -> Gares
+- sintassi per gli alias                                  -> Gares
+- implementazione script handling (sopra engine)          -> Zack
 - matitaSync all'indietro                                 -> Gares
-- riagganciare GUI                                       -> Zack
+- riagganciare GUI                                        -> Zack
 
 (**********************************************************************)
 
@@ -55,9 +112,9 @@ comandi:
          |  lingua:/sintassi concreta non ambigua delle tattiche+Qed,Thm,alias/ 
          +----------------------------------------------------------
          |            engine: TacticAst (cic) -> status -> status
-        |               ma non usa il campo alias dello status
+         |               ma non usa il campo alias dello status
 ---------+----------------------------------------------------------
-                            ocaml               
+                            ocaml                 
 --------------------------------------------------------------------
 
 
@@ -136,33 +193,33 @@ script handling
     - new: gtk_text_buffer -> script
     - redraw: unit (* ridisegna il contenuto del buffer di testo *)
     - advance: ?statement:string -> unit -> unit
-       (* valuta il primo statement del future text (usando eval_statement
-       (puo' fallire con una eccezione)), rimuove il testo corrispondente dal
-       future text, aggiunge alla statement list una entry per ogni statement
-       ritornato da eval_statement, aggiunge il nuovo stato alla state list,
-       invoka tutti gli observer
-       Se c'e' l'argomento opzionale statement, quello e' il testo che viene
-       passato ad eval_statement, se ha successo nessuna rimozione dal future
-       text viene effettuata *)
+        (* valuta il primo statement del future text (usando eval_statement
+        (puo' fallire con una eccezione)), rimuove il testo corrispondente dal
+        future text, aggiunge alla statement list una entry per ogni statement
+        ritornato da eval_statement, aggiunge il nuovo stato alla state list,
+        invoka tutti gli observer
+        Se c'e' l'argomento opzionale statement, quello e' il testo che viene
+        passato ad eval_statement, se ha successo nessuna rimozione dal future
+        text viene effettuata *)
     - retract: unit -> unit
-       (* sposta l'ultimo statement della statement list al future text, toglie
-       l'ultimo stato della state list, MatitaSync.time_travel
-       ~present:ultimo_stato ~past:stato_precedente *)
+        (* sposta l'ultimo statement della statement list al future text, toglie
+        l'ultimo stato della state list, MatitaSync.time_travel
+        ~present:ultimo_stato ~past:stato_precedente *)
     - private eval_statement: string -> MatitaTypes.status * string list
-       (* parsa lo statement
-       - se e' un Command o un Tactical (vedi TacticAst) invoca MatitaEngine
-         passando lo stato corrente
-       - se e' una Macro la gestisce (= tutte le Macro sono implementate qua)
-         Ritorna una lista di coppie <stato, statement>. La proiezione sulla
-         prima componente rappresenta gli stati da aggiungere alla state list;
-         quella sulla seconda gli statement da aggiungere alla statement list.
-       *)
+        (* parsa lo statement
+        - se e' un Command o un Tactical (vedi TacticAst) invoca MatitaEngine
+          passando lo stato corrente
+        - se e' una Macro la gestisce (= tutte le Macro sono implementate qua)
+          Ritorna una lista di coppie <stato, statement>. La proiezione sulla
+          prima componente rappresenta gli stati da aggiungere alla state list;
+          quella sulla seconda gli statement da aggiungere alla statement list.
+        *)
     (* gestione degli observer *)
     - add_observer: (MatitaTypes.status -> unit) -> observer_id
     - remove_observer: observer_id -> unit
     (* gestione del salvataggio *)
-    - save_to: string -> unit  (* ridisegna su file *)
+    - save_to: string -> unit        (* ridisegna su file *)
     - load_from: string -> unit
         (* retract fino allo stato zero, nuovo stato con future text pari al
-       contenuto del file passato *)
+        contenuto del file passato *)