sig
  type t = int
  and change = { dim : int array; intdim : int; realdim : int; }
  and change2 = { add : Dim.change option; remove : Dim.change option; }
  and perm = int array
  and dimension = { intd : int; reald : int; }
  val change_add_invert : Dim.change -> unit
  val perm_compose : Dim.perm -> Dim.perm -> Dim.perm
  val perm_invert : Dim.perm -> Dim.perm
end