583 @{define_ML Thm.assume: "cterm -> thm"} \\ |
583 @{define_ML Thm.assume: "cterm -> thm"} \\ |
584 @{define_ML Thm.forall_intr: "cterm -> thm -> thm"} \\ |
584 @{define_ML Thm.forall_intr: "cterm -> thm -> thm"} \\ |
585 @{define_ML Thm.forall_elim: "cterm -> thm -> thm"} \\ |
585 @{define_ML Thm.forall_elim: "cterm -> thm -> thm"} \\ |
586 @{define_ML Thm.implies_intr: "cterm -> thm -> thm"} \\ |
586 @{define_ML Thm.implies_intr: "cterm -> thm -> thm"} \\ |
587 @{define_ML Thm.implies_elim: "thm -> thm -> thm"} \\ |
587 @{define_ML Thm.implies_elim: "thm -> thm -> thm"} \\ |
588 @{define_ML Thm.generalize: "string list * string list -> int -> thm -> thm"} \\ |
588 @{define_ML Thm.generalize: "Symtab.set * Symtab.set -> int -> thm -> thm"} \\ |
589 @{define_ML Thm.instantiate: "((indexname * sort) * ctyp) list * ((indexname * typ) * cterm) list |
589 @{define_ML Thm.instantiate: "((indexname * sort) * ctyp) list * ((indexname * typ) * cterm) list |
590 -> thm -> thm"} \\ |
590 -> thm -> thm"} \\ |
591 @{define_ML Thm.add_axiom: "Proof.context -> |
591 @{define_ML Thm.add_axiom: "Proof.context -> |
592 binding * term -> theory -> (string * thm) * theory"} \\ |
592 binding * term -> theory -> (string * thm) * theory"} \\ |
593 @{define_ML Thm.add_oracle: "binding * ('a -> cterm) -> theory -> |
593 @{define_ML Thm.add_oracle: "binding * ('a -> cterm) -> theory -> |
644 \<^descr> \<^ML>\<open>Thm.assume\<close>, \<^ML>\<open>Thm.forall_intr\<close>, \<^ML>\<open>Thm.forall_elim\<close>, \<^ML>\<open>Thm.implies_intr\<close>, and \<^ML>\<open>Thm.implies_elim\<close> correspond to the primitive |
644 \<^descr> \<^ML>\<open>Thm.assume\<close>, \<^ML>\<open>Thm.forall_intr\<close>, \<^ML>\<open>Thm.forall_elim\<close>, \<^ML>\<open>Thm.implies_intr\<close>, and \<^ML>\<open>Thm.implies_elim\<close> correspond to the primitive |
645 inferences of \figref{fig:prim-rules}. |
645 inferences of \figref{fig:prim-rules}. |
646 |
646 |
647 \<^descr> \<^ML>\<open>Thm.generalize\<close>~\<open>(\<^vec>\<alpha>, \<^vec>x)\<close> corresponds to the |
647 \<^descr> \<^ML>\<open>Thm.generalize\<close>~\<open>(\<^vec>\<alpha>, \<^vec>x)\<close> corresponds to the |
648 \<open>generalize\<close> rules of \figref{fig:subst-rules}. Here collections of type and |
648 \<open>generalize\<close> rules of \figref{fig:subst-rules}. Here collections of type and |
649 term variables are generalized simultaneously, specified by the given basic |
649 term variables are generalized simultaneously, specified by the given sets of |
650 names. |
650 basic names. |
651 |
651 |
652 \<^descr> \<^ML>\<open>Thm.instantiate\<close>~\<open>(\<^vec>\<alpha>\<^sub>s, \<^vec>x\<^sub>\<tau>)\<close> corresponds to the |
652 \<^descr> \<^ML>\<open>Thm.instantiate\<close>~\<open>(\<^vec>\<alpha>\<^sub>s, \<^vec>x\<^sub>\<tau>)\<close> corresponds to the |
653 \<open>instantiate\<close> rules of \figref{fig:subst-rules}. Type variables are |
653 \<open>instantiate\<close> rules of \figref{fig:subst-rules}. Type variables are |
654 substituted before term variables. Note that the types in \<open>\<^vec>x\<^sub>\<tau>\<close> refer |
654 substituted before term variables. Note that the types in \<open>\<^vec>x\<^sub>\<tau>\<close> refer |
655 to the instantiated versions. |
655 to the instantiated versions. |