-- SML.model
-- Copyright (C) 1985 by Xerox Corporation.  All rights reserved.
-- last edit by Satterthwaite, May 30, 1986 12:30:08 pm PDT

LET @OSBasics.modelBcd!581021414 IN 
LET @CedarBasics.modelBcd!581021540 IN 
LET @ViewerBasics.modelBcd!581021721 IN 
LET @LoaderBasics.modelBcd!581021616 IN 
LET [
    CompilerOps: TYPE~@/Cedar/Cedar6.1/Compiler/CompilerOps.bcd!580778591, 
    FileParms: TYPE~@/Cedar/Cedar6.1/Compiler/FileParms.bcd!580778586, 
    FileSegment: TYPE~@/Cedar/Cedar6.1/BCDStuff/FileSegment.bcd!541573263, 
    FileViewerOps: TYPE~
      @/Cedar/Cedar6.1/InterpreterTool/FileViewerOps.bcd!542083129, 
    RuntimeError: TYPE~@/Cedar/Cedar6.1/MesaRuntime/RuntimeError.bcd!541570482, 
    SafeStorageOps: TYPE~
      @/Cedar/Cedar6.1/SafeStorage/SafeStorageOps.bcd!541573495, 
    TiogaMenuOps: TYPE~@/Cedar/Cedar6.1/Tioga/TiogaMenuOps.bcd!546419532, 
    VersionMapDefaults: TYPE~
      @/Cedar/Cedar6.1/VersionMap/VersionMapDefaults.bcd!541592146, 
    UnsafeStorage: TYPE~
      @/Cedar/Cedar6.1/SafeStorage/UnsafeStorage.bcd!541573222] IN 

LAMBDA [
    AsciiImpl: Ascii, 
    AtomImpl: Atom, 
    BasicsImpl: Basics, 
    BasicTimeImpl: BasicTime, 
    BcdOpsImpl: BcdOps, 
    CommanderImpl: Commander, 
    CompilerOpsImpl: CompilerOps, 
    ContainersImpl: Containers, 
    ConvertImpl: Convert, 
    FileNamesImpl: FileNames, 
    FileViewerOpsImpl: FileViewerOps, 
    FSImpl: FS, 
    IOImpl: IO, 
    LabelsImpl: Labels, 
    ListImpl: List, 
    LoadStateImpl: LoadState, 
    --LoaderImpl: Loader,
    --LoaderOpsImpl: LoaderOps,
    RuntimeErrorImpl: RuntimeError, -- for loader only
    SystemVersionImpl: SystemVersion, -- ditto
    MBQueueImpl: MBQueue, 
    MenusImpl: Menus, 
    PrincOpsUtilsImpl: PrincOpsUtils, 
    ProcessImpl: Process, 
    ProcessPropsImpl: ProcessProps, 
    RefTextImpl: RefText, 
    RopeImpl: Rope, 
    RulesImpl: Rules, 
    SafeStorageImpl: SafeStorage, 
    SafeStorageOpsImpl: SafeStorageOps, 
    TiogaMenuOpsImpl: TiogaMenuOps, 
    TypeScriptImpl: TypeScript, 
    UnsafeStorageImpl: UnsafeStorage, 
    VersionMapDefaultsImpl: VersionMapDefaults, 
    ViewerEventsImpl: ViewerEvents, 
    ViewerOpsImpl: ViewerOps, 
    ViewerIOImpl: ViewerIO, 
    ViewerToolsImpl: ViewerTools, 
    VMImpl: VM] IN 
  
  LET REC [
      
      -- temporary, until loader in boot file is repaired
      LoaderOpsExtras: TYPE~@///Loader/LoaderOpsExtras.bcd!580685885; 
      [
      LoaderImpl: Loader, LoaderOpsImpl: LoaderOps, 
      LoaderOpsExtrasImpl: LoaderOpsExtras]~
        @///Loader/RuntimeLoader.bcd!580685921*[]; 
      
      &options: STRING~"j-s"; -- "js" ?
      CS: TYPE~@CS.mesa!579465845*[]; 
      CSImpl: CS~@CSImpl.mesa!579465872*[]*[]; 
      
      SMTree: TYPE Tree~@SMTree.mesa!579465895*[]; 
      SMTreeOps: TYPE TreeOps~@SMTreeOps.mesa!561939916*[Tree:~SMTree]; 
      SMTreeOpsImpl: SMTreeOps~
        @SMTreeImpl.mesa!561939915*[
          Tree:~SMTree, 
          TreeOps:~SMTreeOps]*[]; 
      
      SMCommentTable: TYPE~@SMCommentTable.mesa!579465924*[]; 
      SMCommentTableOps: TYPE~@SMCommentTableOps.mesa!579465945*[]; 
      SMCommentTableOpsImpl: SMCommentTableOps~
        @SMCommentTableImpl.mesa!579465967*[]*[]; 
      
      SMOps: TYPE~@SMOps.mesa!579465994*[]; 
      SMUtil: TYPE~@SMUtil.mesa!579466023*[]; 
      SMEval: TYPE~@SMEval.mesa!579466039*[]; 
      
      ModelParser:~
        REC [
          SMParseTable: TYPE ParseTable~@SMParseTable.mesa!580331301*[]; 
          [SMParseData: TYPE, SMParseDataImpl: SMParseData]~
            @SMParseData.bcd!580331301[]; 
          SMP1: TYPE P1~@SMP1.mesa!577138121*[]; 
          SMP1Impl: SMP1~
            @SMScannerImpl.mesa!577671604*[]*[] 
              + @ParserImpl.mesa!577671557*[
                ParseTable:~SMParseTable, 
                P1:~SMP1]*[P1Impl:~SMP1Impl] 
              + @SMTreeBuildImpl.mesa!580331296*[]*[]; 
          [SMUtilImpl: SMUtil, SMOpsImpl: SMOps]~
            @SMReaderImpl.mesa!579466090*[]*[]]; 
      SMOpsImpl: SMOps~ModelParser.SMOpsImpl; 
      SMUtilImpl: SMUtil~
        ModelParser.SMUtilImpl + @SMPrettyImpl.mesa!580933333*[]*[]; 
      
      SMTypeCons: TYPE~@SMTypeCons.mesa!580847036*[]; 
      SMTypeConsImpl: SMTypeCons~@SMTypeConsImpl.mesa!580847236*[]*[]; 
      
      SMFI: TYPE~@SMFI.mesa!579466295*[]; 
      SMFIOps: TYPE~@SMFIOps.mesa!579466318*[]; 
      
      CedarParser:~
        REC [
          CtoSParseTable: TYPE ParseTable~@CtoSParseTable.mesa!581020894*[]; 
          [CtoSParseData: TYPE, CtoSParseDataImpl: CtoSParseData]~
            @CtoSParseData.bcd!581020894[]; 
          CtoSP1: TYPE P1~@CtoSP1.mesa!577138707*[]; 
          CtoSP1Impl: CtoSP1~
            @CtoSScannerImpl.mesa!568314458*[]*[] 
              + @ParserImpl.mesa!577671557*[
                ParseTable:~CtoSParseTable, 
                P1:~CtoSP1]*[P1Impl:~CtoSP1Impl] 
              + @CtoSTreeBuildImpl.mesa!581020886*[]*[]; 
          SMFIOpsImpl: SMFIOps~
            LET REC [
                SrcHashTable: TYPE HashTable~
                  @HashTable.mesa!579552122*[
                    ParticularTable:~@SMSrcFITable.mesa!579552753*[]]; 
                SrcHashTableImpl: SrcHashTable~
                  @HashTableImpl.mesa!579552176*[HashTable:~SrcHashTable]*[]; 
                BcdHashTable: TYPE HashTable~
                  @HashTable.mesa!579552122*[
                    ParticularTable:~@SMBcdFITable.mesa!579553155*[]]; 
                BcdHashTableImpl: BcdHashTable~
                  @HashTableImpl.mesa!579552176*[HashTable:~BcdHashTable]*[]] IN 
            @SMFIImpl.mesa!581018527*[&options:~"j-s-w"]*[]]; 
      SMFIOpsImpl: SMFIOps~CedarParser.SMFIOpsImpl; 
      
      BcdStamps: TYPE~@BcdStamps.mesa!579466462*[]; 
      BcdStampsImpl: BcdStamps~@BcdStampsImpl.mesa!579466479*[]*[]; 
      
      SMProj: TYPE~@SMProj.mesa!579654434*[]; 
      SMProjImpl: SMProj~
        LET REC [
            HashTable: TYPE~
              @HashTable.mesa!579552122*[
                ParticularTable:~@SMProjTable.mesa!579652878*[]]; 
            HashTableImpl: HashTable~@HashTableImpl.mesa!579552176*[]*[]] IN 
        @SMProjImpl.mesa!579654364*[]*[]; 
      
      SMEvalImpl: SMEval~@SMEvalImpl.mesa!581280216*[]*[]; 
      
      SMVal: TYPE~@SMVal.mesa!579466594*[]; 
      SMValImpl: SMVal~@SMValImpl.mesa!580583923*[]*[]; 
      
      SMComp: TYPE~@SMComp.mesa!580348133*[]; 
      SMCompImpl: SMComp~@SMCompImpl.mesa!580589830*[]*[]; 
      SMBcd: TYPE~@SMBcd.mesa!579466651*[]; 
      SMBcdImpl: SMBcd~@SMBcdImpl.mesa!579542327*[]*[]; 
      SMLDriver: TYPE~@SMLDriver.mesa!579466681*[]; 
      
      SMLDriverImpl: SMLDriver~
        REC [
          BcdLiterals: TYPE~@///binder/BcdLiterals.mesa!573518745*[]; 
          BcdLiteralsImpl: BcdLiterals~
            REC [
              Symbols: TYPE Symbols~
                @/Cedar/Cedar6.1/BcdStuff/Symbols.bcd!541573249; 
              SymbolTable: TYPE SymbolTable~
                @/Cedar/Cedar6.1/BcdStuff/SymbolTable.bcd!541573286; 
              Bcd:~@///Compiler/InternalBcdStuff.modelBcd!581022104; 
              RCMap: TYPE~Bcd.RCMap*[]; 
              RTBcd: TYPE~Bcd.RTBcd*[]; 
              RCMapOps: TYPE~Bcd.RCMapOps*[]; 
              RCMapOpsImpl: RCMapOps~Bcd.RCMapBuilderImpl*[]*[]; 
              Impl: BcdLiterals~@///binder/BcdLiteralsImpl.mesa!577930999*[]*[]].
            Impl; 
          SMModelBcd: TYPE~@SMModelBcd.mesa!579466710*[]; 
          SMModelBcdImpl: SMModelBcd~@SMModelBcdImpl.mesa!579466729*[]*[]; 
          
          SMLoader: SMLDriver~
            REC [
              SMLoad: TYPE~@SMLoad.mesa!579466752*[]; 
              SMLoadImpl: SMLoad~@SMLoadImpl.mesa!579466771*[]*[]; 
              Impl: SMLDriver~@SMLDriverImpl.mesa!580682683*[]*[]].Impl; 
          
          SMBinder: SMLDriver~
            REC [
              SMBind: TYPE~@SMBind.mesa!579466814*[]; 
              SMBindImpl: SMBind~@SMBindImpl.mesa!579466827*[]*[]; 
              Impl: SMLDriver~@SMBDriverImpl.mesa!580682287*[]*[]].Impl; 
          
          Impl: SMLDriver~SMLoader + SMBinder].Impl; 
      
      SMDF: TYPE~@SMDF.mesa!577155794*[]; 
      SMDFImpl: SMDF~NIL; 
      
      SML: CONTROL~@SMIntImpl.mesa!580935609*[]*[]] IN []