forked from leanprover-community/mathlib4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMathlib.lean
1695 lines (1695 loc) · 65.2 KB
/
Mathlib.lean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import Mathlib.Algebra.Abs
import Mathlib.Algebra.AddTorsor
import Mathlib.Algebra.Algebra.Basic
import Mathlib.Algebra.Algebra.Bilinear
import Mathlib.Algebra.Algebra.Equiv
import Mathlib.Algebra.Algebra.Hom
import Mathlib.Algebra.Algebra.Operations
import Mathlib.Algebra.Algebra.Pi
import Mathlib.Algebra.Algebra.Prod
import Mathlib.Algebra.Algebra.RestrictScalars
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Algebra.Algebra.Subalgebra.Pointwise
import Mathlib.Algebra.Algebra.Subalgebra.Tower
import Mathlib.Algebra.Algebra.Tower
import Mathlib.Algebra.Algebra.Unitization
import Mathlib.Algebra.Associated
import Mathlib.Algebra.BigOperators.Associated
import Mathlib.Algebra.BigOperators.Basic
import Mathlib.Algebra.BigOperators.Fin
import Mathlib.Algebra.BigOperators.Finprod
import Mathlib.Algebra.BigOperators.Finsupp
import Mathlib.Algebra.BigOperators.Intervals
import Mathlib.Algebra.BigOperators.Multiset.Basic
import Mathlib.Algebra.BigOperators.Multiset.Lemmas
import Mathlib.Algebra.BigOperators.NatAntidiagonal
import Mathlib.Algebra.BigOperators.Option
import Mathlib.Algebra.BigOperators.Order
import Mathlib.Algebra.BigOperators.Pi
import Mathlib.Algebra.BigOperators.Ring
import Mathlib.Algebra.BigOperators.RingEquiv
import Mathlib.Algebra.Bounds
import Mathlib.Algebra.Category.GroupCat.Basic
import Mathlib.Algebra.Category.GroupCat.Preadditive
import Mathlib.Algebra.Category.GroupCat.Zero
import Mathlib.Algebra.Category.MonCat.Basic
import Mathlib.Algebra.CharP.Algebra
import Mathlib.Algebra.CharP.Basic
import Mathlib.Algebra.CharP.ExpChar
import Mathlib.Algebra.CharP.Invertible
import Mathlib.Algebra.CharP.Pi
import Mathlib.Algebra.CharP.Quotient
import Mathlib.Algebra.CharP.Subring
import Mathlib.Algebra.CharP.Two
import Mathlib.Algebra.CharZero.Defs
import Mathlib.Algebra.CharZero.Infinite
import Mathlib.Algebra.CharZero.Lemmas
import Mathlib.Algebra.CharZero.Quotient
import Mathlib.Algebra.CovariantAndContravariant
import Mathlib.Algebra.CubicDiscriminant
import Mathlib.Algebra.DirectSum.Basic
import Mathlib.Algebra.DirectSum.Finsupp
import Mathlib.Algebra.DirectSum.Module
import Mathlib.Algebra.Divisibility.Basic
import Mathlib.Algebra.Divisibility.Units
import Mathlib.Algebra.DualNumber
import Mathlib.Algebra.EuclideanDomain.Basic
import Mathlib.Algebra.EuclideanDomain.Defs
import Mathlib.Algebra.EuclideanDomain.Instances
import Mathlib.Algebra.Field.Basic
import Mathlib.Algebra.Field.Defs
import Mathlib.Algebra.Field.Opposite
import Mathlib.Algebra.Field.Power
import Mathlib.Algebra.Field.ULift
import Mathlib.Algebra.Free
import Mathlib.Algebra.FreeAlgebra
import Mathlib.Algebra.FreeMonoid.Basic
import Mathlib.Algebra.FreeMonoid.Count
import Mathlib.Algebra.FreeNonUnitalNonAssocAlgebra
import Mathlib.Algebra.GCDMonoid.Basic
import Mathlib.Algebra.GCDMonoid.Div
import Mathlib.Algebra.GCDMonoid.Finset
import Mathlib.Algebra.GCDMonoid.Multiset
import Mathlib.Algebra.GeomSum
import Mathlib.Algebra.GradedMonoid
import Mathlib.Algebra.GradedMulAction
import Mathlib.Algebra.Group.Basic
import Mathlib.Algebra.Group.Commutator
import Mathlib.Algebra.Group.Commute
import Mathlib.Algebra.Group.Conj
import Mathlib.Algebra.Group.ConjFinite
import Mathlib.Algebra.Group.Defs
import Mathlib.Algebra.Group.Ext
import Mathlib.Algebra.Group.InjSurj
import Mathlib.Algebra.Group.Opposite
import Mathlib.Algebra.Group.OrderSynonym
import Mathlib.Algebra.Group.Pi
import Mathlib.Algebra.Group.Prod
import Mathlib.Algebra.Group.Semiconj
import Mathlib.Algebra.Group.TypeTags
import Mathlib.Algebra.Group.ULift
import Mathlib.Algebra.Group.UniqueProds
import Mathlib.Algebra.Group.Units
import Mathlib.Algebra.Group.WithOne.Basic
import Mathlib.Algebra.Group.WithOne.Defs
import Mathlib.Algebra.Group.WithOne.Units
import Mathlib.Algebra.GroupPower.Basic
import Mathlib.Algebra.GroupPower.Identities
import Mathlib.Algebra.GroupPower.Lemmas
import Mathlib.Algebra.GroupPower.Order
import Mathlib.Algebra.GroupPower.Ring
import Mathlib.Algebra.GroupRingAction.Basic
import Mathlib.Algebra.GroupRingAction.Invariant
import Mathlib.Algebra.GroupRingAction.Subobjects
import Mathlib.Algebra.GroupWithZero.Basic
import Mathlib.Algebra.GroupWithZero.Commute
import Mathlib.Algebra.GroupWithZero.Defs
import Mathlib.Algebra.GroupWithZero.Divisibility
import Mathlib.Algebra.GroupWithZero.InjSurj
import Mathlib.Algebra.GroupWithZero.Power
import Mathlib.Algebra.GroupWithZero.Semiconj
import Mathlib.Algebra.GroupWithZero.Units.Basic
import Mathlib.Algebra.GroupWithZero.Units.Lemmas
import Mathlib.Algebra.HierarchyDesign
import Mathlib.Algebra.Hom.Aut
import Mathlib.Algebra.Hom.Centroid
import Mathlib.Algebra.Hom.Commute
import Mathlib.Algebra.Hom.Embedding
import Mathlib.Algebra.Hom.Equiv.Basic
import Mathlib.Algebra.Hom.Equiv.TypeTags
import Mathlib.Algebra.Hom.Equiv.Units.Basic
import Mathlib.Algebra.Hom.Equiv.Units.GroupWithZero
import Mathlib.Algebra.Hom.Freiman
import Mathlib.Algebra.Hom.Group
import Mathlib.Algebra.Hom.GroupAction
import Mathlib.Algebra.Hom.GroupInstances
import Mathlib.Algebra.Hom.Iterate
import Mathlib.Algebra.Hom.NonUnitalAlg
import Mathlib.Algebra.Hom.Ring
import Mathlib.Algebra.Hom.Units
import Mathlib.Algebra.Homology.ComplexShape
import Mathlib.Algebra.IndicatorFunction
import Mathlib.Algebra.Invertible
import Mathlib.Algebra.IsPrimePow
import Mathlib.Algebra.Lie.Basic
import Mathlib.Algebra.Lie.NonUnitalNonAssocAlgebra
import Mathlib.Algebra.Lie.Subalgebra
import Mathlib.Algebra.Module.Algebra
import Mathlib.Algebra.Module.Basic
import Mathlib.Algebra.Module.BigOperators
import Mathlib.Algebra.Module.Equiv
import Mathlib.Algebra.Module.Hom
import Mathlib.Algebra.Module.LinearMap
import Mathlib.Algebra.Module.Opposites
import Mathlib.Algebra.Module.Pi
import Mathlib.Algebra.Module.PointwisePi
import Mathlib.Algebra.Module.Prod
import Mathlib.Algebra.Module.Submodule.Basic
import Mathlib.Algebra.Module.Submodule.Bilinear
import Mathlib.Algebra.Module.Submodule.Lattice
import Mathlib.Algebra.Module.Submodule.Pointwise
import Mathlib.Algebra.Module.ULift
import Mathlib.Algebra.MonoidAlgebra.Basic
import Mathlib.Algebra.MonoidAlgebra.Degree
import Mathlib.Algebra.MonoidAlgebra.Division
import Mathlib.Algebra.MonoidAlgebra.NoZeroDivisors
import Mathlib.Algebra.MonoidAlgebra.Support
import Mathlib.Algebra.NeZero
import Mathlib.Algebra.Opposites
import Mathlib.Algebra.Order.AbsoluteValue
import Mathlib.Algebra.Order.Algebra
import Mathlib.Algebra.Order.Archimedean
import Mathlib.Algebra.Order.EuclideanAbsoluteValue
import Mathlib.Algebra.Order.Field.Basic
import Mathlib.Algebra.Order.Field.Canonical.Basic
import Mathlib.Algebra.Order.Field.Canonical.Defs
import Mathlib.Algebra.Order.Field.Defs
import Mathlib.Algebra.Order.Field.InjSurj
import Mathlib.Algebra.Order.Field.Pi
import Mathlib.Algebra.Order.Field.Power
import Mathlib.Algebra.Order.Floor
import Mathlib.Algebra.Order.Group.Abs
import Mathlib.Algebra.Order.Group.Bounds
import Mathlib.Algebra.Order.Group.Defs
import Mathlib.Algebra.Order.Group.DenselyOrdered
import Mathlib.Algebra.Order.Group.InjSurj
import Mathlib.Algebra.Order.Group.Instances
import Mathlib.Algebra.Order.Group.MinMax
import Mathlib.Algebra.Order.Group.OrderIso
import Mathlib.Algebra.Order.Group.Prod
import Mathlib.Algebra.Order.Group.TypeTags
import Mathlib.Algebra.Order.Group.Units
import Mathlib.Algebra.Order.Group.WithTop
import Mathlib.Algebra.Order.Hom.Basic
import Mathlib.Algebra.Order.Hom.Monoid
import Mathlib.Algebra.Order.Hom.Ring
import Mathlib.Algebra.Order.Invertible
import Mathlib.Algebra.Order.Kleene
import Mathlib.Algebra.Order.LatticeGroup
import Mathlib.Algebra.Order.Module
import Mathlib.Algebra.Order.Monoid.Basic
import Mathlib.Algebra.Order.Monoid.Cancel.Basic
import Mathlib.Algebra.Order.Monoid.Cancel.Defs
import Mathlib.Algebra.Order.Monoid.Canonical.Defs
import Mathlib.Algebra.Order.Monoid.Defs
import Mathlib.Algebra.Order.Monoid.Lemmas
import Mathlib.Algebra.Order.Monoid.MinMax
import Mathlib.Algebra.Order.Monoid.NatCast
import Mathlib.Algebra.Order.Monoid.OrderDual
import Mathlib.Algebra.Order.Monoid.Prod
import Mathlib.Algebra.Order.Monoid.ToMulBot
import Mathlib.Algebra.Order.Monoid.TypeTags
import Mathlib.Algebra.Order.Monoid.Units
import Mathlib.Algebra.Order.Monoid.WithTop
import Mathlib.Algebra.Order.Monoid.WithZero.Basic
import Mathlib.Algebra.Order.Monoid.WithZero.Defs
import Mathlib.Algebra.Order.Nonneg.Field
import Mathlib.Algebra.Order.Nonneg.Floor
import Mathlib.Algebra.Order.Nonneg.Ring
import Mathlib.Algebra.Order.Pi
import Mathlib.Algebra.Order.Pointwise
import Mathlib.Algebra.Order.Positive.Field
import Mathlib.Algebra.Order.Positive.Ring
import Mathlib.Algebra.Order.Ring.Abs
import Mathlib.Algebra.Order.Ring.Canonical
import Mathlib.Algebra.Order.Ring.CharZero
import Mathlib.Algebra.Order.Ring.Cone
import Mathlib.Algebra.Order.Ring.Defs
import Mathlib.Algebra.Order.Ring.InjSurj
import Mathlib.Algebra.Order.Ring.Lemmas
import Mathlib.Algebra.Order.Ring.WithTop
import Mathlib.Algebra.Order.SMul
import Mathlib.Algebra.Order.Sub.Basic
import Mathlib.Algebra.Order.Sub.Canonical
import Mathlib.Algebra.Order.Sub.Defs
import Mathlib.Algebra.Order.Sub.WithTop
import Mathlib.Algebra.Order.UpperLower
import Mathlib.Algebra.Order.WithZero
import Mathlib.Algebra.Order.ZeroLEOne
import Mathlib.Algebra.PEmptyInstances
import Mathlib.Algebra.PUnitInstances
import Mathlib.Algebra.Parity
import Mathlib.Algebra.Periodic
import Mathlib.Algebra.Polynomial.BigOperators
import Mathlib.Algebra.Polynomial.GroupRingAction
import Mathlib.Algebra.QuadraticDiscriminant
import Mathlib.Algebra.Quandle
import Mathlib.Algebra.Quotient
import Mathlib.Algebra.Regular.Basic
import Mathlib.Algebra.Regular.Pow
import Mathlib.Algebra.Regular.SMul
import Mathlib.Algebra.Ring.AddAut
import Mathlib.Algebra.Ring.Aut
import Mathlib.Algebra.Ring.Basic
import Mathlib.Algebra.Ring.Commute
import Mathlib.Algebra.Ring.CompTypeclasses
import Mathlib.Algebra.Ring.Defs
import Mathlib.Algebra.Ring.Divisibility
import Mathlib.Algebra.Ring.Equiv
import Mathlib.Algebra.Ring.Fin
import Mathlib.Algebra.Ring.Idempotents
import Mathlib.Algebra.Ring.InjSurj
import Mathlib.Algebra.Ring.Opposite
import Mathlib.Algebra.Ring.OrderSynonym
import Mathlib.Algebra.Ring.Pi
import Mathlib.Algebra.Ring.Prod
import Mathlib.Algebra.Ring.Regular
import Mathlib.Algebra.Ring.Semiconj
import Mathlib.Algebra.Ring.ULift
import Mathlib.Algebra.Ring.Units
import Mathlib.Algebra.SMulWithZero
import Mathlib.Algebra.Squarefree
import Mathlib.Algebra.Star.Basic
import Mathlib.Algebra.Star.BigOperators
import Mathlib.Algebra.Star.CHSH
import Mathlib.Algebra.Star.Free
import Mathlib.Algebra.Star.Module
import Mathlib.Algebra.Star.Pi
import Mathlib.Algebra.Star.Pointwise
import Mathlib.Algebra.Star.Prod
import Mathlib.Algebra.Star.SelfAdjoint
import Mathlib.Algebra.Star.StarAlgHom
import Mathlib.Algebra.Star.Subalgebra
import Mathlib.Algebra.Star.Unitary
import Mathlib.Algebra.Support
import Mathlib.Algebra.TrivSqZeroExt
import Mathlib.Algebra.Tropical.Basic
import Mathlib.Algebra.Tropical.BigOperators
import Mathlib.Algebra.Tropical.Lattice
import Mathlib.Analysis.Convex.Basic
import Mathlib.Analysis.Convex.Hull
import Mathlib.Analysis.Convex.Segment
import Mathlib.Analysis.Convex.Star
import Mathlib.Analysis.Convex.Strict
import Mathlib.Analysis.Normed.Field.Basic
import Mathlib.Analysis.Normed.Field.InfiniteSum
import Mathlib.Analysis.Normed.Field.UnitBall
import Mathlib.Analysis.Normed.Group.BallSphere
import Mathlib.Analysis.Normed.Group.Basic
import Mathlib.Analysis.Normed.Group.Completion
import Mathlib.Analysis.Normed.Group.Hom
import Mathlib.Analysis.Normed.Group.HomCompletion
import Mathlib.Analysis.Normed.Group.InfiniteSum
import Mathlib.Analysis.Normed.Group.Seminorm
import Mathlib.Analysis.Normed.Order.Lattice
import Mathlib.Analysis.NormedSpace.IndicatorFunction
import Mathlib.Analysis.NormedSpace.Int
import Mathlib.Analysis.NormedSpace.MStructure
import Mathlib.Analysis.Subadditive
import Mathlib.CategoryTheory.Abelian.Images
import Mathlib.CategoryTheory.Abelian.NonPreadditive
import Mathlib.CategoryTheory.Adjunction.Basic
import Mathlib.CategoryTheory.Adjunction.Comma
import Mathlib.CategoryTheory.Adjunction.Evaluation
import Mathlib.CategoryTheory.Adjunction.FullyFaithful
import Mathlib.CategoryTheory.Adjunction.Limits
import Mathlib.CategoryTheory.Adjunction.Mates
import Mathlib.CategoryTheory.Adjunction.Opposites
import Mathlib.CategoryTheory.Adjunction.Reflective
import Mathlib.CategoryTheory.Adjunction.Whiskering
import Mathlib.CategoryTheory.Arrow
import Mathlib.CategoryTheory.Balanced
import Mathlib.CategoryTheory.Bicategory.Basic
import Mathlib.CategoryTheory.Bicategory.End
import Mathlib.CategoryTheory.Bicategory.Functor
import Mathlib.CategoryTheory.Bicategory.LocallyDiscrete
import Mathlib.CategoryTheory.Bicategory.Strict
import Mathlib.CategoryTheory.Category.Basic
import Mathlib.CategoryTheory.Category.Bipointed
import Mathlib.CategoryTheory.Category.Cat
import Mathlib.CategoryTheory.Category.Cat.Limit
import Mathlib.CategoryTheory.Category.GaloisConnection
import Mathlib.CategoryTheory.Category.Init
import Mathlib.CategoryTheory.Category.KleisliCat
import Mathlib.CategoryTheory.Category.Pairwise
import Mathlib.CategoryTheory.Category.Pointed
import Mathlib.CategoryTheory.Category.Preorder
import Mathlib.CategoryTheory.Category.QuivCat
import Mathlib.CategoryTheory.Category.RelCat
import Mathlib.CategoryTheory.Category.ULift
import Mathlib.CategoryTheory.Closed.Monoidal
import Mathlib.CategoryTheory.CommSq
import Mathlib.CategoryTheory.Comma
import Mathlib.CategoryTheory.ConcreteCategory.Basic
import Mathlib.CategoryTheory.ConcreteCategory.Bundled
import Mathlib.CategoryTheory.ConcreteCategory.BundledHom
import Mathlib.CategoryTheory.ConcreteCategory.Elementwise
import Mathlib.CategoryTheory.ConcreteCategory.ReflectsIso
import Mathlib.CategoryTheory.Conj
import Mathlib.CategoryTheory.ConnectedComponents
import Mathlib.CategoryTheory.Core
import Mathlib.CategoryTheory.DiscreteCategory
import Mathlib.CategoryTheory.Elementwise
import Mathlib.CategoryTheory.Endomorphism
import Mathlib.CategoryTheory.EpiMono
import Mathlib.CategoryTheory.EqToHom
import Mathlib.CategoryTheory.Equivalence
import Mathlib.CategoryTheory.EssentialImage
import Mathlib.CategoryTheory.EssentiallySmall
import Mathlib.CategoryTheory.Filtered
import Mathlib.CategoryTheory.FinCategory
import Mathlib.CategoryTheory.FullSubcategory
import Mathlib.CategoryTheory.Functor.Basic
import Mathlib.CategoryTheory.Functor.Category
import Mathlib.CategoryTheory.Functor.Const
import Mathlib.CategoryTheory.Functor.Currying
import Mathlib.CategoryTheory.Functor.Default
import Mathlib.CategoryTheory.Functor.EpiMono
import Mathlib.CategoryTheory.Functor.FullyFaithful
import Mathlib.CategoryTheory.Functor.Functorial
import Mathlib.CategoryTheory.Functor.Hom
import Mathlib.CategoryTheory.Functor.InvIsos
import Mathlib.CategoryTheory.Functor.ReflectsIso
import Mathlib.CategoryTheory.GlueData
import Mathlib.CategoryTheory.Groupoid
import Mathlib.CategoryTheory.Groupoid.Basic
import Mathlib.CategoryTheory.Groupoid.VertexGroup
import Mathlib.CategoryTheory.IsConnected
import Mathlib.CategoryTheory.Iso
import Mathlib.CategoryTheory.IsomorphismClasses
import Mathlib.CategoryTheory.LiftingProperties.Adjunction
import Mathlib.CategoryTheory.LiftingProperties.Basic
import Mathlib.CategoryTheory.Limits.Bicones
import Mathlib.CategoryTheory.Limits.ColimitLimit
import Mathlib.CategoryTheory.Limits.Comma
import Mathlib.CategoryTheory.Limits.ConcreteCategory
import Mathlib.CategoryTheory.Limits.ConeCategory
import Mathlib.CategoryTheory.Limits.Cones
import Mathlib.CategoryTheory.Limits.Connected
import Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
import Mathlib.CategoryTheory.Limits.Constructions.EpiMono
import Mathlib.CategoryTheory.Limits.Constructions.Equalizers
import Mathlib.CategoryTheory.Limits.Constructions.Filtered
import Mathlib.CategoryTheory.Limits.Constructions.FiniteProductsOfBinaryProducts
import Mathlib.CategoryTheory.Limits.Constructions.LimitsOfProductsAndEqualizers
import Mathlib.CategoryTheory.Limits.Constructions.Over.Connected
import Mathlib.CategoryTheory.Limits.Constructions.Pullbacks
import Mathlib.CategoryTheory.Limits.Constructions.ZeroObjects
import Mathlib.CategoryTheory.Limits.Creates
import Mathlib.CategoryTheory.Limits.EssentiallySmall
import Mathlib.CategoryTheory.Limits.ExactFunctor
import Mathlib.CategoryTheory.Limits.Filtered
import Mathlib.CategoryTheory.Limits.Final
import Mathlib.CategoryTheory.Limits.FullSubcategory
import Mathlib.CategoryTheory.Limits.FunctorCategory
import Mathlib.CategoryTheory.Limits.HasLimits
import Mathlib.CategoryTheory.Limits.IsLimit
import Mathlib.CategoryTheory.Limits.KanExtension
import Mathlib.CategoryTheory.Limits.Lattice
import Mathlib.CategoryTheory.Limits.MonoCoprod
import Mathlib.CategoryTheory.Limits.Opposites
import Mathlib.CategoryTheory.Limits.Pi
import Mathlib.CategoryTheory.Limits.Preserves.Basic
import Mathlib.CategoryTheory.Limits.Preserves.Filtered
import Mathlib.CategoryTheory.Limits.Preserves.Finite
import Mathlib.CategoryTheory.Limits.Preserves.Limits
import Mathlib.CategoryTheory.Limits.Preserves.Opposites
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.BinaryProducts
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Biproducts
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Equalizers
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Images
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Products
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Terminal
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Zero
import Mathlib.CategoryTheory.Limits.Shapes.BinaryProducts
import Mathlib.CategoryTheory.Limits.Shapes.Biproducts
import Mathlib.CategoryTheory.Limits.Shapes.CommSq
import Mathlib.CategoryTheory.Limits.Shapes.Diagonal
import Mathlib.CategoryTheory.Limits.Shapes.DisjointCoproduct
import Mathlib.CategoryTheory.Limits.Shapes.Equalizers
import Mathlib.CategoryTheory.Limits.Shapes.Equivalence
import Mathlib.CategoryTheory.Limits.Shapes.FiniteLimits
import Mathlib.CategoryTheory.Limits.Shapes.FiniteProducts
import Mathlib.CategoryTheory.Limits.Shapes.FunctorCategory
import Mathlib.CategoryTheory.Limits.Shapes.Images
import Mathlib.CategoryTheory.Limits.Shapes.KernelPair
import Mathlib.CategoryTheory.Limits.Shapes.Kernels
import Mathlib.CategoryTheory.Limits.Shapes.Multiequalizer
import Mathlib.CategoryTheory.Limits.Shapes.NormalMono.Basic
import Mathlib.CategoryTheory.Limits.Shapes.NormalMono.Equalizers
import Mathlib.CategoryTheory.Limits.Shapes.Products
import Mathlib.CategoryTheory.Limits.Shapes.Pullbacks
import Mathlib.CategoryTheory.Limits.Shapes.Reflexive
import Mathlib.CategoryTheory.Limits.Shapes.RegularMono
import Mathlib.CategoryTheory.Limits.Shapes.SplitCoequalizer
import Mathlib.CategoryTheory.Limits.Shapes.StrictInitial
import Mathlib.CategoryTheory.Limits.Shapes.StrongEpi
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.CategoryTheory.Limits.Shapes.Types
import Mathlib.CategoryTheory.Limits.Shapes.WidePullbacks
import Mathlib.CategoryTheory.Limits.Shapes.ZeroMorphisms
import Mathlib.CategoryTheory.Limits.Shapes.ZeroObjects
import Mathlib.CategoryTheory.Limits.SmallComplete
import Mathlib.CategoryTheory.Limits.Types
import Mathlib.CategoryTheory.Limits.Unit
import Mathlib.CategoryTheory.Limits.Yoneda
import Mathlib.CategoryTheory.Linear.Basic
import Mathlib.CategoryTheory.Linear.FunctorCategory
import Mathlib.CategoryTheory.Linear.LinearFunctor
import Mathlib.CategoryTheory.Localization.Construction
import Mathlib.CategoryTheory.Localization.Opposite
import Mathlib.CategoryTheory.Localization.Predicate
import Mathlib.CategoryTheory.Monad.Basic
import Mathlib.CategoryTheory.Monoidal.Category
import Mathlib.CategoryTheory.Monoidal.Discrete
import Mathlib.CategoryTheory.Monoidal.End
import Mathlib.CategoryTheory.Monoidal.Functor
import Mathlib.CategoryTheory.Monoidal.Functorial
import Mathlib.CategoryTheory.Monoidal.Linear
import Mathlib.CategoryTheory.Monoidal.NaturalTransformation
import Mathlib.CategoryTheory.Monoidal.Preadditive
import Mathlib.CategoryTheory.MorphismProperty
import Mathlib.CategoryTheory.NatIso
import Mathlib.CategoryTheory.NatTrans
import Mathlib.CategoryTheory.Opposites
import Mathlib.CategoryTheory.Over
import Mathlib.CategoryTheory.PEmpty
import Mathlib.CategoryTheory.PUnit
import Mathlib.CategoryTheory.PathCategory
import Mathlib.CategoryTheory.Pi.Basic
import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor
import Mathlib.CategoryTheory.Preadditive.Basic
import Mathlib.CategoryTheory.Preadditive.Biproducts
import Mathlib.CategoryTheory.Preadditive.FunctorCategory
import Mathlib.CategoryTheory.Preadditive.LeftExact
import Mathlib.CategoryTheory.Preadditive.OfBiproducts
import Mathlib.CategoryTheory.Preadditive.SingleObj
import Mathlib.CategoryTheory.Products.Associator
import Mathlib.CategoryTheory.Products.Basic
import Mathlib.CategoryTheory.Products.Bifunctor
import Mathlib.CategoryTheory.Quotient
import Mathlib.CategoryTheory.Sigma.Basic
import Mathlib.CategoryTheory.SingleObj
import Mathlib.CategoryTheory.Sites.Grothendieck
import Mathlib.CategoryTheory.Sites.Pretopology
import Mathlib.CategoryTheory.Sites.Sieves
import Mathlib.CategoryTheory.Sites.Spaces
import Mathlib.CategoryTheory.Skeletal
import Mathlib.CategoryTheory.StructuredArrow
import Mathlib.CategoryTheory.Sums.Associator
import Mathlib.CategoryTheory.Sums.Basic
import Mathlib.CategoryTheory.Thin
import Mathlib.CategoryTheory.Types
import Mathlib.CategoryTheory.Whiskering
import Mathlib.CategoryTheory.Yoneda
import Mathlib.Combinatorics.Additive.Energy
import Mathlib.Combinatorics.Additive.PluenneckeRuzsa
import Mathlib.Combinatorics.Additive.RuzsaCovering
import Mathlib.Combinatorics.Catalan
import Mathlib.Combinatorics.Colex
import Mathlib.Combinatorics.Composition
import Mathlib.Combinatorics.Derangements.Basic
import Mathlib.Combinatorics.Derangements.Finite
import Mathlib.Combinatorics.DoubleCounting
import Mathlib.Combinatorics.HalesJewett
import Mathlib.Combinatorics.Hall.Finite
import Mathlib.Combinatorics.Hindman
import Mathlib.Combinatorics.Partition
import Mathlib.Combinatorics.Pigeonhole
import Mathlib.Combinatorics.Quiver.Arborescence
import Mathlib.Combinatorics.Quiver.Basic
import Mathlib.Combinatorics.Quiver.Cast
import Mathlib.Combinatorics.Quiver.ConnectedComponent
import Mathlib.Combinatorics.Quiver.Path
import Mathlib.Combinatorics.Quiver.Push
import Mathlib.Combinatorics.Quiver.SingleObj
import Mathlib.Combinatorics.Quiver.Subquiver
import Mathlib.Combinatorics.Quiver.Symmetric
import Mathlib.Combinatorics.SetFamily.Compression.Down
import Mathlib.Combinatorics.SetFamily.Compression.UV
import Mathlib.Combinatorics.SetFamily.HarrisKleitman
import Mathlib.Combinatorics.SetFamily.Intersecting
import Mathlib.Combinatorics.SetFamily.Kleitman
import Mathlib.Combinatorics.SetFamily.LYM
import Mathlib.Combinatorics.SetFamily.Shadow
import Mathlib.Combinatorics.SimpleGraph.Acyclic
import Mathlib.Combinatorics.SimpleGraph.Basic
import Mathlib.Combinatorics.SimpleGraph.Clique
import Mathlib.Combinatorics.SimpleGraph.Coloring
import Mathlib.Combinatorics.SimpleGraph.Connectivity
import Mathlib.Combinatorics.SimpleGraph.DegreeSum
import Mathlib.Combinatorics.SimpleGraph.Density
import Mathlib.Combinatorics.SimpleGraph.Hasse
import Mathlib.Combinatorics.SimpleGraph.Init
import Mathlib.Combinatorics.SimpleGraph.Matching
import Mathlib.Combinatorics.SimpleGraph.Metric
import Mathlib.Combinatorics.SimpleGraph.Partition
import Mathlib.Combinatorics.SimpleGraph.Prod
import Mathlib.Combinatorics.SimpleGraph.Regularity.Energy
import Mathlib.Combinatorics.SimpleGraph.Regularity.Equitabilise
import Mathlib.Combinatorics.SimpleGraph.Regularity.Uniform
import Mathlib.Combinatorics.SimpleGraph.StronglyRegular
import Mathlib.Combinatorics.SimpleGraph.Subgraph
import Mathlib.Combinatorics.SimpleGraph.Trails
import Mathlib.Combinatorics.SimpleGraph.Triangle.Basic
import Mathlib.Combinatorics.Young.SemistandardTableau
import Mathlib.Combinatorics.Young.YoungDiagram
import Mathlib.Computability.DFA
import Mathlib.Computability.EpsilonNFA
import Mathlib.Computability.Language
import Mathlib.Computability.NFA
import Mathlib.Computability.Primrec
import Mathlib.Computability.TuringMachine
import Mathlib.Control.Applicative
import Mathlib.Control.Basic
import Mathlib.Control.Bifunctor
import Mathlib.Control.Bitraversable.Basic
import Mathlib.Control.EquivFunctor
import Mathlib.Control.EquivFunctor.Instances
import Mathlib.Control.Fix
import Mathlib.Control.Functor
import Mathlib.Control.Functor.Multivariate
import Mathlib.Control.LawfulFix
import Mathlib.Control.Monad.Basic
import Mathlib.Control.Random
import Mathlib.Control.SimpSet
import Mathlib.Control.Traversable.Basic
import Mathlib.Control.Traversable.Equiv
import Mathlib.Control.Traversable.Instances
import Mathlib.Control.Traversable.Lemmas
import Mathlib.Control.ULift
import Mathlib.Control.Writer
import Mathlib.Data.Analysis.Filter
import Mathlib.Data.Analysis.Topology
import Mathlib.Data.Array.Basic
import Mathlib.Data.Array.Defs
import Mathlib.Data.BinaryHeap
import Mathlib.Data.Bitvec.Core
import Mathlib.Data.Bool.AllAny
import Mathlib.Data.Bool.Basic
import Mathlib.Data.Bool.Count
import Mathlib.Data.Bool.Set
import Mathlib.Data.Bracket
import Mathlib.Data.Bundle
import Mathlib.Data.ByteArray
import Mathlib.Data.Char
import Mathlib.Data.Complex.Basic
import Mathlib.Data.Complex.Exponential
import Mathlib.Data.Countable.Basic
import Mathlib.Data.Countable.Defs
import Mathlib.Data.Countable.Small
import Mathlib.Data.DList.Basic
import Mathlib.Data.DList.Instances
import Mathlib.Data.Dfinsupp.Basic
import Mathlib.Data.Dfinsupp.Interval
import Mathlib.Data.Dfinsupp.Lex
import Mathlib.Data.Dfinsupp.Multiset
import Mathlib.Data.Dfinsupp.NeLocus
import Mathlib.Data.Dfinsupp.Order
import Mathlib.Data.Dfinsupp.WellFounded
import Mathlib.Data.ENat.Basic
import Mathlib.Data.ENat.Lattice
import Mathlib.Data.Equiv.Functor
import Mathlib.Data.Erased
import Mathlib.Data.FP.Basic
import Mathlib.Data.Fin.Basic
import Mathlib.Data.Fin.Fin2
import Mathlib.Data.Fin.Interval
import Mathlib.Data.Fin.SuccPred
import Mathlib.Data.Fin.Tuple.Basic
import Mathlib.Data.Fin.Tuple.BubbleSortInduction
import Mathlib.Data.Fin.Tuple.Monotone
import Mathlib.Data.Fin.Tuple.NatAntidiagonal
import Mathlib.Data.Fin.Tuple.Sort
import Mathlib.Data.Fin.VecNotation
import Mathlib.Data.FinEnum
import Mathlib.Data.Finite.Basic
import Mathlib.Data.Finite.Card
import Mathlib.Data.Finite.Defs
import Mathlib.Data.Finite.Set
import Mathlib.Data.Finmap
import Mathlib.Data.Finset.Basic
import Mathlib.Data.Finset.Card
import Mathlib.Data.Finset.Fin
import Mathlib.Data.Finset.Finsupp
import Mathlib.Data.Finset.Fold
import Mathlib.Data.Finset.Functor
import Mathlib.Data.Finset.Image
import Mathlib.Data.Finset.Lattice
import Mathlib.Data.Finset.LocallyFinite
import Mathlib.Data.Finset.MulAntidiagonal
import Mathlib.Data.Finset.NAry
import Mathlib.Data.Finset.NatAntidiagonal
import Mathlib.Data.Finset.NoncommProd
import Mathlib.Data.Finset.Option
import Mathlib.Data.Finset.Order
import Mathlib.Data.Finset.PImage
import Mathlib.Data.Finset.Pairwise
import Mathlib.Data.Finset.Pi
import Mathlib.Data.Finset.PiInduction
import Mathlib.Data.Finset.Pointwise
import Mathlib.Data.Finset.Powerset
import Mathlib.Data.Finset.Preimage
import Mathlib.Data.Finset.Prod
import Mathlib.Data.Finset.Sigma
import Mathlib.Data.Finset.Slice
import Mathlib.Data.Finset.Sort
import Mathlib.Data.Finset.Sum
import Mathlib.Data.Finset.Sym
import Mathlib.Data.Finsupp.AList
import Mathlib.Data.Finsupp.Antidiagonal
import Mathlib.Data.Finsupp.Basic
import Mathlib.Data.Finsupp.BigOperators
import Mathlib.Data.Finsupp.Defs
import Mathlib.Data.Finsupp.Fin
import Mathlib.Data.Finsupp.Fintype
import Mathlib.Data.Finsupp.Indicator
import Mathlib.Data.Finsupp.Interval
import Mathlib.Data.Finsupp.Lex
import Mathlib.Data.Finsupp.Multiset
import Mathlib.Data.Finsupp.NeLocus
import Mathlib.Data.Finsupp.Order
import Mathlib.Data.Finsupp.Pointwise
import Mathlib.Data.Finsupp.Pwo
import Mathlib.Data.Finsupp.ToDfinsupp
import Mathlib.Data.Finsupp.WellFounded
import Mathlib.Data.Fintype.Basic
import Mathlib.Data.Fintype.BigOperators
import Mathlib.Data.Fintype.Card
import Mathlib.Data.Fintype.CardEmbedding
import Mathlib.Data.Fintype.Fin
import Mathlib.Data.Fintype.Lattice
import Mathlib.Data.Fintype.List
import Mathlib.Data.Fintype.Option
import Mathlib.Data.Fintype.Order
import Mathlib.Data.Fintype.Parity
import Mathlib.Data.Fintype.Perm
import Mathlib.Data.Fintype.Pi
import Mathlib.Data.Fintype.Powerset
import Mathlib.Data.Fintype.Prod
import Mathlib.Data.Fintype.Sigma
import Mathlib.Data.Fintype.Small
import Mathlib.Data.Fintype.Sort
import Mathlib.Data.Fintype.Sum
import Mathlib.Data.Fintype.Units
import Mathlib.Data.Fintype.Vector
import Mathlib.Data.FunLike.Basic
import Mathlib.Data.FunLike.Embedding
import Mathlib.Data.FunLike.Equiv
import Mathlib.Data.FunLike.Fintype
import Mathlib.Data.HashMap
import Mathlib.Data.Holor
import Mathlib.Data.Int.AbsoluteValue
import Mathlib.Data.Int.Associated
import Mathlib.Data.Int.Basic
import Mathlib.Data.Int.Bitwise
import Mathlib.Data.Int.Cast.Basic
import Mathlib.Data.Int.Cast.Defs
import Mathlib.Data.Int.Cast.Field
import Mathlib.Data.Int.Cast.Lemmas
import Mathlib.Data.Int.Cast.Prod
import Mathlib.Data.Int.CharZero
import Mathlib.Data.Int.ConditionallyCompleteOrder
import Mathlib.Data.Int.Div
import Mathlib.Data.Int.Dvd.Basic
import Mathlib.Data.Int.Dvd.Pow
import Mathlib.Data.Int.GCD
import Mathlib.Data.Int.Interval
import Mathlib.Data.Int.LeastGreatest
import Mathlib.Data.Int.Lemmas
import Mathlib.Data.Int.Log
import Mathlib.Data.Int.ModEq
import Mathlib.Data.Int.NatPrime
import Mathlib.Data.Int.Order.Basic
import Mathlib.Data.Int.Order.Lemmas
import Mathlib.Data.Int.Order.Units
import Mathlib.Data.Int.Parity
import Mathlib.Data.Int.Range
import Mathlib.Data.Int.Sqrt
import Mathlib.Data.Int.SuccPred
import Mathlib.Data.Int.Units
import Mathlib.Data.KVMap
import Mathlib.Data.LazyList
import Mathlib.Data.LazyList.Basic
import Mathlib.Data.List.AList
import Mathlib.Data.List.Basic
import Mathlib.Data.List.BigOperators.Basic
import Mathlib.Data.List.BigOperators.Lemmas
import Mathlib.Data.List.Card
import Mathlib.Data.List.Chain
import Mathlib.Data.List.Count
import Mathlib.Data.List.Cycle
import Mathlib.Data.List.Dedup
import Mathlib.Data.List.Defs
import Mathlib.Data.List.Destutter
import Mathlib.Data.List.Duplicate
import Mathlib.Data.List.FinRange
import Mathlib.Data.List.Forall2
import Mathlib.Data.List.Func
import Mathlib.Data.List.Indexes
import Mathlib.Data.List.Infix
import Mathlib.Data.List.Join
import Mathlib.Data.List.Lattice
import Mathlib.Data.List.Lemmas
import Mathlib.Data.List.Lex
import Mathlib.Data.List.MinMax
import Mathlib.Data.List.NatAntidiagonal
import Mathlib.Data.List.Nodup
import Mathlib.Data.List.NodupEquivFin
import Mathlib.Data.List.OfFn
import Mathlib.Data.List.Pairwise
import Mathlib.Data.List.Palindrome
import Mathlib.Data.List.Perm
import Mathlib.Data.List.Permutation
import Mathlib.Data.List.Prime
import Mathlib.Data.List.ProdSigma
import Mathlib.Data.List.Range
import Mathlib.Data.List.Rdrop
import Mathlib.Data.List.Rotate
import Mathlib.Data.List.Sections
import Mathlib.Data.List.Sigma
import Mathlib.Data.List.Sort
import Mathlib.Data.List.Sublists
import Mathlib.Data.List.TFAE
import Mathlib.Data.List.Zip
import Mathlib.Data.Matrix.DMatrix
import Mathlib.Data.Multiset.Antidiagonal
import Mathlib.Data.Multiset.Basic
import Mathlib.Data.Multiset.Bind
import Mathlib.Data.Multiset.Dedup
import Mathlib.Data.Multiset.FinsetOps
import Mathlib.Data.Multiset.Fintype
import Mathlib.Data.Multiset.Fold
import Mathlib.Data.Multiset.Functor
import Mathlib.Data.Multiset.Interval
import Mathlib.Data.Multiset.Lattice
import Mathlib.Data.Multiset.LocallyFinite
import Mathlib.Data.Multiset.NatAntidiagonal
import Mathlib.Data.Multiset.Nodup
import Mathlib.Data.Multiset.Pi
import Mathlib.Data.Multiset.Powerset
import Mathlib.Data.Multiset.Range
import Mathlib.Data.Multiset.Sections
import Mathlib.Data.Multiset.Sort
import Mathlib.Data.Multiset.Sum
import Mathlib.Data.MvPolynomial.Basic
import Mathlib.Data.MvPolynomial.Cardinal
import Mathlib.Data.MvPolynomial.Comap
import Mathlib.Data.MvPolynomial.CommRing
import Mathlib.Data.MvPolynomial.Counit
import Mathlib.Data.MvPolynomial.Division
import Mathlib.Data.MvPolynomial.Equiv
import Mathlib.Data.MvPolynomial.Invertible
import Mathlib.Data.MvPolynomial.Rename
import Mathlib.Data.MvPolynomial.Supported
import Mathlib.Data.MvPolynomial.Variables
import Mathlib.Data.Nat.Basic
import Mathlib.Data.Nat.Bits
import Mathlib.Data.Nat.Bitwise
import Mathlib.Data.Nat.Cast.Basic
import Mathlib.Data.Nat.Cast.Defs
import Mathlib.Data.Nat.Cast.Field
import Mathlib.Data.Nat.Cast.Prod
import Mathlib.Data.Nat.Cast.WithTop
import Mathlib.Data.Nat.Choose.Basic
import Mathlib.Data.Nat.Choose.Bounds
import Mathlib.Data.Nat.Choose.Cast
import Mathlib.Data.Nat.Choose.Central
import Mathlib.Data.Nat.Choose.Dvd
import Mathlib.Data.Nat.Choose.Factorization
import Mathlib.Data.Nat.Choose.Sum
import Mathlib.Data.Nat.Choose.Vandermonde
import Mathlib.Data.Nat.Count
import Mathlib.Data.Nat.Digits
import Mathlib.Data.Nat.Dist
import Mathlib.Data.Nat.EvenOddRec
import Mathlib.Data.Nat.Factorial.Basic
import Mathlib.Data.Nat.Factorial.BigOperators
import Mathlib.Data.Nat.Factorial.Cast
import Mathlib.Data.Nat.Factorization.Basic
import Mathlib.Data.Nat.Factorization.PrimePow
import Mathlib.Data.Nat.Factors
import Mathlib.Data.Nat.Fib
import Mathlib.Data.Nat.ForSqrt
import Mathlib.Data.Nat.GCD.Basic
import Mathlib.Data.Nat.GCD.BigOperators
import Mathlib.Data.Nat.Hyperoperation
import Mathlib.Data.Nat.Interval
import Mathlib.Data.Nat.Lattice
import Mathlib.Data.Nat.Log
import Mathlib.Data.Nat.ModEq
import Mathlib.Data.Nat.Multiplicity
import Mathlib.Data.Nat.Order.Basic
import Mathlib.Data.Nat.Order.Lemmas
import Mathlib.Data.Nat.PSub
import Mathlib.Data.Nat.Pairing
import Mathlib.Data.Nat.Parity
import Mathlib.Data.Nat.PartENat
import Mathlib.Data.Nat.Periodic
import Mathlib.Data.Nat.Pow
import Mathlib.Data.Nat.Prime
import Mathlib.Data.Nat.PrimeFin
import Mathlib.Data.Nat.Set
import Mathlib.Data.Nat.Size
import Mathlib.Data.Nat.Sqrt
import Mathlib.Data.Nat.SuccPred
import Mathlib.Data.Nat.Totient
import Mathlib.Data.Nat.Units
import Mathlib.Data.Nat.Upto
import Mathlib.Data.Nat.WithBot
import Mathlib.Data.Num.Basic
import Mathlib.Data.Num.Bitwise
import Mathlib.Data.Opposite
import Mathlib.Data.Option.Basic
import Mathlib.Data.Option.Defs
import Mathlib.Data.Option.NAry
import Mathlib.Data.PEquiv
import Mathlib.Data.PFun
import Mathlib.Data.PFunctor.Multivariate.Basic
import Mathlib.Data.PFunctor.Multivariate.M
import Mathlib.Data.PFunctor.Multivariate.W
import Mathlib.Data.PFunctor.Univariate.Basic
import Mathlib.Data.PFunctor.Univariate.M
import Mathlib.Data.PNat.Basic
import Mathlib.Data.PNat.Defs
import Mathlib.Data.PNat.Factors
import Mathlib.Data.PNat.Find
import Mathlib.Data.PNat.Interval
import Mathlib.Data.PNat.Prime
import Mathlib.Data.PNat.Xgcd
import Mathlib.Data.PSigma.Order
import Mathlib.Data.Part
import Mathlib.Data.Pi.Algebra
import Mathlib.Data.Pi.Interval
import Mathlib.Data.Pi.Lex
import Mathlib.Data.Polynomial.AlgebraMap
import Mathlib.Data.Polynomial.Basic
import Mathlib.Data.Polynomial.CancelLeads
import Mathlib.Data.Polynomial.Cardinal
import Mathlib.Data.Polynomial.Coeff
import Mathlib.Data.Polynomial.Degree.CardPowDegree
import Mathlib.Data.Polynomial.Degree.Definitions
import Mathlib.Data.Polynomial.Degree.Lemmas
import Mathlib.Data.Polynomial.Degree.TrailingDegree
import Mathlib.Data.Polynomial.DenomsClearable
import Mathlib.Data.Polynomial.Derivative
import Mathlib.Data.Polynomial.Div
import Mathlib.Data.Polynomial.EraseLead
import Mathlib.Data.Polynomial.Eval
import Mathlib.Data.Polynomial.FieldDivision
import Mathlib.Data.Polynomial.HasseDeriv
import Mathlib.Data.Polynomial.Identities
import Mathlib.Data.Polynomial.Induction
import Mathlib.Data.Polynomial.Inductions
import Mathlib.Data.Polynomial.IntegralNormalization
import Mathlib.Data.Polynomial.Lifts
import Mathlib.Data.Polynomial.Monic
import Mathlib.Data.Polynomial.Monomial
import Mathlib.Data.Polynomial.Reverse
import Mathlib.Data.Polynomial.RingDivision
import Mathlib.Data.Polynomial.Splits
import Mathlib.Data.Polynomial.Taylor
import Mathlib.Data.Prod.Basic
import Mathlib.Data.Prod.Lex
import Mathlib.Data.Prod.PProd
import Mathlib.Data.Prod.TProd
import Mathlib.Data.QPF.Multivariate.Basic
import Mathlib.Data.QPF.Multivariate.Constructions.Comp
import Mathlib.Data.QPF.Multivariate.Constructions.Const
import Mathlib.Data.QPF.Multivariate.Constructions.Fix
import Mathlib.Data.QPF.Multivariate.Constructions.Prj
import Mathlib.Data.QPF.Multivariate.Constructions.Quot
import Mathlib.Data.QPF.Multivariate.Constructions.Sigma
import Mathlib.Data.Quot
import Mathlib.Data.Rat.Basic
import Mathlib.Data.Rat.BigOperators
import Mathlib.Data.Rat.Cast
import Mathlib.Data.Rat.Defs
import Mathlib.Data.Rat.Denumerable
import Mathlib.Data.Rat.Encodable
import Mathlib.Data.Rat.Floor
import Mathlib.Data.Rat.Init
import Mathlib.Data.Rat.Lemmas
import Mathlib.Data.Rat.NNRat
import Mathlib.Data.Rat.Order
import Mathlib.Data.Rat.Sqrt
import Mathlib.Data.Real.Basic
import Mathlib.Data.Real.CauSeq
import Mathlib.Data.Real.CauSeqCompletion
import Mathlib.Data.Real.ConjugateExponents
import Mathlib.Data.Real.ENNReal
import Mathlib.Data.Real.ENatENNReal
import Mathlib.Data.Real.EReal
import Mathlib.Data.Real.NNReal
import Mathlib.Data.Real.Pointwise
import Mathlib.Data.Real.Sign
import Mathlib.Data.Real.Sqrt
import Mathlib.Data.Rel
import Mathlib.Data.Semiquot
import Mathlib.Data.Seq.Computation
import Mathlib.Data.Set.Accumulate
import Mathlib.Data.Set.Basic
import Mathlib.Data.Set.BoolIndicator
import Mathlib.Data.Set.Constructions
import Mathlib.Data.Set.Countable
import Mathlib.Data.Set.Enumerate
import Mathlib.Data.Set.Equitable
import Mathlib.Data.Set.Finite
import Mathlib.Data.Set.Function
import Mathlib.Data.Set.Functor
import Mathlib.Data.Set.Image
import Mathlib.Data.Set.Intervals.Basic
import Mathlib.Data.Set.Intervals.Disjoint
import Mathlib.Data.Set.Intervals.Group
import Mathlib.Data.Set.Intervals.Infinite
import Mathlib.Data.Set.Intervals.Instances
import Mathlib.Data.Set.Intervals.IsoIoo
import Mathlib.Data.Set.Intervals.Monoid
import Mathlib.Data.Set.Intervals.Monotone
import Mathlib.Data.Set.Intervals.OrdConnected
import Mathlib.Data.Set.Intervals.OrdConnectedComponent
import Mathlib.Data.Set.Intervals.OrderIso
import Mathlib.Data.Set.Intervals.Pi
import Mathlib.Data.Set.Intervals.ProjIcc
import Mathlib.Data.Set.Intervals.SurjOn
import Mathlib.Data.Set.Intervals.UnorderedInterval
import Mathlib.Data.Set.Intervals.WithBotTop
import Mathlib.Data.Set.Lattice
import Mathlib.Data.Set.MulAntidiagonal
import Mathlib.Data.Set.NAry
import Mathlib.Data.Set.Opposite
import Mathlib.Data.Set.Pairwise.Basic
import Mathlib.Data.Set.Pairwise.Lattice
import Mathlib.Data.Set.Pointwise.Basic
import Mathlib.Data.Set.Pointwise.BigOperators
import Mathlib.Data.Set.Pointwise.Finite
import Mathlib.Data.Set.Pointwise.Interval
import Mathlib.Data.Set.Pointwise.Iterate
import Mathlib.Data.Set.Pointwise.ListOfFn
import Mathlib.Data.Set.Pointwise.SMul
import Mathlib.Data.Set.Pointwise.Support
import Mathlib.Data.Set.Prod
import Mathlib.Data.Set.Semiring
import Mathlib.Data.Set.Sigma
import Mathlib.Data.Set.Sups
import Mathlib.Data.Set.UnionLift
import Mathlib.Data.SetLike.Basic
import Mathlib.Data.SetLike.Fintype
import Mathlib.Data.Setoid.Basic
import Mathlib.Data.Setoid.Partition
import Mathlib.Data.Sigma.Basic
import Mathlib.Data.Sigma.Interval
import Mathlib.Data.Sigma.Lex
import Mathlib.Data.Sigma.Order
import Mathlib.Data.Sign
import Mathlib.Data.Stream.Defs
import Mathlib.Data.Stream.Init
import Mathlib.Data.String.Defs
import Mathlib.Data.String.Lemmas