/- Copyright (c) 2020 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura -/ namespace Lean inductive Occurrences | all | pos (idxs : List Nat) | neg (idxs : List Nat) namespace Occurrences instance : Inhabited Occurrences := ⟨all⟩ def contains : Occurrences → Nat → Bool | all, _ => true | pos idxs, idx => idxs.contains idx | neg idxs, idx => !idxs.contains idx def isAll : Occurrences → Bool | all => true | _ => false def beq : Occurrences → Occurrences → Bool | all, all => true | pos is₁, pos is₂ => is₁ == is₂ | neg is₁, neg is₂ => is₁ == is₂ | _, _ => false instance : BEq Occurrences := ⟨beq⟩ end Occurrences end Lean