summaryrefslogtreecommitdiff
path: root/Algebra/Semantics.lean
diff options
context:
space:
mode:
authorHannes Schulze <contact@haschu.me>2026-04-15 15:17:13 +0200
committerHannes Schulze <contact@haschu.me>2026-04-15 15:17:13 +0200
commit37f7c86a7591da1233cdf1d293bf851f43c65ba1 (patch)
tree4fba638337f18264f6638211d9b6c83f6704e825 /Algebra/Semantics.lean
parenta5ff8efe5b5e314e0aa759318e5fb194e066f612 (diff)
move wip
Diffstat (limited to 'Algebra/Semantics.lean')
-rw-r--r--Algebra/Semantics.lean79
1 files changed, 0 insertions, 79 deletions
diff --git a/Algebra/Semantics.lean b/Algebra/Semantics.lean
deleted file mode 100644
index 13b54a0..0000000
--- a/Algebra/Semantics.lean
+++ /dev/null
@@ -1,79 +0,0 @@
-import Mathlib
-import Algebra.Terms
-import Algebra.Derivations
-
-open CategoryTheory
-
-namespace NominalAlgebra
-
-section AlgebraDefinition
-
-variable (𝔸 : Type) [Infinite 𝔸] [Countable 𝔸] [DecidableEq 𝔸]
-variable (sig : Signature)
-
-structure Algebra where
- carrier : β„• β†’ Nom 𝔸
- pure (f : sig.pure) {m : β„•} :
- (sig.pureArgs f β†’ carrier m) β†’β‚‘[𝔸] carrier (m + sig.pureDepth f)
- free (f : sig.free) {m : β„•} :
- (𝔸 Γ— (sig.freeArgs f β†’ carrier m)) β†’β‚‘[𝔸] carrier (m + sig.freeDepth f)
- bound (f : sig.bound) {m : β„•} :
- NameAbstraction 𝔸 (sig.boundArgs f β†’ carrier m) β†’β‚‘[𝔸] carrier (m + sig.boundDepth f)
-
-instance : CoeFun (Algebra 𝔸 sig) (fun _ => β„• β†’ Nom 𝔸) where
- coe A := A.carrier
-
-@[ext]
-structure Algebra.Hom (A B : Algebra 𝔸 sig) where
- toFun : (n : β„•) β†’ (A n β†’β‚‘[𝔸] B n)
- preserve_pure : βˆ€ (f : sig.pure) {m : β„•} (args : sig.pureArgs f β†’ A m),
- toFun (m + sig.pureDepth f) (A.pure f args) = B.pure f (toFun m ∘ args)
- preserve_free : βˆ€ (a : 𝔸) (f : sig.free) {m : β„•} (args : sig.freeArgs f β†’ A m),
- toFun (m + sig.freeDepth f) (A.free f ⟨a, args⟩) = B.free f ⟨a, toFun m ∘ args⟩
- preserve_bound : βˆ€ (a : 𝔸) (f : sig.bound) {m : β„•} (args : sig.boundArgs f β†’ A m),
- toFun (m + sig.boundDepth f) (A.bound f (βŸͺa⟫ args)) = B.bound f (βŸͺa⟫ toFun m ∘ args)
-
-instance {A B : Algebra 𝔸 sig} : CoeFun (Algebra.Hom 𝔸 sig A B) (fun _ => (n : β„•) β†’ (A n β†’β‚‘[𝔸] B n)) where
- coe h := h.toFun
-
-end AlgebraDefinition
-
-section Algebra
-
-variable {𝔸 : Type} [Infinite 𝔸] [Countable 𝔸] [DecidableEq 𝔸]
-variable {sig : Signature}
-
-namespace Algebra
-
-def Hom.id (A : Algebra 𝔸 sig) : Hom 𝔸 sig A A where
- toFun _ := EquivariantMap.id 𝔸
- preserve_pure _ _ _ := rfl
- preserve_free _ _ _ _ := rfl
- preserve_bound _ _ _ _ := rfl
-
-def Hom.comp {A B C : Algebra 𝔸 sig} (h : Hom 𝔸 sig B C) (g : Hom 𝔸 sig A B) : Hom 𝔸 sig A C where
- toFun n := EquivariantMap.comp 𝔸 (h n) (g n)
- preserve_pure f m args := by
- rw [EquivariantMap.comp_app, g.preserve_pure, h.preserve_pure]
- rfl
- preserve_free a f m args := by
- rw [EquivariantMap.comp_app, g.preserve_free, h.preserve_free]
- rfl
- preserve_bound a f m args := by
- rw [EquivariantMap.comp_app, g.preserve_bound, h.preserve_bound]
- rfl
-
-instance : Category (Algebra 𝔸 sig) where
- Hom := Hom 𝔸 sig
- id := Hom.id
- comp h g := Hom.comp g h
-
-def forgetfulFunctor : Algebra 𝔸 sig β₯€ Nom 𝔸 where
- obj X := X 0
- map f := f.toFun 0
-
-end Algebra
-
-end Algebra
-
-end NominalAlgebra