File size: 456 Bytes
56de343
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module Language.AST where

data Ident = Ident String
  deriving (Eq, Ord, Show)

data Expr
  = EVar Ident
  | ENand Expr Expr
  | ELit Bool
  | EApp Ident [Expr]
  deriving (Eq, Show)

data Stmt
  = SDef Ident [Ident] Expr
  | SAssert Expr
  | SProve Ident Expr
  deriving (Eq, Show)

data Module = Module
  { moduleName :: String
  , moduleStmts :: [Stmt]
  } deriving (Show)

identName :: Ident -> String
identName (Ident s) = s