From 8fdf459876b999dbe184196f9abd330a3c24d560 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 4 Dec 2025 17:14:46 +0100 Subject: implement derivable equality --- Nominal/Instances/Basic.lean | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Nominal/Instances') diff --git a/Nominal/Instances/Basic.lean b/Nominal/Instances/Basic.lean index dcca75b..64b6425 100644 --- a/Nominal/Instances/Basic.lean +++ b/Nominal/Instances/Basic.lean @@ -70,6 +70,21 @@ def NominalSet.mkDiscrete (X : Type) : NominalSet.Discrete ๐”ธ X where ยท intro ฯ€ hฯ€; simp only [PermSet.fix', Set.mem_setOf_eq]; rfl ยท exact Set.finite_empty +instance {X : Type} [NominalSet.Discrete ๐”ธ X] [Finite X] : OrbitFinite ๐”ธ X where + fin_orbits := Finite.of_equiv X + { toFun x := Quotient.mk _ x + invFun x := x.out + left_inv x := by + suffices โˆ€ (x y : X), MulAction.orbitRel (FPerm ๐”ธ) X x y โ†’ x = y by + apply this + rw [โ† Quotient.eq] + apply Quotient.out_eq + intro x y โŸจฯ€, hฯ€โŸฉ + simp only [NominalSet.Discrete.is_discrete] at hฯ€ + exact hฯ€.symm + right_inv x := by simp + } + @[simp] lemma NominalSet.Discrete.supp {X : Type} [NominalSet.Discrete ๐”ธ X] {x : X} : supp ๐”ธ x = โˆ… := by rw [โ† Set.subset_empty_iff] apply Set.sInter_subset_of_mem -- cgit v1.3.1