src/Tools/Haskell/Term.hs
author wenzelm
Sat, 10 Nov 2018 17:12:09 +0100
changeset 69280 e1d01b351724
parent 69240 16ca270090b6
permissions -rw-r--r--
more formal references;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
69240
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     1
{- generated by Isabelle -}
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     2
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     3
{-  Title:      Tools/Haskell/Term.hs
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     4
    Author:     Makarius
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     5
    LICENSE:    BSD 3-clause (Isabelle)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     6
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
     7
Lambda terms, types, sorts.
69280
e1d01b351724 more formal references;
wenzelm
parents: 69240
diff changeset
     8
e1d01b351724 more formal references;
wenzelm
parents: 69240
diff changeset
     9
See also "$ISABELLE_HOME/src/Pure/term.scala".
69240
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    10
-}
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    11
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    12
module Isabelle.Term (
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    13
  Indexname,
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    14
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    15
  Sort, dummyS,
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    16
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    17
  Typ(..), dummyT, Term(..))
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    18
where
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    19
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    20
type Indexname = (String, Int)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    21
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    22
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    23
type Sort = [String]
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    24
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    25
dummyS :: Sort
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    26
dummyS = [""]
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    27
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    28
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    29
data Typ =
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    30
    Type (String, [Typ])
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    31
  | TFree (String, Sort)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    32
  | TVar (Indexname, Sort)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    33
  deriving Show
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    34
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    35
dummyT :: Typ
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    36
dummyT = Type ("dummy", [])
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    37
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    38
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    39
data Term =
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    40
    Const (String, Typ)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    41
  | Free (String, Typ)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    42
  | Var (Indexname, Typ)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    43
  | Bound Int
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    44
  | Abs (String, Typ, Term)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    45
  | App (Term, Term)
16ca270090b6 more Haskell operations;
wenzelm
parents:
diff changeset
    46
  deriving Show