diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-10-30 13:11:43 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-10-30 13:11:43 +0100 |
| commit | 80b248c5be656dd2b3ba753871aeeb7102e92ff8 (patch) | |
| tree | 1ff0249d4423514a1d18376748c641876ccde5ba /Nominal/Instances | |
| parent | ca0c7d5e75a631d0e6689ee21d017404046f3f12 (diff) | |
prove supp of preterms
Diffstat (limited to 'Nominal/Instances')
| -rw-r--r-- | Nominal/Instances/Abstraction.lean | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/Nominal/Instances/Abstraction.lean b/Nominal/Instances/Abstraction.lean index ba2fbf9..052f604 100644 --- a/Nominal/Instances/Abstraction.lean +++ b/Nominal/Instances/Abstraction.lean @@ -46,31 +46,19 @@ instance : PermSet ๐ธ (NameAbstraction' ๐ธ X) where one_smul := by intro _; ext <;> simp [one_smul] mul_smul := by intro _ _ _; ext <;> simp [mul_smul] -private def ofPair (x : (๐ธ ร X)) : NameAbstraction' ๐ธ X := โจx.fst, x.sndโฉ - -private lemma ofPair_injective : Function.Injective (ofPair ๐ธ X) := by - intro x y hxy - simp only [ofPair, mk.injEq] at hxy - ext - ยท exact hxy.left - ยท exact hxy.right - -private lemma ofPair_surjective : Function.Surjective (ofPair ๐ธ X) := by - intro x - use โจx.atom, x.bodyโฉ - simp [ofPair] - -private lemma ofPair_equivariant : Function.Equivariant ๐ธ (ofPair ๐ธ X) := by - intro x ฯ - ext <;> simp [ofPair] +private def equiv : EquivariantEquiv ๐ธ (NameAbstraction' ๐ธ X) (๐ธ ร X) := + { toFun x := โจx.atom, x.bodyโฉ + invFun x := โจx.fst, x.sndโฉ + toFun_equivariant := by intro x ฯ; ext <;> simp + } instance : NominalSet ๐ธ (NameAbstraction' ๐ธ X) := - NominalSet.fromEquivariantSurjective ๐ธ (ofPair ๐ธ X) (ofPair_equivariant ๐ธ X) (ofPair_surjective ๐ธ X) + NominalSet.fromEquivariantEquiv ๐ธ (equiv ๐ธ X) @[simp] lemma supp {x : NameAbstraction' ๐ธ X} : NominalSet.supp ๐ธ x = NominalSet.supp ๐ธ x.body โช {x.atom} := by - have h : NominalSet.supp ๐ธ (ofPair ๐ธ X (x.atom, x.body)) = NominalSet.supp ๐ธ (x.atom, x.body) := - Function.Equivariant.supp_eq_if_inj ๐ธ (ofPair_equivariant ๐ธ X) (ofPair_injective ๐ธ X) - simp only [Prod.supp, NominalSet.supp_atom, ofPair] at h + have h : NominalSet.supp ๐ธ x = NominalSet.supp ๐ธ (x.atom, x.body) := + EquivariantEquiv.supp_eq ๐ธ (equiv ๐ธ X) x + simp only [Prod.supp, NominalSet.supp_atom] at h rwa [Set.union_comm] at h @[simp] lemma fresh {a : ๐ธ} {x : NameAbstraction' ๐ธ X} : a # x โ a โ x.atom โง a # x.body := by |
