-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpartial-state.law.old
62 lines (56 loc) · 1.1 KB
/
partial-state.law.old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Practice for defining categories..
cat Two = {
ob = [ start: {}, end: {} ],
ar = [ idStart: {}, idEnd: {}, go: {} ],
src = ...,
tgt = ...,
id = ...,
comp = @f [ idStart = .g,
idEnd = .g,
go = go.]
}
// "Builtin":
cat Base = {
ob = BOb,
ar = BHom,
src = bSrc,
tgt = bTgt,
id = bId,
comp = bComp
}
// We start by defining the hom object for Partial, it is a limit in Base:
ob Base PartialHom =
{ a : BOb,
b : BOb,
pb : BOb,
k : BHom,
pSrc : k -> a : bSrc,
pTgt : k -> pb : bTgt,
part : b -> pb : [ err: {}, suc: ]
}
// what the composition limit for hom object H (over O) looks like:
{ a : O,
b : O,
c : O,
f : H,
g : H,
srcF : f -> a : src,
tgtF : f -> b : tgt,
srcG : g -> b : src,
tgtG : g -> c : tgt
}
cat Partial = {
ob = Ob,
ar = PartialHom,
src = .pSrc,
tgt = .pTgt,
id = ..., // TODO
comp = { a = .a,
b = .c,
pb = _,
k = { f = .f .k,
g = [ err = err.,
suc = .g .k] }
pComp,
},
}