namespace http://cds.omdoc.org/examples❚
import real scala://real.omdoc.org/❚
import rules scala://mmt.kwarc.info❚
rule scala://parser.api.mmt.kwarc.info?MMTURILexer❚
// A first test case for writing imperative programs as MMT theories. ❚
theory ProgLang : http://cds.omdoc.org/urtheories?CF =
include ☞real:?Bool❙
include ?NatRules❙
include ☞real:?StandardNat❙
print : {a: type} a ⟶ None❘ # print 2❙
rule rules/cf?Print❙
❚
theory Counter : ?ProgLang =
counter: nat❘= 0❙
add: nat ⟶ None❘= [n] counter = counter + n❙
❚
theory Program : ?ProgLang =
main = print 1❙
// This one is still experimental.❙
// main2 =
var c = new examples?Counter in
c.add 3;
print c.add
❙
❚