diff --git a/AlgebraicDataflowArchitectureModel/models/JumpGame.model b/AlgebraicDataflowArchitectureModel/models/JumpGame.model index 4db5282..d8b002b 100644 --- a/AlgebraicDataflowArchitectureModel/models/JumpGame.model +++ b/AlgebraicDataflowArchitectureModel/models/JumpGame.model @@ -1,10 +1,10 @@ channel CIO { - out force(f:Tuple, gravity(y:Double)) == tuple(0.0, y) + out force(f:Pair, gravity(y:Double)) == pair(0.0, y) out time(t:Double, gravity(y)) == t + 0.01 } channel CIO2 { - out move(v:Tuple, moveX(x:Double)) == tuple(x, snd(v)) - out move(v, moveY(y:Double)) == tuple(fst(v), y) + out move(v:Pair, moveX(x:Double)) == pair(x, snd(v)) + out move(v, moveY(y:Double)) == pair(fst(v), y) } channel CIO3 { out mass(m:Double, setMass(x:Double)) == x @@ -17,26 +17,26 @@ ref onground(o, update1(f2, m2, o)) in force(f, update1(f2, m2, o)) == f2 in mass(m, update1(f2, m2, o)) == m2 - out acceleration(a:Tuple, update1(f2, m2, o)) == if(o, tuple(fst(f2) / m2, 0.0), tuple(fst(f2) / m2, snd(f2) / m2)) + out acceleration(a:Pair, update1(f2, m2, o)) == if(o, pair(fst(f2) / m2, 0.0), pair(fst(f2) / m2, snd(f2) / m2)) } channel C2 { ref onground(o, update3(a2, o)) in acceleration(a, update3(a2, o)) == a2 - out velocity(v:Tuple, update3(a2, o)) == if(and(o, lt(snd(v), 0.0)), - tuple(fst(v) + 0.01 * fst(a2), 0.0), - tuple(fst(v) + 0.01 * fst(a2), snd(v) + 0.01 * snd(a2))) + out velocity(v:Pair, update3(a2, o)) == if(and(o, lt(snd(v), 0.0)), + pair(fst(v) + 0.01 * fst(a2), 0.0), + pair(fst(v) + 0.01 * fst(a2), snd(v) + 0.01 * snd(a2))) } channel C3 { ref onground(o, update4(m2, o)) in move(m, update4(m2, o)) == m2 - out velocity(v:Tuple, update4(m2, o)) == if(and(o, ge(snd(m2), 0.0)), m2, v) + out velocity(v:Pair, update4(m2, o)) == if(and(o, ge(snd(m2), 0.0)), m2, v) } channel C4 { in velocity(v, update5(v2, g)) == v2 ref ground(g, update5(v2, g)) - out position(p:Tuple, update5(v2, g)) == if(and(eq(g, true), lt(snd(p) + 0.01 * snd(v2), 0.0)), - tuple(fst(p) + 0.01 * fst(v2), 0.0), - tuple(fst(p) + 0.01 * fst(v2), snd(p) + 0.01 * snd(v2))) + out position(p:Pair, update5(v2, g)) == if(and(eq(g, true), lt(snd(p) + 0.01 * snd(v2), 0.0)), + pair(fst(p) + 0.01 * fst(v2), 0.0), + pair(fst(p) + 0.01 * fst(v2), snd(p) + 0.01 * snd(v2))) } channel C5 { in position(p, update2(p2, g2)) == p2