theorem
Hex.GraphIso.Nauty.Sparse.Sort.Window.exchange
{before after : Array Nat}
{first last i j : Nat}
(h : Window before after first last)
(hi : first ≤ i ∧ i < last)
(hj : first ≤ j ∧ j < last)
(hb : last ≤ after.size)
:
Window before ((after.setIfInBounds i after[j]!).setIfInBounds j after[i]!) first last
theorem
Hex.GraphIso.Nauty.Sparse.Sort.Window.rotate
{before after : Array Nat}
{first last k j i : Nat}
(h : Window before after first last)
(hk : first ≤ k)
(hkj : k ≤ j)
(hji : j ≤ i)
(hi : i < last)
(hb : last ≤ after.size)
:
Window before (((after.setIfInBounds i after[j]!).setIfInBounds j after[k]!).setIfInBounds k after[i]!) first last
theorem
Hex.GraphIso.Nauty.Sparse.Sort.Window.indirect
{before after : Array Nat}
{first last start len : Nat}
{hits : Array Nat}
(h : Window before after first last)
(hl : first ≤ start)
(hh : start + len ≤ last)
(hb : last ≤ after.size)
:
Window before («Sort».indirect after hits start len) first last