summaryrefslogtreecommitdiff
path: root/Nominal/Equivariance.lean
diff options
context:
space:
mode:
Diffstat (limited to 'Nominal/Equivariance.lean')
-rw-r--r--Nominal/Equivariance.lean9
1 files changed, 6 insertions, 3 deletions
diff --git a/Nominal/Equivariance.lean b/Nominal/Equivariance.lean
index 2682a55..e9bd850 100644
--- a/Nominal/Equivariance.lean
+++ b/Nominal/Equivariance.lean
@@ -25,7 +25,7 @@ class inductive Function.Equivariant (f : X โ†’ Y) : Prop
lemma Function.equivariant (f : X โ†’ Y) [Equivariant ๐”ธ f] :
โˆ€ (x : X) (ฯ€ : FPerm ๐”ธ), f (ฯ€ โ€ข x) = ฯ€ โ€ข f x := by
- cases (inferInstanceAs (Equivariant ๐”ธ f)); assumption
+ cases (inferInstance : Equivariant ๐”ธ f); assumption
/-- A set is equivariant if it is closed under permutations. -/
class inductive Set.Equivariant (S : Set X) : Prop
@@ -34,7 +34,7 @@ class inductive Set.Equivariant (S : Set X) : Prop
/-- For equivariant sets, we even have "if and only if". -/
lemma Set.equivariant (S : Set X) [Equivariant ๐”ธ S] :
โˆ€ (x : X) (ฯ€ : FPerm ๐”ธ), x โˆˆ S โ†” ฯ€ โ€ข x โˆˆ S := by
- cases (inferInstanceAs (Equivariant ๐”ธ S)); rename_i h
+ cases (inferInstance : Equivariant ๐”ธ S); rename_i h
intro x ฯ€; constructor
ยท intro hx; exact h x ฯ€ hx
ยท intro hx
@@ -49,7 +49,7 @@ class inductive Rel.Equivariant (R : Rel X Y) : Prop
/-- For equivariant relations, we even have "if and only if". -/
lemma Rel.equivariant (R : Rel X Y) [Rel.Equivariant ๐”ธ R] :
โˆ€ (x : X) (y : Y) (ฯ€ : FPerm ๐”ธ), R x y โ†” R (ฯ€ โ€ข x) (ฯ€ โ€ข y) := by
- cases (inferInstanceAs (Equivariant ๐”ธ R)); rename_i h
+ cases (inferInstance : Equivariant ๐”ธ R); rename_i h
intro x y ฯ€; constructor
ยท intro hxy; exact h x y ฯ€ hxy
ยท intro hxy
@@ -83,6 +83,7 @@ instance Function.Equivariant.comp
_ = ฯ€ โ€ข (f (g x)) := by rw [โ† Function.equivariant ๐”ธ f]
/-- If a function is equivariant, its inverse is also equivariant. -/
+@[reducible]
def Function.Equivariant.inv
{f : X โ†’ Y} [Function.Equivariant ๐”ธ f] {inv : Y โ†’ X}
(hleft : Function.LeftInverse inv f)
@@ -191,6 +192,7 @@ lemma preserve_fresh_inj {a : ๐”ธ} {x : X} {f : X โ†’ Y} [Equivariant ๐”ธ f] :
end Function.Equivariant
/-- If there is an equivariant surjection from a nominal set into an (FPerm ๐”ธ)-Set, then that set is nominal. -/
+@[reducible]
def NominalSet.ofEquivariantSurjective
{X Y : Type} [NominalSet ๐”ธ X] [PermSet ๐”ธ Y]
(f : X โ†’ Y) [Function.Equivariant ๐”ธ f] (hsurj : Function.Surjective f) :
@@ -385,6 +387,7 @@ instance EquivariantEquiv.invFunEquivariant
equiv.invFun_equivariant
/-- If an (FPerm ๐”ธ)-Set is equivalent to a nominal set, it is also a nominal set. -/
+@[reducible]
def NominalSet.ofEquivariantEquiv {X Y : Type} [PermSet ๐”ธ X] [NominalSet ๐”ธ Y] (equiv : EquivariantEquiv ๐”ธ X Y) : NominalSet ๐”ธ X :=
NominalSet.ofEquivariantSurjective ๐”ธ equiv.invFun equiv.symm.surjective