]> matita.cs.unibo.it Git - helm.git/commitdiff
cicUtil: we moved here pp_term from proceduralHelpers
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 25 Nov 2008 19:27:41 +0000 (19:27 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 25 Nov 2008 19:27:41 +0000 (19:27 +0000)
cicDischarge: some bugs fixed
transcript: we now support explicit declaration of dependences
procedural/Coq: we added an explicit dependence to Init/Prelude where needed

32 files changed:
helm/software/components/acic_procedural/proceduralHelpers.ml
helm/software/components/acic_procedural/proceduralHelpers.mli
helm/software/components/acic_procedural/proceduralOptimizer.ml
helm/software/components/binaries/transcript/engine.ml
helm/software/components/cic/cicUtil.ml
helm/software/components/cic/cicUtil.mli
helm/software/components/cic_proof_checking/cicDischarge.ml
helm/software/matita/contribs/procedural/Coq/Arith/EqNat.mma
helm/software/matita/contribs/procedural/Coq/Arith/Even.mma
helm/software/matita/contribs/procedural/Coq/Arith/Le.mma
helm/software/matita/contribs/procedural/Coq/Bool/Bool.mma
helm/software/matita/contribs/procedural/Coq/Bool/DecBool.mma
helm/software/matita/contribs/procedural/Coq/Bool/Sumbool.mma
helm/software/matita/contribs/procedural/Coq/Coq.conf.xml
helm/software/matita/contribs/procedural/Coq/Lists/Streams.mma
helm/software/matita/contribs/procedural/Coq/Logic/Berardi.mma
helm/software/matita/contribs/procedural/Coq/Logic/ChoiceFacts.mma
helm/software/matita/contribs/procedural/Coq/Logic/ClassicalFacts.mma
helm/software/matita/contribs/procedural/Coq/Logic/Decidable.mma
helm/software/matita/contribs/procedural/Coq/Logic/Eqdep.mma
helm/software/matita/contribs/procedural/Coq/Logic/Eqdep_dec.mma
helm/software/matita/contribs/procedural/Coq/Logic/Hurkens.mma
helm/software/matita/contribs/procedural/Coq/Logic/RelationalChoice.mma
helm/software/matita/contribs/procedural/Coq/NArith/BinPos.mma
helm/software/matita/contribs/procedural/Coq/Relations/Relation_Definitions.mma
helm/software/matita/contribs/procedural/Coq/Relations/Rstar.mma
helm/software/matita/contribs/procedural/Coq/Setoids/Setoid.mma
helm/software/matita/contribs/procedural/Coq/Sets/Ensembles.mma
helm/software/matita/contribs/procedural/Coq/Sets/Permut.mma
helm/software/matita/contribs/procedural/Coq/Sets/Relations_1.mma
helm/software/matita/contribs/procedural/Coq/Wellfounded/Inverse_Image.mma
helm/software/matita/contribs/procedural/Coq/depends

index 7d95d86775de199f8e83ee7a1798bf6556b9ef4e..5807e185ae6a4bb2e2313b8a0c36fc9878c9eed3 100644 (file)
@@ -35,102 +35,6 @@ module D    = Deannotate
 module PER  = ProofEngineReduction
 module Ut   = CicUtil
 
-(* raw cic prettyprinter ****************************************************)
-
-let xiter out so ss sc map l =
-   let rec aux = function
-      | hd :: tl when tl <> [] -> map hd; out ss; aux tl
-      | hd :: tl               -> map hd; aux tl
-      | []                     -> ()
-   in
-   out so; aux l; out sc
-
-let abst s w = Some (s, C.Decl w)
-
-let abbr s v w = Some (s, C.Def (v, w))
-
-let pp_sort out = function
-   | C.Type _  -> out "*Type"
-   | C.Prop    -> out "*Prop"
-   | C.CProp _ -> out "*CProp"
-   | C.Set     -> out "*Set"
-
-let pp_name out = function
-   | C.Name s    -> out s
-   | C.Anonymous -> out "_"
-
-let pp_rel out c i =
-   try match List.nth c (pred i) with
-      | None           -> out (Printf.sprintf "%u[?]" i)
-      | Some (s, _)    -> out (Printf.sprintf "%u[" i); pp_name out s; out "]"
-   with Failure "nth" -> out (Printf.sprintf "%u[%u]" i (List.length c - i))
-
-let pp_implict out = function
-   | None         -> out "?"
-   | Some `Closed -> out "?[Closed]" 
-   | Some `Type   -> out "?[Type]"
-   | Some `Hole   -> out "?[Hole]"
-
-let pp_uri out a =
-   out (Printf.sprintf "%s<%s>" (UM.name_of_uri a) (UM.string_of_uri a)) 
-
-let rec pp_term out e c = function
-   | C.Sort h                      -> pp_sort out h
-   | C.Rel i                       -> pp_rel out c i
-   | C.Implicit x                  -> pp_implict out x
-   | C.Meta (i, iss)               ->
-      let map = function None   -> out "_" | Some v -> pp_term out e c v in
-      out (Printf.sprintf "?%u" i); xiter out "[" "; " "]" map iss
-   | C.Var (a, xss)              ->
-      pp_uri out a; pp_xss out e c xss
-   | C.Const (a, xss)              ->
-      pp_uri out a; pp_xss out e c xss
-   | C.MutInd (a, m, xss)          ->
-      pp_uri out a; out (Printf.sprintf "/%u" m);
-      pp_xss out e c xss
-   | C.MutConstruct (a, m, n, xss) ->
-      pp_uri out a; out (Printf.sprintf "/%u/%u" m n);
-      pp_xss out e c xss
-   | C.Cast (v, w)                 ->
-      out "type "; pp_term out e c w; out " contains "; pp_term out e c v
-   | C.Appl vs                     ->
-      xiter out "(" " @ " ")" (pp_term out e c) vs
-   | C.MutCase (a, m, w, v, vs)    ->
-      out "match "; pp_term out e c v;
-      out " of "; pp_uri out a; out (Printf.sprintf "/%u" m);
-      out " to "; pp_term out e c w;
-      xiter out " cases " " | " "" (pp_term out e c) vs
-   | C.Prod (s, w, t)             ->
-      out "forall "; pp_name out s; out " of "; pp_term out e c w;
-      out " in "; pp_term out e (abst s w :: c) t
-   | C.Lambda (s, w, t)            ->
-      out "fun "; pp_name out s; out " of "; pp_term out e c w;
-      out " in "; pp_term out e (abst s w :: c) t
-   | C.LetIn (s, v, w, t)          ->
-      out "let "; pp_name out s; 
-      out " def "; pp_term out e c v; out " of "; pp_term out e c w;
-      out " in "; pp_term out e (abbr s v w :: c) t
-   | C.Fix (i, fs)                 ->
-      let map c (s, _, w, v) = abbr (C.Name s) v w :: c in
-      let c' = List.fold_left map c fs in
-      let map (s, i, w, v) =
-         out (Printf.sprintf "%s[%u] def " s i); pp_term out e c' v; 
-        out " of "; pp_term out e c w;
-      in
-      xiter out "let rec " " and " " in " map fs; pp_rel out c' (succ i)
-   | C.CoFix (i, fs)                 ->
-      let map c (s, w, v) = abbr (C.Name s) v w :: c in
-      let c' = List.fold_left map c fs in
-      let map (s, w, v) =
-         out s; pp_term out e c' v; 
-        out " of "; pp_term out e c w;
-      in
-      xiter out "let corec " " and " " in " map fs; pp_rel out c' (succ i)
-
-and pp_xss out e c xss = 
-   let map (a, v) = pp_uri out a; out " <- "; pp_term out e c v in
-   xiter out "[" "; " "]" map xss 
-
 (* fresh name generator *****************************************************)
 
 let split name =
@@ -192,18 +96,24 @@ let compose f g x = f (g x)
 let fst3 (x, _, _) = x
 
 let refine c t =
-   try let t, _, _, _ = Rf.type_of_aux' [] c t Un.default_ugraph in t
-   with e -> 
-      Printf.eprintf "REFINE EROR: %s\n" (Printexc.to_string e);
+   let error e = 
       Printf.eprintf "Ref: context: %s\n" (Pp.ppcontext c);
       Printf.eprintf "Ref: term   : %s\n" (Pp.ppterm t);
       raise e
+   in
+   try let t, _, _, _ = Rf.type_of_aux' [] c t Un.default_ugraph in t with 
+      | Rf.RefineFailure s as e -> 
+         Printf.eprintf "REFINE FAILURE: %s\n" (Lazy.force s);
+        error e
+      | e                       ->
+         Printf.eprintf "REFINE ERROR: %s\n" (Printexc.to_string e);
+        error e
 
 let get_type msg c t =
    let log s =
       prerr_endline ("TC: " ^ s); 
       prerr_endline ("TC: context: " ^ Pp.ppcontext c);
-      prerr_string "TC: term   : "; pp_term prerr_string [] c t;
+      prerr_string "TC: term   : "; Ut.pp_term prerr_string [] c t;
       prerr_newline (); prerr_endline ("TC: location: " ^ msg)
    in   
    try let ty, _ = TC.type_of_aux' [] c t Un.default_ugraph in ty with
index 1e0717efadf9b826c662e0f583f388d37c713088..69df6d79769d87e1d9eb9776aa8d4402418bb05d 100644 (file)
@@ -23,8 +23,6 @@
  * http://cs.unibo.it/helm/.
  *)
 
-val pp_term:
-   (string -> unit) -> Cic.metasenv -> Cic.context -> Cic.term -> unit
 val mk_fresh_name:
    Cic.context -> Cic.name -> Cic.name
 val list_fold_right_cps:
index 52192f723de1f0181a3f0cb1474307de068dc025..1b4cbd8e003ca3790f89f21c2f72ec465036bc35 100644 (file)
@@ -35,6 +35,7 @@ module PEH  = ProofEngineHelpers
 module TC   = CicTypeChecker 
 module Un   = CicUniv
 module L    = Librarian
+module Ut   = CicUtil
 
 module H    = ProceduralHelpers
 module Cl   = ProceduralClassify
@@ -242,8 +243,8 @@ let optimize_obj = function
       let g st bo =
         if !debug then begin 
            Printf.eprintf "Optimized : %s\n" (Pp.ppterm bo); 
-           prerr_string "H.pp_term : ";
-           H.pp_term prerr_string [] c bo; prerr_newline ()
+           prerr_string "Ut.pp_term : ";
+           Ut.pp_term prerr_string [] c bo; prerr_newline ()
         end;
 (*      let _ = H.get_type "opt" [] (C.Cast (bo, ty)) in *)
          let nodes = Printf.sprintf "Optimized nodes: %u" (I.count_nodes 0 bo) in
index 120d31fdd3ffa2da105e152a96a7cd81c62c608d..ccf07423f6dd5cc14b5af35f6ede71356a5bbc2f 100644 (file)
@@ -27,7 +27,7 @@ module R  = Helm_registry
 module X  = HExtlib
 module T  = Types
 module G  = Grafite
-module HP = Http_getter
+module HG = Http_getter
 
 module O = Options
 
@@ -48,6 +48,7 @@ type status = {
    output_path: string;
    input_type: string;
    output_type: T.output_kind;
+   includes: (string * string) list;
    coercions: (string * string) list;
    files: string list;
    requires: (string * string) list;
@@ -94,11 +95,11 @@ let init () =
    let matita_registry = Filename.concat !O.cwd "matita" in
    load_registry default_registry;
    load_registry matita_registry;
-   HP.init ()
+   HG.init ()
 
 let make registry =
    let id x = x in
-   let get_coercions = R.get_list (R.pair id id) in 
+   let get_pairs = R.get_list (R.pair id id) in 
    let get_output_type key =
       match R.get_string key with
          | "procedural"  -> T.Procedural
@@ -117,7 +118,8 @@ let make registry =
       output_path = R.get_string "package.output_path";
       input_type = R.get_string "package.input_type";
       output_type = get_output_type "package.output_type";
-      coercions = get_coercions "package.coercion";
+      includes = get_pairs "package.include";
+      coercions = get_pairs "package.coercion";
       files = [];
       requires = [];
       scripts = Array.make default_scripts default_script
@@ -218,6 +220,10 @@ let produce st =
            path, Some item
         | item                         -> path, Some item
       in
+      let set_includes st name =
+        try require st name (List.assoc name st.includes) 
+        with Not_found -> ()
+      in
       Printf.eprintf "processing file name: %s ...\n" name; flush stderr; 
       let file = Filename.concat st.input_path (name ^ st.input_type) in
       let ich = open_in file in
@@ -231,7 +237,7 @@ let produce st =
         let comment = T.Line (Printf.sprintf "From %s" name) in 
         if global_items <> [] then 
            set_items st st.input_package (comment :: global_items);
-        init name; require st name st.input_package;
+        init name; require st name st.input_package; set_includes st name;
         set_items st name local_items; commit st name
       with e -> 
          prerr_endline (Printexc.to_string e); close_in ich 
index 8c42aed6131a5348fb542f580eb1422f423d87e8..48481440929dacc40a88f68bb740a712e30884d8 100644 (file)
@@ -25,7 +25,8 @@
 
 (* $Id$ *)
 
-module C = Cic
+module C  = Cic
+module UM = UriManager
 
 exception Meta_not_found of int
 exception Subst_not_found of int
@@ -598,3 +599,125 @@ let is_sober c t =
       List.fold_left map g
    in 
    sober_term c (fun b -> b) t true
+
+(* raw cic prettyprinter ****************************************************)
+
+let xiter out so ss sc map l =
+   let rec aux = function
+      | hd :: tl when tl <> [] -> map hd; out ss; aux tl
+      | hd :: tl               -> map hd; aux tl
+      | []                     -> ()
+   in
+   out so; aux l; out sc
+
+let abst s w = Some (s, C.Decl w)
+
+let abbr s v w = Some (s, C.Def (v, w))
+
+let pp_sort out = function
+   | C.Type _  -> out "*Type"
+   | C.Prop    -> out "*Prop"
+   | C.CProp _ -> out "*CProp"
+   | C.Set     -> out "*Set"
+
+let pp_name out = function
+   | C.Name s    -> out s
+   | C.Anonymous -> out "_"
+
+let pp_rel out c i =
+   try match List.nth c (pred i) with
+      | None           -> out (Printf.sprintf "%u[?]" i)
+      | Some (s, _)    -> out (Printf.sprintf "%u[" i); pp_name out s; out "]"
+   with Failure "nth" -> out (Printf.sprintf "%u[%u]" i (List.length c - i))
+
+let pp_implict out = function
+   | None         -> out "?"
+   | Some `Closed -> out "?[Closed]" 
+   | Some `Type   -> out "?[Type]"
+   | Some `Hole   -> out "?[Hole]"
+
+let pp_uri out a =
+   out (Printf.sprintf "%s<%s>" (UM.name_of_uri a) (UM.string_of_uri a)) 
+
+let rec pp_term out e c = function
+   | C.Sort h                      -> pp_sort out h
+   | C.Rel i                       -> pp_rel out c i
+   | C.Implicit x                  -> pp_implict out x
+   | C.Meta (i, iss)               ->
+      let map = function None   -> out "_" | Some v -> pp_term out e c v in
+      out (Printf.sprintf "?%u" i); xiter out "[" "; " "]" map iss
+   | C.Var (a, xss)              ->
+      pp_uri out a; pp_xss out e c xss
+   | C.Const (a, xss)              ->
+      pp_uri out a; pp_xss out e c xss
+   | C.MutInd (a, m, xss)          ->
+      pp_uri out a; out (Printf.sprintf "/%u" m);
+      pp_xss out e c xss
+   | C.MutConstruct (a, m, n, xss) ->
+      pp_uri out a; out (Printf.sprintf "/%u/%u" m n);
+      pp_xss out e c xss
+   | C.Cast (v, w)                 ->
+      out "type "; pp_term out e c w; out " contains "; pp_term out e c v
+   | C.Appl vs                     ->
+      xiter out "(" " @ " ")" (pp_term out e c) vs
+   | C.MutCase (a, m, w, v, vs)    ->
+      out "match "; pp_term out e c v;
+      out " of "; pp_uri out a; out (Printf.sprintf "/%u" m);
+      out " to "; pp_term out e c w;
+      xiter out " cases " " | " "" (pp_term out e c) vs
+   | C.Prod (s, w, t)             ->
+      out "forall "; pp_name out s; out " of "; pp_term out e c w;
+      out " in "; pp_term out e (abst s w :: c) t
+   | C.Lambda (s, w, t)            ->
+      out "fun "; pp_name out s; out " of "; pp_term out e c w;
+      out " in "; pp_term out e (abst s w :: c) t
+   | C.LetIn (s, v, w, t)          ->
+      out "let "; pp_name out s; 
+      out " def "; pp_term out e c v; out " of "; pp_term out e c w;
+      out " in "; pp_term out e (abbr s v w :: c) t
+   | C.Fix (i, fs)                 ->
+      let map c (s, _, w, v) = abbr (C.Name s) v w :: c in
+      let c' = List.fold_left map c fs in
+      let map (s, i, w, v) =
+         out (Printf.sprintf "%s[%u] def " s i); pp_term out e c' v; 
+        out " of "; pp_term out e c w;
+      in
+      xiter out "let rec " " and " " in " map fs; pp_rel out c' (succ i)
+   | C.CoFix (i, fs)                 ->
+      let map c (s, w, v) = abbr (C.Name s) v w :: c in
+      let c' = List.fold_left map c fs in
+      let map (s, w, v) =
+         out s; pp_term out e c' v; 
+        out " of "; pp_term out e c w;
+      in
+      xiter out "let corec " " and " " in " map fs; pp_rel out c' (succ i)
+
+and pp_xss out e c xss = 
+   let map (a, v) = pp_uri out a; out " <- "; pp_term out e c v in
+   xiter out "[" "; " "]" map xss 
+
+and pp_attrs out attrs = 
+   let map = function
+      | _ -> ()
+   in
+   xiter out "[" "; " "] " map attrs 
+   
+let pp_pars out pars = 
+   xiter out " (" ", " ")\n" (pp_uri out) pars 
+
+let pp_obj out = function
+   | C.Constant (s, None, u, pars, attrs)          ->
+      out "fun "; pp_attrs out attrs; out s; pp_pars out pars;
+      out " of "; pp_term out [] [] u
+   | C.Constant (s, Some t, u, pars, attrs)        ->
+      out "let "; pp_attrs out attrs; out s; pp_pars out pars;
+      out " def "; pp_term out [] [] t; out " of "; pp_term out [] [] u
+   | C.Variable (s, None, u, pars, attrs)          ->
+      out "Local declaration"
+   | C.Variable (s, Some t, u, pars, attrs)        ->
+      out "Local definition"
+   | C.CurrentProof (s, e, t, u, pars, attrs)      ->
+      out "Current Proof" 
+   | C.InductiveDefinition (us, pars, lpno, attrs) ->
+      out "Inductive Definition"
+   
index 54a0a9bea639a2d72a16a03840b0166382c4625e..f6087be52cdf8d120513e40a51bd67d33a573470 100644 (file)
@@ -71,3 +71,8 @@ val alpha_equivalence: Cic.term -> Cic.term -> bool
  * detects applications without arguments
  *)
 val is_sober: Cic.context -> Cic.term -> bool
+
+val pp_term:
+   (string -> unit) -> Cic.metasenv -> Cic.context -> Cic.term -> unit
+val pp_obj:
+   (string -> unit) -> Cic.obj -> unit
index 52b841952a2158e47784108e62ea5f740ece3ca0..066eb72c9a3a948297a127b092efb2fc46bb493a 100644 (file)
@@ -27,6 +27,8 @@ module UM = UriManager
 module C  = Cic
 module Un = CicUniv
 module E  = CicEnvironment
+module Ut = CicUtil
+module TC = CicTypeChecker
 
 let hashtbl_size = 11
 
@@ -35,8 +37,16 @@ let not_implemented =
 
 let debug = ref false
 
+let out = prerr_string
+
 (* helper functions *********************************************************)
 
+let typecheck t =
+   if !debug then begin
+      let _ = TC.type_of_aux' [] [] t Un.default_ugraph in
+      out "Typecheck : OK\n"
+   end
+
 let list_pos found l =
    let rec aux n = function
       | []       -> raise Not_found
@@ -122,28 +132,30 @@ let rec discharge_term st t = match t with
       if vs' == vs then t else C.Appl (flatten vs')
    | C.Cast (v, w)                ->
       let v', w' = discharge_term st v, discharge_term st w in
-      if v' = v && w' = w then t else
+      if v' == v && w' == w then t else
       C.Cast (sh v v', sh w w')
    | C.MutCase (u, m, w, v, vs)   ->
+      let args = get_args st u in
+      let u' = if args = [] then u else st.du u in
       let w', v', vs' = 
          discharge_term st w, discharge_term st v,
         list_map_sh (discharge_term st) vs
       in
-      if w' = w && v' = v && vs' == vs then t else
-      C.MutCase (st.du u, m, sh w w', sh v v', sh vs vs')
+      if UM.eq u u' && w' == w && v' == v && vs' == vs then t else
+      C.MutCase (u', m, sh w w', sh v v', sh vs vs')
    | C.Prod (b, w, v)             ->
       let w', v' = discharge_term st w, discharge_term (add st 1) v in
-      if w' = w && v' = v then t else
+      if w' == w && v' == v then t else
       C.Prod (b, sh w w', sh v v')
    | C.Lambda (b, w, v)           ->
       let w', v' = discharge_term st w, discharge_term (add st 1) v in
-      if w' = w && v' = v then t else
+      if w' == w && v' == v then t else
       C.Lambda (b, sh w w', sh v v')
    | C.LetIn (b, y, w, v)   ->
       let y', w', v' = 
          discharge_term st y, discharge_term st w, discharge_term (add st 1) v
       in
-      if y' = y && w' = w && v' == v then t else
+      if y' == y && w' == w && v' == v then t else
       C.LetIn (b, sh y y', sh w w', sh v v')
    | C.CoFix (i, s)         ->
       let no = List.length s in
@@ -166,13 +178,13 @@ and discharge_usubst st s = match s with
 and discharge_cofun st no f =
    let b, w, v = f in
    let w', v' = discharge_term st w, discharge_term (add st no) v in
-   if w' = w && v' = v then f else
+   if w' == w && v' == v then f else
    b, sh w w', sh v v'
 
 and discharge_fun st no f =
    let b, i, w, v = f in
    let w', v' = discharge_term st w, discharge_term (add st no) v in
-   if w' = w && v' = v then f else
+   if w' == w && v' == v then f else
    b, i, sh w w', sh v v'
 
 let close is_type st t = 
@@ -201,26 +213,30 @@ let rec discharge_object dn du obj =
    | C.Variable (b, None, w, vars, attrs)              ->
       let st = init_status dn du ls vars in
       let w' = discharge_term st w in
-      if w' = w && vars = [] then obj else
+      if w' == w && vars = [] then obj else
       let w'' = sh w w' in
+      let _ = typecheck w'' in
       C.Variable (dn b, None, w'', [], attrs)
    | C.Variable (b, Some v, w, vars, attrs)            ->
       let st = init_status dn du ls vars in
       let w', v' = discharge_term st w, discharge_term st v in
-      if w' = w && v' = v && vars = [] then obj else
+      if w' == w && v' == v && vars = [] then obj else
       let w'', v'' = sh w w', sh v v' in
+      let _ = typecheck (C.Cast (v'', w'')) in
       C.Variable (dn b, Some v'', w'', [], attrs)
    | C.Constant (b, None, w, vars, attrs)              ->
       let st = init_status dn du ls vars in
       let w' = discharge_term st w in
-      if w' = w && vars = [] then obj else
+      if w' == w && vars = [] then obj else
       let w'' = close true st (sh w w') in
+      let _ = typecheck w'' in
       C.Constant (dn b, None, w'', [], attrs)
    | C.Constant (b, Some v, w, vars, attrs)            ->
       let st = init_status dn du ls vars in
       let w', v' = discharge_term st w, discharge_term st v in
-      if w' = w && v' = v && vars = [] then obj else
+      if w' == w && v' == v && vars = [] then obj else
       let w'', v'' = close true st (sh w w'), close false st (sh v v') in
+      let _ = typecheck (C.Cast (v'', w'')) in
       C.Constant (dn b, Some v'', w'', [], attrs)
    | C.InductiveDefinition (types, vars, lpsno, attrs) ->
       let st = init_status dn du ls vars in
@@ -232,10 +248,15 @@ let rec discharge_object dn du obj =
       HLog.warn not_implemented; obj
 
 and discharge_uri dn du uri =
+   let prerr msg obj =
+      if !debug then begin
+         out msg; Ut.pp_obj out obj; out "\n"
+      end
+   in
    let obj, _ = E.get_obj Un.default_ugraph uri in
-   if !debug then prerr_endline ("Plain     : " ^ CicPp.ppobj obj); 
+   prerr "Plain     : " obj;
    let obj' = discharge_object dn du obj in
-   if !debug then prerr_endline ("Discharged: " ^ CicPp.ppobj obj'); 
+   prerr "Discharged: " obj';
    obj', obj' == obj
 
 and discharge_vars dn du vars =
index e80c2a8dbe660ff05e5794ff48d59256037495e6..141640e21c5d3f9aa9ec60722cd43c18a33338c9 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 8ff5fa56fe734567ca8c3f53f139d8468153668f..eaa51f3c4c2775458b1b7a5d9403e0a5ee277b08 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index b10f063f1a5866969653a1b43dd20dc641c91f9e..7fef1672099dfcb0f09b833d66cd859d8c2c5154 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 8dcff09e8969427e23b6fd88e70ab99a7966a36b..7de881884641553b6ef0baf91b9946b1b7ea223e 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index e5b248c574ea999551c3279e231d534aafe37160..8eaaef1031fde6ae30047d19a59f58e32bbe2363 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 3659448aade26bb4f3cb0a864ddfb7cac53450e3..f79872f73bbde2210856f0720bead98a7237d346 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 3d5308d80fd811577dcb09aa3403151e6df04721..4c7d882b820db8fbebf01b5e910cf30c57d6963e 100644 (file)
@@ -9,6 +9,30 @@
     <key name="output_path">contribs/procedural/Coq</key>
     <key name="input_type">.v</key>
     <key name="output_type">procedural</key>    
+
+    <key name="include">Arith/EqNat Init/Prelude</key>
+    <key name="include">Arith/Even Init/Prelude</key>
+    <key name="include">Arith/Le Init/Prelude</key>
+    <key name="include">Bool/Bool Init/Prelude</key>
+    <key name="include">Bool/DecBool Init/Prelude</key>
+    <key name="include">Bool/Sumbool Init/Prelude</key>
+    <key name="include">Lists/Streams Init/Prelude</key>
+    <key name="include">Logic/Berardi Init/Prelude</key>    
+    <key name="include">Logic/ChoiceFacts Init/Prelude</key>
+    <key name="include">Logic/ClassicalFacts Init/Prelude</key>
+    <key name="include">Logic/Decidable Init/Prelude</key>
+    <key name="include">Logic/Eqdep Init/Prelude</key>
+    <key name="include">Logic/Eqdep_dec Init/Prelude</key>
+    <key name="include">Logic/Hurkens Init/Prelude</key>
+    <key name="include">Logic/RelationalChoice Init/Prelude</key>
+    <key name="include">NArith/BinPos Init/Prelude</key>
+    <key name="include">Relations/Relation_Definitions Init/Prelude</key>
+    <key name="include">Relations/Rstar Init/Prelude</key>
+    <key name="include">Setoids/Setoid Init/Prelude</key>
+    <key name="include">Sets/Ensembles Init/Prelude</key>
+    <key name="include">Sets/Permut Init/Prelude</key>
+    <key name="include">Sets/Relations_1 Init/Prelude</key>
+    <key name="include">Wellfounded/Inverse_Image Init/Prelude</key>    
 <!--    
     <key name="coercion">Z_of_nat cic:/Coq/ZArith/BinInt/Z_of_nat.con</key>
     <key name="coercion">Zpos cic:/Coq/ZArith/BinInt/Z.ind#xpointer(1/1/2)</key>
index ac4d889899ea9543f91be11ea57412cfbf3f7e60..270ba6817d68aa4dd9c8f5ec635fc16a65024fa2 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 0f945872076a2ce7dea7a136d7b3d204d0242580..05f71a4f3b2cb3417b5ca0fa585173acc35bc4bb 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 0c6e5f576db0ab75b0316e0e72ad50f8f6a43a10..ea62f258ea916419225b71c4b456f48644de434c 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 57b956941338d863b9515ab30bc8705bb17e8a81..a4da211bb5c6b32e98c12614762946665bcd4c70 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 8e12499367f429d87d01b6b85694a2da92ad2de5..3517b364d0b72d833ff62300e6c3397a2552b5e8 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index a397d185055609d7bee276f7ede2651f76065162..b794fd6c7c1b7b4c12b5e11dad09c23b4951d377 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 85dd8edd66f453831cb855c0d6a0f7eed1259220..b49bc6adbee988abf6661d2985d4fac94843e620 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index d90a39eb27e565f12e3c8b6a48445034da20ab3c..841b4790b6ce339d48a0a664bf639aca5e94520d 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index c7302ed123451ac36e2c3bc30b771737e3c47a48..f5121ab2b52533b394a8bf2ccc6ab51978a87562 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index ce84b27e1d23a9c298ca44732c657f495dc2d4a7..acf7997e6eb1c8847ecfc3ed249a83602642b1f1 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 5747545175c35419dfe0d76f6893a90679e8c77e..22b3775bba4d08fd12277eb1230d2b81fbe97fb2 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 074063e58ff937937d7391cc0c6fb6918aa56f2c..41ba77fb2745895ba64b37d9e1b46a2494b6cd4b 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 80019f64fab12d0af1003b251a48c0b2de551a92..d6311e97367d4cd53665bd19d9c63513bae9ad32 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 501b6c297c2b015230f4df1cc691ddd001c3b5ae..4de4dc1b9c91f05f1920b0d85b7f183160606370 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 1c6d11417fcf4abbc07eb0d00684f444768dee23..5f0b52dd77d8c56b13f248f3f50cdca9d5bfc7a9 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index d0e8b6186949f8c7a9f89ceb3575c4a7dbc84884..f831a54ed04504c935f8c7ee735e95d4fa864a10 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 401884cc1b9efbc386b792ab89f78163be7fc118..b3a602009384eeec75b27e69e533141a5646f1d3 100644 (file)
@@ -16,6 +16,8 @@
 
 include "Coq.ma".
 
+include "Init/Prelude.ma".
+
 (*#***********************************************************************)
 
 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
index 5088e5f29fc6d365834353b7dd23a3739b395a93..93dcd84fec668b31f5cfb9bb65db225033941bba 100644 (file)
@@ -22,7 +22,7 @@ ZArith/Zsqrt.ma ZArith/Zsqrt.mma
 Reals/Rseries.mma Arith/Compare.ma Coq.ma Logic/Classical.ma Reals/Rbase.ma Reals/Rfunctions.ma
 Lists/ListSet.mma Coq.ma Lists/List.ma
 Arith/Le.ma Arith/Le.mma
-Setoids/Setoid.mma Coq.ma
+Setoids/Setoid.mma Coq.ma Init/Prelude.ma
 Logic/ProofIrrelevance.ma Logic/ProofIrrelevance.mma
 ZArith/Zeven.mma Coq.ma ZArith/BinInt.ma
 ZArith/Zcompare.mma Arith/Gt.ma Arith/Lt.ma Arith/Mult.ma Arith/Plus.ma Coq.ma NArith/BinPos.ma ZArith/BinInt.ma
@@ -35,11 +35,11 @@ Reals/Ranalysis4.mma Coq.ma Reals/Exp_prop.ma Reals/Ranalysis1.ma Reals/Ranalysi
 Coq.ma preamble.ma
 ZArith/Znat.mma Arith/Arith.ma Arith/Compare_dec.ma Arith/Peano_dec.ma Coq.ma Logic/Decidable.ma NArith/BinPos.ma ZArith/BinInt.ma ZArith/Zcompare.ma ZArith/Zorder.ma
 Reals/Integration.ma Reals/Integration.mma
-Logic/RelationalChoice.mma Coq.ma
+Logic/RelationalChoice.mma Coq.ma Init/Prelude.ma
 ZArith/Zpower.ma ZArith/Zpower.mma
 Init/Prelude.mma Coq.ma Init/Datatypes.ma Init/Logic.ma Init/Notations.ma Init/Peano.ma Init/Specif.ma Init/Wf.ma
 Bool/IfProp.mma Bool/Bool.ma Coq.ma
-Arith/Even.mma Coq.ma
+Arith/Even.mma Coq.ma Init/Prelude.ma
 Lists/TheoryList.ma Lists/TheoryList.mma
 Arith/Wf_nat.ma Arith/Wf_nat.mma
 IntMap/Mapsubset.mma Arith/Arith.ma Bool/Bool.ma Bool/Sumbool.ma Coq.ma IntMap/Addec.ma IntMap/Addr.ma IntMap/Adist.ma IntMap/Fset.ma IntMap/Map.ma IntMap/Mapaxioms.ma IntMap/Mapiter.ma ZArith/ZArith.ma
@@ -48,7 +48,7 @@ Wellfounded/Wellfounded.ma Wellfounded/Wellfounded.mma
 Sets/Multiset.ma Sets/Multiset.mma
 Logic/ClassicalFacts.ma Logic/ClassicalFacts.mma
 Reals/RiemannInt.mma Arith/Max.ma Coq.ma Logic/Classical_Pred_Type.ma Logic/Classical_Prop.ma Reals/Ranalysis.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/RiemannInt_SF.ma Reals/SeqSeries.ma
-Wellfounded/Inverse_Image.mma Coq.ma
+Wellfounded/Inverse_Image.mma Coq.ma Init/Prelude.ma
 Reals/Rsigma.ma Reals/Rsigma.mma
 Bool/BoolEq.ma Bool/BoolEq.mma
 Wellfounded/Disjoint_Union.ma Wellfounded/Disjoint_Union.mma
@@ -72,7 +72,7 @@ Wellfounded/Union.ma Wellfounded/Union.mma
 Sets/Uniset.ma Sets/Uniset.mma
 Sorting/Sorting.mma Coq.ma Lists/List.ma Relations/Relations.ma Sets/Multiset.ma Sorting/Permutation.ma
 Init/Wf.mma Coq.ma Init/Datatypes.ma Init/Logic.ma Init/Notations.ma
-Sets/Ensembles.mma Coq.ma
+Sets/Ensembles.mma Coq.ma Init/Prelude.ma
 Reals/Cos_plus.mma Arith/Max.ma Coq.ma Reals/Cos_rel.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rtrigo_def.ma Reals/SeqSeries.ma
 Reals/SplitAbsolu.mma Coq.ma Reals/Rbasic_fun.ma
 Relations/Operators_Properties.ma Relations/Operators_Properties.mma
@@ -83,10 +83,10 @@ Logic/Decidable.ma Logic/Decidable.mma
 Arith/Div.ma Arith/Div.mma
 Sets/Relations_3_facts.mma Coq.ma Sets/Relations_1.ma Sets/Relations_1_facts.ma Sets/Relations_2.ma Sets/Relations_2_facts.ma Sets/Relations_3.ma
 Arith/Compare.ma Arith/Compare.mma
-Logic/Hurkens.mma Coq.ma
+Logic/Hurkens.mma Coq.ma Init/Prelude.ma
 Arith/Min.mma Arith/Arith.ma Coq.ma
 Reals/R_sqr.mma Coq.ma Reals/Rbase.ma Reals/Rbasic_fun.ma
-Bool/Bool.mma Coq.ma
+Bool/Bool.mma Coq.ma Init/Prelude.ma
 Reals/Alembert.ma Reals/Alembert.mma
 IntMap/Allmaps.mma Coq.ma IntMap/Adalloc.ma IntMap/Addec.ma IntMap/Addr.ma IntMap/Adist.ma IntMap/Fset.ma IntMap/Lsort.ma IntMap/Map.ma IntMap/Mapaxioms.ma IntMap/Mapc.ma IntMap/Mapcanon.ma IntMap/Mapcard.ma IntMap/Mapfold.ma IntMap/Mapiter.ma IntMap/Maplists.ma IntMap/Mapsubset.ma
 Sets/Relations_2.mma Coq.ma Sets/Relations_1.ma
@@ -142,7 +142,7 @@ Sets/Powerset_facts.mma Coq.ma Sets/Constructive_sets.ma Sets/Cpo.ma Sets/Ensemb
 Reals/Alembert.mma Arith/Max.ma Coq.ma Reals/PartSum.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rseries.ma Reals/SeqProp.ma
 ZArith/Zbool.ma ZArith/Zbool.mma
 Sets/Partial_Order.mma Coq.ma Sets/Ensembles.ma Sets/Relations_1.ma
-Logic/ClassicalFacts.mma Coq.ma
+Logic/ClassicalFacts.mma Coq.ma Init/Prelude.ma
 Reals/Rdefinitions.mma Coq.ma ZArith/ZArith_base.ma
 Reals/PSeries_reg.ma Reals/PSeries_reg.mma
 IntMap/Adalloc.ma IntMap/Adalloc.mma
@@ -172,7 +172,7 @@ Logic/Diaconescu.mma Bool/Bool.ma Coq.ma Logic/ChoiceFacts.ma Logic/ClassicalFac
 Reals/Rbase.mma Coq.ma Reals/DiscrR.ma Reals/RIneq.ma Reals/Raxioms.ma Reals/Rdefinitions.ma
 Sets/Powerset_facts.ma Sets/Powerset_facts.mma
 IntMap/Adist.mma Arith/Arith.ma Arith/Min.ma Bool/Bool.ma Coq.ma IntMap/Addr.ma ZArith/ZArith.ma
-NArith/BinPos.mma Coq.ma
+NArith/BinPos.mma Coq.ma Init/Prelude.ma
 Lists/Streams.ma Lists/Streams.mma
 NArith/NArith.ma NArith/NArith.mma
 Relations/Newman.ma Relations/Newman.mma
@@ -201,14 +201,14 @@ Reals/Reals.ma Reals/Reals.mma
 Arith/Mult.ma Arith/Mult.mma
 ZArith/Wf_Z.ma ZArith/Wf_Z.mma
 Arith/Div.mma Arith/Compare_dec.ma Arith/Le.ma Coq.ma
-Arith/EqNat.mma Coq.ma
-Bool/DecBool.mma Coq.ma
+Arith/EqNat.mma Coq.ma Init/Prelude.ma
+Bool/DecBool.mma Coq.ma Init/Prelude.ma
 Arith/Minus.ma Arith/Minus.mma
 ZArith/Zbool.mma Bool/Sumbool.ma Coq.ma ZArith/BinInt.ma ZArith/ZArith_dec.ma ZArith/Zcompare.ma ZArith/Zeven.ma ZArith/Zorder.ma
 NArith/BinNat.mma Coq.ma NArith/BinPos.ma
 Logic/Classical_Type.mma Coq.ma Logic/Classical_Pred_Type.ma Logic/Classical_Prop.ma
 Wellfounded/Transitive_Closure.mma Coq.ma Relations/Relation_Definitions.ma Relations/Relation_Operators.ma
-Logic/Eqdep.mma Coq.ma
+Logic/Eqdep.mma Coq.ma Init/Prelude.ma
 Reals/Rtrigo_reg.ma Reals/Rtrigo_reg.mma
 Init/Specif.mma Coq.ma Init/Datatypes.ma Init/Logic.ma Init/Notations.ma
 Sets/Infinite_sets.mma Arith/Gt.ma Arith/Le.ma Arith/Lt.ma Coq.ma Logic/Classical_Type.ma Sets/Classical_sets.ma Sets/Constructive_sets.ma Sets/Finite_sets.ma Sets/Finite_sets_facts.ma Sets/Image.ma Sets/Powerset.ma Sets/Powerset_Classical_facts.ma Sets/Powerset_facts.ma
@@ -232,7 +232,7 @@ Reals/PSeries_reg.mma Arith/Even.ma Arith/Max.ma Coq.ma Reals/Ranalysis1.ma Real
 NArith/NArith.mma Coq.ma NArith/BinNat.ma NArith/BinPos.ma
 NArith/BinNat.ma NArith/BinNat.mma
 ZArith/ZArith_dec.mma Bool/Sumbool.ma Coq.ma ZArith/BinInt.ma ZArith/Zcompare.ma ZArith/Zorder.ma
-Relations/Relation_Definitions.mma Coq.ma
+Relations/Relation_Definitions.mma Coq.ma Init/Prelude.ma
 Sorting/Sorting.ma Sorting/Sorting.mma
 Sets/Image.mma Arith/Gt.ma Arith/Le.ma Arith/Lt.ma Coq.ma Logic/Classical_Type.ma Sets/Classical_sets.ma Sets/Constructive_sets.ma Sets/Finite_sets.ma Sets/Finite_sets_facts.ma Sets/Powerset.ma Sets/Powerset_Classical_facts.ma Sets/Powerset_facts.ma
 Reals/Rlimit.mma Coq.ma Logic/Classical_Prop.ma Reals/Rbase.ma Reals/Rfunctions.ma
@@ -241,7 +241,7 @@ Reals/NewtonInt.ma Reals/NewtonInt.mma
 Reals/Rtrigo_def.ma Reals/Rtrigo_def.mma
 IntMap/Adalloc.mma Arith/Arith.ma Bool/Bool.ma Bool/Sumbool.ma Coq.ma IntMap/Addec.ma IntMap/Addr.ma IntMap/Adist.ma IntMap/Fset.ma IntMap/Map.ma ZArith/ZArith.ma
 Reals/Rgeom.ma Reals/Rgeom.mma
-Bool/Sumbool.mma Coq.ma
+Bool/Sumbool.mma Coq.ma Init/Prelude.ma
 Arith/Compare_dec.mma Arith/Gt.ma Arith/Le.ma Arith/Lt.ma Coq.ma Logic/Decidable.ma
 Sorting/Permutation.mma Coq.ma Lists/List.ma Relations/Relations.ma Sets/Multiset.ma
 Sets/Classical_sets.mma Coq.ma Logic/Classical_Type.ma Sets/Constructive_sets.ma Sets/Ensembles.ma
@@ -265,7 +265,7 @@ IntMap/Mapaxioms.mma Bool/Bool.ma Bool/Sumbool.ma Coq.ma IntMap/Addec.ma IntMap/
 IntMap/Mapiter.ma IntMap/Mapiter.mma
 Reals/SplitAbsolu.ma Reals/SplitAbsolu.mma
 Reals/Ranalysis3.ma Reals/Ranalysis3.mma
-Logic/ChoiceFacts.mma Coq.ma
+Logic/ChoiceFacts.mma Coq.ma Init/Prelude.ma
 Reals/Ranalysis3.mma Coq.ma Reals/Ranalysis1.ma Reals/Ranalysis2.ma Reals/Rbase.ma Reals/Rfunctions.ma
 Arith/Lt.mma Arith/Le.ma Coq.ma
 Reals/Rpower.mma Coq.ma Reals/Exp_prop.ma Reals/MVT.ma Reals/R_sqrt.ma Reals/Ranalysis1.ma Reals/Ranalysis4.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rsqrt_def.ma Reals/Rtrigo.ma Reals/SeqSeries.ma
@@ -273,7 +273,7 @@ Reals/Rderiv.ma Reals/Rderiv.mma
 Reals/Cos_plus.ma Reals/Cos_plus.mma
 Reals/MVT.ma Reals/MVT.mma
 Reals/SeqProp.ma Reals/SeqProp.mma
-Arith/Le.mma Coq.ma
+Arith/Le.mma Coq.ma Init/Prelude.ma
 ZArith/auxiliary.ma ZArith/auxiliary.mma
 Sets/Powerset.mma Coq.ma Sets/Cpo.ma Sets/Ensembles.ma Sets/Partial_Order.ma Sets/Relations_1.ma Sets/Relations_1_facts.ma
 Reals/SeqSeries.mma Arith/Max.ma Coq.ma Reals/Alembert.ma Reals/AltSeries.ma Reals/Binomial.ma Reals/Cauchy_prod.ma Reals/PartSum.ma Reals/Rbase.ma Reals/Rcomplete.ma Reals/Rfunctions.ma Reals/Rprod.ma Reals/Rseries.ma Reals/Rsigma.ma Reals/SeqProp.ma
@@ -281,14 +281,14 @@ Reals/RiemannInt.ma Reals/RiemannInt.mma
 IntMap/Mapfold.ma IntMap/Mapfold.mma
 Wellfounded/Lexicographic_Product.mma Coq.ma Logic/Eqdep.ma Relations/Relation_Operators.ma Wellfounded/Transitive_Closure.ma
 Sets/Integers.ma Sets/Integers.mma
-Logic/Berardi.mma Coq.ma
+Logic/Berardi.mma Coq.ma Init/Prelude.ma
 IntMap/Mapcard.ma IntMap/Mapcard.mma
 ZArith/Zlogarithm.ma ZArith/Zlogarithm.mma
 ZArith/Zhints.mma Coq.ma ZArith/BinInt.ma ZArith/Wf_Z.ma ZArith/Zabs.ma ZArith/Zcompare.ma ZArith/Zmin.ma ZArith/Zmisc.ma ZArith/Znat.ma ZArith/Zorder.ma ZArith/auxiliary.ma
 Reals/Cauchy_prod.mma Coq.ma Reals/PartSum.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rseries.ma
 Lists/MonoList.ma Lists/MonoList.mma
 Reals/Integration.mma Coq.ma Reals/NewtonInt.ma Reals/RiemannInt.ma Reals/RiemannInt_SF.ma
-Sets/Permut.mma Coq.ma
+Sets/Permut.mma Coq.ma Init/Prelude.ma
 Reals/Rtrigo_calc.ma Reals/Rtrigo_calc.mma
 Reals/DiscrR.ma Reals/DiscrR.mma
 Sets/Relations_2_facts.mma Coq.ma Sets/Relations_1.ma Sets/Relations_1_facts.ma Sets/Relations_2.ma
@@ -329,7 +329,7 @@ Reals/NewtonInt.mma Coq.ma Reals/Ranalysis.ma Reals/Rbase.ma Reals/Rfunctions.ma
 NArith/Pnat.mma Arith/Gt.ma Arith/Le.ma Arith/Lt.ma Arith/Minus.ma Arith/Mult.ma Arith/Plus.ma Coq.ma NArith/BinPos.ma
 Sets/Relations_3_facts.ma Sets/Relations_3_facts.mma
 Reals/MVT.mma Coq.ma Reals/Ranalysis1.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rtopology.ma
-Sets/Relations_1.mma Coq.ma
+Sets/Relations_1.mma Coq.ma Init/Prelude.ma
 IntMap/Fset.ma IntMap/Fset.mma
 Logic/JMeq.mma Coq.ma Logic/Eqdep.ma
 ZArith/Zsqrt.mma Coq.ma ZArith/ZArith_base.ma
@@ -364,10 +364,10 @@ Reals/Rtrigo.ma Reals/Rtrigo.mma
 Reals/ArithProp.mma Arith/Div2.ma Arith/Even.ma Coq.ma Reals/Rbase.ma Reals/Rbasic_fun.ma
 Reals/Ranalysis2.ma Reals/Ranalysis2.mma
 Arith/Wf_nat.mma Arith/Lt.ma Coq.ma
-Logic/Eqdep_dec.mma Coq.ma
+Logic/Eqdep_dec.mma Coq.ma Init/Prelude.ma
 Reals/Rcomplete.ma Reals/Rcomplete.mma
 Sets/Ensembles.ma Sets/Ensembles.mma
-Logic/Decidable.mma Coq.ma
+Logic/Decidable.mma Coq.ma Init/Prelude.ma
 ZArith/Zabs.ma ZArith/Zabs.mma
 ZArith/Zmin.ma ZArith/Zmin.mma
 Sets/Powerset_Classical_facts.mma Coq.ma Logic/Classical_Type.ma Sets/Classical_sets.ma Sets/Constructive_sets.ma Sets/Cpo.ma Sets/Ensembles.ma Sets/Partial_Order.ma Sets/Powerset.ma Sets/Powerset_facts.ma Sets/Relations_1.ma Sets/Relations_1_facts.ma
@@ -378,13 +378,13 @@ Sets/Finite_sets.mma Coq.ma Sets/Constructive_sets.ma Sets/Ensembles.ma
 ZArith/Zbinary.ma ZArith/Zbinary.mma
 Arith/Arith.ma Arith/Arith.mma
 Logic/ClassicalDescription.ma Logic/ClassicalDescription.mma
-Lists/Streams.mma Coq.ma
+Lists/Streams.mma Coq.ma Init/Prelude.ma
 Reals/SeqProp.mma Arith/Max.ma Coq.ma Logic/Classical.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rseries.ma
 Reals/RIneq.mma Coq.ma Reals/Raxioms.ma
 ZArith/ZArith.mma Coq.ma ZArith/ZArith_base.ma ZArith/Zcomplements.ma ZArith/Zdiv.ma ZArith/Zlogarithm.ma ZArith/Zpower.ma ZArith/Zsqrt.ma
 Sorting/Heap.ma Sorting/Heap.mma
 Sets/Cpo.ma Sets/Cpo.mma
-Relations/Rstar.mma Coq.ma
+Relations/Rstar.mma Coq.ma Init/Prelude.ma
 Reals/Reals.mma Coq.ma Reals/Integration.ma Reals/Ranalysis.ma Reals/Rbase.ma Reals/Rfunctions.ma Reals/Rtrigo.ma Reals/SeqSeries.ma
 IntMap/Mapcanon.mma Arith/Arith.ma Bool/Bool.ma Bool/Sumbool.ma Coq.ma IntMap/Addec.ma IntMap/Addr.ma IntMap/Adist.ma IntMap/Fset.ma IntMap/Lsort.ma IntMap/Map.ma IntMap/Mapaxioms.ma IntMap/Mapcard.ma IntMap/Mapiter.ma IntMap/Mapsubset.ma Lists/List.ma ZArith/ZArith.ma
 Bool/Sumbool.ma Bool/Sumbool.mma