diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-10-21 23:51:23 +0200 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-10-22 00:11:09 +0200 |
| commit | 1207e99c440de6af718a7fdef1810b726925cdb9 (patch) | |
| tree | 28e3fda5265142d000364a38649c46b2001d766a /Nominal/Instances.lean | |
| parent | e1ec8bf9ae213f329a21c25743a0afbd96d99630 (diff) | |
further simplifications
Diffstat (limited to 'Nominal/Instances.lean')
| -rw-r--r-- | Nominal/Instances.lean | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/Nominal/Instances.lean b/Nominal/Instances.lean index 793baa4..bf1d372 100644 --- a/Nominal/Instances.lean +++ b/Nominal/Instances.lean @@ -23,34 +23,28 @@ instance : NominalSet 𝔸 𝔸 where fin_supp := by intro a use {a} - constructor - · exact NominalSet.supp_atoms' 𝔸 - · simp + exact ⟨NominalSet.supp_atoms' 𝔸, Set.finite_singleton a⟩ lemma NominalSet.supp_atoms [Infinite 𝔸] [DecidableEq 𝔸] {a : 𝔸} : supp 𝔸 a = {a} := by ext b; constructor · apply support_subset_supp · apply NominalSet.supp_atoms' - · simp - · suffices : a ∈ supp 𝔸 a - · simp; intro h; rw [h]; assumption - · intro S ⟨hsuppS, hfinS⟩ - by_contra ha - obtain ⟨c, hc⟩ := Infinite.exists_notMem_finset ({a} ∪ hfinS.toFinset) - simp at hc - have hfix : ⸨a, c⸩ ∈ PermSet.fix 𝔸 S := by - intro d hd - rw [show ⸨a,c⸩ • d = (Equiv.swap a c) d from rfl] - apply Equiv.Perm.supp_notin - simp [Equiv.Perm.supp_swap, Ne.symm hc.left] - exact ⟨ne_of_mem_of_not_mem hd ha, ne_of_mem_of_not_mem hd hc.right⟩ - have ha₁ : ⸨a, c⸩ • a = c := by - simp [show ⸨a,c⸩ • a = (Equiv.swap a c) a from rfl] - have ha₂ : ⸨a, c⸩ • a = a := by - specialize hsuppS hfix - simpa [PermSet.fix'] - rw [ha₁] at ha₂ - exact hc.left ha₂ + · apply Set.finite_singleton + · suffices a ∈ supp 𝔸 a by simp; intro h; rwa [h] + intro S ⟨hsuppS, hfinS⟩ + by_contra ha + -- Show that we can find a fresh c with (a c) ∈ fix S + obtain ⟨c, hc⟩ := Infinite.exists_notMem_finset ({a} ∪ hfinS.toFinset) + simp at hc + have hfix : ⸨a, c⸩ ∈ PermSet.fix 𝔸 S := by + intro d hd + apply Equiv.Perm.supp_notin + simp [FPerm.swap, Equiv.Perm.supp_swap, Ne.symm hc.left] + exact ⟨ne_of_mem_of_not_mem hd ha, ne_of_mem_of_not_mem hd hc.right⟩ + have h₁ : ⸨a, c⸩ • a = c := by simp [show ⸨a,c⸩ • a = (Equiv.swap a c) a from rfl] + have h₂ : ⸨a, c⸩ • a = a := by apply hsuppS; assumption + rw [h₁] at h₂ + exact hc.left h₂ end Atoms @@ -71,15 +65,13 @@ def NominalSet.discrete (X : Type) : DiscreteNominalSet 𝔸 X where use {} constructor · intro π hπ; simp [PermSet.fix']; rfl - · simp + · exact Set.finite_empty lemma NominalSet.supp_discrete {X : Type} [DiscreteNominalSet 𝔸 X] {x : X} : supp 𝔸 x = ∅ := by rw [← Set.subset_empty_iff] apply Set.sInter_subset_of_mem constructor - · intro π hπ - simp [PermSet.fix'] - exact DiscreteNominalSet.is_discrete x π + · intro π hπ; simp [PermSet.fix', DiscreteNominalSet.is_discrete] · exact Set.finite_empty /-- We consider Unit a discrete nominal set. -/ |
