aboutsummaryrefslogtreecommitdiff
path: root/tactics/setoid_replace.mli
diff options
context:
space:
mode:
Diffstat (limited to 'tactics/setoid_replace.mli')
-rw-r--r--tactics/setoid_replace.mli24
1 files changed, 24 insertions, 0 deletions
diff --git a/tactics/setoid_replace.mli b/tactics/setoid_replace.mli
index adc02fe94b..1fa80953c2 100644
--- a/tactics/setoid_replace.mli
+++ b/tactics/setoid_replace.mli
@@ -13,6 +13,25 @@ open Proof_type
open Topconstr
open Names
+type relation =
+ { rel_a: constr ;
+ rel_aeq: constr;
+ rel_refl: constr option;
+ rel_sym: constr option;
+ rel_trans : constr option;
+ rel_quantifiers_no: int (* it helps unification *)
+ }
+
+type 'a relation_class =
+ Relation of 'a (* the rel_aeq of the relation or the relation*)
+ | Leibniz of constr option (* the carrier (if eq is partially instantiated)*)
+
+type 'a morphism =
+ { args : (bool option * 'a relation_class) list;
+ output : 'a relation_class;
+ lem : constr;
+ }
+
type morphism_signature = (bool option * constr_expr) list * constr_expr
val pr_morphism_signature : morphism_signature -> Pp.std_ppcmds
@@ -23,6 +42,11 @@ val register_general_rewrite : (bool -> constr -> tactic) -> unit
val print_setoids : unit -> unit
val equiv_list : unit -> constr list
+val default_relation_for_carrier :
+ ?filter:(relation -> bool) -> types -> relation relation_class
+(* [default_morphism] raises Not_found *)
+val default_morphism :
+ ?filter:(constr morphism -> bool) -> constr -> relation morphism
val setoid_replace :
constr option -> constr -> constr -> new_goals:constr list -> tactic