Module TestgenTree
type model= Model.ttype term= Term.ttype num= Numeral.ttype depth= numA depth is just a numeral.
type mode= Scope.tA
modeis just its name.
type mode_conj= mode list * mode listA conjunction of modes. First are the modes activated, then come the mode deactivated.
type mode_path= mode_conj listA
mode_pathstores the modes activated by the path in reverse order.
type tStores the witnesses and the reversed tree. Also stores a mode to term function to construct constraints to activate or block mode paths / conjunctions of modes.
val mk : (mode -> term) -> mode_conj -> tCreates a reversed partial tree.
mode_conjis a conjunction of modes activable in the initial state.mode_to_termis the function mapping mode names to their term @0. Originally there are no witnesses, some initial state mode, and no modes explored.
val mode_path_of : t -> mode_pathReturns the list of mode conjunctions corresponding to a partial tree.
val path_of : t -> Term.tReturns the term encoding the path of modes represented by a tree.
Used to check which modes can be activated to extend the path being currently explored.
val blocking_path_of : t -> Term.tReturns the term encoding the path of modes leading to the current node but blocking its mode conjunction and explored modes.
Used when backtracking, to see if different modes can be activated at the current depth.
val push : t -> mode_conj -> unitPushes a node on top of the current one, activating a mode conjunction.
val pop : t -> unitPops the current node.
val pp_print_tree : Stdlib.Format.formatter -> t -> unitQuiet tree pretty printer.