∀ {α : Type u} {motive : (a a_1 : List α) → a.Perm a_1 → Prop},
  motive [] [] ⋯ →
    (∀ (x : α) {l₁ l₂ : List α} (a : l₁.Perm l₂), motive l₁ l₂ a → motive (x :: l₁) (x :: l₂) ⋯) →
      (∀ (x y : α) (l : List α), motive (y :: x :: l) (x :: y :: l) ⋯) →
        (∀ {l₁ l₂ l₃ : List α} (a : l₁.Perm l₂) (a_1 : l₂.Perm l₃),
            motive l₁ l₂ a → motive l₂ l₃ a_1 → motive l₁ l₃ ⋯) →
          ∀ {a a_1 : List α} (t : a.Perm a_1), motive a a_1 t