TFL/tfl.sig
author wenzelm
Mon, 06 Oct 1997 19:39:40 +0200
changeset 3797 05e47c7cc6fd
parent 3459 112cbb8301dc
child 6498 1ebbe18fe236
permissions -rw-r--r--
optional begin keyword;

(*  Title:      TFL/tfl
    ID:         $Id$
    Author:     Konrad Slind, Cambridge University Computer Laboratory
    Copyright   1997  University of Cambridge

Main module
*)

signature TFL_sig =
sig
   datatype pattern = GIVEN of term * int
                    | OMITTED of term * int

   val mk_functional : theory -> term list
                       -> {functional:term,
                           pats: pattern list}

   val wfrec_definition0 : theory -> string -> term -> term -> theory

   val post_definition : simpset * thm list -> theory * (thm * pattern list)
				 -> {theory : theory,
				     rules  : thm, 
				       TCs  : term list list,
			     full_pats_TCs  : (term * term list) list, 
				  patterns  : pattern list}

(*CURRENTLY UNUSED
   val wfrec_eqns : simpset * thm list -> theory -> term list
                     -> {WFR : term, 
                         proto_def : term,
                         extracta :(thm * term list) list,
                         pats  : pattern list}

   val lazyR_def : theory
                   -> term list
                   -> {theory:theory,
                       rules :thm,
                           R :term,
                       full_pats_TCs :(term * term list) list, 
                       patterns: pattern list}
---------------------*)

   val mk_induction : theory -> term -> term -> (term * term list) list -> thm

   val postprocess: {WFtac:tactic, terminator:tactic, simplifier:cterm -> thm}
                     -> theory 
                      -> {rules:thm, induction:thm, TCs:term list list}
                       -> {rules:thm, induction:thm, nested_tcs:thm list}
end;