{α : Type} →
  [inst : Hashable α] →
    [inst_1 : DecidableEq α] →
      {β : Std.Sat.AIG α → ℕ → Type} →
        {f : {len : ℕ} → (aig : Std.Sat.AIG α) → β aig len → Std.Sat.AIG.RefVecEntry α len} →
          {motive : Std.Sat.AIG.LawfulVecOperator α β f → Sort u} →
            ((le_size :
                  ∀ {len : ℕ} (aig : Std.Sat.AIG α) (input : β aig len),
                    aig.decls.size ≤ (f aig input).aig.decls.size) →
                (decl_eq :
                    ∀ {len : ℕ} (aig : Std.Sat.AIG α) (input : β aig len) (idx : ℕ) (h1 : idx < aig.decls.size)
                      (h2 : idx < (f aig input).aig.decls.size), (f aig input).aig.decls[idx] = aig.decls[idx]) →
                  motive ⋯) →
              (t : Std.Sat.AIG.LawfulVecOperator α β f) → motive t