AlgebraicJulia / AlgebraicPetri.jl

Build Petri net models compositionally
https://algebraicjulia.github.io/AlgebraicPetri.jl/
MIT License
76 stars 21 forks source link

Incorrect generation of state names? #176

Open sdwfrost opened 3 months ago

sdwfrost commented 3 months ago

I'm trying to replicate the '2 strain SIR' example from Evan and Micah's presentation way back. I know the following will result in shared parameters across the two strains, but why are the state names both I and not I_1 and I_2?

sir_uwd = @relation (S, I, R) where (S::Pop, I::Pop, R::Pop) begin
    infection(S, I, I, I)
    recovery(I, R)
end

sir_acst = oapply_typed(epi_lpn, sir_uwd, [:β, :γ])
sir_lpn = dom(sir_acst)

sir12_uwd = @relation (S, I₁, I₂, R) where (S::Pop, I₁::Pop, I₂::Pop, R::Pop) begin
    sir(S, I₁, R)
    sir(S, I₂, R)
end

sir2_smc = oapply(sir2_uwd, Dict(
    :sir => Open(sir_lpn)
))

sir2_lpn = apex(sir2_smc)

snames(sir2_lpn)

Output:

4-element Vector{Symbol}:
 :S
 :I
 :R
 :I