Skip to content

Commit 8aef1f5

Browse files
committed
feat: tautological action of RelIso on the ground type (#21024)
This will be useful to make order isomorphisms act on flags. Also add the monoid structure on `r →r r` and `r ↪r r` and the corresponding tautological actions. From MiscYD
1 parent 7992cf8 commit 8aef1f5

File tree

4 files changed

+111
-10
lines changed

4 files changed

+111
-10
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,7 @@ import Mathlib.Algebra.Order.Floor.Div
749749
import Mathlib.Algebra.Order.Floor.Prime
750750
import Mathlib.Algebra.Order.Group.Abs
751751
import Mathlib.Algebra.Order.Group.Action
752+
import Mathlib.Algebra.Order.Group.Action.End
752753
import Mathlib.Algebra.Order.Group.Action.Synonym
753754
import Mathlib.Algebra.Order.Group.Basic
754755
import Mathlib.Algebra.Order.Group.Bounds

Mathlib/Algebra/Group/Action/End.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ This is generalized to bundled endomorphisms by:
4545
* `RingHom.applyMulSemiringAction`
4646
* `RingAut.applyMulSemiringAction`
4747
* `AlgEquiv.applyMulSemiringAction`
48+
* `RelHom.applyMulAction`
49+
* `RelEmbedding.applyMulAction`
50+
* `RelIso.applyMulAction`
4851
-/
4952
instance applyMulAction : MulAction (Function.End α) α where
5053
smul := (· <| ·)
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/-
2+
Copyright (c) 2022 Yaël Dillies. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Yaël Dillies
5+
-/
6+
import Mathlib.Algebra.Group.Action.Faithful
7+
import Mathlib.Algebra.Order.Group.End
8+
import Mathlib.Order.RelIso.Basic
9+
10+
/-!
11+
# Tautological action by relation automorphisms
12+
-/
13+
14+
assert_not_exists MonoidWithZero
15+
16+
namespace RelHom
17+
variable {α : Type*} {r : α → α → Prop}
18+
19+
/-- The tautological action by `r →r r` on `α`. -/
20+
instance applyMulAction : MulAction (r →r r) α where
21+
smul := (⇑)
22+
one_smul _ := rfl
23+
mul_smul _ _ _ := rfl
24+
25+
@[simp] lemma smul_def (f : r →r r) (a : α) : f • a = f a := rfl
26+
27+
instance apply_faithfulSMul : FaithfulSMul (r →r r) α where eq_of_smul_eq_smul h := RelHom.ext h
28+
29+
end RelHom
30+
31+
namespace RelEmbedding
32+
variable {α : Type*} {r : α → α → Prop}
33+
34+
/-- The tautological action by `r ↪r r` on `α`. -/
35+
instance applyMulAction : MulAction (r ↪r r) α where
36+
smul := (⇑)
37+
one_smul _ := rfl
38+
mul_smul _ _ _ := rfl
39+
40+
@[simp] lemma smul_def (f : r ↪r r) (a : α) : f • a = f a := rfl
41+
42+
instance apply_faithfulSMul : FaithfulSMul (r ↪r r) α where eq_of_smul_eq_smul h := ext h
43+
44+
end RelEmbedding
45+
46+
namespace RelIso
47+
variable {α : Type*} {r : α → α → Prop}
48+
49+
/-- The tautological action by `r ≃r r` on `α`. -/
50+
instance applyMulAction : MulAction (r ≃r r) α where
51+
smul := (⇑)
52+
one_smul _ := rfl
53+
mul_smul _ _ _ := rfl
54+
55+
@[simp] lemma smul_def (f : r ≃r r) (a : α) : f • a = f a := rfl
56+
57+
instance apply_faithfulSMul : FaithfulSMul (r ≃r r) α where eq_of_smul_eq_smul h := RelIso.ext h
58+
59+
end RelIso

Mathlib/Algebra/Order/Group/End.lean

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,65 @@ assert_not_exists MulAction MonoidWithZero
1414

1515
variable {α : Type*} {r : α → α → Prop}
1616

17+
namespace RelHom
18+
19+
instance : Monoid (r →r r) where
20+
one := .id r
21+
mul := .comp
22+
mul_assoc _ _ _ := rfl
23+
one_mul _ := rfl
24+
mul_one _ := rfl
25+
26+
lemma one_def : (1 : r →r r) = .id r := rfl
27+
lemma mul_def (f g : r →r r) : (f * g) = f.comp g := rfl
28+
29+
@[simp] lemma coe_one : ⇑(1 : r →r r) = id := rfl
30+
@[simp] lemma coe_mul (f g : r →r r) : ⇑(f * g) = f ∘ g := rfl
31+
32+
lemma one_apply (a : α) : (1 : r →r r) a = a := rfl
33+
lemma mul_apply (e₁ e₂ : r →r r) (x : α) : (e₁ * e₂) x = e₁ (e₂ x) := rfl
34+
35+
end RelHom
36+
37+
namespace RelEmbedding
38+
39+
instance : Monoid (r ↪r r) where
40+
one := .refl r
41+
mul f g := g.trans f
42+
mul_assoc _ _ _ := rfl
43+
one_mul _ := rfl
44+
mul_one _ := rfl
45+
46+
lemma one_def : (1 : r ↪r r) = .refl r := rfl
47+
lemma mul_def (f g : r ↪r r) : (f * g) = g.trans f := rfl
48+
49+
@[simp] lemma coe_one : ⇑(1 : r ↪r r) = id := rfl
50+
@[simp] lemma coe_mul (f g : r ↪r r) : ⇑(f * g) = f ∘ g := rfl
51+
52+
lemma one_apply (a : α) : (1 : r ↪r r) a = a := rfl
53+
lemma mul_apply (e₁ e₂ : r ↪r r) (x : α) : (e₁ * e₂) x = e₁ (e₂ x) := rfl
54+
55+
end RelEmbedding
56+
1757
namespace RelIso
1858

1959
instance : Group (r ≃r r) where
20-
one := RelIso.refl r
60+
one := .refl r
2161
mul f₁ f₂ := f₂.trans f₁
22-
inv := RelIso.symm
62+
inv := .symm
2363
mul_assoc _ _ _ := rfl
2464
one_mul _ := ext fun _ => rfl
2565
mul_one _ := ext fun _ => rfl
2666
inv_mul_cancel f := ext f.symm_apply_apply
2767

28-
@[simp]
29-
theorem coe_one : ((1 : r ≃r r) : α → α) = id :=
30-
rfl
68+
lemma one_def : (1 : r ≃r r) = .refl r := rfl
69+
lemma mul_def (f g : r ≃r r) : (f * g) = g.trans f := rfl
3170

32-
@[simp]
33-
theorem coe_mul (e₁ e₂ : r ≃r r) : ((e₁ * e₂) : α → α) = e₁ ∘ e₂ :=
34-
rfl
71+
@[simp] lemma coe_one : ((1 : r ≃r r) : α → α) = id := rfl
72+
@[simp] lemma coe_mul (e₁ e₂ : r ≃r r) : ((e₁ * e₂) : α → α) = e₁ ∘ e₂ := rfl
3573

36-
theorem mul_apply (e₁ e₂ : r ≃r r) (x : α) : (e₁ * e₂) x = e₁ (e₂ x) :=
37-
rfl
74+
lemma one_apply (x : α) : (1 : r ≃r r) x = x := rfl
75+
lemma mul_apply (e₁ e₂ : r ≃r r) (x : α) : (e₁ * e₂) x = e₁ (e₂ x) := rfl
3876

3977
@[simp]
4078
theorem inv_apply_self (e : r ≃r r) (x) : e⁻¹ (e x) = x :=

0 commit comments

Comments
 (0)