]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/ng_paramodulation/superposition.mli
Branched paramodulation for CNF (Horn clauses)
[helm.git] / helm / software / components / ng_paramodulation / superposition.mli
index c2c0ef43d0603be7c520331ffbd76fa80aae0f93..ad780c82c1e1f3fc645cc6a193b59886d2401dbc 100644 (file)
 
 (* $Id: index.mli 9822 2009-06-03 15:37:06Z tassi $ *)
 
-
-module Superposition (B : Terms.Blob) : 
+module Superposition (B : Orderings.Blob) : 
   sig
 
-    val superposition_right_step :
+                        (* bag, maxvar, meeting point *)
+    exception Success of B.t Terms.bag * int * B.t Terms.clause
+
+    (* The returned active set is the input one + the selected clause *)
+    val infer_right :
+          B.t Terms.bag -> 
+          int -> (* maxvar *)
+          B.t Terms.clause -> (* selected passive *)
+          Index.Index(B).active_set ->
+            B.t Terms.bag * int * Index.Index(B).active_set * B.t Terms.clause list
+
+    val infer_left :  
           B.t Terms.bag -> 
-          B.t Terms.unit_clause ->
+          int -> (* maxvar *)
+          B.t Terms.clause -> (* selected goal *)
+          Index.Index(B).active_set ->
+            B.t Terms.bag * int * B.t Terms.clause list
+
+    val demodulate : 
+          B.t Terms.bag ->
+          B.t Terms.clause ->
+          Index.Index(B).DT.t -> B.t Terms.bag * B.t Terms.clause
+
+    val simplify : 
           Index.Index(B).DT.t ->
-            B.t Terms.bag * B.t Terms.unit_clause list
-                  
-  end
+          int ->
+          B.t Terms.bag ->
+          B.t Terms.clause ->
+            B.t Terms.bag * (B.t Terms.clause option)
+
+    (* may raise success *)
+    val simplify_goal :
+          no_demod:bool ->
+          int ->
+          Index.Index(B).DT.t ->
+          B.t Terms.bag ->
+          B.t Terms.clause list ->
+          B.t Terms.clause ->
+            (B.t Terms.bag * B.t Terms.clause) option
+
+    val one_pass_simplification:
+      B.t Terms.clause ->
+      Index.Index(B).active_set ->
+      B.t Terms.bag ->
+      int ->
+      B.t Terms.bag * (B.t Terms.clause * Index.Index(B).active_set) option
 
 
+    val keep_simplified:
+      B.t Terms.clause ->
+      Index.Index(B).active_set ->
+      B.t Terms.bag ->
+      int ->
+      B.t Terms.bag * (B.t Terms.clause * Index.Index(B).active_set) option
 
+    val  orphan_murder:
+      B.t Terms.bag ->
+      B.t Terms.clause list ->
+      B.t Terms.clause ->
+      bool
+
+
+  end