From a5ff8efe5b5e314e0aa759318e5fb194e066f612 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Tue, 14 Apr 2026 16:04:44 +0200 Subject: update lean --- Nominal/Equivariance.lean | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'Nominal/Equivariance.lean') 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 -- cgit v1.3.1