@@ -873,3 +873,90 @@ def ofUniqueOfRefl (r : α → α → Prop) (s : β → β → Prop) [Std.Refl r
873873 ⟨Equiv.ofUnique α β, iff_of_true (rel_of_subsingleton s _ _) (rel_of_subsingleton r _ _)⟩
874874
875875end RelIso
876+
877+ /-- A function `f : α → β` induces a relation homomorphism from an `α`-relation `r` to
878+ `Relation.Map r f f`. -/
879+ def RelHom.toMap (r : α → α → Prop ) (f : α → β) : r →r Relation.Map r f f where
880+ toFun := f
881+ map_rel' {a b} hr := ⟨a, b, hr, rfl, rfl⟩
882+
883+ @[simp]
884+ theorem RelHom.coe_toMap (r : α → α → Prop ) (f : α → β) : ⇑(RelHom.toMap r f) = f :=
885+ rfl
886+
887+ /-- An embedding `f : α ↪ β` induces a relation embedding from an `α`-relation `r` to
888+ `Relation.Map r f f`. -/
889+ def RelEmbedding.toMap (r : α → α → Prop ) (f : α ↪ β) : r ↪r Relation.Map r f f where
890+ __ := f
891+ map_rel_iff' {a b} := by grind [Relation.onFun_map_eq_of_injective (r := r) f.injective]
892+
893+ @[simp]
894+ theorem RelEmbedding.coe_toMap (r : α → α → Prop ) (f : α ↪ β) : ⇑(RelEmbedding.toMap r f) = f :=
895+ rfl
896+
897+ /-- An equivalence `f : α ≃ β` induces a relation isomorphism from an `α`-relation `r` to
898+ `Relation.Map r f f`. -/
899+ def RelIso.toMap (r : α → α → Prop ) (f : α ≃ β) : r ≃r Relation.Map r f f where
900+ __ := f
901+ __ := RelEmbedding.toMap r f.toEmbedding
902+
903+ @[simp]
904+ theorem RelIso.coe_toMap (r : α → α → Prop ) (f : α ≃ β) : ⇑(RelIso.toMap r f) = f :=
905+ rfl
906+
907+ @[simp]
908+ theorem RelIso.toEquiv_toMap (r : α → α → Prop ) (f : α ≃ β) : RelIso.toMap r f = f :=
909+ rfl
910+
911+ @[simp]
912+ theorem RelIso.coe_symm_toMap (r : α → α → Prop ) (f : α ≃ β) : ⇑(RelIso.toMap r f).symm = f.symm :=
913+ rfl
914+
915+ @[simp]
916+ theorem RelIso.toEquiv_symm_toMap (r : α → α → Prop ) (f : α ≃ β) :
917+ (RelIso.toMap r f).symm = f.symm :=
918+ rfl
919+
920+ /-- For a `β`-relation `r`, a function `f : α → β` induces a relation homomorphism from `r.onFun f`
921+ to `r`. -/
922+ def RelHom.ofOnFun (r : β → β → Prop ) (f : α → β) : r.onFun f →r r where
923+ toFun := f
924+ map_rel' := id
925+
926+ @[simp]
927+ theorem RelHom.coe_ofOnFun (r : β → β → Prop ) (f : α → β) : ⇑(RelHom.ofOnFun r f) = f :=
928+ rfl
929+
930+ /-- For a `β`-relation `r`, an embedding `f : α ↪ β` induces a relation embedding from `r.onFun f`
931+ to `r`. -/
932+ def RelEmbedding.ofOnFun (r : β → β → Prop ) (f : α ↪ β) : r.onFun f ↪r r where
933+ __ := f
934+ map_rel_iff' := by rfl
935+
936+ @[simp]
937+ theorem RelEmbedding.coe_ofOnFun (r : β → β → Prop ) (f : α ↪ β) : ⇑(RelEmbedding.ofOnFun r f) = f :=
938+ rfl
939+
940+ /-- For a `β`-relation `r`, an equivalence `f : α ≃ β` induces a relation isomorphism from
941+ `r.onFun f` to `r`. -/
942+ def RelIso.ofOnFun (r : β → β → Prop ) (f : α ≃ β) : r.onFun f ≃r r where
943+ __ := f
944+ __ := RelEmbedding.ofOnFun r f.toEmbedding
945+
946+ @[simp]
947+ theorem RelIso.coe_ofOnFun (r : β → β → Prop ) (f : α ≃ β) : ⇑(RelIso.ofOnFun r f) = f :=
948+ rfl
949+
950+ @[simp]
951+ theorem RelIso.toEquiv_ofOnFun (r : β → β → Prop ) (f : α ≃ β) : RelIso.ofOnFun r f = f :=
952+ rfl
953+
954+ @[simp]
955+ theorem RelIso.coe_symm_ofOnFun (r : β → β → Prop ) (f : α ≃ β) :
956+ ⇑(RelIso.ofOnFun r f).symm = f.symm :=
957+ rfl
958+
959+ @[simp]
960+ theorem RelIso.toEquiv_symm_ofOnFun (r : β → β → Prop ) (f : α ≃ β) :
961+ (RelIso.ofOnFun r f).symm = f.symm :=
962+ rfl
0 commit comments