Admin/Benchmarks/HOL-datatype/SML.thy
changeset 7373 776d888472aa
parent 7013 8a7fb425e04a
child 16417 9bc16273c2d4
equal deleted inserted replaced
7372:79e911c0c7d1 7373:776d888472aa
     1 (*  Title:      Admin/Benchmarks/HOL-datatype/SML.thy
     1 (*  Title:      Admin/Benchmarks/HOL-datatype/SML.thy
     2     ID:         $Id$
     2     ID:         $Id$
     3 *)
     3 *)
     4 
     4 
     5 SML = Main +
     5 theory SML = Main:
     6 
     6 
     7 (* ------------------------------------------------------------------------- *)
     7 (* ------------------------------------------------------------------------- *)
     8 (* Example from Myra: part of the syntax of SML.                             *)
     8 (* Example from Myra: part of the syntax of SML.                             *)
     9 (* ------------------------------------------------------------------------- *)
     9 (* ------------------------------------------------------------------------- *)
    10 
    10 
    28 
    28 
    29 datatype
    29 datatype
    30    label = LABEL string
    30    label = LABEL string
    31 
    31 
    32 datatype
    32 datatype
    33   'a nonemptylist = Head_and_tail 'a ('a list)
    33   'a nonemptylist = Head_and_tail 'a "'a list"
    34 
    34 
    35 datatype
    35 datatype
    36   'a long = BASE 'a | QUALIFIED strid ('a long)
    36   'a long = BASE 'a | QUALIFIED strid "'a long"
    37 
    37 
    38 datatype
    38 datatype
    39    atpat_e = WILDCARDatpat_e
    39    atpat_e = WILDCARDatpat_e
    40            | SCONatpat_e scon
    40            | SCONatpat_e scon
    41            | VARatpat_e var
    41            | VARatpat_e var
    42            | CONatpat_e (con long)
    42            | CONatpat_e "con long"
    43            | EXCONatpat_e (excon long)
    43            | EXCONatpat_e "excon long"
    44            | RECORDatpat_e (patrow_e option)
    44            | RECORDatpat_e "patrow_e option"
    45            | PARatpat_e pat_e
    45            | PARatpat_e pat_e
    46 and
    46 and
    47    patrow_e = DOTDOTDOT_e
    47    patrow_e = DOTDOTDOT_e
    48             | PATROW_e label pat_e (patrow_e option)
    48             | PATROW_e label pat_e "patrow_e option"
    49 and
    49 and
    50    pat_e = ATPATpat_e atpat_e
    50    pat_e = ATPATpat_e atpat_e
    51          | CONpat_e (con long) atpat_e
    51          | CONpat_e "con long" atpat_e
    52          | EXCONpat_e (excon long) atpat_e
    52          | EXCONpat_e "excon long" atpat_e
    53          | LAYEREDpat_e var pat_e
    53          | LAYEREDpat_e var pat_e
    54 and
    54 and
    55    conbind_e = CONBIND_e con (conbind_e option)
    55    conbind_e = CONBIND_e con "conbind_e option"
    56 and
    56 and
    57    datbind_e = DATBIND_e conbind_e (datbind_e option)
    57    datbind_e = DATBIND_e conbind_e "datbind_e option"
    58 and
    58 and
    59    exbind_e = EXBIND1_e excon (exbind_e option)
    59    exbind_e = EXBIND1_e excon "exbind_e option"
    60             | EXBIND2_e excon (excon long) (exbind_e option)
    60             | EXBIND2_e excon "excon long" "exbind_e option"
    61 and
    61 and
    62    atexp_e = SCONatexp_e scon
    62    atexp_e = SCONatexp_e scon
    63            | VARatexp_e (var long)
    63            | VARatexp_e "var long"
    64            | CONatexp_e (con long)
    64            | CONatexp_e "con long"
    65            | EXCONatexp_e (excon long)
    65            | EXCONatexp_e "excon long"
    66            | RECORDatexp_e (exprow_e option)
    66            | RECORDatexp_e "exprow_e option"
    67            | LETatexp_e dec_e exp_e
    67            | LETatexp_e dec_e exp_e
    68            | PARatexp_e exp_e
    68            | PARatexp_e exp_e
    69 and
    69 and
    70    exprow_e = EXPROW_e label exp_e (exprow_e option)
    70    exprow_e = EXPROW_e label exp_e "exprow_e option"
    71 and
    71 and
    72    exp_e = ATEXPexp_e atexp_e
    72    exp_e = ATEXPexp_e atexp_e
    73          | APPexp_e exp_e atexp_e
    73          | APPexp_e exp_e atexp_e
    74          | HANDLEexp_e exp_e match_e
    74          | HANDLEexp_e exp_e match_e
    75          | RAISEexp_e exp_e
    75          | RAISEexp_e exp_e
    76          | FNexp_e match_e
    76          | FNexp_e match_e
    77 and
    77 and
    78    match_e = MATCH_e mrule_e (match_e option)
    78    match_e = MATCH_e mrule_e "match_e option"
    79 and
    79 and
    80    mrule_e = MRULE_e pat_e exp_e
    80    mrule_e = MRULE_e pat_e exp_e
    81 and
    81 and
    82    dec_e = VALdec_e valbind_e
    82    dec_e = VALdec_e valbind_e
    83          | DATATYPEdec_e datbind_e
    83          | DATATYPEdec_e datbind_e
    84          | ABSTYPEdec_e datbind_e dec_e
    84          | ABSTYPEdec_e datbind_e dec_e
    85          | EXCEPTdec_e exbind_e
    85          | EXCEPTdec_e exbind_e
    86          | LOCALdec_e dec_e dec_e
    86          | LOCALdec_e dec_e dec_e
    87          | OPENdec_e ((strid long) nonemptylist)
    87          | OPENdec_e "strid long nonemptylist"
    88          | EMPTYdec_e
    88          | EMPTYdec_e
    89          | SEQdec_e dec_e dec_e
    89          | SEQdec_e dec_e dec_e
    90 and
    90 and
    91    valbind_e = PLAINvalbind_e pat_e exp_e (valbind_e option)
    91    valbind_e = PLAINvalbind_e pat_e exp_e "valbind_e option"
    92              | RECvalbind_e valbind_e
    92              | RECvalbind_e valbind_e
    93 
    93 
    94 end
    94 end