-- SML.model
-- last edited by Satterthwaite, August 5, 1983 10:25 am
LET @OSBasics.model!2606162530 IN
LET @CedarBasics.model!2606162699 IN
LET @ViewersBasics.model!2606162906 IN 
LET [
    BcdDefs: TYPE~@BcdDefs.bcd!d2f897b3ab9e[],
    BcdOps: TYPE~@BcdOps.bcd!99c46fb8f9fd[],
    --CedarExporterImpl: TYPE~@CedarExporterImpl.bcd[NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL],
    CedarLinkerOps: TYPE~@CedarLinkerOps.bcd[],
    CompilerOps: TYPE~@CompilerOps.bcd[],
    FileSegment: TYPE~@FileSegment.bcd[],
    FileParms: TYPE~@FileParms.bcd[],
    Frame: TYPE~@Frame.bcd[],
    Loader: TYPE~@Loader.bcd[],
    LoaderPrivate: TYPE~@LoaderPrivate.bcd[],
    MiscAlpha: TYPE~@MiscAlpha.bcd[],
    Mopcodes: TYPE~@Mopcodes.bcd[],
    PilotLoaderOps: TYPE~@PilotLoaderOps.bcd[],
    PilotLoadStateFormat: TYPE~@PilotLoadStateFormat.bcd[],
    PilotLoadStateOps: TYPE~@PilotLoadStateOps.bcd[],
    PrincOpsRuntime: TYPE~@PrincOpsRuntime.bcd[],
    RTLoader: TYPE~@RTLoader.bcd[],
    RTOS: TYPE~@RTOS.bcd[],
    RuntimeInternal: TYPE~@RuntimeInternal.bcd[],
    SDDefs: TYPE~@SDDefs.bcd[],
    Trap: TYPE~@Trap.bcd[],
    UECP: TYPE~@UECP.bcd[]
    ] IN 
  LAMBDA [
	AtomImpl: Atom,
	BcdOpsImpl: BcdOps,
	--CedarExporterImplImpl: CedarExporterImpl,
	CedarLinkerOpsImpl: CedarLinkerOps,
	CompilerOpsImpl: CompilerOps,
	ContainersImpl: Containers,
	DirectoryImpl: Directory,
	FileImpl: File,
	FileIOImpl: FileIO,
	FileStreamImpl: FileStream,
	FrameImpl: Frame,
	HeapImpl: Heap,
	IOImpl: IO,
	InlineImpl: Inline,
	LabelsImpl: Labels,
	ListImpl: List,
	LoaderImpl: Loader,
	LoaderPrivateImpl: LoaderPrivate,
	MBQueueImpl: MBQueue,
	MenusImpl: Menus,
	PilotLoaderOpsImpl: PilotLoaderOps,
	PilotLoadStateOpsImpl: PilotLoadStateOps,
	PrincOpsRuntimeImpl: PrincOpsRuntime,
	ProcessImpl: Process,
	RopeImpl: Rope,
	RopeInlineImpl: RopeInline,
	RTLoaderImpl: RTLoader,
	RTOSImpl: RTOS,
	RulesImpl: Rules,
	RuntimeImpl: Runtime,
	RuntimeInternalImpl: RuntimeInternal,
	SafeStorageImpl: SafeStorage,
	SpaceImpl: Space,
	StreamImpl: Stream,
	TimeImpl: Time,
	TrapImpl: Trap,
	TypeScriptImpl: TypeScript,
	UECPImpl: UECP,
	UserExecImpl: UserExec,
	ViewerEventsImpl: ViewerEvents,
	ViewerIOImpl: ViewerIO,
	ViewerOpsImpl: ViewerOps,
	ViewerToolsImpl: ViewerTools,
	WindowManagerImpl: WindowManager
	] => [] IN
    REC [
      CS: TYPE~@CS.mesa!2605449547[File,IO,Rope,Stream,TimeStamp,"js"][];
      CSImpl: CS~@CSImpl.mesa!2605890644[CS,DCSFileTypes,Directory,Environment,
          File,FileStream,Inline,IO,Rope,SafeStorage,Stream,TimeStamp,"js"][DirectoryImpl,
          FileImpl,FileStreamImpl,InlineImpl,IOImpl,RopeImpl,SafeStorageImpl];
      SMTree: TYPE Tree~@SMTree.mesa!2604931446[Rope,TimeStamp,"js"][];
      SMTreeOps: TYPE~@SMTreeOps.mesa!2603033237[SMTree,"js"][];
      SMTreeOpsImpl: SMTreeOps~@SMTreeImpl.mesa!2603033256[SMTree,SMTreeOps,"js"][];
      SMLDriver: TYPE~@SMLDriver.mesa!2604941280[IO,SMTree,SMTreeOps,"js"][];
      SMCommentTable: TYPE~@SMCommentTable.mesa!2597874636[Rope,"js"][];
      SMCommentTableOps: TYPE~@SMCommentTableOps.mesa!2597937680[SMCommentTable,
	"js"][];
      SMCommentTableOpsImpl: SMCommentTableOps~@SMCommentTableImpl.mesa!2597937602
	[SMCommentTable,SMCommentTableOps,"js"][];
      SMOps: TYPE~@SMOps.mesa!2605460850[IO,SMCommentTableOps,SMLDriver,SMTree,
	SMTreeOps,"js"][];
      SMUtil: TYPE~@SMUtil.mesa!2602164972[IO,SMCommentTableOps,SMOps,SMTree,
	"js"][];
      SMFI: TYPE~@SMFI.mesa!2605552186[File,Rope,TimeStamp,SMTree,"js"][];
      ModelParser ~ REC [
	ParseTable: TYPE~@SMParseTable.mesa!2604931491["js"][];
	[SMParseData: TYPE, SMParseDataImpl: SMParseData]~@SMParseData.bcd[];
	SMP1: TYPE~@SMP1.mesa!2605797168[IO,ParseTable,SMCommentTable,SMOps,
	  "js"][];
	SMP1Impl: SMP1~
	  @SMScannerImpl.mesa!2603993346[Ascii,Atom,IO,SMP1,ParseTable,
	    Rope,RopeInline,SMCommentTable,SMCommentTableOps,SMOps,SMTree,"js"][AtomImpl,
	    IOImpl,RopeImpl,RopeInlineImpl,SMCommentTableOpsImpl]
	      +
	  @SMParserImpl.mesa!2605798045[IO,SMP1,ParseTable,SMOps,"js"][IOImpl,SMP1Impl]
	      +
	  @SMTreeBuildImpl.mesa!2604931478[Atom,SMP1,ParseTable,Rope,SMTree,SMTreeOps,
	    SMCommentTable,SMOps,"js"][AtomImpl,RopeImpl,SMTreeOpsImpl];
	[SMUtilImpl: SMUtil, SMOpsImpl: SMOps]~@SMReaderImpl.mesa!2605456800[CS,
	  IO,SMP1,Runtime,Rope,SMCommentTable,SMCommentTableOps,SMFI,SMLDriver,SMOps,
          SMParseData,SMUtil,SMTree,SMTreeOps,"js"][CSImpl,IOImpl,SMP1Impl,RopeImpl,
          RuntimeImpl,SMCommentTableOpsImpl,SMLDriverImpl,SMTreeOpsImpl,SMParseDataImpl]
        ];
      SMOpsImpl: SMOps ~ ModelParser.SMOpsImpl;
      SMUtilImpl: SMUtil~
        ModelParser.SMUtilImpl 
          +
        @SMPrettyImpl.mesa!2604959146[Atom,CS,IO,Rope,SMCommentTable,
	  SMCommentTableOps,SMFI,SMUtil,SMTree,SMTreeOps,"js"][AtomImpl,CSImpl,IOImpl,
          RopeImpl,SMCommentTableOpsImpl,SMTreeOpsImpl];
      SMTypeCons: TYPE~@SMTypeCons.mesa!2604854211[Rope,SMTree,SMTreeOps,TimeStamp,
	"js"][];
      SMTypeConsImpl: SMTypeCons~@SMTypeConsImpl.mesa!2604854389[Rope,SMTree,
	SMTreeOps,SMTypeCons,TimeStamp,"js"][RopeImpl,SMTreeOpsImpl];
      SMFIOps: TYPE~@SMFIOps.mesa!2605456938[SMFI,SMTree,SMOps,Rope,TimeStamp,
	"js"][];
      SMEval: TYPE~@SMEval.mesa!2602777539[Rope,SMOps,SMTree,"js"][];
      SMBcd: TYPE~@SMBcd.mesa!2601933974[IO,Rope,SMOps,SMTree,"js"][];
      FileParser ~ REC [
	ParseTable: TYPE~@CtoSParseTable.mesa!2603735838["js"][];
	[CtoSParseData: TYPE, CtoSParseDataImpl: CtoSParseData]~@CtoSParseData.bcd[];
	CtoSP1: TYPE~@CtoSP1.mesa!2605797159[ParseTable,IO,Rope,SMCommentTable,
          SMOps,"js"][];
	CtoSP1Impl: CtoSP1~
	  @CtoSScannerImpl.mesa!2605797134[Environment,IO,CtoSP1,
	    ParseTable,Rope,SMOps,"js"][IOImpl,RopeImpl]
	      +
	  @CtoSParserImpl.mesa!2605798035[IO,CtoSP1,ParseTable,
	    SMOps,"js"][IOImpl,CtoSP1Impl]
	      +
	  @CtoSTreeBuildImpl.mesa!2604854510[Atom,CtoSP1,ParseTable,Rope,SMTree,
	    SMTypeCons,SMOps,"js"][AtomImpl,CtoSP1Impl,RopeImpl,SMTypeConsImpl];
	SMFIOpsImpl: SMFIOps~@SMFIImpl.mesa!2606057411[Atom,BcdDefs,BcdOps,CS,CtoSP1,
	  CtoSParseData,Directory,File,FileIO,FileSegment,FileStream,IO,Rope,Runtime,
	  SMEval,SMFI,SMFIOps,SMOps,SMTree,SMTreeOps,SMTypeCons,SMUtil,Space,TimeStamp,
	  UECP,UserExec,"js"][AtomImpl,BcdOpsImpl,CSImpl,CtoSP1Impl,CtoSParseDataImpl,
	  DirectoryImpl,FileIOImpl,FileStreamImpl,IOImpl,RopeImpl,RuntimeImpl,SMEvalImpl,
	  SMTreeOpsImpl,SMTypeConsImpl,SMUtilImpl,SpaceImpl,UECPImpl,UserExecImpl]];
      SMFIOpsImpl: SMFIOps~FileParser.SMFIOpsImpl;
      BcdStamps: TYPE~@BcdStamps.mesa!2605456626[CompilerOps,Environment,TimeStamp,
	"js"][];
      BcdStampsImpl: BcdStamps~@BcdStampsImpl.mesa!2605890442[BcdStamps,CompilerOps,
          Environment,Inline,TimeStamp,"js"][];
      SMEvalImpl: SMEval~@SMEvalImpl.mesa!2606058828[Atom,CS,FileIO,IO,Rope,SMBcd,
	SMEval,SMFI,SMFIOps,SMOps,SMUtil,SMTree,SMTreeOps,"js"][AtomImpl,CSImpl,
	FileIOImpl,IOImpl,RopeImpl,SMBcdImpl,SMFIOpsImpl,SMOpsImpl,
	SMUtilImpl,SMTreeOpsImpl];
      SMProj: TYPE~@SMProj.mesa!2605458043[CompilerOps,File,FileSegment,Rope,
	TimeStamp,"js"][];
      SMLoad: TYPE~@SMLoad.mesa!2605460046[BcdDefs,BcdOps,File,IO,MiscAlpha,
	Mopcodes,PilotLoaderOps,PilotLoadStateOps,PrincOps,Rope,TimeStamp,"js"][];
      SMVal: TYPE~@SMVal.mesa!2606058523[SMLoad,SMOps,SMProj,SMTree,SMTreeOps,
	"js"][];
      SMValImpl: SMVal~@SMValImpl.mesa!2606058723[SMOps,SMTree,SMTreeOps,SMVal,
	"js"][SMTreeOpsImpl];
      ParticularTable: TYPE~@SMParticularTable.mesa!2606225801[BcdStamps,Environment,
        SMProj,TimeStamp,"js"][BcdStampsImpl];
      ParticularTableImpl: ParticularTable~NIL;
      OrderedSymbolTable: TYPE~@OrderedSymbolTable.mesa!2583283111[Environment,
	ParticularTable,"js"][ParticularTableImpl];
      OrderedSymbolTableImpl: OrderedSymbolTable~@RedBlackTreeImpl.mesa!2583283170
	[Environment,OrderedSymbolTable,"js"][OrderedSymbolTableImpl];
      SMProjImpl: SMProj~@SMProjImpl.mesa!2606225814[BcdDefs,BcdOps,CompilerOps,
        CS,Directory,File,FileSegment,OrderedSymbolTable,Rope,SMProj,Space,TimeStamp,"
        js"][CSImpl,DirectoryImpl,OrderedSymbolTableImpl,RopeImpl,SpaceImpl];
      SMComp: TYPE~@SMComp.mesa!2605102706[IO,SMOps,SMTree,"js"][];
      SMCompImpl: SMComp~@SMCompImpl.mesa!2605888394[Atom,BcdStamps,CompilerOps,
	CS,Directory,File,FileParms,FileStream,Heap,IO,Loader,LongString,Rope,Runtime,
	SMComp,SMFI,SMOps,SMProj,SMTree,SMTreeOps,SMVal,Stream,Time,TimeStamp,
	ViewerClasses,ViewerOps,WindowManager,"js"][AtomImpl,BcdStampsImpl,
	CompilerOpsImpl,CSImpl, DirectoryImpl,FileStreamImpl,HeapImpl,IOImpl,LoaderImpl,
	RopeImpl,RuntimeImpl,SMProjImpl,SMTreeOpsImpl,SMValImpl,StreamImpl,
	TimeImpl,ViewerOpsImpl,WindowManagerImpl];
      SMLDriverImpl: SMLDriver ~ REC [
	SMLoadImpl: SMLoad~@SMLoadImpl.mesa!2605479509[Atom,BcdDefs,BcdOps,
	  CedarLinkerOps,Directory,Environment,File,Frame,Inline,IO,LoaderPrivate,
	  PilotLoaderOps,PilotLoadStateOps,PrincOps,PrincOpsRuntime,Rope,RTOS,
	  Runtime,RuntimeInternal,SDDefs,SMLoad,Space,TimeStamp,Trap,"js"]
	  [AtomImpl,BcdOpsImpl,CedarLinkerOpsImpl,DirectoryImpl,FrameImpl,InlineImpl,
	  IOImpl,LoaderPrivateImpl,PilotLoaderOpsImpl,PrincOpsRuntimeImpl,
	  RopeImpl,RTOSImpl,RuntimeImpl,RuntimeInternalImpl,SpaceImpl,TrapImpl];
	SMFakeBcd: TYPE~@SMFakeBcd.mesa!2600630636[IO,PilotLoadStateFormat,Rope,
	  SMTree,Space,"js"][];
	SMFakeBcdImpl: SMFakeBcd~@SMFakeBcdImpl.mesa!2605456023[BcdDefs,BcdOps,
	  Directory,Environment,File,IO,CS,PilotLoadStateFormat,PilotLoadStateOps,
	  PrincOps,Rope,RopeInline,SMFakeBcd,SMLoad,SMTree,SMTreeOps,SMVal,Space,
	  "js"][BcdOpsImpl,CSImpl,DirectoryImpl,SMLoadImpl,SMTreeOpsImpl,SMValImpl,
	  IOImpl,PilotLoadStateOpsImpl,RopeInlineImpl,SpaceImpl];
	SMLDriverImpl: SMLDriver~@SMLDriverImpl.mesa!2606229864[Atom,BcdDefs,BcdOps,
	  CedarLinkerOps,CS,Directory,File,IO,List,Loader,LoaderPrivate,PilotLoaderOps,
	  PilotLoadStateFormat,PilotLoadStateOps,PrincOps,Process,Rope,RTLoader,Runtime,
	  RuntimeInternal,SMFakeBcd,SMFI,SMLDriver,SMLoad,SMProj,SMTree,SMTreeOps,
	  SMVal,Space,Time,TimeStamp,"js"][AtomImpl,BcdOpsImpl,CedarLinkerOpsImpl,
	  CSImpl,DirectoryImpl,IOImpl,ListImpl,LoaderImpl,LoaderPrivateImpl,PilotLoaderOpsImpl,
	  PilotLoadStateOpsImpl,ProcessImpl,RTLoaderImpl,RuntimeImpl,RuntimeInternalImpl,
	  SMFakeBcdImpl,SMLoadImpl,SMProjImpl,SMTreeOpsImpl,SMValImpl,SpaceImpl,TimeImpl]
	].SMLDriverImpl;
      SMBcdImpl: SMBcd~@SMBcdImpl.mesa!2605549306[CS,FileIO,IO,Rope,SMBcd,
	SMCommentTableOps,SMEval,SMFI,SMFIOps,SMOps,SMProj,SMTree,SMTreeOps,
	SMUtil,TimeStamp,"js"][CSImpl,FileIOImpl,IOImpl,RopeImpl,SMEvalImpl,
	SMFIOpsImpl,SMProjImpl,SMTreeOpsImpl,SMUtilImpl];
      SMDF: TYPE~@SMDF.mesa!2600697937[SMOps,SMTree,"js"][];
      SMDFImpl: SMDF~@DummySMDFImpl.mesa!2600701844[SMDF,SMOps,SMTree,"js"][];
      SML: CONTROL~@SMIntImpl.mesa!2606057368[Buttons,Containers,CS,Directory,
	FileIO,IO,Labels,List,MBQueue,Menus,Rope,Rules,SMBcd,SMComp,SMDF,SMEval,
	SMFI,SMFIOps,SMLDriver,SMOps,SMProj,SMUtil,SMVal,SMTree,SMTreeOps,TypeScript,
	ViewerClasses,ViewerEvents,ViewerIO,ViewerOps,ViewerTools,"js"][ContainersImpl,
	CSImpl,DirectoryImpl,FileIOImpl,MBQueueImpl,IOImpl,LabelsImpl,ListImpl,
	MenusImpl,RopeImpl,RulesImpl,SMBcdImpl,SMCompImpl,SMDFImpl,
	SMEvalImpl,SMFIOpsImpl,SMLDriverImpl,SMOpsImpl,SMProjImpl,
	SMUtilImpl,SMValImpl,SMTreeOpsImpl,TypeScriptImpl,
	ViewerEventsImpl,ViewerOpsImpl,ViewerIOImpl,ViewerToolsImpl]
      ]