Top.Util.FSetNotin
Lemmas and tactics for working with and solving goals related to non-membership in finite sets. The main tactic of interest here is notin_solve. Authors: Arthur Charguéraud and Brian Aydemir.
Lemma in_singleton : ∀ x,
In x (singleton x).
Lemma notin_empty : ∀ x,
¬ In x empty.
Lemma notin_union : ∀ x E F,
¬ In x E → ¬ In x F → ¬ In x (union E F).
Lemma elim_notin_union : ∀ x E F,
¬ In x (union E F) → (¬ In x E) ∧ (¬ In x F).
Lemma notin_singleton : ∀ x y,
¬ E.eq x y → ¬ In x (singleton y).
Lemma elim_notin_singleton : ∀ x y,
¬ In x (singleton y) → ¬ E.eq x y.
Lemma elim_notin_singleton' : ∀ x y,
¬ In x (singleton y) → x ≠ y.
Lemma notin_singleton_swap : ∀ x y,
¬ In x (singleton y) → ¬ In y (singleton x).
Tactics
The tactic notin_solve solves goals of them form (x ≠ y) and (~ In x E) that are provable from hypotheses of the form destructed by notin_simpl_hyps.
Lemma test_notin_solve_1 : ∀ x E F G,
¬ In x (union E F) → ¬ In x G → ¬ In x (union E G).
Lemma test_notin_solve_2 : ∀ x y E F G,
¬ In x (union E (union (singleton y) F)) → ¬ In x G →
¬ In x (singleton y) ∧ ¬ In y (singleton x).
Lemma test_notin_solve_3 : ∀ x y,
¬ E.eq x y → ¬ In x (singleton y) ∧ ¬ In y (singleton x).
Lemma test_notin_solve_4 : ∀ x y E F G,
¬ In x (union E (union (singleton x) F)) → ¬ In y G.
Lemma test_notin_solve_5 : ∀ x y E F,
¬ In x (union E (union (singleton y) F)) → ¬ In y E →
¬ E.eq y x ∧ ¬ E.eq x y.
End Notin.