5 Cic.term * (* left side *)
6 Cic.term * (* right side *)
7 Utils.comparison) * (* ordering *)
8 Cic.metasenv * (* environment for metas *)
9 Cic.term list (* arguments *)
13 | BasicProof of Cic.term
15 Cic.substitution * UriManager.uri *
16 (Cic.name * Cic.term) * Cic.term *
17 (* name, ty, eq_ty, left, right *)
18 (* (Cic.name * Cic.term * Cic.term * Cic.term * Cic.term) * *)
19 (Utils.pos * equality) * proof
20 | ProofGoalBlock of proof * proof (* equality *)
21 | ProofSymBlock of Cic.term Cic.explicit_named_substitution * proof
22 | SubProof of Cic.term * int * proof
24 type environment = Cic.metasenv * Cic.context * CicUniv.universe_graph
27 exception MatchingFailure
30 Cic.metasenv -> Cic.context -> Cic.term -> Cic.term ->
31 CicUniv.universe_graph ->
32 Cic.substitution * Cic.metasenv * CicUniv.universe_graph
35 Cic.metasenv -> Cic.context -> Cic.term -> Cic.term ->
36 CicUniv.universe_graph ->
37 Cic.substitution * Cic.metasenv * CicUniv.universe_graph
41 Performs the beta expansion of the term "where" w.r.t. "what",
42 i.e. returns the list of all the terms t s.t. "(t what) = where".
45 ?metas_ok:bool -> ?match_only:bool -> Cic.term -> Cic.term -> Cic.term ->
46 Cic.context -> Cic.metasenv -> CicUniv.universe_graph ->
47 (Cic.term * Cic.substitution * Cic.metasenv * CicUniv.universe_graph) list
51 scans the context to find all Declarations "left = right"; returns a
52 list of tuples (proof, (type, left, right), newmetas). Uses
53 PrimitiveTactics.new_metasenv_for_apply to replace bound variables with
57 ?eq_uri:UriManager.uri -> Cic.context -> ProofEngineTypes.proof ->
58 int list * equality list * int
61 exception TermIsNotAnEquality;;
64 raises TermIsNotAnEquality if term is not an equation.
65 The first Cic.term is a proof of the equation
67 val equality_of_term: ?eq_uri:UriManager.uri -> Cic.term -> Cic.term ->
70 val term_is_equality: ?eq_uri:UriManager.uri -> Cic.term -> bool
73 superposition_left env target source
74 returns a list of new clauses inferred with a left superposition step
75 the negative equation "target" and the positive equation "source"
77 (* val superposition_left: environment -> equality -> equality -> equality list *)
80 superposition_right newmeta env target source
81 returns a list of new clauses inferred with a right superposition step
82 the positive equations "target" and "source"
83 "newmeta" is the first free meta index, i.e. the first number above the
84 highest meta index: its updated value is also returned
86 (* val superposition_right: *)
87 (* int -> environment -> equality -> equality -> int * equality list *)
89 (* val demodulation: int -> environment -> equality -> equality -> int * equality *)
91 val meta_convertibility: Cic.term -> Cic.term -> bool
93 val meta_convertibility_eq: equality -> equality -> bool
95 val is_identity: environment -> equality -> bool
97 val string_of_equality: ?env:environment -> equality -> string
99 (* val subsumption: environment -> equality -> equality -> bool *)
101 val metas_of_term: Cic.term -> int list
103 val fix_metas: int -> equality -> int * equality
105 val extract_differing_subterms:
106 Cic.term -> Cic.term -> (Cic.term * Cic.term) option
108 val build_proof_term: proof (* equality *) -> Cic.term
110 val find_library_equalities:
111 HMysql.dbd -> Cic.context -> ProofEngineTypes.status -> int ->
112 UriManager.UriSet.t * equality list * int
114 val find_library_theorems:
115 HMysql.dbd -> environment -> ProofEngineTypes.status -> UriManager.UriSet.t ->
116 (Cic.term * Cic.term * Cic.metasenv) list
118 val find_context_hypotheses:
119 environment -> int list -> (Cic.term * Cic.term * Cic.metasenv) list
121 val string_of_proof: proof -> string