@@ -934,14 +934,24 @@ end SumStructure
934
934
935
935
section Empty
936
936
937
- section
937
+ /-- Any type can be made uniquely into a structure over the empty language. -/
938
+ def emptyStructure : Language.empty.Structure M :=
939
+ ⟨Empty.elim, Empty.elim⟩
940
+
941
+ instance : Unique (Language.empty.Structure M) :=
942
+ ⟨⟨Language.emptyStructure⟩, fun a => by
943
+ ext _ f <;> exact Empty.elim f⟩
938
944
939
945
variable [Language.empty.Structure M] [Language.empty.Structure N]
940
946
947
+ instance (priority := 100 ) strongHomClassEmpty {F} [FunLike F M N] :
948
+ StrongHomClass Language.empty F M N :=
949
+ ⟨fun _ _ f => Empty.elim f, fun _ _ r => Empty.elim r⟩
950
+
941
951
@[simp]
942
952
theorem empty.nonempty_embedding_iff :
943
953
Nonempty (M ↪[Language.empty] N) ↔ Cardinal.lift.{w'} #M ≤ Cardinal.lift.{w} #N :=
944
- _root_.trans ⟨Nonempty.map fun f => f.toEmbedding, Nonempty.map fun f => { toEmbedding := f } ⟩
954
+ _root_.trans ⟨Nonempty.map fun f => f.toEmbedding, Nonempty.map StrongHomClass. toEmbedding⟩
945
955
Cardinal.lift_mk_le'.symm
946
956
947
957
@[simp]
@@ -950,47 +960,12 @@ theorem empty.nonempty_equiv_iff :
950
960
_root_.trans ⟨Nonempty.map fun f => f.toEquiv, Nonempty.map fun f => { toEquiv := f }⟩
951
961
Cardinal.lift_mk_eq'.symm
952
962
953
- end
954
-
955
- instance emptyStructure : Language.empty.Structure M :=
956
- ⟨Empty.elim, Empty.elim⟩
957
-
958
- instance : Unique (Language.empty.Structure M) :=
959
- ⟨⟨Language.emptyStructure⟩, fun a => by
960
- ext _ f <;> exact Empty.elim f⟩
961
-
962
- instance (priority := 100 ) strongHomClassEmpty {F M N} [FunLike F M N] :
963
- StrongHomClass Language.empty F M N :=
964
- ⟨fun _ _ f => Empty.elim f, fun _ _ r => Empty.elim r⟩
965
-
966
- /-- Makes a `Language.empty.Hom` out of any function. -/
963
+ /-- Makes a `Language.empty.Hom` out of any function.
964
+ This is only needed because there is no instance of `FunLike (M → N) M N`, and thus no instance of
965
+ `Language.empty.HomClass M N`. -/
967
966
@[simps]
968
967
def _root_.Function.emptyHom (f : M → N) : M →[Language.empty] N where toFun := f
969
968
970
- /-- Makes a `Language.empty.Embedding` out of any function. -/
971
- --@[ simps ] Porting note: commented out and lemmas added manually
972
- def _root_.Embedding.empty (f : M ↪ N) : M ↪[Language.empty] N where toEmbedding := f
973
-
974
- @[simp]
975
- theorem toFun_embedding_empty (f : M ↪ N) : (Embedding.empty f : M → N) = f :=
976
- rfl
977
-
978
- @[simp]
979
- theorem toEmbedding_embedding_empty (f : M ↪ N) : (Embedding.empty f).toEmbedding = f :=
980
- rfl
981
-
982
- /-- Makes a `Language.empty.Equiv` out of any function. -/
983
- --@[ simps ] Porting note: commented out and lemmas added manually
984
- def _root_.Equiv.empty (f : M ≃ N) : M ≃[Language.empty] N where toEquiv := f
985
-
986
- @[simp]
987
- theorem toFun_equiv_empty (f : M ≃ N) : (Equiv.empty f : M → N) = f :=
988
- rfl
989
-
990
- @[simp]
991
- theorem toEquiv_equiv_empty (f : M ≃ N) : (Equiv.empty f).toEquiv = f :=
992
- rfl
993
-
994
969
end Empty
995
970
996
971
end Language
0 commit comments