(*
	Cardinal.
*)

Inductive cardinal : part_set E -> nat -> Prop :=
  | cardinal_empty : forall A : part_set E, Equal A (empty E) -> cardinal A 0
  | cardinal_add :
      forall (A B : part_set E) (n : nat),
      cardinal B n ->
      forall x : E,
      ~ in_part x B -> Equal A (add_part B x) -> cardinal A (S n).(*
	Cardinal.
*)

Inductive cardinal : part_set E -> nat -> Prop :=
  | cardinal_empty : forall A : part_set E, Equal A (empty E) -> cardinal A 0
  | cardinal_add :
      forall (A B : part_set E) (n : nat),
      cardinal B n ->
      forall x : E,
      ~ in_part x B -> Equal A (add_part B x) -> cardinal A (S n).(*
	Cardinal.
*)

Inductive cardinal : part_set E -> nat -> Prop :=
  | cardinal_empty : forall A : part_set E, Equal A (empty E) -> cardinal A 0
  | cardinal_add :
      forall (A B : part_set E) (n : nat),
      cardinal B n ->
      forall x : E,
      ~ in_part x B -> Equal A (add_part B x) -> cardinal A (S n).

Lemma cardinal_ind2 : forall P : forall (n : nat) (A : part_set E), cardinal A n -> Prop, (forall (A : part_set E) (c : cardinal A 0), P 0 A c) -> (forall n : nat, (forall (B : part_set E) (c : cardinal B n), P n B c) -> forall (A B : part_set E) (x : E), ~ in_part x B -> Equal A (add_part B x) -> forall c' : cardinal A (S n), P (S n) A c') -> forall (n : nat) (A : part_set E) (c : cardinal A n), P n A c.