src/HOL/Tools/res_clause.ML
changeset 18199 d236379ea408
parent 18056 397b39b06ec8
child 18218 9a7ffce389c3
equal deleted inserted replaced
18198:95330fc0ea8d 18199:d236379ea408
   546 	            lits,types_sorts,tvar_lits,tfree_lits,
   546 	            lits,types_sorts,tvar_lits,tfree_lits,
   547 	            tvars, preds, funcs)
   547 	            tvars, preds, funcs)
   548     end;
   548     end;
   549 
   549 
   550 
   550 
   551 
   551 (* check if a clause is FOL first*)
   552 fun make_conjecture_clause n t =
   552 fun make_conjecture_clause n t =
   553     let val (lits,types_sorts, preds, funcs) = literals_of_term t
   553     let val _ = check_is_fol_term t
       
   554 	    handle TERM("check_is_fol_term",_) => raise CLAUSE("Goal is not FOL",t)
       
   555 	val (lits,types_sorts, preds, funcs) = literals_of_term t
   554 	val (tvar_lits,tfree_lits, preds) = add_typs_aux types_sorts preds 
   556 	val (tvar_lits,tfree_lits, preds) = add_typs_aux types_sorts preds 
   555         val tvars = get_tvar_strs types_sorts
   557         val tvars = get_tvar_strs types_sorts
   556     in
   558     in
   557 	make_clause(n,"conjecture",Conjecture,
   559 	make_clause(n,"conjecture",Conjecture,
   558 	            lits,types_sorts,tvar_lits,tfree_lits,
   560 	            lits,types_sorts,tvar_lits,tfree_lits,
   564       make_conjecture_clause n t :: make_conjecture_clauses_aux (n+1) ts
   566       make_conjecture_clause n t :: make_conjecture_clauses_aux (n+1) ts
   565 
   567 
   566 val make_conjecture_clauses = make_conjecture_clauses_aux 0
   568 val make_conjecture_clauses = make_conjecture_clauses_aux 0
   567 
   569 
   568 
   570 
       
   571 (*before converting an axiom clause to "clause" format, check if it is FOL*)
   569 fun make_axiom_clause term (ax_name,cls_id) =
   572 fun make_axiom_clause term (ax_name,cls_id) =
   570     let val (lits,types_sorts, preds,funcs) = literals_of_term term
   573     let val _ = check_is_fol_term term 
       
   574 	    handle TERM("check_is_fol_term",_) => raise CLAUSE("Axiom is not FOL", term) 
       
   575 	val (lits,types_sorts, preds,funcs) = literals_of_term term
   571 	val (tvar_lits,tfree_lits, preds) = add_typs_aux types_sorts preds
   576 	val (tvar_lits,tfree_lits, preds) = add_typs_aux types_sorts preds
   572         val tvars = get_tvar_strs types_sorts	
   577         val tvars = get_tvar_strs types_sorts	
   573     in 
   578     in 
   574 	make_clause(cls_id,ax_name,Axiom,
   579 	make_clause(cls_id,ax_name,Axiom,
   575 	            lits,types_sorts,tvar_lits,tfree_lits,
   580 	            lits,types_sorts,tvar_lits,tfree_lits,