AlgebraicJulia / AlgebraicJulia/Catlab.jl

Wiring diagrams of typed morphisms

Abierto
#200 0 comentarios 0 reacciones 0 asignados Ver en GitHub
bug wiring diagrams
Lenguaje dominante
Julia
Estrellas
724
Forks
73
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.