TFL/rules.sig
changeset 2112 3902e9af752f
child 3245 241838c01caf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TFL/rules.sig	Fri Oct 18 12:41:04 1996 +0200
@@ -0,0 +1,65 @@
+signature Rules_sig =
+sig
+(*  structure USyntax : USyntax_sig *)
+  type Type
+  type Preterm
+  type Term
+  type Thm
+  type Tactic
+  type 'a binding
+
+  val dest_thm : Thm -> Preterm list * Preterm
+
+  (* Inference rules *)
+  val REFL      :Term -> Thm
+  val ASSUME    :Term -> Thm
+  val MP        :Thm -> Thm -> Thm
+  val MATCH_MP  :Thm -> Thm -> Thm
+  val CONJUNCT1 :Thm -> Thm
+  val CONJUNCT2 :Thm -> Thm
+  val CONJUNCTS :Thm -> Thm list
+  val DISCH     :Term -> Thm -> Thm
+  val UNDISCH   :Thm  -> Thm
+  val INST_TYPE :Type binding list -> Thm -> Thm
+  val SPEC      :Term -> Thm -> Thm
+  val ISPEC     :Term -> Thm -> Thm
+  val ISPECL    :Term list -> Thm -> Thm
+  val GEN       :Term -> Thm -> Thm
+  val GENL      :Term list -> Thm -> Thm
+  val BETA_RULE :Thm -> Thm
+  val LIST_CONJ :Thm list -> Thm
+
+  val SYM : Thm -> Thm
+  val DISCH_ALL : Thm -> Thm
+  val FILTER_DISCH_ALL : (Preterm -> bool) -> Thm -> Thm
+  val SPEC_ALL  : Thm -> Thm
+  val GEN_ALL   : Thm -> Thm
+  val IMP_TRANS : Thm -> Thm -> Thm
+  val PROVE_HYP : Thm -> Thm -> Thm
+
+  val CHOOSE : Term * Thm -> Thm -> Thm
+  val EXISTS : Term * Term -> Thm -> Thm
+  val EXISTL : Term list -> Thm -> Thm
+  val IT_EXISTS : Term binding list -> Thm -> Thm
+
+  val EVEN_ORS : Thm list -> Thm list
+  val DISJ_CASESL : Thm -> Thm list -> Thm
+
+  val SUBS : Thm list -> Thm -> Thm
+  val simplify : Thm list -> Thm -> Thm
+  val simpl_conv : Thm list -> Term -> Thm
+
+(* For debugging my isabelle solver in the conditional rewriter *)
+(*
+  val term_ref : Preterm list ref
+  val thm_ref : Thm list ref
+  val mss_ref : meta_simpset list ref
+  val tracing :bool ref
+*)
+  val CONTEXT_REWRITE_RULE : Preterm * Preterm
+                             -> {thms:Thm list,congs: Thm list, th:Thm} 
+                             -> Thm * Preterm list
+  val RIGHT_ASSOC : Thm -> Thm 
+
+  val prove : Term * Tactic -> Thm
+end;