(* Some basic facts about the relativization operation: It is injective when a is nonempty; a number of facts about nonemptyness, nonfullness and canonical trees; it commutes with union, intersection, mkCanon; and it is an associative operation. *)

(* Specifications: *)
Lemma relativ_inv : forall a x y,
nonEmptyTree a ->
shareTreeOrd (relativ_tree a x) (relativ_tree a y) ->
shareTreeOrd x y.
Lemma relativ_empty : forall a x,
nonEmptyTree a -> nonEmptyTree x ->
nonEmptyTree (relativ_tree a x).
Lemma relativ_empty1 : forall a x,
nonEmptyTree (relativ_tree a x) ->
nonEmptyTree a.
Lemma relativ_empty2 : forall a x,
nonEmptyTree (relativ_tree a x) ->
nonEmptyTree x.
Lemma relativ_full1 : forall a x,
nonFullTree a ->
nonFullTree (relativ_tree a x).
Lemma relativ_full2 : forall a x,
nonFullTree x ->
nonFullTree (relativ_tree a x).
Lemma relativ_full : forall a,
relativ_tree a (Leaf true) = a.