%
%-language(spifcp). public(wntbind(0.002), lrpbind(0.002)). public(albind(1.0)). public(agbind(0.0015)). public(axinph(0.2), axindph(0.1)). public(aabind(0.001)). public(apcph(0.2), apcdph(0.1)). public(abbind(0.00003), apbbind(0.01)). public(tcfbind(0.0003)). public(betaph(5.0)). public(betadeg1(0.001)). public(transcription(0.02), axinsyn(0.012)). public(betasyn(0.423)). public(wntsyn(10.0)). public(wntdeg1(0.008)). System(N1,N2,N3) ::= << %All, Axin Clock | Syn | CREATE_FZ(N1) | CREATE_LRP(N1) | CREATE_Axin(N2) | CREATE_APC(N1) | CREATE_GSK(N1) | CREATE_TCF(N1) . % CREATE_Beta(N3) . CREATE_FZ(N) ::= {N =< 0}, true ; {N > 0}, {N--} | Fz | self . CREATE_LRP(N) ::= {N =< 0}, true ; {N > 0}, {N--} | LRP | self . CREATE_Axin(N) ::= {N =< 0}, true ; {N > 0}, {N--} | Axin | self . CREATE_APC(N) ::= {N =< 0}, true ; {N > 0}, {N--} | APC | self . CREATE_GSK(N) ::= {N =< 0}, true ; {N > 0}, {N--} | Gsk | self . CREATE_Beta(N) ::= {N =< 0}, true ; {N > 0}, {N--} | Beta | self . CREATE_TCF(N) ::= {N =< 0}, true ; {N > 0}, {N--} | TCF | self >> . %Wnt Wnt ::= << wntrel(0.1), wntdeg(0.008), internal(0.008), lrprel(0.1), lrprem(infinite), alrel(0.000000001), axinrem(infinite), axindeg(infinite) . wntbind ! {wntrel, wntdeg, internal}, WntFz ; wntdeg1 ! [], true . WntFz ::= lrpbind ! {lrprel, lrprem}, WntFzLRP ; wntrel ? [], Wnt ; wntdeg ! [], true . WntFzLRP ::= albind ! {alrel, axinrem, axindeg}, WntFzLRPAxinGsk ; lrprel ? [], WntFz ; wntdeg ! [], lrprem ! [], true . WntFzLRPAxinGsk ::= alrel ? [], WntFzLRP ; wntrel ? [], lrprem ! [], axinrem ! [], Wnt ; wntdeg ! [], lrprem ! [], axinrem ! [], true ; internal ! [], lrprem ! [], axindeg ! [], Wnt >> . %Fz Fz ::= << wntrel(0.1), wntdeg(0.008), internal(0.008) . wntbind ? {wntrel, wntdeg, internal}, FzBound . FzBound ::= wntrel ! [], Fz ; wntdeg ? [], Fz ; internal ? [], Fz >> . %LRP %is activated by Wnt and recruits Axin leading to its deactivation and degradation LRP ::= << lrprel(0.1), lrprem(infinite) . lrpbind ? {lrprel, lrprem}, LRPBound . LRPBound ::= lrprel ! [], LRP ; lrprem ? [], LRP >> . %GSK Gsk ::= << agrel(0.1), apgrel(0.01), gskrem(infinite) . agbind ! {agrel, apgrel, gskrem}, GskBound . GskBound ::= agrel ? [], Gsk ; apgrel ? [], Gsk ; gskrem ? [], Gsk >> . %Phosphorylated Axin binds APC (fast) or beta-catenin (slow) %Axin Axin ::= << phmsg(infinite), dphmsg(infinite), degmsg(0.00167), degpmsg(0.00167), degimsg(infinite), agrel(0.1), apgrel(0.01), gskrem(infinite), alrel(0.000000001), wntrem(infinite), wntdeg(infinite), aarel(0.1), apcrem(infinite) . Axin_GskBinding | Axin_APCBinding . Axin_GskBinding ::= agbind ? {agrel, apgrel, gskrem}, Axin_GskBound ; dphmsg ! [], Axin_GskBinding ; degmsg ! [], true . AxinP_GskBinding ::= axindph ! [], Axin_GskBinding ; phmsg ! [], AxinP_GskBinding . Axin_GskBound ::= axinph ! [], AxinP_GskBound ; albind ? {alrel, wntrem, wntdeg}, Axin_WntGskBound ; agrel ! [], Axin_GskBinding ; dphmsg ! [], Axin_GskBound . AxinP_GskBound ::= apgrel ! [], AxinP_GskBinding ; albind ? {alrel, wntrem, wntdeg}, AxinP_WntGskBound ; degpmsg ! [], gskrem ! [], true ; phmsg ! [], AxinP_GskBound . Axin_WntGskBound ::= alrel ! [], Axin_GskBound ; wntrem ? [], Axin_GskBound ; wntdeg ? [], gskrem ! [], degimsg ! [], true ; dphmsg ! [], Axin_WntGskBound . AxinP_WntGskBound ::= alrel ! [], AxinP_GskBound ; wntrem ? [], AxinP_GskBound ; wntdeg ? [], gskrem ! [], degimsg ! [], true ; phmsg ! [], AxinP_WntGskBound . Axin_APCBinding ::= phmsg ? [], AxinP_APCBinding ; degmsg ? [], true ; degimsg ? [], true . AxinP_APCBinding ::= aabind ? {aarel, apcrem}, AxinP_APCBound ; degimsg ? [], true ; dphmsg ? [], Axin_APCBinding . Axin_APCBound ::= aarel ! [], Axin_APCBinding ; degpmsg ? [], apcrem ! [], true ; degimsg ? [], apcrem ! [], true ; phmsg ? [], AxinP_APCBound . AxinP_APCBound ::= aarel ! [], AxinP_APCBinding ; degpmsg ? [], apcrem ! [], true ; degimsg ? [], apcrem ! [], true ; dphmsg ? [], Axin_APCBound >> . %APC APC ::= << phmsg(infinite), dphmsg(infinite), aarel(0.1), apcrem(infinite), abrel(0.1), betadeg(0.001), betapdeg(5.0) . APC_AxinBinding | APC_BetaBinding . APC_AxinBinding ::= aabind ! {aarel, apcrem}, APC_AxinBound ; dphmsg ! [], APC_AxinBinding . APCP_AxinBinding ::= apcdph ! [], APC_AxinBinding ; phmsg ! [], APCP_AxinBinding . APC_AxinBound ::= apcph ! [], APCP_AxinBound ; aarel ? [], APC_AxinBinding ; apcrem ? [], APC_AxinBinding ; dphmsg ! [], APC_AxinBound . APCP_AxinBound ::= apcdph ! [], APC_AxinBound ; apcrem ? [], APCP_AxinBinding ; phmsg ! [], APCP_AxinBound . APC_BetaBinding ::= abbind ! {abrel, betadeg, betapdeg}, APC_BetaBound ; phmsg ? [], APCP_BetaBinding . APCP_BetaBinding ::= apbbind ! {abrel, betadeg, betapdeg}, APCP_BetaBound ; dphmsg ? [], APC_BetaBinding . APC_BetaBound ::= abrel ? [], APC_BetaBinding ; betadeg ? [], APC_BetaBinding ; phmsg ? [], APCP_BetaBound . APCP_BetaBound ::= betaph ! [], APCP_BetaPBound ; abrel ? [], APCP_BetaBinding ; betadeg ? [], APCP_BetaBinding ; dphmsg ? [], APC_BetaBound . APCP_BetaPBound ::= betapdeg ? [], APCP_BetaBinding >> . %Beta Beta ::= << tcfrel(0.01), betadeg(0.001), abrel(0.1), betapdeg(5.0) . tcfbind ? {tcfrel, betadeg}, Beta_TCFBound ; abbind ? {abrel, betadeg, betapdeg}, Beta_APCBound ; apbbind ? {abrel, betadeg, betapdeg}, Beta_APCBound ; betadeg1 ! [], true . Beta_TCFBound ::= tcfrel ! [], Beta ; betadeg ! [], true . Beta_APCBound ::= abrel ! [], Beta ; betadeg ! [], true ; betapdeg ! [], true >> . %TCF TCF ::= << tcfrel(0.01), betadeg(0.001) . tcfbind ! {tcfrel, betadeg}, TCFBound . TCFBound ::= tcfrel ? [], TCF ; betadeg ? [], TCF ; transcription ! [], TCFTrans . TCFTrans ::= axinsyn ! [], (TCFTrans | Axin) ; tcfrel ? [], TCF ; betadeg ? [], TCF >> . Syn ::= betasyn ! [], (Beta | Syn) ; wntsyn ! [], (Wnt | Syn) . Clock ::= wntdeg1 ? [], Clock ; axinph ? [], Clock ; axindph ? [], Clock ; apcph ? [], Clock ; apcdph ? [], Clock ; betaph ? [], Clock ; betadeg1 ? [], Clock ; transcription ? [], Clock ; axinsyn ? [], Clock ; betasyn ? [], Clock ; wntsyn ? [], Clock . %%