AlgebraicJulia / AlgebraicJulia/Catlab.jl

Wiring diagrams of typed morphisms

未關閉
#200 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
bug wiring diagrams
主要語言
Julia
星號
724
分支
73
PR 合併指標
30 天內沒有已合併 PR

描述

I have the theory

```julia
@theory BiproductCategory(Ob,Hom) => EpidemiologyC(Ob,Hom) begin
spontaneous(A::Ob, B::Ob)::(A → B)
transmission(A::Ob, B::Ob)::(A ⊗ B → B)
exposure(A::Ob, B::Ob, C::Ob)::(A ⊗ B → C ⊗ B)
end
```

with the instance

```julia
@instance EpidemiologyC(PetriCospanOb, PetriCospan) begin
@import dom, codom, compose, id, otimes, munit, braid, mcopy, mmerge, create, delete, pair, copair, proj1, proj2, coproj1, coproj2
spontaneous(A::PetriCospanOb, B::PetriCospanOb) = PetriCospan([1], Petri.Model(1:2, [(Dict(1=>1), Dict(2=>1))]), [2])
transmission(A::PetriCospanOb, B::PetriCospanOb) = PetriCospan([1,2], Petri.Model(1:2, [(Dict(1=>1, 2=>1), Dict(2=>2))]), [2])
exposure(A::PetriCospanOb, B::PetriCospanOb, C::PetriCospanOb) = PetriCospan([1, 2], Petri.Model(1:3, [(Dict(1=>1, 2=>1), Dict(3=>1, 2=>1))]), [3, 2])
end
```

if I create a presentation on this theory

```julia
@present BasicEpi(FreeEpidemiologyC) begin
S::Ob
E::Ob
I::Ob
R::Ob
D::Ob
end

S,E,I,R,D = generators(BasicEpi)

F(ex) = functor((PetriCospanOb, PetriCospan), ex, generators=Dict(map(x->x=>PetriCospanOb(1), generators(BasicEpi))))
```

doing the code

```julia
sir = transmission(S,I) ⋅ spontaneous(I,R)
F(sir)
```

works as intended, but using the program macro

```julia
sir = @program BasicEpi (s::S, i::I) begin
i_2 = transmission{S,I}(s, i)
return spontaneous{I,R}(i)
end
F(to_hom_expr(FreeEpidemiologyC, sir))
```

does not work

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。