src/HOL/Tools/res_clause.ML
changeset 19354 aebf9dddccd7
parent 19277 f7602e74d948
child 19443 e32a4703d834
equal deleted inserted replaced
19353:36b6b15ee670 19354:aebf9dddccd7
    53   val tfree_prefix : string
    53   val tfree_prefix : string
    54   val tptp_arity_clause : arityClause -> string
    54   val tptp_arity_clause : arityClause -> string
    55   val tptp_classrelClause : classrelClause -> string
    55   val tptp_classrelClause : classrelClause -> string
    56   val tptp_of_typeLit : type_literal -> string
    56   val tptp_of_typeLit : type_literal -> string
    57   val tptp_tfree_clause : string -> string
    57   val tptp_tfree_clause : string -> string
    58   val tptp_write_file: term list -> string -> ((Term.term * (string * int)) list * classrelClause list * arityClause list) -> unit
    58   val tptp_write_file: term list -> string -> ((thm * (string * int)) list * classrelClause list * arityClause list) -> unit
    59   val tvar_prefix : string
    59   val tvar_prefix : string
    60   val types_eq: fol_type list * fol_type list -> (string*string) list * (string*string) list -> bool * ((string*string) list * (string*string) list)
    60   val types_eq: fol_type list * fol_type list -> (string*string) list * (string*string) list -> bool * ((string*string) list * (string*string) list)
    61   val types_ord : fol_type list * fol_type list -> order
    61   val types_ord : fol_type list * fol_type list -> order
    62   val union_all : ''a list list -> ''a list
    62   val union_all : ''a list list -> ''a list
    63   val writeln_strs: TextIO.outstream -> TextIO.vector list -> unit
    63   val writeln_strs: TextIO.outstream -> TextIO.vector list -> unit
   618 fun make_axiom_clauses_terms [] = []
   618 fun make_axiom_clauses_terms [] = []
   619   | make_axiom_clauses_terms ((tm,(name,id))::tms) =
   619   | make_axiom_clauses_terms ((tm,(name,id))::tms) =
   620     case make_axiom_clause tm (name,id) of SOME cls => if isTaut cls then make_axiom_clauses_terms tms else cls :: make_axiom_clauses_terms tms
   620     case make_axiom_clause tm (name,id) of SOME cls => if isTaut cls then make_axiom_clauses_terms tms else cls :: make_axiom_clauses_terms tms
   621 						    | NONE => make_axiom_clauses_terms tms;
   621 						    | NONE => make_axiom_clauses_terms tms;
   622     
   622     
       
   623 fun make_axiom_clauses_thms [] = []
       
   624   | make_axiom_clauses_thms ((thm,(name,id))::thms) =
       
   625     case make_axiom_clause (prop_of thm) (name,id) of SOME cls => if isTaut cls then make_axiom_clauses_thms thms else cls :: make_axiom_clauses_thms thms
       
   626 						    | NONE => make_axiom_clauses_thms thms;
       
   627 
   623 (**** Isabelle arities ****)
   628 (**** Isabelle arities ****)
   624 
   629 
   625 exception ARCLAUSE of string;
   630 exception ARCLAUSE of string;
   626  
   631  
   627 type class = string; 
   632 type class = string; 
  1028 (* write out a subgoal as tptp clauses to the file "xxxx_N"*)
  1033 (* write out a subgoal as tptp clauses to the file "xxxx_N"*)
  1029 fun tptp_write_file terms filename (axclauses,classrel_clauses,arity_clauses) =
  1034 fun tptp_write_file terms filename (axclauses,classrel_clauses,arity_clauses) =
  1030   let
  1035   let
  1031     val _ = Output.debug ("Preparing to write the TPTP file " ^ filename)
  1036     val _ = Output.debug ("Preparing to write the TPTP file " ^ filename)
  1032     val clss = make_conjecture_clauses terms
  1037     val clss = make_conjecture_clauses terms
  1033     val axclauses' = make_axiom_clauses_terms axclauses
  1038     val axclauses' = make_axiom_clauses_thms axclauses
  1034     val (tptp_clss,tfree_litss) = ListPair.unzip (map clause2tptp clss)
  1039     val (tptp_clss,tfree_litss) = ListPair.unzip (map clause2tptp clss)
  1035     val tfree_clss = map tptp_tfree_clause (foldl (op union_string) [] tfree_litss)
  1040     val tfree_clss = map tptp_tfree_clause (foldl (op union_string) [] tfree_litss)
  1036     val out = TextIO.openOut filename
  1041     val out = TextIO.openOut filename
  1037   in
  1042   in
  1038     List.app (curry TextIO.output out o #1 o clause2tptp) axclauses';
  1043     List.app (curry TextIO.output out o #1 o clause2tptp) axclauses';
  1041     List.app (curry TextIO.output out o tptp_classrelClause) classrel_clauses;
  1046     List.app (curry TextIO.output out o tptp_classrelClause) classrel_clauses;
  1042     List.app (curry TextIO.output out o tptp_arity_clause) arity_clauses;
  1047     List.app (curry TextIO.output out o tptp_arity_clause) arity_clauses;
  1043     TextIO.closeOut out
  1048     TextIO.closeOut out
  1044   end;
  1049   end;
  1045 
  1050 
       
  1051 
       
  1052 
       
  1053 
       
  1054 
  1046 end;
  1055 end;