Comment: Rules of MLTT without type formers
The rules from Figure 1 in Bezem, Coquand, Huber
"A model of type theory in cubical sets".
But here the intepretation uses an arbitrary base category C..
(First those without type formers: 20 lemmas)
Γ ⊢
------------- this is pscm-id_wf
1: Γ ⟶ Γ
σ: Δ ⟶ Γ δ: Θ -> Δ
------------------------ this is pscm-comp_wf
σ δ : Θ ⟶ Γ
Γ ⊢ A σ : Δ ⟶ Γ
---------------------- this is pscm-ap-type_wf
Δ ⊢ A σ
Γ ⊢ t: A σ: Δ ⟶ Γ
----------------------- this is pscm-ap-term_wf
Δ ⊢ t σ: A σ
------------- this is trivial-psc_wf
() ⊢
Γ ⊢ Γ ⊢ A
----------------- this is psc-adjoin_wf
Γ.A ⊢
Γ ⊢ A
------------------ this is psc-fst_wf
p: Γ.A ⟶ Γ
Γ ⊢ A
----------------- this is psc-snd_wf
Γ.A ⊢ q: Ap
σ:Δ ⟶ Γ Γ ⊢ A Δ ⊢ u:A s
------------------------------ this is pscm-adjoin_wf
(σ,u) ⊢ Δ ⟶ Γ.A
1 σ = σ 1 = σ this is pscm-id-comp
(σ δ) ν = σ (δ ν) this is pscm-comp-assoc
[u] = (1,u) this is pscm-id-adjoin
A 1 = A this is pscm-ap-id-type
(A σ) δ = A (σ δ) this is pscm-ap-comp-type
u 1 = 1 this is pscm-ap-id-term
(u σ) δ = u (σ δ) this is pscm-ap-comp-term
(σ, u) δ = (σ δ, u δ) this is pscm-adjoin-ap
p (σ, u) = σ this is psc-fst-pscm-adjoin
q (σ, u) = u this is psc-snd-pscm-adjoin
(p,q) = 1 this is pscm-adjoin-fst-snd
⋅
Comment: Rules of MLTT type formers
The rules about type formers Π and ⌜Σ⌝ from Figure 1 in Bezem, Coquand, Huber
"A model of type theory in cubical sets".
(Interpreted using an arbitrary base category C: 19 lemmas)
Γ.A ⊢ B
------------- this is presheaf-pi_wf
Γ ⊢ Π A B
Γ.A ⊢ B Γ.A ⊢ b:B
------------------------ this is presheaf-lambda_wf
Γ ⊢ λb : Π A B
Γ.A ⊢ B
------------- this is presheaf-sigma_wf
Γ ⊢ Σ A B
Γ.A ⊢ B Γ ⊢ u:A Γ ⊢ v:B[u]
------------------------------ this is presheaf-pair_wf
Γ ⊢ (u,v): Σ A B
Γ ⊢ w: Σ A B
---------------- this is presheaf-fst_wf
Γ ⊢ w.1: A
Γ ⊢ w: Σ A B
----------------- this is presheaf-snd_wf
Γ ⊢ w.2: B[w.1]
Γ ⊢ w:Π A B Γ ⊢ u:A
------------------------ this is presheaf-app_wf
Γ ⊢ app(w,u): B[u]
(Π A B)σ = Π (Aσ) (B(σp,q)) this is pscm-presheaf-pi
(λb)σ = λ(b(σp,q)) this is pscm-ap-presheaf-lambda
app(w,u)δ = app(wδ, uδ) this is pscm-ap-presheaf-app
app(λb, u) = b[u] this is presheaf-beta
w = λ(app(wp,q)) this is presheaf-eta
(Σ A B)σ = (Aσ) (B(σp,q)) this is pscm-presheaf-sigma
(w.1)σ = (wσ).1 this is pscm-ap-presheaf-fst
(w.2)σ = (wσ).2 this is pscm-ap-presheaf-snd
(u,v)σ = (uσ, vσ) this is pscm-presheaf-pair
(u,v).1 = u this is presheaf-fst-pair
(u,v).2 = v this is presheaf-snd-pair
(w.1,w.2) = w this is presheaf-pair-eta
⋅
Definition: ps_context
__⊢ == Functor(op-cat(C);TypeCat')
Lemma: ps_context_wf
∀[C:SmallCategory]. (ps_context{j:l}(C) ∈ 𝕌{[i | j'']})
Definition: small_ps_context
small_ps_context{i:l}(C) == Functor(op-cat(C);TypeCat)
Lemma: small_ps_context_wf
∀[C:SmallCategory]. (small_ps_context{j:l}(C) ∈ 𝕌{[i | j']})
Lemma: small_ps_context_subtype
∀[C:SmallCategory]. (small_ps_context{j:l}(C) ⊆r ps_context{j:l}(C))
Lemma: ps_context_cumulativity
∀[C:SmallCategory]. (ps_context{j:l}(C) ⊆r ps_context{j':l}(C))
Lemma: ps_context_cumulativity2
∀[C:SmallCategory]. (ps_context{j:l}(C) ⊆r ps_context{[i | j]:l}(C))
Lemma: ps_contexts_equal
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)].
X = Y ∈ ps_context{j:l}(C)
supposing X = Y ∈ (F:cat-ob(C) ⟶ 𝕌{j'} × (x:cat-ob(C) ⟶ y:cat-ob(C) ⟶ (cat-arrow(C) y x) ⟶ (F x) ⟶ (F y)))
Definition: ext-eq-psc
X ≡ Y == ext-equal-presheaves(C;X;Y)
Lemma: ext-eq-psc_wf
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)]. (X ≡ Y ∈ ℙ{[i | j']})
Definition: I_set
A(I) == A I
Lemma: I_set_wf
∀[C:SmallCategory]. ∀[A:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. (A(I) ∈ 𝕌{j'})
Lemma: I_set_pair_redex_lemma
∀I,G,F:Top. (<F, G>(I) ~ F I)
Definition: psc-restriction
f(s) == (snd(X)) I J f s
Lemma: psc-restriction_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[I,J:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[s:X(I)]. (f(s) ∈ X(J))
Lemma: psc_restriction_pair_lemma
∀s,f,J,I,G,F:Top. (f(s) ~ G I J f s)
Lemma: ps_context-ext
∀[C:SmallCategory]
{FM:F:cat-ob(C) ⟶ 𝕌{j'} × (I:cat-ob(C) ⟶ J:cat-ob(C) ⟶ (cat-arrow(C) J I) ⟶ (F I) ⟶ (F J))|
let F,M = FM
in (∀I:cat-ob(C). ∀s:FM(I). (cat-id(C) I(s) = s ∈ FM(I)))
∧ (∀I,J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀s:FM(I).
(cat-comp(C) K J I g f(s) = g(f(s)) ∈ FM(K)))} ≡ ps_context{j:l}(C)
Definition: psc-predicate
psc-predicate(C; X; I,rho.P[I; rho]) == stable-element-predicate(C;X;I,rho.P[I; rho])
Lemma: psc-predicate_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[P:I:cat-ob(C) ⟶ X(I) ⟶ ℙ{[i | j']}].
(psc-predicate(C; X; I,rho.P[I;rho]) ∈ ℙ{[i | j']})
Definition: sub-presheaf-set
X | I,rho.P[I; rho] == X|I,rho.P[I; rho]
Lemma: sub-presheaf-set_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[P:I:cat-ob(C) ⟶ X(I) ⟶ ℙ{j'}].
X | I,rho.P[I;rho] ∈ ps_context{j:l}(C) supposing psc-predicate(C; X; I,rho.P[I;rho])
Lemma: sub-presheaf-set_functionality
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[P,Q:I:cat-ob(C) ⟶ X(I) ⟶ ℙ].
X | I,rho.P[I;rho] ≡ X | I,rho.Q[I;rho]
supposing (∀I:cat-ob(C). ∀rho:X(I). (P[I;rho]
⇐⇒ Q[I;rho])) ∧ psc-predicate(C; X; I,rho.P[I;rho])
Lemma: sub-presheaf-set-true
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. X | I,rho.True ≡ X
Lemma: sub-presheaf-set-and
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[P,Q:I:cat-ob(C) ⟶ X(I) ⟶ ℙ].
X | I,rho.P[I;rho] | I,rho.Q[I;rho] ≡ X | I,rho.P[I;rho] ∧ Q[I;rho]
supposing psc-predicate(C; X; I,rho.P[I;rho]) ∧ psc-predicate(C; X; I,rho.Q[I;rho])
Definition: sets
sets(C; X) == el(X)
Lemma: sets_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (sets(C; X) ∈ small-category{[i | j']:l})
Lemma: sets-ob
∀[C:SmallCategory]. ∀[X:Top]. (cat-ob(sets(C; X)) ~ I:cat-ob(C) × X(I))
Lemma: sets-id
∀[C:SmallCategory]. ∀[X:Top]. (cat-id(sets(C; X)) ~ λA.(cat-id(C) (fst(A))))
Lemma: sets-arrow
∀[C:SmallCategory]. ∀[X:Top].
(cat-arrow(sets(C; X)) ~ λAa,Bb. let A,a = Aa in let B,b = Bb in {f:cat-arrow(C) A B| f(b) = a ∈ (X A)} )
Lemma: sets-comp
∀[C:SmallCategory]. ∀[X:Top]. (cat-comp(sets(C; X)) ~ λAa,Bb,Dd,f,g. (cat-comp(C) (fst(Aa)) (fst(Bb)) (fst(Dd)) f g))
Definition: Yoneda
Yoneda(I) == <λJ.(cat-arrow(C) J I), λJ,K,f,g. (cat-comp(C) K J I f g)>
Lemma: Yoneda-is-rep-pre-sheaf
∀[C,I:Top]. (Yoneda(I) ~ rep-pre-sheaf(C;I))
Lemma: Yoneda_wf
∀[C:SmallCategory]. ∀[I:cat-ob(C)]. (Yoneda(I) ∈ __⊢)
Lemma: Yoneda-restriction
∀[C,I,f,s,A,B:Top]. (f(s) ~ cat-comp(C) B A I f s)
Definition: representable-psc
representable-psc(C) == {G:ps_context{1:l}(C)| ∃I:cat-ob(C). (G = Yoneda(I) ∈ ps_context{1:l}(C))}
Lemma: representable-psc_wf
∀[C:small-category{1:l}]. (representable-psc(C) ∈ 𝕌{3})
Definition: trivial-psc
() == <λJ.Unit, λJ,K,f,x. ⋅>
Lemma: trivial-psc_wf
∀[C:SmallCategory]. (() ∈ ps_context{j:l}(C))
Definition: discrete-set
discrete-set(A) == <λJ.A, λJ,K,f,x. x>
Lemma: discrete-set_wf
∀[C:SmallCategory]. ∀[A:𝕌{j}]. (discrete-set(A) ∈ ps_context{j:l}(C))
Definition: presheaf-false
False == discrete-set(Void)
Lemma: presheaf-false_wf
∀[C:SmallCategory]. (False ∈ ps_context{j:l}(C))
Definition: psc_map
A ⟶ B == nat-trans(op-cat(C);TypeCat';A;B)
Lemma: psc_map_wf
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)]. (psc_map{j:l}(C; A; B) ∈ 𝕌{[i | j'']})
Lemma: psc_map_cumulativity
∀[C:SmallCategory]. ∀[G,H:ps_context{j:l}(C)]. (psc_map{j:l}(C; H; G) ⊆r psc_map{j':l}(C; H; G))
Definition: ps-context-map
<rho> == λA,f. (Gamma I A f rho)
Lemma: ps-context-map_wf
∀C:SmallCategory. ∀I:cat-ob(C). ∀Gamma:ps_context{j:l}(C). ∀rho:Gamma(I). (<rho> ∈ psc_map{j:l}(C; Yoneda(I); Gamma))
Lemma: pscm-equal
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)]. ∀[f:psc_map{j:l}(C; A; B)]. ∀[g:I:cat-ob(C) ⟶ A(I) ⟶ B(I)].
f = g ∈ psc_map{j:l}(C; A; B) supposing f = g ∈ (I:cat-ob(C) ⟶ A(I) ⟶ B(I))
Lemma: pscm-equal2
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)]. ∀[f,g:psc_map{j:l}(C; A; B)].
f = g ∈ psc_map{j:l}(C; A; B) supposing ∀K:cat-ob(C). ∀x:A(K). ((f K x) = (g K x) ∈ B(K))
Lemma: psc-map-subtype
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)]. (psc_map{j:l}(C; A; B) ⊆r (I:cat-ob(C) ⟶ A(I) ⟶ B(I)))
Definition: pscm-ap
(s)x == s I x
Lemma: pscm-ap_wf
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)]. ∀[s:psc_map{j:l}(C; X; Y)]. ∀[I:cat-ob(C)]. ∀[x:X(I)]. ((s)x ∈ Y(I))
Lemma: pscm-ap-context-map
∀[I,J,a,rho,G:Top]. ((<rho>)a ~ a(rho))
Definition: pscm-comp
G o F == λx.((G x) o (F x))
Lemma: pscm-comp-sq
∀[C:SmallCategory]. ∀[A,B,E,F,G:Top]. (G o F ~ F o G)
Lemma: pscm-comp_wf
∀[C:SmallCategory]. ∀[A,B,E:ps_context{j:l}(C)]. ∀[F:psc_map{j:l}(C; A; B)]. ∀[G:psc_map{j:l}(C; B; E)].
(G o F ∈ psc_map{j:l}(C; A; E))
Lemma: pscm-comp-assoc
∀[C:SmallCategory]. ∀[A,B,E,D:ps_context{j:l}(C)]. ∀[F:psc_map{j:l}(C; A; B)]. ∀[G:psc_map{j:l}(C; B; E)].
∀[H:psc_map{j:l}(C; E; D)].
(H o G o F = H o G o F ∈ psc_map{j:l}(C; A; D))
Definition: pscm-id
1(X) == λA,x. x
Lemma: pscm-id-sq
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (1(X) ~ identity-trans(op-cat(C);type-cat{j':l};X))
Lemma: pscm-id_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (1(X) ∈ psc_map{j:l}(C; X; X))
Lemma: pscm-id-comp
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)]. ∀[sigma:psc_map{j:l}(C; A; B)].
((sigma o 1(A) = sigma ∈ psc_map{j:l}(C; A; B)) ∧ (1(B) o sigma = sigma ∈ psc_map{j:l}(C; A; B)))
Lemma: pscm-id-comp-sq
∀[A,B,C,D,x,y,X,Y,Z:Top]. (1(D) o x o y ~ x o y)
Lemma: pscm-ap-pscm-comp
∀Gamma,Delta,Z,s1,s2,I,alpha:Top. ((s2 o s1)alpha ~ (s2)(s1)alpha)
Lemma: ps-context-map-1
∀[C:SmallCategory]. ∀[I:cat-ob(C)]. (<cat-id(C) I> = 1(Yoneda(I)) ∈ Yoneda(I) ⟶ Yoneda(I))
Lemma: ps-ps-context-map-comp
∀[C:SmallCategory]. ∀[I,J,K:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[g:cat-arrow(C) K J].
(<cat-comp(C) K J I g f> = <f> o <g> ∈ Yoneda(K) ⟶ Yoneda(I))
Lemma: psc-restriction-id
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[s:X(I)]. (cat-id(C) I(s) = s ∈ X(I))
Lemma: psc-restriction-when-id
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[s:X(I)]. ∀[f:cat-arrow(C) I I].
f(s) = s ∈ X(I) supposing f = (cat-id(C) I) ∈ (cat-arrow(C) I I)
Lemma: psc-restriction-comp
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀I,J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀a:X(I).
(g(f(a)) = cat-comp(C) K J I g f(a) ∈ X(K))
Lemma: psc-restriction-comp2
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀I,J1,J2,K:cat-ob(C). ∀f:cat-arrow(C) J1 I. ∀g:cat-arrow(C) K J1. ∀a:X(I).
g(f(a)) = cat-comp(C) K J1 I g f(a) ∈ X(K) supposing J1 = J2 ∈ cat-ob(C)
Lemma: psc-map-is
∀[C:SmallCategory]. ∀[A,B:ps_context{j:l}(C)].
(psc_map{j:l}(C; A; B) ~ {trans:I:cat-ob(C) ⟶ A(I) ⟶ B(I)|
∀I,J:cat-ob(C). ∀g:cat-arrow(C) J I.
((λs.g(trans I s)) = (λs.(trans J g(s))) ∈ (A(I) ⟶ B(J)))} )
Lemma: pscm-ap-restriction
∀C:SmallCategory. ∀X,Y:ps_context{j:l}(C). ∀s:psc_map{j:l}(C; X; Y). ∀I,J:cat-ob(C). ∀f:cat-arrow(C) J I. ∀a:X(I).
(f((s)a) = (s)f(a) ∈ Y(J))
Definition: sub_ps_context
Y ⊆ X == 1(Y) ∈ Y ⟶ X
Lemma: sub_ps_context_wf
∀[C:SmallCategory]. ∀[Y,X:ps_context{j:l}(C)]. (sub_ps_context{j:l}(C; Y; X) ∈ 𝕌{[i | j'']})
Lemma: sub_ps_context_transitivity
∀[C:SmallCategory]. ∀[X,Y,Z:ps_context{j:l}(C)].
sub_ps_context{j:l}(C; Z; X) supposing sub_ps_context{j:l}(C; Z; Y) ∧ sub_ps_context{j:l}(C; Y; X)
Lemma: sub_ps_context_weakening
∀[C:SmallCategory]. ∀[X,Z:ps_context{j:l}(C)]. sub_ps_context{j:l}(C; Z; X) supposing Z = X ∈ ps_context{j:l}(C)
Lemma: sub_ps_context_self
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. sub_ps_context{j:l}(C; X; X)
Lemma: implies-sub_ps_context
∀[C:SmallCategory]. ∀[Y,X:ps_context{j:l}(C)].
(sub_ps_context{j:l}(C; Y; X)) supposing
((∀A,B:cat-ob(C). ∀g:cat-arrow(C) B A. ∀rho:Y(A). (g(rho) = g(rho) ∈ X(B))) and
(∀I:cat-ob(C). (Y(I) ⊆r X(I))))
Lemma: subset-I_set
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)]. ∀I:cat-ob(C). (Y(I) ⊆r X(I)) supposing sub_ps_context{j:l}(C; Y; X)
Lemma: ps-subset-restriction
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)].
∀[I,J:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[a:Y(I)]. (f(a) = f(a) ∈ X(J)) supposing sub_ps_context{j:l}(C; Y; X)
Lemma: psc_map_subtype
∀[C:SmallCategory]. ∀[X,Y,Z:ps_context{j:l}(C)].
psc_map{j:l}(C; Z; X) ⊆r psc_map{j:l}(C; Z; Y) supposing sub_ps_context{j:l}(C; X; Y)
Lemma: psc_map_subtype2
∀[C:SmallCategory]. ∀[X,Y,Z:ps_context{j:l}(C)].
psc_map{j:l}(C; X; Z) ⊆r psc_map{j:l}(C; Y; Z) supposing sub_ps_context{j:l}(C; Y; X)
Lemma: psc_map_subtype3
∀[C:SmallCategory]. ∀[X,Y,Z,U:ps_context{j:l}(C)].
(psc_map{j:l}(C; X; Z) ⊆r psc_map{j:l}(C; Y; U)) supposing
(sub_ps_context{j:l}(C; Y; X) and
sub_ps_context{j:l}(C; Z; U))
Lemma: psc_map_cumulativity2
∀[C:SmallCategory]. ∀[X,Y,Z,U:ps_context{j:l}(C)].
(psc_map{j:l}(C; X; Z) ⊆r psc_map{j:l}(C; Y; U)) supposing
(sub_ps_context{j:l}(C; Y; X) and
sub_ps_context{j:l}(C; Z; U))
Definition: presheaf_type
presheaf_type{i:l}(C; X) == presheaf{i':l}(sets(C; X))
Lemma: presheaf_type_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (presheaf_type{i:l}(C; X) ∈ 𝕌{[i'' | j']})
Definition: presheaf-type
{X ⊢ _} ==
{AF:A:I:cat-ob(C) ⟶ X(I) ⟶ Type × (I:cat-ob(C)
⟶ J:cat-ob(C)
⟶ f:(cat-arrow(C) J I)
⟶ a:X(I)
⟶ (A I a)
⟶ (A J f(a)))|
let A,F = AF
in (∀I:cat-ob(C). ∀a:X(I). ∀u:A I a. ((F I I (cat-id(C) I) a u) = u ∈ (A I a)))
∧ (∀I,J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀a:X(I). ∀u:A I a.
((F I K (cat-comp(C) K J I g f) a u) = (F J K g f(a) (F I J f a u)) ∈ (A K cat-comp(C) K J I g f(a))))}
Lemma: presheaf-type_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (X ⊢ ∈ 𝕌{[j' | i']})
Lemma: presheaf-type-equal
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:A:I:cat-ob(C) ⟶ X(I) ⟶ Type × (I:cat-ob(C)
⟶ J:cat-ob(C)
⟶ f:(cat-arrow(C) J I)
⟶ a:X(I)
⟶ (A I a)
⟶ (A J f(a)))].
A = B ∈ {X ⊢ _}
supposing A
= B
∈ (A:I:cat-ob(C) ⟶ X(I) ⟶ Type × (I:cat-ob(C)
⟶ J:cat-ob(C)
⟶ f:(cat-arrow(C) J I)
⟶ a:X(I)
⟶ (A I a)
⟶ (A J f(a))))
Lemma: presheaf-type-equal2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}].
A = B ∈ {X ⊢ _}
supposing A
= B
∈ (A:I:cat-ob(C) ⟶ X(I) ⟶ Type × (I:cat-ob(C)
⟶ J:cat-ob(C)
⟶ f:(cat-arrow(C) J I)
⟶ a:X(I)
⟶ (A I a)
⟶ (A J f(a))))
Definition: presheaf-type-iso
presheaf-type-iso(X) == λF.<λI,rho. (F <I, rho>), λI,J,f,a. (F <I, a> <J, f(a)> f)>
Lemma: presheaf-type-iso_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (presheaf-type-iso(X) ∈ presheaf_type{i:l}(C; X) ⟶ {X ⊢' _})
Definition: presheaf-type-rev-iso
presheaf-type-rev-iso(X) ==
λF.Presheaf(Set(p) =(fst(F)) (fst(p)) (snd(p));
Morphism(p,q,f,a) = (snd(F)) (fst(p)) (fst(q)) f (snd(p)) a)
Lemma: presheaf-type-rev-iso_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (presheaf-type-rev-iso(X) ∈ {X ⊢ _} ⟶ presheaf_type{i:l}(C; X))
Lemma: presheaf-type-iso-inverse
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)].
((presheaf-type-rev-iso(X) o presheaf-type-iso(X)) = (λx.x) ∈ (presheaf_type{i:l}(C; X) ⟶ presheaf_type{i:l}(C; X)))
Lemma: presheaf-type-iso-inverse2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)].
((presheaf-type-iso(X) o presheaf-type-rev-iso(X)) = (λx.x) ∈ ({X ⊢ _} ⟶ {X ⊢ _}))
Lemma: presheaf-type-cumulativity
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ({X ⊢ _} ⊆r {X ⊢' _})
Lemma: presheaf-type-cumulativity2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ({X ⊢ _} ⊆r presheaf-type{[j | i]:l}(C; X))
Definition: presheaf-type-at
A(a) == (fst(A)) I a
Lemma: presheaf-type-at_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[I:cat-ob(C)]. ∀[a:X(I)]. (A(a) ∈ Type)
Lemma: presheaf_type_at_pair_lemma
∀a,I,B,A:Top. (<A, B>(a) ~ A I a)
Definition: presheaf-type-ap-morph
(u a f) == (snd(A)) I J f a u
Lemma: presheaf-type-ap-morph_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[I,J:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[a:X(I)].
∀[u:A(a)].
((u a f) ∈ A(f(a)))
Lemma: presheaf_type_ap_morph_pair_lemma
∀u,a,f,J,I,G,F:Top. ((u a f) ~ G I J f a u)
Lemma: presheaf-type-ap-morph-comp
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[I,J,K:cat-ob(C)]. ∀[f:cat-arrow(C) J I].
∀[g:cat-arrow(C) K J]. ∀[a:X(I)]. ∀[u:A(a)].
(((u a f) f(a) g) = (u a cat-comp(C) K J I g f) ∈ A(cat-comp(C) K J I g f(a)))
Lemma: presheaf-type-ap-morph-comp-eq
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[I,J,K:cat-ob(C)]. ∀[f:cat-arrow(C) J I].
∀[g:cat-arrow(C) K J]. ∀[a:X(I)]. ∀[b:X(J)]. ∀[u:A(a)].
((u a f) b g) = (u a cat-comp(C) K J I g f) ∈ A(cat-comp(C) K J I g f(a)) supposing b = f(a) ∈ X(J)
Lemma: presheaf-type-ap-morph-id
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[I:cat-ob(C)]. ∀[f:cat-arrow(C) I I]. ∀[a:X(I)]. ∀[u:A(a)].
(u a f) = u ∈ A(a) supposing f = (cat-id(C) I) ∈ (cat-arrow(C) I I)
Lemma: presheaf-type-equal3
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}].
(A = B ∈ {X ⊢ _}) supposing
((∀I:cat-ob(C)
∀[rho:X(I)]. ∀[J:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[u:A(rho)]. ((u rho f) = (u rho f) ∈ A(f(rho)))) and
(∀I:cat-ob(C). ∀[rho:X(I)]. (A(rho) = B(rho) ∈ Type)))
Definition: pscm-ap-type
(AF)s == let A,F = AF in <λI,a. (A I (s)a), λI,J,f,a,u. (F I J f (s)a u)>
Lemma: pscm-ap-type_wf
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[s:psc_map{j:l}(C; Delta; Gamma)].
((A)s ∈ Delta ⊢ )
Definition: pscm-type-ap
pscm-type-ap(A;s) == (A)s
Lemma: pscm-type-ap_wf
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[s:psc_map{j:l}(C; Delta; Gamma)]. ∀[A:{Gamma ⊢ _}].
(pscm-type-ap(A;s) ∈ Delta ⊢ )
Lemma: ps-context-map-ap-type
∀[C:SmallCategory]. ∀[I:cat-ob(C)]. ∀[Gamma:ps_context{j:l}(C)]. ∀[rho:Gamma(I)]. ∀[A:{Gamma ⊢ _}].
((A)<rho> ∈ Yoneda(I) ⊢ )
Lemma: pscm-ap-type-at
∀[B,s,x,K:Top]. ((B)s(x) ~ B((s)x))
Lemma: pscm-ap-id-type
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ((A)1(Gamma) = A ∈ {Gamma ⊢ _})
Lemma: pscm-ap-type-is-id
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[s:psc_map{j:l}(C; Gamma; Gamma)].
(A)s = A ∈ {Gamma ⊢ _} supposing s = 1(Gamma) ∈ psc_map{j:l}(C; Gamma; Gamma)
Lemma: pscm-comp-type
∀[Gamma,Delta,Z,s1,s2,A:Top]. ((A)s2 o s1 ~ ((A)s2)s1)
Lemma: pscm-type-comp
∀[Gamma,A,Delta,Z,s1,s2:Top]. (((A)s2)s1 ~ (A)s2 o s1)
Lemma: pscm-ap-comp-type
∀[C:SmallCategory]. ∀[Gamma,Delta,Z:ps_context{j:l}(C)]. ∀[s1:psc_map{j:l}(C; Z; Delta)]. ∀[s2:psc_map{j:l}(C;
Delta;
Gamma)].
∀[A:{Gamma ⊢ _}].
((A)s2 o s1 = ((A)s2)s1 ∈ {Z ⊢ _})
Lemma: pscm-ap-comp-type-sq
∀[Gamma,Delta,Z,s1,s2,A:Top]. ((A)s2 o s1 ~ ((A)s2)s1)
Lemma: pscm-ap-comp-type-sq2
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[s1,s2:Top]. (((A)s2)s1 ~ (A)s2 o s1)
Lemma: pscm-presheaf-type-ap-morph
∀[A,I,J,f,a,u,s:Top]. ((u a f) ~ (u (s)a f))
Definition: presheaf-term
{X ⊢ _:A} ==
{u:I:cat-ob(C) ⟶ a:X(I) ⟶ A(a)|
∀I,J:cat-ob(C). ∀f:cat-arrow(C) J I. ∀a:X(I). ((u I a a f) = (u J f(a)) ∈ A(f(a)))}
Lemma: presheaf-term_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ({X ⊢ _:A} ∈ 𝕌{[i | j']})
Lemma: presheaf-term_wf2
∀[C:SmallCategory]. ∀[X:ps_context{[i | j]:l}(C)]. ∀[A:{X ⊢ _}]. ({X ⊢ _:A} ∈ 𝕌{[i' | j']})
Definition: presheaf-term-at
u(a) == u I a
Lemma: presheaf-term-at_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[I:cat-ob(C)]. ∀[a:X(I)]. (u(a) ∈ A(a))
Lemma: presheaf-term-at-morph
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[I:cat-ob(C)]. ∀[a:X(I)]. ∀[J:cat-ob(C)].
∀[f:cat-arrow(C) J I].
((u(a) a f) = u(f(a)) ∈ A(f(a)))
Lemma: presheaf-term-equal
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[z:I:cat-ob(C) ⟶ a:X(I) ⟶ A(a)].
u = z ∈ {X ⊢ _:A} supposing u = z ∈ (I:cat-ob(C) ⟶ a:X(I) ⟶ A(a))
Lemma: presheaf-term-equal2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u,z:{X ⊢ _:A}].
u = z ∈ {X ⊢ _:A} supposing ∀I:cat-ob(C). ∀a:X(I). ((u I a) = (z I a) ∈ A(a))
Definition: ps-canonical-section
ps-canonical-section(Gamma;A;I;rho;a) == λK,f. (a rho f)
Lemma: ps-canonical-section_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[I:cat-ob(C)]. ∀[rho:Gamma(I)]. ∀[a:A(rho)].
(ps-canonical-section(Gamma;A;I;rho;a) ∈ {Yoneda(I) ⊢ _:(A)<rho>})
Lemma: ps-canonical-section-at
∀[Gamma,A,I,rho,a,J,x:Top]. (ps-canonical-section(Gamma;A;I;rho;a)(x) ~ (a rho x))
Definition: pscm-ap-term
(t)s == λI,a. (t I (s)a)
Lemma: pscm-ap-term_wf
∀[C:SmallCategory]. ∀[Delta,Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[s:psc_map{j:l}(C; Delta; Gamma)].
∀[t:{Gamma ⊢ _:A}].
((t)s ∈ {Delta ⊢ _:(A)s})
Lemma: pscm-ap-term-at
∀[J,s,rho,t:Top]. ((t)s(rho) ~ t((s)rho))
Lemma: pscm-ap-id-term
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[t:{Gamma ⊢ _:A}].
((t)1(Gamma) = t ∈ {Gamma ⊢ _:A})
Lemma: pscm-comp-term
∀[Gamma,Delta,Z,s1,s2,t:Top]. ((t)s2 o s1 ~ ((t)s2)s1)
Lemma: pscm-ap-comp-term-sq
∀[Gamma,Delta,Z,s1,s2,t:Top]. ((t)s2 o s1 ~ ((t)s2)s1)
Lemma: pscm-ap-comp-term-sq2
∀[s1,s2,t:Top]. (((t)s2)s1 ~ (t)s2 o s1)
Lemma: pscm-ap-comp-term
∀[C:SmallCategory]. ∀[Gamma,Delta,Z:ps_context{j:l}(C)]. ∀[s1:psc_map{j:l}(C; Z; Delta)]. ∀[s2:psc_map{j:l}(C;
Delta;
Gamma)].
∀[A:{Gamma ⊢ _}]. ∀[t:{Gamma ⊢ _:A}].
((t)s2 o s1 = ((t)s2)s1 ∈ {Z ⊢ _:(A)s2 o s1})
Lemma: ps-context-map-comp2
∀[C:SmallCategory]. ∀[G:ps_context{j:l}(C)]. ∀[I,J:cat-ob(C)]. ∀[f:cat-arrow(C) J I]. ∀[a:G(I)].
(<a> o <f> = <f(a)> ∈ psc_map{[i | j]:l}(C; Yoneda(J); G))
Lemma: pscm-comp-context-map
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[sigma:psc_map{j:l}(C; Delta; Gamma)]. ∀[I:cat-ob(C)].
∀[rho:Delta(I)].
(sigma o <rho> = <(sigma)rho> ∈ psc_map{[i | j]:l}(C; Yoneda(I); Gamma))
Definition: psc-adjoin
X.A == <λI.(alpha:X(I) × A(alpha)), λI,J,f,p. <f(fst(p)), (snd(p) fst(p) f)>>
Lemma: psc-adjoin-wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢' _}]. (Gamma.A ∈ ps_context{[i | j]:l}(C))
Lemma: psc-adjoin_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. (Gamma.A ∈ ps_context{[i | j]:l}(C))
Lemma: psc-adjoin-I_set
∀[Gamma,A,I:Top]. (Gamma.A(I) ~ alpha:Gamma(I) × A(alpha))
Definition: psc-adjoin-set
(v;u) == <v, u>
Lemma: psc-adjoin-set_wf
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀J:cat-ob(C). ∀v:X(J). ∀u:A(v). ((v;u) ∈ X.A(J))
Lemma: psc-adjoin-set-restriction
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[J,K,g,v,u:Top]. (g((v;u)) ~ (g(v);(u v g)))
Definition: psc-fst
p == λI,p. (fst(p))
Lemma: psc-fst_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. (p ∈ psc_map{[i | j]:l}(C; Gamma.A; Gamma))
Definition: psc-snd
q == λI,p. (snd(p))
Lemma: psc-snd_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. (q ∈ {Gamma.A ⊢ _:(A)p})
Lemma: cc_fst_adjoin_set_lemma
∀y,x,J:Top. ((p)(x;y) ~ x)
Lemma: cc_snd_adjoin_set_lemma
∀y,x,J:Top. ((q)(x;y) ~ y)
Lemma: csm_comp_fst_adjoin_set_lemma
∀y,x,K,s,X,B,A:Top. ((s o p)(x;y) ~ (s)x)
Lemma: csm_comp_snd_adjoin-set_lemma
∀y,x,K,s,X,B,A:Top. ((s o q)(x;y) ~ (s)y)
Definition: psc-fstfst
pp == λI,rho. (fst(fst(rho)))
Lemma: psc-fstfst_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[B:{Gamma.A ⊢ _}].
(pp ∈ psc_map{[i | j]:l}(C; Gamma.A.B; Gamma))
Definition: typed-psc-fst
tp{i:l} == p
Lemma: typed-psc-fst_wf
∀[C:SmallCategory]. ∀[G:ps_context{j:l}(C)]. ∀[A:{G ⊢ _}]. (tp{i:l} ∈ psc_map{[i | j]:l}(C; G.A; G))
Definition: typed-psc-snd
tq == q
Lemma: typed-psc-snd_wf
∀C:SmallCategory. ∀G:ps_context{j:l}(C). ∀A:{G ⊢ _}. (tq ∈ {G.A ⊢ _:(A)tp{i:l}})
Definition: psc-m2
q2 == (q)p
Lemma: psc-m2_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. (q2 ∈ {X.A.B ⊢ _:((A)p)p})
Definition: psc-m3
q3 == (q2)p
Lemma: psc-m3_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[E:{X.A.B ⊢ _}].
(q3 ∈ {X.A.B.E ⊢ _:(((A)p)p)p})
Definition: psc-m4
q4 == (q3)p
Lemma: psc-m4_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[E:{X.A.B ⊢ _}]. ∀[D:{X.A.B.E ⊢ _}].
(q4 ∈ {X.A.B.E.D ⊢ _:((((A)p)p)p)p})
Lemma: pscm-ap-term-p
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A,T:{Gamma ⊢ _}]. ∀[t:{Gamma ⊢ _:A}]. ((t)p ∈ {Gamma.T ⊢ _:(A)p})
Lemma: pscm-type-at
∀s,A,I,alpha:Top. ((A)s(alpha) ~ A((s)alpha))
Definition: pscm-adjoin
(s;u) == λI,a. <(s)a, u I a>
Lemma: pscm-adjoin-wf
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢' _}]. ∀[sigma:psc_map{j:l}(C; Delta; Gamma)].
∀[u:{Delta ⊢ _:(A)sigma}].
((sigma;u) ∈ psc_map{[i | j]:l}(C; Delta; Gamma.A))
Lemma: pscm-adjoin_wf
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[sigma:psc_map{j:l}(C; Delta; Gamma)].
∀[u:{Delta ⊢ _:(A)sigma}].
((sigma;u) ∈ psc_map{[i | j]:l}(C; Delta; Gamma.A))
Lemma: pscm-adjoin-comp
∀[Gamma,Delta,X,A,sigma,u,g:Top]. ((sigma;u) o g ~ (sigma o g;(u)g))
Lemma: pscm-adjoin-ap
∀[sigma,u,I,del:Top]. (((sigma;u))del ~ ((sigma)del;(u)del))
Definition: pscm-id-adjoin
[u] == (1(X);u)
Lemma: pscm-id-adjoin-wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢' _}]. ∀[u:{Gamma ⊢ _:A}].
([u] ∈ psc_map{[i | j]:l}(C; Gamma; Gamma.A))
Lemma: pscm-id-adjoin_wf
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[u:{Gamma ⊢ _:A}].
([u] ∈ psc_map{[i | j]:l}(C; Gamma; Gamma.A))
Lemma: pscm-id-adjoin-ap
∀X,u,I,a:Top. (([u])a ~ (a;u I a))
Lemma: psc-fst-pscm-adjoin-sq
∀[Gamma,Delta,X,sigma,u:Top]. (p o (sigma;u) ~ sigma o 1(Delta))
Lemma: psc-fst-pscm-adjoin
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[sigma:psc_map{j:l}(C; Delta; Gamma)].
∀[u:{Delta ⊢ _:(A)sigma}].
(p o (sigma;u) = sigma ∈ psc_map{j:l}(C; Delta; Gamma))
Lemma: ps-cc_snd_csm_id_adjoin_lemma
∀u,G:Top. ((q)[u] ~ (u)1(G))
Lemma: ps-typed_cc_snd_id_adjoin_lemma
∀A,G,u,X:Top. ((tq)[u] ~ (u)1(X))
Lemma: ps-csm_id_adjoin_fst_type_lemma
∀A,t,X:Top. (((A)p)[t] ~ (A)1(X))
Lemma: ps-csm_id_adjoin_fst_term_lemma
∀a,t,X:Top. (((a)p)[t] ~ (a)1(X))
Lemma: ps-csm_id_ap_term_lemma
∀t,X,s:Top. (((t)1(X))s ~ (t)s)
Lemma: psc-snd-pscm-adjoin-sq
∀[G,sigma,u:Top]. ((q)(sigma;u) ~ (u)1(G))
Lemma: psc-snd-pscm-adjoin
∀[C:SmallCategory]. ∀[Gamma,Delta:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}]. ∀[sigma:psc_map{j:l}(C; Delta; Gamma)].
∀[u:{Delta ⊢ _:(A)sigma}].
((q)(sigma;u) = u ∈ {Delta ⊢ _:(A)sigma})
Lemma: pscm-adjoin-fst-snd
∀[C:SmallCategory]. ∀[Gamma:ps_context{j:l}(C)]. ∀[A:{Gamma ⊢ _}].
((p;q) = 1(Gamma.A) ∈ psc_map{[i | j]:l}(C; Gamma.A; Gamma.A))
Lemma: pscm-ap-type-fst-adjoin
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[B:{X ⊢ _}]. ∀[s,u:Top]. (((B)p)(s;u) ~ (B)s)
Lemma: pscm-ap-type-fst-id-adjoin
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[B:{X ⊢ _}]. ∀[u:Top]. (((B)p)[u] = B ∈ {X ⊢ _})
Lemma: pscm-id-adjoin-ap-type
∀C:SmallCategory. ∀Gamma,Delta:ps_context{j:l}(C). ∀A:{Gamma ⊢ _}. ∀B:{Gamma.A ⊢ _}.
∀sigma:psc_map{j:l}(C; Delta; Gamma). ∀u:{Delta ⊢ _:(A)sigma}.
(((B)(sigma o p;q))[u] = (B)(sigma;u) ∈ {Delta ⊢ _})
Lemma: ps-csm_ap_term_fst_adjoin_lemma
∀zz,yy,xx:Top. (((zz)p)(xx;yy) ~ (zz)xx)
Lemma: pscm-ap-term-snd-adjoin
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[xx:Top]. ((q)(xx;u) = u ∈ {X ⊢ _:A})
Lemma: pscm-adjoin-id-adjoin
∀[B,xx,s,X,Y,Z:Top]. (((B)(s o p;q))[xx] ~ (B)(s;xx))
Definition: pscm+
tau+ == (tau o p;q)
Lemma: pscm+_wf
∀[C:SmallCategory]. ∀[H,K:ps_context{j:l}(C)]. ∀[A:{H ⊢ _}]. ∀[tau:psc_map{j:l}(C; K; H)].
(tau+ ∈ psc_map{[i | j]:l}(C; K.(A)tau; H.A))
Lemma: p-pscm+-type
∀[H,K,A,B,tau:Top]. (((A)p)tau+ ~ ((A)tau)p)
Lemma: pcsm+-p-type
∀[C,H,K,A,B,tau:Top]. (((A)p)(tau+ o p;q) ~ ((A)tau+)p)
Lemma: p-pscm+-term
∀[H,K,A,t,tau:Top]. (((t)p)tau+ ~ ((t)tau)p)
Lemma: pcsm+-p-term
∀[C,H,K,t,B,tau:Top]. (((t)p)(tau+ o p;q) ~ ((t)tau+)p)
Lemma: q-pscm+
∀[H,K,A,tau:Top]. ((q)tau+ ~ q)
Lemma: pscm-adjoin-p-q
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ((B)(p;q) = B ∈ {X.A ⊢ _})
Definition: pscm-swap
pscm-swap(G;A;B) == (p+;(q)p)
Lemma: pscm-swap_wf
∀[C:SmallCategory]. ∀[G:ps_context{j:l}(C)]. ∀[A,B:{G ⊢ _}].
(pscm-swap(G;A;B) ∈ psc_map{[i | j]:l}(C; G.A.(B)p; G.B.(A)p))
Definition: presheaf-pi-family
presheaf-pi-family(C; X; A; B; I; a) ==
{w:J:cat-ob(C) ⟶ f:(cat-arrow(C) J I) ⟶ u:A(f(a)) ⟶ B((f(a);u))|
∀J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀u:A(f(a)).
((w J f u (f(a);u) g) = (w K (cat-comp(C) K J I g f) (u f(a) g)) ∈ B(g((f(a);u))))}
Lemma: presheaf-pi-family_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[I:cat-ob(C)]. ∀[a:X(I)].
(presheaf-pi-family(C; X; A; B; I; a) ∈ Type)
Lemma: presheaf-pi-family-comp
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀s:psc_map{j:l}(C; Delta; X). ∀I,J:cat-ob(C). ∀f:cat-arrow(C) J I.
∀a:Delta(I). ∀A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀w:presheaf-pi-family(C; X; A; B; I; (s)a).
(λK,g. (w K (cat-comp(C) K J I g f)) ∈ presheaf-pi-family(C; X; A; B; J; (s)f(a)))
Lemma: pscm-presheaf-pi-family
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X). ∀I:cat-ob(C).
∀a:Delta(I).
(presheaf-pi-family(C; X; A; B; I; (s)a) = presheaf-pi-family(C; Delta; (A)s; (B)(s o p;q); I; a) ∈ Type)
Definition: presheaf-fun-family
presheaf-fun-family(C; X; A; B; I; a) ==
{w:J:cat-ob(C) ⟶ f:(cat-arrow(C) J I) ⟶ u:A(f(a)) ⟶ B(f(a))|
∀J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀u:A(f(a)).
((w J f u f(a) g) = (w K (cat-comp(C) K J I g f) (u f(a) g)) ∈ B(g(f(a))))}
Lemma: presheaf-fun-family_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[I:cat-ob(C)]. ∀[a:X(I)].
(presheaf-fun-family(C; X; A; B; I; a) ∈ Type)
Lemma: presheaf-fun-family-comp
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀s:psc_map{j:l}(C; Delta; X). ∀I,J:cat-ob(C). ∀f:cat-arrow(C) J I.
∀a:Delta(I). ∀A,B:{X ⊢ _}. ∀w:presheaf-fun-family(C; X; A; B; I; (s)a).
(λK,g. (w K (cat-comp(C) K J I g f)) ∈ presheaf-fun-family(C; X; A; B; J; (s)f(a)))
Lemma: pscm-presheaf-fun-family
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A,B:{X ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X). ∀I:cat-ob(C). ∀a:Delta(I).
(presheaf-fun-family(C; X; A; B; I; (s)a) = presheaf-fun-family(C; Delta; (A)s; (B)s; I; a) ∈ Type)
Definition: presheaf-pi
ΠA B == <λI,a. presheaf-pi-family(C; X; A; B; I; a), λI,J,f,a,w,K,g. (w K (cat-comp(C) K J I g f))>
Lemma: presheaf-pi_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. (ΠA B ∈ X ⊢ )
Lemma: pscm-presheaf-pi
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X).
((ΠA B)s = Delta ⊢ Π(A)s (B)(s o p;q) ∈ {Delta ⊢ _})
Lemma: presheaf-pi-p
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀T,A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ((ΠA B)p = X.T ⊢ Π(A)p (B)(p o p;q) ∈ {X.T ⊢ _})
Definition: pscm-dependent
(s)dep == (s o tp{i:l};tq)
Lemma: pscm-dependent_wf
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X).
((s)dep ∈ psc_map{j:l}(C; Delta.(A)s; X.A))
Lemma: ps-csm_dep_p_rewrite_lemma
∀T,s,A,Delta,X:Top. (((T)p)(s)dep ~ ((T)s)p)
Lemma: ps-csm_dep_typed_p_lemma
∀T,s,A,Delta,X:Top. (((T)tp{i:l})(s)dep ~ ((T)s)tp{i:l})
Lemma: pscm-dep_term_p_lemma
∀t,s,A,Delta,X:Top. (((t)tp{i:l})(s)dep ~ ((t)s)tp{i:l})
Lemma: ps-csm_dep_term_q_lemma
∀s,A,Delta,X:Top. ((tq)(s)dep ~ tq)
Definition: presheaf-fun
(A ⟶ B) == <λI,a. presheaf-fun-family(C; X; A; B; I; a), λI,J,f,a,w,K,g. (w K (cat-comp(C) K J I g f))>
Lemma: presheaf-fun_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ((A ⟶ B) ∈ X ⊢ )
Lemma: pscm-presheaf-fun
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A,B:{X ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X).
(((A ⟶ B))s = (Delta ⊢ (A)s ⟶ (B)s) ∈ {Delta ⊢ _})
Lemma: presheaf-fun-equal
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[f,g:{X ⊢ _:(A ⟶ B)}].
f = g ∈ {X ⊢ _:(A ⟶ B)}
supposing ∀[I:cat-ob(C)]. ∀[a:X(I)]. ∀[J:cat-ob(C)]. ∀[h:cat-arrow(C) J I]. ∀[u:A(h(a))].
((f(a) J h u) = (g(a) J h u) ∈ B(h(a)))
Lemma: presheaf-fun-equal2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[f:{X ⊢ _:(A ⟶ B)}]. ∀[g:I:cat-ob(C)
⟶ a:X(I)
⟶ J:cat-ob(C)
⟶ h:(cat-arrow(C) J I)
⟶ u:A(h(a))
⟶ B(h(a))].
f = g ∈ {X ⊢ _:(A ⟶ B)}
supposing ∀[I:cat-ob(C)]. ∀[a:X(I)]. ∀[J:cat-ob(C)]. ∀[h:cat-arrow(C) J I]. ∀[u:A(h(a))].
((f(a) J h u) = (g(a) J h u) ∈ B(h(a)))
Lemma: presheaf-fun-p
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀A,B,T:{X ⊢ _}. (((A ⟶ B))p = (X.T ⊢ (A)p ⟶ (B)p) ∈ {X.T ⊢ _})
Lemma: member-presheaf-fun-p
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B,T:{X ⊢ _}]. ∀[x:{X ⊢ _:(A ⟶ B)}]. ((x)p ∈ {X.T ⊢ _:((A)p ⟶ (B)p)})
Lemma: psc-snd_wf-presheaf-fun
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀A,B:{X ⊢ _}. (q ∈ {X.(A ⟶ B) ⊢ _:((A)p ⟶ (B)p)})
Lemma: presheaf-fun-as-presheaf-pi
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ((X ⊢ A ⟶ B) = X ⊢ ΠA (B)p ∈ {X ⊢ _})
Definition: presheaf-lambda
(λb) == λI,a,J,f,u. (b J (f(a);u))
Lemma: presheaf-lambda_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[b:{X.A ⊢ _:B}]. ((λb) ∈ {X ⊢ _:ΠA B})
Lemma: pscm-presheaf-lambda
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[b:{X.A ⊢ _:B}]. ∀[H:ps_context{j:l}(C)].
∀[s:psc_map{j:l}(C; H; X)].
(((λb))s = (λ(b)s+) ∈ {H ⊢ _:(ΠA B)s})
Definition: presheaf-lam
presheaf-lam(X;b) == (λb)
Lemma: presheaf-lam_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[b:{X.A ⊢ _:(B)p}].
(presheaf-lam(X;b) ∈ {X ⊢ _:(A ⟶ B)})
Lemma: pscm-presheaf-lam
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[b:{X.A ⊢ _:(B)p}]. ∀[H:ps_context{j:l}(C)].
∀[s:psc_map{j:l}(C; H; X)].
((presheaf-lam(X;b))s = presheaf-lam(H;(b)s+) ∈ {H ⊢ _:((A ⟶ B))s})
Definition: presheaf-id-fun
presheaf-id-fun(X) == presheaf-lam(X;q)
Lemma: presheaf-id-fun_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. (presheaf-id-fun(X) ∈ {X ⊢ _:(A ⟶ A)})
Lemma: pscm-presheaf-id-fun
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[H:ps_context{j:l}(C)]. ∀[s:psc_map{j:l}(C; H; X)].
((presheaf-id-fun(X))s = presheaf-id-fun(H) ∈ {H ⊢ _:((A)s ⟶ (A)s)})
Definition: presheaf-app
app(w; u) == λI,a. (w I a I (cat-id(C) I) (u I a))
Lemma: presheaf-app_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:ΠA B}]. ∀[u:{X ⊢ _:A}].
(app(w; u) ∈ {X ⊢ _:(B)[u]})
Lemma: presheaf-app_wf-pscm
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:ΠA B}]. ∀[H:ps_context{j:l}(C)].
∀[tau:psc_map{j:l}(C; H; X)]. ∀[u:{H ⊢ _:(A)tau}].
(app((w)tau; u) ∈ {H ⊢ _:((B)tau+)[u]})
Definition: presheaf-apply
presheaf-apply(w;u) == app(w; u)
Lemma: presheaf-apply_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:ΠA B}]. ∀[u:{X ⊢ _:A}].
(presheaf-apply(w;u) ∈ {X ⊢ _:(B)[u]})
Lemma: presheaf-app_wf_fun
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[w:{X ⊢ _:(A ⟶ B)}]. ∀[u:{X ⊢ _:A}].
(app(w; u) ∈ {X ⊢ _:B})
Definition: presheaf-fun-comp
(f o g) == presheaf-lam(G;app((f)p; app((g)p; q)))
Lemma: presheaf-fun-comp_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B,E:{X ⊢ _}]. ∀[g:{X ⊢ _:(A ⟶ B)}]. ∀[f:{X ⊢ _:(B ⟶ E)}].
((f o g) ∈ {X ⊢ _:(A ⟶ E)})
Definition: presheaf-sigma
Σ A B == <λI,a. (u:A(a) × B((a;u))), λI,J,f,a,p. <(fst(p) a f), (snd(p) (a;fst(p)) f)>>
Lemma: presheaf-sigma_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. (Σ A B ∈ X ⊢ )
Lemma: presheaf-sigma-at
∀[X,A,B,I,a:Top]. (Σ A B(a) ~ u:A(a) × B((a;u)))
Lemma: pscm-presheaf-sigma
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X).
((Σ A B)s = Σ (A)s (B)(s o p;q) ∈ {Delta ⊢ _})
Lemma: presheaf-sigma-p
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀T,A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ((Σ A B)p = Σ (A)p (B)(p o p;q) ∈ {X.T ⊢ _})
Lemma: presheaf-sigma-p-p
∀C:SmallCategory. ∀X:ps_context{j:l}(C). ∀T,A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀E:{X.T ⊢ _}.
(((Σ A B)p)p = Σ ((A)p)p (B)(p o p o p;q) ∈ {X.T.E ⊢ _})
Lemma: pscm-presheaf-sigma-typed
∀C:SmallCategory. ∀X,Delta:ps_context{j:l}(C). ∀A:{X ⊢ _}. ∀B:{X.A ⊢ _}. ∀s:psc_map{j:l}(C; Delta; X).
((Σ A B)s = Σ (A)s (B)(s)dep ∈ {Delta ⊢ _})
Definition: presheaf-fst
p.1 == λI,a. (fst((p I a)))
Lemma: presheaf-fst_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[p:{X ⊢ _:Σ A B}]. (p.1 ∈ {X ⊢ _:A})
Lemma: pscm-presheaf-fst
∀[p,s:Top]. ((p.1)s ~ (p)s.1)
Lemma: pscm-ap-presheaf-fst
∀[C:SmallCategory]. ∀[X,Delta:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[p:{X ⊢ _:Σ A B}].
∀[s:psc_map{j:l}(C; Delta; X)].
((p.1)s = (p)s.1 ∈ {Delta ⊢ _:(A)s})
Definition: presheaf-snd
p.2 == λI,a. (snd((p I a)))
Lemma: presheaf-snd_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[p:{X ⊢ _:Σ A B}]. (p.2 ∈ {X ⊢ _:(B)[p.1]})
Lemma: presheaf-snd-at
∀[a,I,p:Top]. (p.2(a) ~ snd(p(a)))
Lemma: presheaf-fst-at
∀[a,I,p:Top]. (p.1(a) ~ fst(p(a)))
Lemma: pscm-presheaf-snd
∀[p,s:Top]. ((p.2)s ~ (p)s.2)
Lemma: pscm-ap-presheaf-snd
∀[C:SmallCategory]. ∀[X,Delta:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[p:{X ⊢ _:Σ A B}].
∀[s:psc_map{j:l}(C; Delta; X)].
((p.2)s = (p)s.2 ∈ {Delta ⊢ _:((B)[p.1])s})
Definition: presheaf-pair
presheaf-pair(u;v) == λI,a. <u I a, v I a>
Lemma: presheaf-pair_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[v:{X ⊢ _:(B)[u]}].
(presheaf-pair(u;v) ∈ {X ⊢ _:Σ A B})
Lemma: pscm-presheaf-pair
∀[u,v,s:Top]. ((presheaf-pair(u;v))s ~ presheaf-pair((u)s;(v)s))
Definition: sigma-elim-pscm
SigmaElim == λI,x. let a,u,v = x in ((a;u);v)
Lemma: sigma-elim-pscm_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}].
(SigmaElim ∈ psc_map{[i | j]:l}(C; X.Σ A B; X.A.B))
Definition: sigma-unelim-pscm
SigmaUnElim == λI,x. let au,v = x in let a,u = au in (a;(u;v))
Lemma: sigma-unelim-pscm_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}].
(SigmaUnElim ∈ psc_map{[i | j]:l}(C; X.A.B; X.Σ A B))
Lemma: ps-sigma-elim-unelim
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}].
(SigmaUnElim o SigmaElim = 1(X.Σ A B) ∈ psc_map{[i | j]:l}(C; X.Σ A B; X.Σ A B))
Lemma: ps-sigma-unelim-elim
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}].
(SigmaElim o SigmaUnElim = 1(X.A.B) ∈ psc_map{[i | j]:l}(C; X.A.B; X.A.B))
Lemma: ps-sigma-unelim-elim-type
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[T:{X.Σ A B ⊢ _}].
(((T)SigmaUnElim)SigmaElim = T ∈ {X.Σ A B ⊢ _})
Lemma: ps-sigma-unelim-elim-term
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[T:{X.Σ A B ⊢ _}]. ∀[t:{X.Σ A B ⊢ _:T}].
(((t)SigmaUnElim)SigmaElim = t ∈ {X.Σ A B ⊢ _:T})
Lemma: ps-sigma-unelim-p
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}].
(p o SigmaUnElim = p o p ∈ psc_map{[i | j]:l}(C; X.A.B; X))
Lemma: ps-sigma-unelim-p-type
∀[T:Top]. (((T)p)SigmaUnElim ~ ((T)p)p)
Lemma: ps-sigma-unelim-p-term
∀[t:Top]. (((t)p)SigmaUnElim ~ ((t)p)p)
Lemma: ps-sigma-elim-rule
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[T:{X.Σ A B ⊢ _}].
∀[t:{X.A.B ⊢ _:(T)SigmaUnElim}].
((t)SigmaElim ∈ {X.Σ A B ⊢ _:T})
Lemma: ps-sigma-elim-equality-rule
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[T:{X.Σ A B ⊢ _}].
∀[t1,t2:{X.A.B ⊢ _:(T)SigmaUnElim}].
(t1)SigmaElim = (t2)SigmaElim ∈ {X.Σ A B ⊢ _:T} supposing t1 = t2 ∈ {X.A.B ⊢ _:(T)SigmaUnElim}
Lemma: ps-sigma-elim-equality-rule2
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[T:{X.Σ A B ⊢ _}].
∀[t1:{X.A.B ⊢ _:(T)SigmaUnElim}]. ∀[t2:{X.Σ A B ⊢ _:T}].
(t1)SigmaElim = t2 ∈ {X.Σ A B ⊢ _:T} supposing t1 = (t2)SigmaUnElim ∈ {X.A.B ⊢ _:(T)SigmaUnElim}
Lemma: pscm-ap-presheaf-pair
∀[C:SmallCategory]. ∀[X,Delta:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[v:{X ⊢ _:(B)[u]}].
∀[s:psc_map{j:l}(C; Delta; X)].
((presheaf-pair(u;v))s = presheaf-pair((u)s;(v)s) ∈ {Delta ⊢ _:(Σ A B)s})
Lemma: pscm-presheaf-app
∀[C,w,u,s:Top]. ((app(w; u))s ~ app((w)s; (u)s))
Lemma: pscm-ap-presheaf-app
∀[C:SmallCategory]. ∀[X,Delta:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:ΠA B}]. ∀[u:{X ⊢ _:A}].
∀[s:psc_map{j:l}(C; Delta; X)].
((app(w; u))s = app((w)s; (u)s) ∈ {Delta ⊢ _:((B)[u])s})
Lemma: pscm-ap-presheaf-app-fun
∀[C:SmallCategory]. ∀[X,Delta:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[w:{X ⊢ _:(A ⟶ B)}]. ∀[u:{X ⊢ _:A}].
∀[s:psc_map{j:l}(C; Delta; X)].
((app(w; u))s = app((w)s; (u)s) ∈ {Delta ⊢ _:(B)s})
Lemma: pscm-ap-presheaf-lambda
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[b:{X.A ⊢ _:B}]. ∀[H:ps_context{j:l}(C)].
∀[s:psc_map{j:l}(C; H; X)].
(((λb))s = (λ(b)s+) ∈ {H ⊢ _:(ΠA B)s})
Lemma: presheaf-snd-pair
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[v:{X ⊢ _:(B)[u]}].
(presheaf-pair(u;v).2 = v ∈ {X ⊢ _:(B)[u]})
Lemma: presheaf-fst-pair
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. ∀[v:Top].
(presheaf-pair(u;v).1 = u ∈ {X ⊢ _:A})
Lemma: presheaf-pair-eta
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:Σ A B}].
(presheaf-pair(w.1;w.2) = w ∈ {X ⊢ _:Σ A B})
Lemma: presheaf-sigma-equal
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w,y:{X ⊢ _:Σ A B}].
(w = y ∈ {X ⊢ _:Σ A B}) supposing ((w.2 = y.2 ∈ {X ⊢ _:(B)[w.1]}) and (w.1 = y.1 ∈ {X ⊢ _:A}))
Lemma: presheaf-eta
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[w:{X ⊢ _:ΠA B}].
((λapp((w)p; q)) = w ∈ {X ⊢ _:ΠA B})
Lemma: presheaf-fun-eta
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A,B:{X ⊢ _}]. ∀[w:{X ⊢ _:(A ⟶ B)}].
(presheaf-lam(X;app((w)p; q)) = w ∈ {X ⊢ _:(A ⟶ B)})
Lemma: presheaf-beta
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[B:{X.A ⊢ _}]. ∀[b:{X.A ⊢ _:B}]. ∀[u:{X ⊢ _:A}].
(app((λb); u) = (b)[u] ∈ {X ⊢ _:(B)[u]})
Lemma: presheaf-app-id-fun
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}]. ∀[u:{X ⊢ _:A}]. (app(presheaf-id-fun(X); u) = u ∈ {X ⊢ _:A})
Definition: presheaf-sigma-fun
presheaf-sigma-fun(G;A;B;f) == presheaf-lam(G;presheaf-pair(q.1;app(app(((λf))p; q.1); q.2)))
Lemma: presheaf-sigma-fun_wf
∀[C:SmallCategory]. ∀[G:ps_context{j:l}(C)]. ∀[A:{G ⊢ _}]. ∀[B,B':{G.A ⊢ _}]. ∀[f:{G.A ⊢ _:(B ⟶ B')}].
(presheaf-sigma-fun(G;A;B;f) ∈ {G ⊢ _:(Σ A B ⟶ Σ A B')})
Definition: discrete-presheaf-type
discr(T) == <λI,alpha. T, λI,J,f,alpha,x. x>
Lemma: discrete-presheaf-type_wf
∀[C:SmallCategory]. ∀[T:Type]. ∀[X:ps_context{j:l}(C)]. (discr(T) ∈ X ⊢ )
Lemma: pscm-discrete-presheaf-type
∀[T,s:Top]. ((discr(T))s ~ discr(T))
Definition: discrete-presheaf-term
discr(t) == λI,alpha. t
Lemma: discrete-presheaf-term_wf
∀[C:SmallCategory]. ∀[T:Type]. ∀[t:T]. ∀[X:ps_context{j:l}(C)]. (discr(t) ∈ {X ⊢ _:discr(T)})
Lemma: discrete-presheaf-term-at-morph
∀[C:SmallCategory]. ∀[T:Type]. ∀[X:ps_context{j:l}(C)]. ∀[t:{X ⊢ _:discr(T)}].
∀I,J:cat-ob(C). ∀f:cat-arrow(C) J I. ∀a:X(I). (t(a) = t(f(a)) ∈ T)
Definition: discrete-unary
discrete-unary(t;x.f[x]) == λI,a. f[t(a)]
Lemma: discrete-unary_wf
∀[C:SmallCategory]. ∀[A,B:Type]. ∀[f:A ⟶ B]. ∀[X:ps_context{j:l}(C)]. ∀[t:{X ⊢ _:discr(A)}].
(discrete-unary(t;x.f[x]) ∈ {X ⊢ _:discr(B)})
Lemma: pscm-discrete-presheaf-term
∀[t,s:Top]. ((discr(t))s ~ discr(t))
Lemma: discrete-presheaf-term-is-map
∀[C:SmallCategory]. ∀[T:Type]. ∀[X:ps_context{j:l}(C)]. {X ⊢ _:discr(T)} ≡ psc_map{[i | j]:l}(C; X; discrete-set(T))
Lemma: ps-discrete-map-is-constant
∀[C:SmallCategory]. ∀[T:𝕌{j}]. ∀[I:cat-ob(C)]. ∀[s:psc_map{[i | j]:l}(C; Yoneda(I); discrete-set(T))].
(s = (λJ,g. (s I (cat-id(C) I))) ∈ psc_map{[i | j]:l}(C; Yoneda(I); discrete-set(T)))
Lemma: discrete-presheaf-term-is-constant
Not every term of a discrete presheaf type is constant, but when the
context is the Yoneda(I) -- Yoneda(I) -- then it is.⋅
∀[C:SmallCategory]. ∀[T:Type]. ∀[I:cat-ob(C)]. ∀[t:{Yoneda(I) ⊢ _:discr(T)}].
(t = discr(t(cat-id(C) I)) ∈ {Yoneda(I) ⊢ _:discr(T)})
Definition: presheaf-unit
1 == discr(Unit)
Lemma: presheaf-unit_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (1 ∈ X ⊢ )
Lemma: pscm-presheaf-unit
∀[s:Top]. ((1)s ~ 1)
Definition: presheaf-it
* == discr(⋅)
Lemma: presheaf-it_wf
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. (* ∈ {X ⊢ _:1})
Lemma: presheaf-it-unique
∀[C:SmallCategory]. ∀[X:ps_context{j:l}(C)]. ∀[t:{X ⊢ _:1}]. (t = * ∈ {X ⊢ _:1})
Definition: constant-presheaf-type
(X) == <λI,alpha. X(I), λI,J,f,alpha,w. f(w)>
Lemma: constant-presheaf-type_wf
∀[C:SmallCategory]. ∀[X:small_ps_context{i:l}(C)]. ∀[Gamma:ps_context{j:l}(C)]. ((X) ∈ Gamma ⊢ )
Lemma: pscm-constant-presheaf-type
∀[X,s:Top]. (((X))s ~ (X))
Lemma: constant-presheaf-type-at
∀[X,I,a:Top]. ((X)(a) ~ X(I))
Lemma: unit-set-presheaf-type
∀[C:SmallCategory]. ∀[I:cat-ob(C)].
({Yoneda(I) ⊢ _} ~ {AF:A:L:cat-ob(C) ⟶ (cat-arrow(C) L I) ⟶ Type × (L:cat-ob(C)
⟶ J:cat-ob(C)
⟶ f:(cat-arrow(C) J L)
⟶ a:(cat-arrow(C) L I)
⟶ (A L a)
⟶ (A J (cat-comp(C) J L I f a)))|
let A,F = AF
in (∀K:cat-ob(C). ∀a:cat-arrow(C) K I. ∀u:A K a. ((F K K (cat-id(C) K) a u) = u ∈ (A K a)))
∧ (∀L,J,K:cat-ob(C). ∀f:cat-arrow(C) J L. ∀g:cat-arrow(C) K J. ∀a:cat-arrow(C) L I. ∀u:A L a.
((F L K (cat-comp(C) K J L g f) a u)
= (F J K g (cat-comp(C) J L I f a) (F L J f a u))
∈ (A K (cat-comp(C) K L I (cat-comp(C) K J L g f) a))))} )
Lemma: presheaf-term-at-comp
∀C:SmallCategory. ∀Gamma:ps_context{j:l}(C). ∀T:{Gamma ⊢ _}. ∀t:{Gamma ⊢ _:T}. ∀I:cat-ob(C). ∀rho:Gamma(I).
∀J:cat-ob(C). ∀f:cat-arrow(C) J I. ∀K:cat-ob(C). ∀g:cat-arrow(C) K J.
(t(cat-comp(C) K J I g f(rho)) = t(g(f(rho))) ∈ T(g(f(rho))))
Lemma: subset-presheaf-type
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)]. {X ⊢ _} ⊆r {Y ⊢ _} supposing sub_ps_context{j:l}(C; Y; X)
Lemma: subset-presheaf-term
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)].
∀[A:{X ⊢ _}]. ({X ⊢ _:A} ⊆r {Y ⊢ _:A}) supposing sub_ps_context{j:l}(C; Y; X)
Lemma: subset-presheaf-term2
∀[C:SmallCategory]. ∀[X,Y:ps_context{j:l}(C)].
∀[A,B:{X ⊢ _}]. {X ⊢ _:A} ⊆r {Y ⊢ _:B} supposing A = B ∈ {X ⊢ _} supposing sub_ps_context{j:l}(C; Y; X)
Lemma: pscm-subset-codomain
∀[C:SmallCategory]. ∀[X,Y,Z:ps_context{j:l}(C)].
psc_map{j:l}(C; X; Y) ⊆r psc_map{j:l}(C; X; Z) supposing sub_ps_context{j:l}(C; Y; Z)
Lemma: pscm-subset-domain
∀[C:SmallCategory]. ∀[X,Y,Z:ps_context{j:l}(C)].
psc_map{j:l}(C; Y; X) ⊆r psc_map{j:l}(C; Z; X) supposing sub_ps_context{j:l}(C; Z; Y)
Lemma: pscm-subset-subtype
∀[C:SmallCategory]. ∀[A,B,Y,Z:ps_context{j:l}(C)].
(psc_map{j:l}(C; Y; A) ⊆r psc_map{j:l}(C; Z; B)) supposing
(sub_ps_context{j:l}(C; A; B) and
sub_ps_context{j:l}(C; Z; Y))
Lemma: sub_ps_context_functionality
∀[C:SmallCategory]. ∀[Y,X:ps_context{j:l}(C)]. ∀[A:{X ⊢ _}].
sub_ps_context{[i | j]:l}(C; Y.A; X.A) supposing sub_ps_context{j:l}(C; Y; X)
Lemma: presheaf-pi-intro
∀C:SmallCategory. ∀G:ps_context{j:l}(C). ∀A:{G ⊢ _}. ∀B:{G.A ⊢ _}. ({G.A ⊢ _:B}
⇒ {G ⊢ _:ΠA B})
Lemma: presheaf-sigma-intro
∀C:SmallCategory. ∀G:ps_context{j:l}(C). ∀A:{G ⊢ _}. ∀B:{G.A ⊢ _}. ((∃a:{G ⊢ _:A}. {G ⊢ _:(B)[a]})
⇒ {G ⊢ _:Σ A B})
Lemma: presheaf-pi-implies-sigma
∀C:SmallCategory. ∀G:ps_context{j:l}(C). ∀A:{G ⊢ _}. ∀B:{G.A ⊢ _}. ({G ⊢ _:A}
⇒ {G ⊢ _:ΠA B}
⇒ {G ⊢ _:Σ A B})
Lemma: ps-csm_typedp_id_adjoin_lemma
∀E,s,F,G,u,H:Top. ((((E)s)tp{i:l})[u] ~ (E)s)
Lemma: presheaf-fun-family-discrete
∀[C:SmallCategory]. ∀[A,B:Type]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[a:X(I)].
(presheaf-fun-family(C; X; discr(A); discr(B); I; a)
= {w:J:cat-ob(C) ⟶ f:(cat-arrow(C) J I) ⟶ u:A ⟶ B|
∀J,K:cat-ob(C). ∀f:cat-arrow(C) J I. ∀g:cat-arrow(C) K J. ∀u:A.
((w J f u) = (w K (cat-comp(C) K J I g f) u) ∈ B)}
∈ Type)
Definition: psdcff-inj
psdcff-inj(I;w) == w I (cat-id(C) I)
Lemma: psdcff-inj_wf
∀[C:SmallCategory]. ∀[A,B:Type]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[a:X(I)]. ∀[w:presheaf-fun-family(C;
X;
discr(A);
discr(B);
I;
a)].
(psdcff-inj(I;w) ∈ A ⟶ B)
Lemma: psdcff-inj-injection
∀[C:SmallCategory]. ∀[A,B:Type]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[a:X(I)].
Inj(presheaf-fun-family(C; X; discr(A); discr(B); I; a);A ⟶ B;λw.psdcff-inj(I;w))
Lemma: psdcff-inj-bijection
∀[C:SmallCategory]. ∀[A,B:Type]. ∀[X:ps_context{j:l}(C)]. ∀[I:cat-ob(C)]. ∀[a:X(I)].
Bij(presheaf-fun-family(C; X; discr(A); discr(B); I; a);A ⟶ B;λw.psdcff-inj(I;w))
Home
Index