Mercurial > hg > Members > kono > Proof > category
view src/ToposIL.agda @ 1051:1948ce61e2f0
... Polynominal arg type
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Apr 2021 20:45:44 +0900 |
parents | 65df341f0937 |
children | d35b395370ff |
line wrap: on
line source
open import CCC open import Level open import Category open import cat-utility open import HomReasoning open import Data.List hiding ( [_] ) module ToposIL {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) (c : CCC A) where open Topos open Equalizer open ≈-Reasoning A open CCC.CCC c open Functor open import Category.Sets hiding (_o_) open import Relation.Binary.PropositionalEquality hiding ( [_] ; sym) open import Polynominal A c -- record IsLogic (c : CCC A) -- (Ω : Obj A) -- (⊤ : Hom A 1 Ω) -- (P : Obj A → Obj A) -- (_==_ : {a : Obj A} (x y : Hom A 1 a ) → Hom A ( a ∧ a ) Ω) -- (_∈_ : {a : Obj A} (x : Hom A 1 a ) → Hom A ( a ∧ P a ) Ω) -- (_|-_ : {a : Obj A} (x : List ( Hom A 1 a ) ) → Hom A {!!} Ω) -- : Set ( suc c₁ ⊔ suc c₂ ⊔ suc ℓ ) where -- field -- a : {!!} record InternalLanguage (Ω : Obj A) (⊤ : Hom A 1 Ω) (P : Obj A → Obj A) : Set ( suc c₁ ⊔ suc c₂ ⊔ suc ℓ ) where field _==_ : {a : Obj A} (x y : Hom A 1 a ) → Hom A 1 Ω _∈_ : {a : Obj A} (x : Hom A 1 a ) (α : Hom A 1 (P a) ) → Hom A 1 Ω -- { x ∈ a | φ x } : P a select : {a : Obj A} → ( φ : Poly a Ω 1 ) → Hom A 1 (P a) -- isTL : IsLogic c Ω ⊤ P _==_ _∈_ _|-_ -- _|-_ : (List (Hom A 1 Ω)) → (p : Hom A 1 Ω ) → Set ℓ -- [] |- p = A [ p ≈ ⊤ ] -- (h ∷ t) |- p = {!!} -- ○ b -- b -----------→ 1 -- | | -- m | | ⊤ -- ↓ char m ↓ -- a -----------→ Ω -- (n : ToposNat A 1) -- open NatD -- open ToposNat n -- N : Obj A -- N = Nat iNat open import ToposEx A c using ( δmono ) -- f ≡ λ (x ∈ a) → φ x , ∃ (f : b <= a) → f ∙ x ≈ φ x -- functional completeness FC1 : Set ( suc c₁ ⊔ suc c₂ ⊔ suc ℓ ) FC1 = {a : Obj A} (t : Topos A c) ( φ : Poly a (Ω t)1) → Fc φ topos→logic : (t : Topos A c ) → ToposNat A 1 → FC1 → InternalLanguage (Topos.Ω t) (Topos.⊤ t) (λ a → (Topos.Ω t) <= a) topos→logic t n fc = record { _==_ = λ {b} f g → A [ char t < id1 A b , id1 A b > (δmono t n ) o < f , g > ] ; _∈_ = λ {a} x α → A [ ε o < α , x > ] -- { x ∈ a | φ x } : P a ; select = λ {a} φ → Fc.g ( fc t φ ) -- ; isTL = {!!} }