@@ -319,50 +319,49 @@ open MulOpposite
319
319
320
320
/-- Inversion on a group is a `MulEquiv` to the opposite group. When `G` is commutative, there is
321
321
`MulEquiv.inv`. -/
322
- @[to_additive
322
+ @[to_additive (attr := simps (config := { fullyApplied := false , simpRhs := true }))
323
323
"Negation on an additive group is an `AddEquiv` to the opposite group. When `G`
324
- is commutative, there is `AddEquiv.inv`." ,
325
- simps (config := { fullyApplied := false , simpRhs := true })]
324
+ is commutative, there is `AddEquiv.inv`." ]
326
325
def MulEquiv.inv' (G : Type _) [DivisionMonoid G] : G ≃* Gᵐᵒᵖ :=
327
326
{ (Equiv.inv G).trans opEquiv with map_mul' := fun x y => unop_injective <| mul_inv_rev x y }
328
327
#align mul_equiv.inv' MulEquiv.inv'
329
328
#align add_equiv.neg' AddEquiv.neg'
330
329
#align mul_equiv.inv'_symm_apply MulEquiv.inv'_symmApply
330
+ #align add_equiv.inv'_symm_apply AddEquiv.neg'_symmApply
331
331
332
332
/-- A semigroup homomorphism `f : M →ₙ* N` such that `f x` commutes with `f y` for all `x, y`
333
333
defines a semigroup homomorphism to `Nᵐᵒᵖ`. -/
334
- @[to_additive
334
+ @[to_additive (attr := simps (config := { fullyApplied := false }))
335
335
"An additive semigroup homomorphism `f : AddHom M N` such that `f x` additively
336
- commutes with `f y` for all `x, y` defines an additive semigroup homomorphism to `Sᵃᵒᵖ`." ,
337
- simps (config := { fullyApplied := false })]
336
+ commutes with `f y` for all `x, y` defines an additive semigroup homomorphism to `Sᵃᵒᵖ`." ]
338
337
def MulHom.toOpposite {M N : Type _} [Mul M] [Mul N] (f : M →ₙ* N)
339
338
(hf : ∀ x y, Commute (f x) (f y)) : M →ₙ* Nᵐᵒᵖ where
340
339
toFun := op ∘ f
341
340
map_mul' x y := by simp [(hf x y).eq]
342
341
#align mul_hom.to_opposite MulHom.toOpposite
343
342
#align add_hom.to_opposite AddHom.toOpposite
344
343
#align mul_hom.to_opposite_apply MulHom.toOpposite_apply
344
+ #align add_hom.to_opposite_apply AddHom.toOpposite_apply
345
345
346
346
/-- A semigroup homomorphism `f : M →ₙ* N` such that `f x` commutes with `f y` for all `x, y`
347
347
defines a semigroup homomorphism from `Mᵐᵒᵖ`. -/
348
- @[to_additive
348
+ @[to_additive (attr := simps (config := { fullyApplied := false }))
349
349
"An additive semigroup homomorphism `f : AddHom M N` such that `f x` additively
350
- commutes with `f y` for all `x`, `y` defines an additive semigroup homomorphism from `Mᵃᵒᵖ`." ,
351
- simps (config := { fullyApplied := false })]
350
+ commutes with `f y` for all `x`, `y` defines an additive semigroup homomorphism from `Mᵃᵒᵖ`." ]
352
351
def MulHom.fromOpposite {M N : Type _} [Mul M] [Mul N] (f : M →ₙ* N)
353
352
(hf : ∀ x y, Commute (f x) (f y)) : Mᵐᵒᵖ →ₙ* N where
354
353
toFun := f ∘ MulOpposite.unop
355
354
map_mul' _ _ := (f.map_mul _ _).trans (hf _ _).eq
356
355
#align mul_hom.from_opposite MulHom.fromOpposite
357
356
#align add_hom.from_opposite AddHom.fromOpposite
358
357
#align mul_hom.from_opposite_apply MulHom.fromOpposite_apply
358
+ #align add_hom.from_opposite_apply AddHom.fromOpposite_apply
359
359
360
360
/-- A monoid homomorphism `f : M →* N` such that `f x` commutes with `f y` for all `x, y` defines
361
361
a monoid homomorphism to `Nᵐᵒᵖ`. -/
362
- @[to_additive
362
+ @[to_additive (attr := simps (config := { fullyApplied := false }))
363
363
"An additive monoid homomorphism `f : M →+ N` such that `f x` additively commutes
364
- with `f y` for all `x, y` defines an additive monoid homomorphism to `Sᵃᵒᵖ`." ,
365
- simps (config := { fullyApplied := false })]
364
+ with `f y` for all `x, y` defines an additive monoid homomorphism to `Sᵃᵒᵖ`." ]
366
365
def MonoidHom.toOpposite {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
367
366
(hf : ∀ x y, Commute (f x) (f y)) : M →* Nᵐᵒᵖ where
368
367
toFun := op ∘ f
@@ -371,13 +370,13 @@ def MonoidHom.toOpposite {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M
371
370
#align monoid_hom.to_opposite MonoidHom.toOpposite
372
371
#align add_monoid_hom.to_opposite AddMonoidHom.toOpposite
373
372
#align monoid_hom.to_opposite_apply MonoidHom.toOpposite_apply
373
+ #align add_monoid_hom.to_opposite_apply AddMonoidHom.toOpposite_apply
374
374
375
375
/-- A monoid homomorphism `f : M →* N` such that `f x` commutes with `f y` for all `x, y` defines
376
376
a monoid homomorphism from `Mᵐᵒᵖ`. -/
377
- @[to_additive
377
+ @[to_additive (attr := simps (config := { fullyApplied := false }))
378
378
"An additive monoid homomorphism `f : M →+ N` such that `f x` additively commutes
379
- with `f y` for all `x`, `y` defines an additive monoid homomorphism from `Mᵃᵒᵖ`." ,
380
- simps (config := { fullyApplied := false })]
379
+ with `f y` for all `x`, `y` defines an additive monoid homomorphism from `Mᵃᵒᵖ`." ]
381
380
def MonoidHom.fromOpposite {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
382
381
(hf : ∀ x y, Commute (f x) (f y)) : Mᵐᵒᵖ →* N where
383
382
toFun := f ∘ MulOpposite.unop
@@ -386,6 +385,7 @@ def MonoidHom.fromOpposite {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M
386
385
#align monoid_hom.from_opposite MonoidHom.fromOpposite
387
386
#align add_monoid_hom.from_opposite AddMonoidHom.fromOpposite
388
387
#align monoid_hom.from_opposite_apply MonoidHom.fromOpposite_apply
388
+ #align add_monoid_hom.from_opposite_apply AddMonoidHom.fromOpposite_apply
389
389
390
390
/-- The units of the opposites are equivalent to the opposites of the units. -/
391
391
@[to_additive
@@ -416,32 +416,28 @@ theorem Units.coe_opEquiv_symm {M} [Monoid M] (u : Mˣᵐᵒᵖ) :
416
416
417
417
/-- A semigroup homomorphism `M →ₙ* N` can equivalently be viewed as a semigroup homomorphism
418
418
`Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ`. This is the action of the (fully faithful) `ᵐᵒᵖ`-functor on morphisms. -/
419
- @[to_additive
419
+ @[to_additive (attr := simps)
420
420
"An additive semigroup homomorphism `AddHom M N` can equivalently be viewed as an
421
421
additive semigroup homomorphism `AddHom Mᵃᵒᵖ Nᵃᵒᵖ`. This is the action of the
422
- (fully faithful)`ᵃᵒᵖ`-functor on morphisms." ,
423
- simps]
422
+ (fully faithful)`ᵃᵒᵖ`-functor on morphisms." ]
424
423
def MulHom.op {M N} [Mul M] [Mul N] : (M →ₙ* N) ≃ (Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ) where
425
424
toFun f :=
426
425
{ toFun := MulOpposite.op ∘ f ∘ unop,
427
426
map_mul' := fun x y => unop_injective (f.map_mul y.unop x.unop) }
428
427
invFun f :=
429
428
{ toFun := unop ∘ f ∘ MulOpposite.op,
430
429
map_mul' := fun x y => congrArg unop (f.map_mul (MulOpposite.op y) (MulOpposite.op x)) }
431
- left_inv f := by
432
- ext
433
- rfl
434
- right_inv f := by
435
- ext x
436
- simp
430
+ left_inv _ := rfl
431
+ right_inv _ := rfl
437
432
#align mul_hom.op MulHom.op
438
433
#align add_hom.op AddHom.op
439
434
#align mul_hom.op_symm_apply_apply MulHom.op_symm_apply_apply
440
435
#align mul_hom.op_apply_apply MulHom.op_apply_apply
436
+ #align add_hom.op_symm_apply_apply AddHom.op_symm_apply_apply
437
+ #align add_hom.op_apply_apply AddHom.op_apply_apply
441
438
442
439
/-- The 'unopposite' of a semigroup homomorphism `Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ`. Inverse to `MulHom.op`. -/
443
- @[simp,
444
- to_additive
440
+ @[to_additive (attr := simp)
445
441
"The 'unopposite' of an additive semigroup homomorphism `Mᵃᵒᵖ →ₙ+ Nᵃᵒᵖ`. Inverse
446
442
to `AddHom.op`." ]
447
443
def MulHom.unop {M N} [Mul M] [Mul N] : (Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ) ≃ (M →ₙ* N) :=
@@ -461,14 +457,8 @@ def AddHom.mulOp {M N} [Add M] [Add N] : AddHom M N ≃ AddHom Mᵐᵒᵖ Nᵐ
461
457
{ toFun := MulOpposite.unop ∘ f ∘ MulOpposite.op,
462
458
map_add' :=
463
459
fun x y => congrArg MulOpposite.unop (f.map_add (MulOpposite.op x) (MulOpposite.op y)) }
464
- left_inv f := by
465
- apply AddHom.ext
466
- intro x
467
- simp
468
- right_inv f := by
469
- apply AddHom.ext
470
- intro x
471
- simp
460
+ left_inv _ := rfl
461
+ right_inv _ := rfl
472
462
#align add_hom.mul_op AddHom.mulOp
473
463
#align add_hom.mul_op_symm_apply_apply AddHom.mulOp_symm_apply_apply
474
464
#align add_hom.mul_op_apply_apply AddHom.mulOp_apply_apply
@@ -482,32 +472,28 @@ def AddHom.mulUnop {α β} [Add α] [Add β] : AddHom αᵐᵒᵖ βᵐᵒᵖ
482
472
483
473
/-- A monoid homomorphism `M →* N` can equivalently be viewed as a monoid homomorphism
484
474
`Mᵐᵒᵖ →* Nᵐᵒᵖ`. This is the action of the (fully faithful) `ᵐᵒᵖ`-functor on morphisms. -/
485
- @[to_additive
475
+ @[to_additive (attr := simps)
486
476
"An additive monoid homomorphism `M →+ N` can equivalently be viewed as an
487
477
additive monoid homomorphism `Mᵃᵒᵖ →+ Nᵃᵒᵖ`. This is the action of the (fully faithful)
488
- `ᵃᵒᵖ`-functor on morphisms." ,
489
- simps]
478
+ `ᵃᵒᵖ`-functor on morphisms." ]
490
479
def MonoidHom.op {M N} [MulOneClass M] [MulOneClass N] : (M →* N) ≃ (Mᵐᵒᵖ →* Nᵐᵒᵖ) where
491
480
toFun f :=
492
481
{ toFun := MulOpposite.op ∘ f ∘ unop, map_one' := congrArg MulOpposite.op f.map_one,
493
482
map_mul' := fun x y => unop_injective (f.map_mul y.unop x.unop) }
494
483
invFun f :=
495
484
{ toFun := unop ∘ f ∘ MulOpposite.op, map_one' := congrArg unop f.map_one,
496
485
map_mul' := fun x y => congrArg unop (f.map_mul (MulOpposite.op y) (MulOpposite.op x)) }
497
- left_inv f := by
498
- ext
499
- rfl
500
- right_inv f := by
501
- ext x
502
- simp
486
+ left_inv _ := rfl
487
+ right_inv _ := rfl
503
488
#align monoid_hom.op MonoidHom.op
504
489
#align add_monoid_hom.op AddMonoidHom.op
505
490
#align monoid_hom.op_apply_apply MonoidHom.op_apply_apply
506
491
#align monoid_hom.op_symm_apply_apply MonoidHom.op_symm_apply_apply
492
+ #align add_monoid_hom.op_apply_apply AddMonoidHom.op_apply_apply
493
+ #align add_monoid_hom.op_symm_apply_apply AddMonoidHom.op_symm_apply_apply
507
494
508
495
/-- The 'unopposite' of a monoid homomorphism `Mᵐᵒᵖ →* Nᵐᵒᵖ`. Inverse to `MonoidHom.op`. -/
509
- @[simp,
510
- to_additive
496
+ @[to_additive (attr := simps)
511
497
"The 'unopposite' of an additive monoid homomorphism `Mᵃᵒᵖ →+ Nᵃᵒᵖ`. Inverse to
512
498
`AddMonoidHom.op`." ]
513
499
def MonoidHom.unop {M N} [MulOneClass M] [MulOneClass N] : (Mᵐᵒᵖ →* Nᵐᵒᵖ) ≃ (M →* N) :=
@@ -527,14 +513,8 @@ def AddMonoidHom.mulOp {M N} [AddZeroClass M] [AddZeroClass N] : (M →+ N) ≃
527
513
map_zero' := congrArg MulOpposite.unop f.map_zero,
528
514
map_add' :=
529
515
fun x y => congrArg MulOpposite.unop (f.map_add (MulOpposite.op x) (MulOpposite.op y)) }
530
- left_inv f := by
531
- apply AddMonoidHom.ext
532
- intro
533
- simp [MulOpposite.op, MulOpposite.unop]
534
- right_inv f := by
535
- apply AddMonoidHom.ext
536
- intro
537
- simp
516
+ left_inv _ := rfl
517
+ right_inv _ := rfl
538
518
#align add_monoid_hom.mul_op AddMonoidHom.mulOp
539
519
#align add_monoid_hom.mul_op_symm_apply_apply AddMonoidHom.mulOp_symm_apply_apply
540
520
#align add_monoid_hom.mul_op_apply_apply AddMonoidHom.mulOp_apply_apply
@@ -551,14 +531,8 @@ def AddMonoidHom.mulUnop {α β} [AddZeroClass α] [AddZeroClass β] : (αᵐᵒ
551
531
def AddEquiv.mulOp {α β} [Add α] [Add β] : α ≃+ β ≃ (αᵐᵒᵖ ≃+ βᵐᵒᵖ) where
552
532
toFun f := opAddEquiv.symm.trans (f.trans opAddEquiv)
553
533
invFun f := opAddEquiv.trans (f.trans opAddEquiv.symm)
554
- left_inv f := by
555
- apply AddEquiv.ext
556
- intro
557
- simp [MulOpposite.op, MulOpposite.unop]
558
- right_inv f := by
559
- apply AddEquiv.ext
560
- intro
561
- rfl
534
+ left_inv _ := rfl
535
+ right_inv _ := rfl
562
536
#align add_equiv.mul_op AddEquiv.mulOp
563
537
#align add_equiv.mul_op_apply AddEquiv.mulOp_apply
564
538
#align add_equiv.mul_op_symm_apply AddEquiv.mulOp_symm_apply
@@ -570,8 +544,7 @@ def AddEquiv.mulUnop {α β} [Add α] [Add β] : αᵐᵒᵖ ≃+ βᵐᵒᵖ
570
544
#align add_equiv.mul_unop AddEquiv.mulUnop
571
545
572
546
/-- A iso `α ≃* β` can equivalently be viewed as an iso `αᵐᵒᵖ ≃* βᵐᵒᵖ`. -/
573
- @[to_additive
574
- "A iso `α ≃+ β` can equivalently be viewed as an iso `αᵃᵒᵖ ≃+ βᵃᵒᵖ`." , simps]
547
+ @[to_additive (attr := simps) "A iso `α ≃+ β` can equivalently be viewed as an iso `αᵃᵒᵖ ≃+ βᵃᵒᵖ`."]
575
548
def MulEquiv.op {α β} [Mul α] [Mul β] : α ≃* β ≃ (αᵐᵒᵖ ≃* βᵐᵒᵖ) where
576
549
toFun f :=
577
550
{ toFun := MulOpposite.op ∘ f ∘ unop, invFun := MulOpposite.op ∘ f.symm ∘ unop,
@@ -583,19 +556,18 @@ def MulEquiv.op {α β} [Mul α] [Mul β] : α ≃* β ≃ (αᵐᵒᵖ ≃* β
583
556
left_inv := fun x => by simp,
584
557
right_inv := fun x => by simp,
585
558
map_mul' := fun x y => congr_arg unop (f.map_mul (MulOpposite.op y) (MulOpposite.op x)) }
586
- left_inv f := by
587
- ext
588
- rfl
589
- right_inv f := by
590
- ext
591
- simp
592
- rfl
559
+ left_inv _ := rfl
560
+ right_inv _ := rfl
593
561
#align mul_equiv.op MulEquiv.op
594
562
#align add_equiv.op AddEquiv.op
595
563
#align mul_equiv.op_symm_apply_symm_apply MulEquiv.op_symm_apply_symmApply
596
564
#align mul_equiv.op_apply_apply MulEquiv.op_apply_apply
597
565
#align mul_equiv.op_apply_symm_apply MulEquiv.op_apply_symmApply
598
566
#align mul_equiv.op_symm_apply_apply MulEquiv.op_symm_apply_apply
567
+ #align add_equiv.op_symm_apply_symm_apply AddEquiv.op_symm_apply_symmApply
568
+ #align add_equiv.op_apply_apply AddEquiv.op_apply_apply
569
+ #align add_equiv.op_apply_symm_apply AddEquiv.op_apply_symmApply
570
+ #align add_equiv.op_symm_apply_apply AddEquiv.op_symm_apply_apply
599
571
600
572
/-- The 'unopposite' of an iso `αᵐᵒᵖ ≃* βᵐᵒᵖ`. Inverse to `MulEquiv.op`. -/
601
573
@[to_additive (attr := simp)
0 commit comments