Coq 如何证明两个不相等单体集的交集为空

Coq 如何证明两个不相等单体集的交集为空,coq,Coq,我把证明的内容归结为两个不同的单态集的交集是空的,但我无法证明这个看似简单的事实 我查阅了集合库、动力集事实、构造集等,但没有找到任何有用的东西 Require Import Coq.Sets.Ensembles. Require Import Coq.Strings.String. Example x: string := "x". Example y: string := "y". Lemma ex: Intersection string (Singleton string x)

我把证明的内容归结为两个不同的单态集的交集是空的,但我无法证明这个看似简单的事实

我查阅了集合库、动力集事实、构造集等,但没有找到任何有用的东西

Require Import Coq.Sets.Ensembles.
Require Import Coq.Strings.String.

Example x: string := "x".
Example y: string := "y".

Lemma ex:
Intersection string (Singleton string x)
  (Singleton string y) = Empty_set string.
Proof.
  ???

关键是使用可扩展性公理:

Require Import Coq.Sets.Ensembles.
Require Import Coq.Strings.String.

Example x: string := "x".
Example y: string := "y".

Lemma ex:
Intersection string (Singleton string x)
  (Singleton string y) = Empty_set string.
Proof.
apply Extensionality_Ensembles. split.
- intros _ [b Ha Hb].
  inversion Ha. inversion Hb. unfold x, y in *. congruence.
- now intros _ [].
Qed.