]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/lexicon/lexiconEngine.ml
natural deduction support for lemmas with premises
[helm.git] / helm / software / components / lexicon / lexiconEngine.ml
index aadb3ddf2ad02949f3a9769900a2dddce59ae198..cd7b0123d6dd5acf1328d13a12014a62260fb649 100644 (file)
@@ -34,8 +34,8 @@ exception IncludedFileNotCompiled of string * string
 exception MetadataNotFound of string        (* file name *)
 
 type status = {
-  aliases: DisambiguateTypes.environment;         (** disambiguation aliases *)
-  multi_aliases: DisambiguateTypes.multiple_environment;
+  aliases: Cic.term DisambiguateTypes.environment;         (** disambiguation aliases *)
+  multi_aliases: Cic.term DisambiguateTypes.multiple_environment;
   lexicon_content_rev: LexiconMarshal.lexicon;
   notation_ids: CicNotation.notation_id list;      (** in-scope notation ids *)
 }
@@ -51,7 +51,12 @@ let add_lexicon_content cmds status =
   let content = status.lexicon_content_rev in
   let content' =
     List.fold_right
-     (fun cmd acc -> cmd :: (List.filter ((<>) cmd) acc))
+     (fun cmd acc -> 
+        match cmd with
+        | LexiconAst.Alias _ 
+        | LexiconAst.Include _ 
+        | LexiconAst.Notation _ -> cmd :: (List.filter ((<>) cmd) acc)
+        | LexiconAst.Interpretation _ -> if List.exists ((=) cmd) acc then acc else cmd::acc)
      cmds content
   in
 (*   prerr_endline ("new lexicon content: " ^ String.concat " " (List.map
@@ -147,7 +152,7 @@ let rec eval_command ?(mode=LexiconAst.WithPreferences) status cmd =
           (uri,(fun _ _ _-> CicUtil.term_of_uri(UriManager.uri_of_string uri)))]
       | LexiconAst.Symbol_alias (symb, instance, desc) ->
          [DisambiguateTypes.Symbol (symb,instance),
-          DisambiguateChoices.lookup_symbol_by_dsc symb desc]
+          DisambiguateChoices.cic_lookup_symbol_by_dsc symb desc]
       | LexiconAst.Number_alias (instance,desc) ->
          [DisambiguateTypes.Num instance,
           DisambiguateChoices.lookup_num_by_dsc desc]
@@ -156,12 +161,18 @@ let rec eval_command ?(mode=LexiconAst.WithPreferences) status cmd =
   | LexiconAst.Interpretation (_, dsc, (symbol, _), _) as stm ->
       let status = add_lexicon_content [stm] status in
       let diff =
-       [DisambiguateTypes.Symbol (symbol, 0),
-         DisambiguateChoices.lookup_symbol_by_dsc symbol dsc]
+       try
+        [DisambiguateTypes.Symbol (symbol, 0),
+          DisambiguateChoices.cic_lookup_symbol_by_dsc symbol dsc]
+       with
+        DisambiguateChoices.Choice_not_found msg ->
+          prerr_endline (Lazy.force msg);
+          assert false
       in
       let status = set_proof_aliases mode status diff in
       status
-  | LexiconAst.Notation _ as stm -> add_lexicon_content [stm] status
+  | LexiconAst.Notation _ as stm ->
+      add_lexicon_content [stm] status
 
 let eval_command = eval_command ?mode:None