A graph r is a set of pairs; if the pair (x, y) is an element of r we say that x and y are related by r . This will be used essentially when r is the graph of a relation.
Definition related r x y := inc (pair x y) r.
The next theorem is Proposition 1 in [2, p. 76]; it claims existence and uniqueness of two sets denoted by pr1〈r 〉 and pr2〈r 〉. The notation pr1〈r 〉 is defined in section 2.5; it is the domain of r .
Theorem range_domain_exists: forall r, is_graph r ->
(exists_unique (fun a=> (forall x, inc x a = (exists y, inc (J x y) r))) &
exists_unique (fun b=> (forall y, inc y b = (exists x, inc (J x y) r)))).
A graph is a subset of the product of the domain by the range. A graph is empty if and only if its domain or range is empty. A functional graph is a graph.
Lemma sub_graph_prod: forall r, is_graph r ->
sub r (product (domain r)(range r)).
Lemma empty_graph1: forall r, is_graph r ->
(domain r = emptyset) = (r = emptyset).
Lemma empty_graph2: forall r, is_graph r ->
(range r = emptyset) = (r = emptyset).
Lemma graph_fgraph : forall f, fgraph f -> is_graph f.
The emptyset is a functional graph, with empty range and domain.
Lemma emptyset_graph: is_graph (emptyset).
Lemma emptyset_range: range emptyset = emptyset.
Lemma emptyset_domain: domain emptyset = emptyset.
Lemma emptyset_fgraph: fgraph emptyset.
A product x × y is a graph. The domain is x, the range is y. Note that, if one set is empty, then the product is empty, see above. It is a functional graph if the range is a singleton.
Lemma product_is_graph: forall x y, is_graph (product x y).
Lemma product_related: forall x y a b,
related (product x y) a b = (inc a x & inc b y).
Lemma product_domain: forall x y,
nonempty y-> domain (product x y) = x.
Lemma product_range: forall x y,
nonempty x -> range (product x y) = y.
Lemma constant_function_p1: forall x y, fgraph (product x (singleton y)).
The diagonal of x, denoted∆x, is the set of all pairs (a, a), with a ∈ x. This is the graph of the identity function on x, domain and range being x. In what follows, we shall use identity_g, but keep the word ‘diagonal’ in some theorem names.
Definition diagonal x := Zo (product x x)(fun y=> P y = Q y).
Lemma diagonal_is_identity: forall x, diagonal x = identity_g x.
Lemma inc_diagonal_rw: forall x u,
inc u (identity_g x) = (is_pair u & inc (P u) x & P u = Q u).
Lemma inc_pair_diagonal: forall x u v,
inc (J u v) (identity_g x) = (inc u x & u = v).
Lemma identity_graph: forall x, is_graph (identity_g x).
For Bourbaki, a correspondence between A and B is a tripleΓ = (G,A,B) where the domain of G is a subset of A and the range is a subset of B. The three conditions “G is a graph whose domain is a subset of A and whose range is a subset of B”, G ⊂ A × B, and G ∈P(A × B) are equivalent.
Definition corr_propb s t g:= sub g (product s t).
Lemma corr_propa: forall x y z,
corr_propb x y z = inc z (powerset (product x y)).
Lemma corr_propcc: forall s t g,
sub g (product s t) = (is_graph g & sub (domain g) s & sub (range g) t).
Here we use a triple, with the condition G ⊂ A × B.
Definition is_triple f := is_pair f & is_pair (Q f).
Definition source x := P (Q x).
Definition target x := Q (Q x).
Definition graph x := P x.
Definition corresp s t g := J g (J s t).
Definition is_correspondence f :=
is_triple f i & sub (graph f) (product (source f) (target f)).
The important property here is that, if f is a triple, if we extract the source, target and graph, and construct a correspondence, we get f (this is the analogous of pair_recov for a triple).
Lemma is_triple_corr: forall s t g, is_triple (corresp s t g).
Lemma corresp_source: forall s t g, source (corresp s t g) = s.
Lemma corresp_target: forall s t g, target (corresp s t g) = t.
Lemma corresp_graph: forall s t g, graph (corresp s t g) = g.
Lemma corresp_recov: forall f, is_triple f ->
corresp(source f) (target f) (graph f) = f.
Lemma corresp_recov1: forall f, is_correspondence f ->
corresp (source f) (target f) (graph f) = f.
We list here the basic properties of correspondences.
Lemma corr_propc: forall f, let g := graph f in is_correspondence f ->
(is_graph g & sub (domain g) (source f) & sub (range g) (target f)).
Lemma corresp_create: forall s t g,
sub g (product s t) -> is_correspondence (corresp s t g).
Lemma corresp_is_graph: forall g,
is_correspondence g -> is_graph (graph g).
Lemma corresp_sub_range: forall g,
is_correspondence g -> sub (range (graph g)) (target g).
Lemma corresp_sub_domain: forall g,
is_correspondence g -> sub (domain (graph g)) (source g).
A triple (G, A, B) is a correspondence if and only if G ∈P(A × B), but Bourbaki defines the powerset only later. From this, we deduce that the set of all correspondences between A and B isP(A × B) × {A} × {B}.
Definition set_of_correspondences (x y:Set) :=
product(powerset (product x y))
(product (singleton x) (singleton y)).
Lemma set_of_correspondences_rw: forall x y z,
inc z (set_of_correspondences x y) =
(is_correspondence z & source z = x & target z = y).
Lemma set_of_correspondences_propa: forall f, is_correspondence f ->
inc f (set_of_correspondences (source f) (target f)).
Lemma sof_value_pra: forall x y z, let f:= sof_value x y z in
inc z (set_of_correspondences x y) ->
(is_correspondence f & source f = x & target f = y & f = z).
Given a function f : a → b, we construct L f , the associated correspondence.
Definition gacreate (a b:Set) (f:a->b) := IM (fun y:a => J (Ro y) (Ro (f y))).
Definition acreate (a b:Set) (f:a->b) := corresp a b (gacreate f).
Lemma acreate_corresp: forall (a b:Set) (f:a->b), is_correspondence (acreate f).
Lemma source_acreate : forall (a b :Set)(f:a->b), source (acreate f) = a.
Lemma target_acreate : forall (a b:Set) (f:a->b), target (acreate f) = b.
¶ Direct image of a set by a functional object. This will be denoted by f 〈x〉. In the first definition f is a graph, and we consider all elements y for which there is a z ∈ x such that (z, y) ∈ f . In the second definition, f is a correspondence, and we consider the image by its graph. In the last definition, f is a correspondence, and we take the image of the source (the case where f is a mapping has been considered in Section 2.5).
Definition image_by_graph f u:=
Zo (range f) (fun y=>exists x, inc x u & inc (J x y) f).
Definition image_by_fun f u :=
image_by_graph (graph f) u.
Definition image_of_fun f :=
image_by_graph (graph f) (source f).
We give now some basic properties. The image is a part of the range; it is the full range if we consider the full domain. The image of a subset x of the domain is empty if and only if x is empty. Proposition 2 in [2, p. 77] says that the image functor is increasing (we use here the term “functor” rather than function, since it is a mapping without graph).1
Lemma image_by_graph_rw: forall u r y,
inc y (image_by_graph r u) = exists x, (inc x u & inc (J x y) r).
Lemma sub_image_by_graph: forall u r, sub (image_by_graph r u) (range r).
Lemma image_by_graph_domain: forall r, is_graph r ->
image_by_graph r (domain r) = range r.
Lemma image_by_emptyset: forall r, image_by_graph r emptyset = emptyset.
Lemma image_by_nonemptyset: forall u r,
is_graph r -> nonempty u -> sub u (domain r) -> nonempty (image_by_graph r u).
Theorem image_by_increasing: forall u u’ r,
1In the initial version of the theorem, we assume r to be a graph
sub u u’ -> sub (image_by_graph r u) (image_by_graph r u’).
Lemma image_of_large: forall u r, is_graph r ->
sub (domain r) u -> image_by_graph r u = range r.
Given a graph r and an element x, the set of all y in r whose first projection is x is called the cut. This is r 〈{x}〉. If f is a correspondence, the notation G(f )〈{x}〉 is sometimes simplified to f 〈{x}〉 or f (x) (this last notation is ambiguous, since it denotes also the value of f at x).
Definition im_singleton r x := image_by_graph r (singleton x).
Lemma im_singleton_pr: forall r x y,
inc y (im_singleton r x) = inc (J x y) r.
Lemma im_singleton_inclusion: forall r r’, is_graph r -> is_graph r’ ->
(forall x, sub (im_singleton r x) (im_singleton r’ x)) = sub r r’.