1
<html xmlns="http://www.w3.org/1999/xhtml">
3
<meta http-equiv="Content-Type" content="text/html; charset="><link rel="stylesheet" href="style.css" type="text/css"><title>Coq.Sets.Constructive_sets</title>
8
<h1>Library Coq.Sets.Constructive_sets</h1>
11
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Sets.Ensembles.html">Ensembles</a>.<br/>
14
<code class="keyword">Section</code> Ensembles_facts.<br/>
15
<code class="keyword">Variable</code> U : Type.<br/>
18
<code class="keyword">Lemma</code> <a name="Extension"></a>Extension : forall B C:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U, B = C -> <a href="Coq.Sets.Ensembles.html#Same_set">Same_set</a> U B C.<br/>
19
<code class="keyword">Proof</code>.<br/>
20
intros B C H'; rewrite H'; auto with sets.<br/>
21
<code class="keyword">Qed</code>.<br/>
24
<code class="keyword">Lemma</code> <a name="Noone_in_empty"></a>Noone_in_empty : forall x:U, ~ <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Empty_set">Empty_set</a> U) x.<br/>
25
<code class="keyword">Proof</code>.<br/>
26
red in |- *; destruct 1.<br/>
27
<code class="keyword">Qed</code>.<br/>
28
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Noone_in_empty">Noone_in_empty</a>.<br/>
31
<code class="keyword">Lemma</code> <a name="Included_Empty"></a>Included_Empty : forall A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U, <a href="Coq.Sets.Ensembles.html#Included">Included</a> U (<a href="Coq.Sets.Ensembles.html#Empty_set">Empty_set</a> U) A.<br/>
32
<code class="keyword">Proof</code>.<br/>
33
intro; red in |- *.<br/>
34
intros x H; elim (<a href="Coq.Sets.Constructive_sets.html#Noone_in_empty">Noone_in_empty</a> x); auto with sets.<br/>
35
<code class="keyword">Qed</code>.<br/>
36
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Included_Empty">Included_Empty</a>.<br/>
39
<code class="keyword">Lemma</code> <a name="Add_intro1"></a>Add_intro1 :<br/>
40
forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x y:U), <a href="Coq.Sets.Ensembles.html#In">In</a> U A y -> <a href="Coq.Sets.Ensembles.html#In">In</a> U (<code class="keyword">Add</code> U A x) y.<br/>
41
<code class="keyword">Proof</code>.<br/>
42
unfold <code class="keyword">Add</code> at 1 in |- *; auto with sets.<br/>
43
<code class="keyword">Qed</code>.<br/>
44
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Add_intro1">Add_intro1</a>.<br/>
47
<code class="keyword">Lemma</code> <a name="Add_intro2"></a>Add_intro2 : forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U), <a href="Coq.Sets.Ensembles.html#In">In</a> U (<code class="keyword">Add</code> U A x) x.<br/>
48
<code class="keyword">Proof</code>.<br/>
49
unfold <code class="keyword">Add</code> at 1 in |- *; auto with sets.<br/>
50
<code class="keyword">Qed</code>.<br/>
51
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Add_intro2">Add_intro2</a>.<br/>
54
<code class="keyword">Lemma</code> <a name="Inhabited_add"></a>Inhabited_add : forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U), <a href="Coq.Sets.Ensembles.html#Inhabited">Inhabited</a> U (<code class="keyword">Add</code> U A x).<br/>
55
<code class="keyword">Proof</code>.<br/>
57
apply <a href="Coq.Sets.Ensembles.html#Inhabited_intro">Inhabited_intro</a> with (x:= x); auto with sets.<br/>
58
<code class="keyword">Qed</code>.<br/>
59
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Inhabited_add">Inhabited_add</a>.<br/>
62
<code class="keyword">Lemma</code> <a name="Inhabited_not_empty"></a>Inhabited_not_empty :<br/>
63
forall X:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U, <a href="Coq.Sets.Ensembles.html#Inhabited">Inhabited</a> U X -> X <> <a href="Coq.Sets.Ensembles.html#Empty_set">Empty_set</a> U.<br/>
64
<code class="keyword">Proof</code>.<br/>
65
intros X H'; elim H'.<br/>
66
intros x H'0; red in |- *; intro H'1.<br/>
67
absurd (<a href="Coq.Sets.Ensembles.html#In">In</a> U X x); auto with sets.<br/>
68
rewrite H'1; auto with sets.<br/>
69
<code class="keyword">Qed</code>.<br/>
70
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Inhabited_not_empty">Inhabited_not_empty</a>.<br/>
73
<code class="keyword">Lemma</code> <a name="Add_not_Empty"></a>Add_not_Empty : forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U), <code class="keyword">Add</code> U A x <> <a href="Coq.Sets.Ensembles.html#Empty_set">Empty_set</a> U.<br/>
74
<code class="keyword">Proof</code>.<br/>
76
<code class="keyword">Qed</code>.<br/>
77
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Add_not_Empty">Add_not_Empty</a>.<br/>
80
<code class="keyword">Lemma</code> <a name="not_Empty_Add"></a>not_Empty_Add : forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U), <a href="Coq.Sets.Ensembles.html#Empty_set">Empty_set</a> U <> <code class="keyword">Add</code> U A x.<br/>
81
<code class="keyword">Proof</code>.<br/>
82
intros; red in |- *; intro H; generalize (<a href="Coq.Sets.Constructive_sets.html#Add_not_Empty">Add_not_Empty</a> A x); auto with sets.<br/>
83
<code class="keyword">Qed</code>.<br/>
84
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#not_Empty_Add">not_Empty_Add</a>.<br/>
87
<code class="keyword">Lemma</code> <a name="Singleton_inv"></a>Singleton_inv : forall x y:U, <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Singleton">Singleton</a> U x) y -> x = y.<br/>
88
<code class="keyword">Proof</code>.<br/>
89
intros x y H'; elim H'; trivial with sets.<br/>
90
<code class="keyword">Qed</code>.<br/>
91
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Singleton_inv">Singleton_inv</a>.<br/>
94
<code class="keyword">Lemma</code> <a name="Singleton_intro"></a>Singleton_intro : forall x y:U, x = y -> <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Singleton">Singleton</a> U x) y.<br/>
95
<code class="keyword">Proof</code>.<br/>
96
intros x y H'; rewrite H'; trivial with sets.<br/>
97
<code class="keyword">Qed</code>.<br/>
98
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Singleton_intro">Singleton_intro</a>.<br/>
101
<code class="keyword">Lemma</code> <a name="Union_inv"></a>Union_inv :<br/>
102
forall (B C:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U), <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Union">Union</a> U B C) x -> <a href="Coq.Sets.Ensembles.html#In">In</a> U B x \/ <a href="Coq.Sets.Ensembles.html#In">In</a> U C x.<br/>
103
<code class="keyword">Proof</code>.<br/>
104
intros B C x H'; elim H'; auto with sets.<br/>
105
<code class="keyword">Qed</code>.<br/>
108
<code class="keyword">Lemma</code> <a name="Add_inv"></a>Add_inv :<br/>
109
forall (A:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x y:U), <a href="Coq.Sets.Ensembles.html#In">In</a> U (<code class="keyword">Add</code> U A x) y -> <a href="Coq.Sets.Ensembles.html#In">In</a> U A y \/ x = y.<br/>
110
<code class="keyword">Proof</code>.<br/>
111
intros A x y H'; elim H'; auto with sets.<br/>
112
<code class="keyword">Qed</code>.<br/>
115
<code class="keyword">Lemma</code> <a name="Intersection_inv"></a>Intersection_inv :<br/>
116
forall (B C:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U),<br/>
117
<a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Intersection">Intersection</a> U B C) x -> <a href="Coq.Sets.Ensembles.html#In">In</a> U B x /\ <a href="Coq.Sets.Ensembles.html#In">In</a> U C x.<br/>
118
<code class="keyword">Proof</code>.<br/>
119
intros B C x H'; elim H'; auto with sets.<br/>
120
<code class="keyword">Qed</code>.<br/>
121
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Intersection_inv">Intersection_inv</a>.<br/>
124
<code class="keyword">Lemma</code> <a name="Couple_inv"></a>Couple_inv : forall x y z:U, <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Couple">Couple</a> U x y) z -> z = x \/ z = y.<br/>
125
<code class="keyword">Proof</code>.<br/>
126
intros x y z H'; elim H'; auto with sets.<br/>
127
<code class="keyword">Qed</code>.<br/>
128
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Couple_inv">Couple_inv</a>.<br/>
131
<code class="keyword">Lemma</code> <a name="Setminus_intro"></a>Setminus_intro :<br/>
132
forall (A B:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U) (x:U),<br/>
133
<a href="Coq.Sets.Ensembles.html#In">In</a> U A x -> ~ <a href="Coq.Sets.Ensembles.html#In">In</a> U B x -> <a href="Coq.Sets.Ensembles.html#In">In</a> U (<a href="Coq.Sets.Ensembles.html#Setminus">Setminus</a> U A B) x.<br/>
134
<code class="keyword">Proof</code>.<br/>
135
unfold Setminus at 1 in |- *; red in |- *; auto with sets.<br/>
136
<code class="keyword">Qed</code>.<br/>
137
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Setminus_intro">Setminus_intro</a>.<br/>
139
<code class="keyword">Lemma</code> <a name="Strict_Included_intro"></a>Strict_Included_intro :<br/>
140
forall X Y:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U, <a href="Coq.Sets.Ensembles.html#Included">Included</a> U X Y /\ X <> Y -> <a href="Coq.Sets.Ensembles.html#Strict_Included">Strict_Included</a> U X Y.<br/>
141
<code class="keyword">Proof</code>.<br/>
143
<code class="keyword">Qed</code>.<br/>
144
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Strict_Included_intro">Strict_Included_intro</a>.<br/>
147
<code class="keyword">Lemma</code> <a name="Strict_Included_strict"></a>Strict_Included_strict : forall X:<a href="Coq.Sets.Ensembles.html#Ensemble">Ensemble</a> U, ~ <a href="Coq.Sets.Ensembles.html#Strict_Included">Strict_Included</a> U X X.<br/>
148
<code class="keyword">Proof</code>.<br/>
149
intro X; red in |- *; intro H'; elim H'.<br/>
150
intros H'0 H'1; elim H'1; auto with sets.<br/>
151
<code class="keyword">Qed</code>.<br/>
152
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Strict_Included_strict">Strict_Included_strict</a>.<br/>
155
<code class="keyword">End</code> Ensembles_facts.<br/>
158
<code class="keyword">Hint</code> Resolve <a href="Coq.Sets.Constructive_sets.html#Singleton_inv">Singleton_inv</a> <a href="Coq.Sets.Constructive_sets.html#Singleton_intro">Singleton_intro</a> <a href="Coq.Sets.Constructive_sets.html#Add_intro1">Add_intro1</a> <a href="Coq.Sets.Constructive_sets.html#Add_intro2">Add_intro2</a><br/>
159
<a href="Coq.Sets.Constructive_sets.html#Intersection_inv">Intersection_inv</a> <a href="Coq.Sets.Constructive_sets.html#Couple_inv">Couple_inv</a> <a href="Coq.Sets.Constructive_sets.html#Setminus_intro">Setminus_intro</a> <a href="Coq.Sets.Constructive_sets.html#Strict_Included_intro">Strict_Included_intro</a><br/>
160
<a href="Coq.Sets.Constructive_sets.html#Strict_Included_strict">Strict_Included_strict</a> <a href="Coq.Sets.Constructive_sets.html#Noone_in_empty">Noone_in_empty</a> <a href="Coq.Sets.Constructive_sets.html#Inhabited_not_empty">Inhabited_not_empty</a> <a href="Coq.Sets.Constructive_sets.html#Add_not_Empty">Add_not_Empty</a><br/>
161
<a href="Coq.Sets.Constructive_sets.html#not_Empty_Add">not_Empty_Add</a> <a href="Coq.Sets.Constructive_sets.html#Inhabited_add">Inhabited_add</a> <a href="Coq.Sets.Constructive_sets.html#Included_Empty">Included_Empty</a>: sets v62.</code>
162
<hr/><a href="index.html">Index</a><hr/><font size="-1">This page has been generated by <a href="http://www.lri.fr/~filliatr/coqdoc/">coqdoc</a></font>
b'\\ No newline at end of file'