#!/bin/bash
 
N=$1

function out {
	echo $1 >> flip$N.sm 
}  

out "// flip model." > flip$N.sm
out "int pow(int b, int e) := cond(e == 0, 1, b*pow(b, e-1));"
out "real wgt(real w, int p) := cond(p == 0, 1, w);"
out "spn flip$1 := {"
out "for(int i in {0..$1-1}) {"
out "	place bit[i];"
out "	partition(i+1:bit[i]);"
out "	trans bitInc[i];"
out "	trans bitDec[i];"
out "	arcs(bitInc[i]:bit[i]);"
out "	inhibit(bit[i]:bitInc[i]);"
out "	arcs(bit[i]:bitDec[i]);"
out "   }"

out "for(int i in {0..$1-1}) {"
out "firing( bitInc[i]:expo("
num=$((N-1))
for idx in $(seq 1 1 $num) 
do
 rate=$((20 + 1 * idx))
 out "wgt(1.$rate, tk(bit[$idx]))*" 
done
out "wgt(1.1, tk(bit[0]))"
out "));"

out "firing( bitDec[i]:expo("
num=$((N-1))
for idx in $(seq 1 1 $num) 
do
 rate=$((20 + 1 * idx))
 out "wgt(1.$rate, tk(bit[$idx]))*" 
done
out "wgt(1.1, tk(bit[0]))"
out "));"

out "}"
out "real prod:= prob_ss(tk(bit[0])==0);"
out "};"

out "# Verbose true"
out "# Report true"

out "flip$N.prod;"
