(*
	Minus_part.
*)

Definition minus_part (A : part_set E) (x : E) := diff A (single x).

(* Specifications: *)
Lemma minus_part_comp : forall (A A' : part_set E) (x x' : E), Equal A A' -> Equal x x' -> Equal (minus_part A x) (minus_part A' x').
Lemma minus_part_not_in : forall (A : part_set E) (x : E), ~ in_part x (minus_part A x).
Lemma minus_part_com : forall (A : part_set E) (x y : E), Equal (minus_part (minus_part A x) y) (minus_part (minus_part A y) x).
Lemma minus_not_in : forall (A : part_set E) (x : E), ~ in_part x A -> Equal (minus_part A x) A.
Lemma minus_trans_not_in : forall (A : part_set E) (x y : E), ~ in_part y A -> ~ in_part y (minus_part A x).
Lemma union_unit_l : forall A : part_set E, Equal (union (empty E) A) A.
Lemma single_add : forall x : E, Equal (single x) (add_part (empty E) x).
Lemma minus_add : forall (A : part_set E) (x : E), in_part x A -> Equal (add_part (minus_part A x) x) A.
Lemma add_minus : forall (A : part_set E) (x : E), ~ in_part x A -> Equal (minus_part (add_part A x) x) A.