summaryrefslogtreecommitdiff
path: root/Nominal/Equivariance.lean
diff options
context:
space:
mode:
Diffstat (limited to 'Nominal/Equivariance.lean')
-rw-r--r--Nominal/Equivariance.lean16
1 files changed, 16 insertions, 0 deletions
diff --git a/Nominal/Equivariance.lean b/Nominal/Equivariance.lean
index 50cf7c2..57c6d11 100644
--- a/Nominal/Equivariance.lean
+++ b/Nominal/Equivariance.lean
@@ -161,6 +161,17 @@ lemma supp_eq_if_inj {x : X} {f : X โ†’ Y} : Equivariant ๐”ธ f โ†’ Function.Inj
end Equivariant
+/-- If there is an equivariant surjection from a nominal set into an (FPerm ๐”ธ)-Set, then that set is nominal. -/
+def NominalSet.fromEquivariantSurjective {X Y : Type} [NominalSet ๐”ธ X] [PermSet ๐”ธ Y] (f : X โ†’ Y) (hequi : Equivariant ๐”ธ f) (hsurj : Function.Surjective f) : NominalSet ๐”ธ Y where
+ fin_supp := by
+ intro y
+ obtain โŸจx, hxโŸฉ := hsurj y
+ use (NominalSet.supp ๐”ธ x)
+ constructor
+ ยท rw [โ† hx]
+ exact Equivariant.preserve_support ๐”ธ hequi (supp_is_support ๐”ธ)
+ ยท exact supp_finite ๐”ธ
+
/-- supp is an equivariant function. -/
lemma NominalSet.supp_equivariant : Equivariant ๐”ธ (supp ๐”ธ : X โ†’ Set ๐”ธ) := by
intro x ฯ€; ext a; constructor
@@ -182,6 +193,11 @@ lemma NominalSet.supp_equivariant : Equivariant ๐”ธ (supp ๐”ธ : X โ†’ Set ๐”ธ
ยท apply Set.Finite.smul_set
exact hS.out.right
+/-- Freshness is an equivariant relation. -/
+lemma NominalSet.fresh_equivariant : EquivariantRelation ๐”ธ (NominalSet.IsFresh : ๐”ธ โ†’ X โ†’ Prop) := by
+ intro x y ฯ€ h
+ rwa [IsFresh, supp_equivariant, Set.smul_mem_smul_set_iff]
+
end Nominal
/-!