Only ignore too general axiom clauses, if the translation is partial- or constant-typed.
authormengj
Wed, 02 Aug 2006 13:48:21 +0200
changeset 20281 16733b31e1cf
parent 20280 ad9fbbd01535
child 20282 49c312eaaa11
Only ignore too general axiom clauses, if the translation is partial- or constant-typed.
src/HOL/Tools/res_hol_clause.ML
--- a/src/HOL/Tools/res_hol_clause.ML	Wed Aug 02 03:33:28 2006 +0200
+++ b/src/HOL/Tools/res_hol_clause.ML	Wed Aug 02 13:48:21 2006 +0200
@@ -174,6 +174,19 @@
 (* data types for typed combinator expressions        *)
 (******************************************************)
 
+datatype type_level = T_FULL | T_PARTIAL | T_CONST | T_NONE;
+
+val typ_level = ref T_CONST;
+
+fun full_types () = (typ_level:=T_FULL);
+fun partial_types () = (typ_level:=T_PARTIAL);
+fun const_types_only () = (typ_level:=T_CONST);
+fun no_types () = (typ_level:=T_NONE);
+
+
+fun find_typ_level () = !typ_level;
+
+
 type axiom_name = string;
 datatype kind = Axiom | Conjecture;
 fun name_of_kind Axiom = "axiom"
@@ -437,7 +450,7 @@
 	then error "Problem too trivial for resolution (empty clause)"
 	else if too_general lits then (Output.debug ("Omitting " ^ axiom_name ^ ": clause contains universal predicates"); raise MAKE_CLAUSE)
 	else
-	    if kind=Axiom andalso forall too_general_lit lits 
+	    if (!typ_level <> T_FULL) andalso kind=Axiom andalso forall too_general_lit lits 
 	    then (Output.debug ("Omitting " ^ axiom_name ^ ": equalities are too general"); raise MAKE_CLAUSE) 
 	else
 	    Clause {clause_id = clause_id, axiom_name = axiom_name, th = thm, kind = kind,
@@ -478,18 +491,6 @@
 
 val type_wrapper = "typeinfo";
 
-datatype type_level = T_FULL | T_PARTIAL | T_CONST | T_NONE;
-
-val typ_level = ref T_CONST;
-
-fun full_types () = (typ_level:=T_FULL);
-fun partial_types () = (typ_level:=T_PARTIAL);
-fun const_types_only () = (typ_level:=T_CONST);
-fun no_types () = (typ_level:=T_NONE);
-
-
-fun find_typ_level () = !typ_level;
-
 fun wrap_type (c,t) = 
     case !typ_level of T_FULL => type_wrapper ^ (ResClause.paren_pack [c,t])
 		     | _ => c;