sig
  type 'a t = { term : Monome.term; coeff : 'a; rest : 'Monome.monome; }
  val get : 'Monome.monome -> int -> 'Monome.Focus.t
  val focus_term :
    'Monome.monome -> Monome.term -> 'Monome.Focus.t option
  val focus_term_exn : 'Monome.monome -> Monome.term -> 'Monome.Focus.t
  val to_monome : 'Monome.Focus.t -> 'Monome.monome
  val coeff : 'Monome.Focus.t -> 'a
  val term : 'Monome.Focus.t -> Monome.term
  val rest : 'Monome.Focus.t -> 'Monome.monome
  val sum : 'Monome.Focus.t -> 'Monome.monome -> 'Monome.Focus.t
  val difference : 'Monome.Focus.t -> 'Monome.monome -> 'Monome.Focus.t
  val uminus : 'Monome.Focus.t -> 'Monome.Focus.t
  val product : 'Monome.Focus.t -> '-> 'Monome.Focus.t
  val map :
    ?term:(Monome.term -> Monome.term) ->
    ?coeff:('-> 'a) ->
    ?rest:('Monome.monome -> 'Monome.monome) ->
    'Monome.Focus.t -> 'Monome.Focus.t
  val scale :
    Z.t Monome.Focus.t ->
    Z.t Monome.Focus.t -> Z.t Monome.Focus.t * Z.t Monome.Focus.t
  val is_max : ord:Libzipperposition.Ordering.t -> 'Monome.Focus.t -> bool
  val fold_m :
    pos:Libzipperposition.Position.t ->
    'Monome.monome ->
    '->
    ('-> 'Monome.Focus.t -> Libzipperposition.Position.t -> 'b) -> 'b
  val apply_subst :
    renaming:Libzipperposition.Substs.Renaming.t ->
    Libzipperposition.Substs.t ->
    'Monome.Focus.t Libzipperposition.Scoped.t -> 'Monome.Focus.t
  val apply_subst_no_renaming :
    Libzipperposition.Substs.t ->
    'Monome.Focus.t Libzipperposition.Scoped.t -> 'Monome.Focus.t
  val unify_ff :
    ?subst:Libzipperposition.Substs.t ->
    'Monome.Focus.t Libzipperposition.Scoped.t ->
    'Monome.Focus.t Libzipperposition.Scoped.t ->
    ('Monome.Focus.t * 'Monome.Focus.t * Libzipperposition.Substs.t)
    Sequence.t
  val unify_mm :
    ?subst:Libzipperposition.Substs.t ->
    'Monome.monome Libzipperposition.Scoped.t ->
    'Monome.monome Libzipperposition.Scoped.t ->
    ('Monome.Focus.t * 'Monome.Focus.t * Libzipperposition.Substs.t)
    Sequence.t
  val unify_self :
    ?subst:Libzipperposition.Substs.t ->
    'Monome.Focus.t Libzipperposition.Scoped.t ->
    ('Monome.Focus.t * Libzipperposition.Substs.t) Sequence.t
  val unify_self_monome :
    ?subst:Libzipperposition.Substs.t ->
    'Monome.monome Libzipperposition.Scoped.t ->
    ('Monome.Focus.t * Libzipperposition.Substs.t) Sequence.t
  val pp : 'Monome.Focus.t CCFormat.printer
end