src/Doc/Implementation/Logic.thy
changeset 74200 17090e27aae9
parent 73765 ebaed09ce06e
child 74266 612b7e0d6721
equal deleted inserted replaced
74198:f54b061c2c22 74200:17090e27aae9
   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.