]> matita.cs.unibo.it Git - helm.git/commitdiff
* type definitions that define a new proposition are no longer exported
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Sun, 4 Nov 2007 17:44:37 +0000 (17:44 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Sun, 4 Nov 2007 17:44:37 +0000 (17:44 +0000)
* type arguments of type Prop are no longer abstracted in inductive types

components/cic_exportation/cicExportation.ml

index b493c4e4096faca4029f32916f8cc39ec2dce42d..06fc383084508ca7d893dc0460a6ea6b04890349 100644 (file)
@@ -44,12 +44,12 @@ let analyze_term context t =
 let analyze_type context t =
  let rec aux =
   function
-     Cic.Sort _ -> `Sort
+     Cic.Sort s -> `Sort s
    | Cic.Prod (_,_,t) -> aux t
    | _ -> `SomethingElse
  in
  match aux t with
-    `Sort -> `Sort
+    `Sort _ as res -> res
   | `SomethingElse ->
       match
        fst(CicTypeChecker.type_of_aux' [] context t CicUniv.oblivion_ugraph)
@@ -168,7 +168,7 @@ let rec pp t context =
     | C.Cast (v,t) -> pp v context
     | C.Lambda (b,s,t) ->
        (match analyze_type context s with
-           `Sort
+           `Sort _
          | `Statement -> pp t ((Some (b,Cic.Decl s))::context)
          | `Type -> "(function " ^ ppname b ^ " -> " ^ pp t ((Some (b,Cic.Decl s))::context) ^ ")")
     | C.LetIn (b,s,t) ->
@@ -333,8 +333,9 @@ let ppinductiveType current_module_name (typename, inductive, arity, cons) =
       function
          Cic.Prod (n,s,t) ->
            (match analyze_type context s with
-               `Statement
-             | `Sort ->
+               `Sort Cic.Prop -> args ((Some (n,Cic.Decl s))::context) t
+             | `Statement
+             | `Sort _ ->
                  let n =
                   match n with
                      Cic.Anonymous -> Cic.Anonymous
@@ -371,13 +372,15 @@ let ppobj current_module_name obj =
   match obj with
     C.Constant (name, Some t1, t2, params, _) ->
       (match analyze_type [] t2 with
-          `Statement -> ""
+          `Sort Cic.Prop
+        | `Statement -> ""
         | `Type
-        | `Sort -> "let " ^ ppid name ^ " =\n" ^ pp t1 [] ^ "\n")
+        | `Sort -> "let " ^ ppid name ^ " =\n" ^ pp t1 [] ^ "\n")
    | C.Constant (name, None, ty, params, _) ->
       (match analyze_type [] ty with
-          `Statement -> ""
-        | `Sort -> "type " ^ ppid name ^ "\n"
+          `Sort Cic.Prop
+        | `Statement -> ""
+        | `Sort _ -> "type " ^ ppid name ^ "\n"
         | `Type -> "let " ^ ppid name ^ " = assert false\n")
    | C.Variable (name, bo, ty, params, _) ->
       "Variable " ^ name ^