Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2005-01-27 19:53:50 -0800 (Thu, 27 Jan 2005)
Revision: 6518
Log message:

      Here is the plan:
         1. Make non-extensible typeclasses.
      
            define typeclass Ty1 =
               TyExp
             | KindExp
      
            Non-extensible means that it is illegal to extend the type
            afterwards.
      
               declare FooExp : Ty1
      
            The reason is because of negative type constraints (step 3).
      
         2. Add non-canonical types.
      
            define type TyElem{'a : Ty1} : Ty
            define type TyElem{TyExp} <--> Exp
            define type TyElem{KindExp} <--> TyExp
      
         3. Add limited dependent types.
      
            declare sequent { TyElem{'a} : ('a :> Ty1) >- Prop } : Prop
      
         4. Add dependent type checking.  This is undecidable *in general*
            but decidable if suitably restricted.
      

Changes  Path
+6 -3 metaprl-branches/opname_classes2/refiner/reflib/term_ty_infer.ml
+6 -3 metaprl-branches/opname_classes2/refiner/reflib/term_ty_infer.mli