Logtk.PositionPositions are used to indicate a given occurrence of an object in a tree-like structure.
Typically, we use positions to refer to a particular occurrence of a term in another (bigger) term, or in a literal, or in a clause.
A pair of {term,clause,literal} + position represents a context, that is, a {term,clause,literal} with a hole at the given position, where we can put a different term.
type t = | Stop| Type of tSwitch to type
*)| Left of tLeft term in curried application
*)| Right of tRight term in curried application, and subterm of binder
*)| Head of tHead of uncurried term
*)| Arg of int * targument term in uncurried term, or in multiset
*)| Body of tBody of binder or horn clause
*)A position is a path in a tree
type position = tval stop : tval size : t -> intval hash : t -> intval num_of_funs : t -> intmodule Map : sig ... endmodule Build : sig ... endPositions act a bit like lenses, in the sense that they compose nicely and designat paths in objects
module With : sig ... end