val log_inv : 'a Lplib.Base.outfmt -> 'a
val cache : ( Term.sym -> 'a ) -> Term.sym -> 'a

cache f s is equivalent to f s but f s is computed only once unless the rules of s are changed.

val const_graph : Term.sym -> (Term.sym * Term.sym) list

cached version of const_rules.

val inverse_const : Term.sym -> Term.sym -> Term.sym

inverse_const s s' returns s0 if s has a rule of the form s (s0 ...) ↪ s' ....

  • raises [Not_found]

    otherwise.

val prod_graph : Term.sym -> (Term.sym * Term.sym * Term.sym * bool) list

cached version of prod_graph.

val inverse_prod : Term.sym -> Term.sym -> Term.sym * Term.sym * Term.sym * bool

inverse_prod s s' returns (s0,s1,s2,b) if s has a rule of the form s (s0 _ _) ↪ Π x:s1 _, s2 r with b=true iff x occurs in r, and either s1 has a rule of the form s1 (s3 ...) ↪ s' ... or s1 == s'.

  • raises [Not_found]

    otherwise.

val inverse : Term.sym -> Term.term -> Term.term