directive duration 20000000.0 points 1000 directive plot (* This example takes 16 irreversible steps to copy "00111". Probabilistic irreversibility implementation from LNCS Qian et al. *) (* Use "infinite" semantics, just-in-time (JIT) simulation with the "polymer" option checked. *) (* Simulates a closed system with initial fuel that gets used up. *) (* Look at the "final state" to see the molecules at the end. *) def Fuel = 20 def stack(N,Qp,Qm,P,Bp,Bm) = ( N * [Qp* T^*]

{Qm} | N * | N *

) def stacksym(N,Qp,Qm,P,Xp,Xm) = ( N * {T^}[P T^]:[Xp T^]{Qp} | N * ) def unirev(N,Xp,Xm,Ap,Am) = ( N * {T^*}[Xp T^]:[Am T^] | N * | N * | N * [T^ Xp]:[T^ Am]{T^*} ) def biirrev(N,Xp,Xm,Yp,Ym,Ap,Am,Bp,Bm) = ( N * {T^*}[Xp T^]:[Yp T^]:[Am T^]:[Bm T^]:[I] | N * | N * | N * | N * | N * ) ( stack(Fuel,Q1p,Q1m,P1,B1p,B1m) | stacksym(Fuel,Q1p,Q1m,P1,p01,m01) | stacksym(Fuel,Q1p,Q1m,P1,p11,m11) | stack(Fuel,Q2p,Q2m,P2,B2p,B2m) | stacksym(Fuel,Q2p,Q2m,P2,p02,m02) | stacksym(Fuel,Q2p,Q2m,P2,p12,m12) | stack(Fuel,Q3p,Q3m,P3,B3p,B3m) | stacksym(Fuel,Q3p,Q3m,P3,p03,m03) | stacksym(Fuel,Q3p,Q3m,P3,p13,m13) | unirev(Fuel,Q1p,Q1m,Qp,Qm) | unirev(Fuel,Q2p,Q2m,Qp,Qm) | unirev(Fuel,Q3p,Q3m,Qp,Qm) | biirrev(Fuel,S1p,S1m,p01,m01,S2p,S2m,Qp,Qm) | biirrev(Fuel,S1p,S1m,p11,m11,S4p,S4m,Qp,Qm) | biirrev(Fuel,S1p,S1m,B1p,B1m,S6p,S6m,B1p,B1m) | biirrev(Fuel,S2p,S2m,Qp,Qm,S3p,S3m,p02,m02) | biirrev(Fuel,S3p,S3m,Qp,Qm,S1p,S1m,p03,m03) | biirrev(Fuel,S4p,S4m,Qp,Qm,S5p,S5m,p12,m12) | biirrev(Fuel,S5p,S5m,Qp,Qm,S1p,S1m,p13,m13) | | | [T^ B1p]:[T^ Q1p*]::[T^* P1]:[T^ p01]:[T^ Q1p*]::[T^* P1]:[T^ p01]:[T^ Q1p*]::[T^* P1]:[T^ p11]:[T^ Q1p*]::[T^* P1]:[T^ p11]:[T^ Q1p*]::[T^* P1]:[T^ p11]:[T^ Q1p*] | [T^ B2p]:[T^ Q2p*] | [T^ B3p]:[T^ Q3p*] )