summaryrefslogtreecommitdiff
path: root/Nominal/Instances
diff options
context:
space:
mode:
Diffstat (limited to 'Nominal/Instances')
-rw-r--r--Nominal/Instances/Abstraction.lean30
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