From c3700706466cb8fb9ed287ea066b656caacdc9c7 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Sat, 25 Oct 2025 01:07:56 +0200 Subject: start working on alpha equivalence proofs --- Nominal/Equivariance.lean | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Nominal/Equivariance.lean') 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 /-! -- cgit v1.3.1