Istari

Reordering

A reordering allows one to to reorder the subgoals generated by a tactic, or reorder the prover’s active goals. Reorderings have the type 'a reordering, where 'a is the tactic monad’s type argument. Most reorderings are polymorphic.

signature REORDER =
   sig

      type 'a reordering

      val reorder : 'a Tactic.tacticm -> 'a reordering -> 'a Tactic.tacticm

      val id : 'a reordering
      val swap : int -> int -> 'a reordering
      val pull : int -> 'a reordering
      val push : int -> 'a reordering
      val rotateForward : int -> 'a reordering
      val rotateBackward : int -> 'a reordering
      val compose : 'a reordering list -> 'a reordering
      val withCount : (int -> 'a reordering) -> 'a reordering
      val contract : int -> 'a reordering
      val sort : ('a -> 'a -> bool) -> 'a reordering

   end

structure Reorder : REORDER