packages feed

HaRe-0.6: tools/property/toy/Syntax.hs

-- $Id: Syntax.hs,v 1.1 2001/03/19 17:55:45 moran Exp $

module Syntax where


type Name = String


data Id
    = Var Name
    | Escape Name
      deriving (Eq, Show)

data E e v
    = App e e
    | Lambda [v] e
      deriving (Eq, Show)

data P id term prop
    = prop `And` prop
    | prop `Or` prop
    | prop `Implies` prop
    | prop `Iff` prop
    | term `Equiv` term
    | Exists id prop
    | All id prop
    | Truth
    | Falsehood
      deriving (Eq, Show)

-- Tie the knots

data Exp
    = ExpEval (E Exp Name)
    | ExpId Id
      deriving (Eq, Show)

data EscExp
    = EscExpEval (E EscExp Name)
    | EscExpId Id
      deriving (Eq, Show)

data Code e
    = Code e
      deriving (Eq, Show)

data Prop
    = Eval (E Prop Name)
    | Prop (P Id Exp Prop)
    | Term Exp
      deriving (Eq, Show)

data EscProp
    = EscEval (E EscProp Name)
    | EscProp (P Id (Code EscExp) EscProp)
    | EscTerm (Code EscExp)
      deriving (Eq, Show)