hamlet/GRAMMAR_PROGRAM-sig.ss
(module GRAMMAR_PROGRAM-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: GRAMMAR_PROGRAM-sig)
       (SIGSigExp:
        (SEQSpec:
         (STRUCTURESpec: (StrDesc: (StrId: Module-struct) (IDSigExp: (SigId: GRAMMAR_MODULE-sig))))
         (SEQSpec:
          (SEQSpec:
           (INCLUDESpec:
            (WHERETYPESigExp:
             (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Info-type))))
             (TyVarseq:)
             (LongTyCon: Info-type)
             (CONTy: (Tyseq:) (LongTyCon: Module.Info-type))))
           (EMPTYSpec:))
          (SEQSpec:
           (SEQSpec:
            (INCLUDESpec:
             (WHERETYPESigExp:
              (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: TopDec-type))))
              (TyVarseq:)
              (LongTyCon: TopDec-type)
              (CONTy: (Tyseq:) (LongTyCon: Module.TopDec-type))))
            (EMPTYSpec:))
           (SEQSpec:
            (DATATYPESpec:
             (DatDesc:
              (TyVarseq:)
              (TyCon: Program-type)
              (ConDesc:
               (VId: Program)
               (RECORDTy:
                (TyRow:
                 (Lab: |1|)
                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                 (TyRow:
                  (Lab: |2|)
                  (CONTy: (Tyseq:) (LongTyCon: TopDec-type))
                  (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Program-type))) (LongTyCon: option-type)))))))))
            (VALSpec:
             (ValDesc: (VId: infoProgram) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Program-type)) (CONTy: (Tyseq:) (LongTyCon: Info-type))))))))))))))))