Skip to content

Commit 3d71751

Browse files
committed
feat(Order/RelIso/Basic): lift a function to an order morphism into Relation.Map or from Function.onFun (leanprover-community#38498)
For an `α`-relation `r` we have: ``` RelHom.toMap (f : α → β) : r →r Relation.Map r f f RelEmbedding.toMap (f : α ↪ β) : r ↪r Relation.Map r f f RelIso.toMap (f : α ≃ β) : r ≃r Relation.Map r f f ``` For a `β`-relation `r` we have: ``` RelHom.ofOnFun (f : α → β) : r.onFun f →r r RelEmbedding.ofOnFun (f : α ↪ β) : r.onFun f ↪r r RelIso.ofOnFun (f : α ≃ β) : r.onFun f ≃r r ```
1 parent 2831348 commit 3d71751

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

Mathlib/Order/RelIso/Basic.lean

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

875875
end 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

Comments
 (0)