Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2005-01-21 18:25:53 -0800 (Fri, 21 Jan 2005)
Revision: 6469
Log message:

      Added sequent types (but no sequent type checking yet).
      Here are some invariants.
      
      Typeclasses, declaring a new class class1.
      
         declare class1 <- class2
            -- Any term in class2 is also in class1.
      
         declare class1 -> class2
            -- Any term in class1 is also in class2.
      
         declare class1
            -- No subtyping relationship.
      
         -- The term << class1 >> has type << type >>.
         -- The term << class1 >> has typeclass << class1 >>.
      
      Type declarations, declaring a new type << ty{'a; 'b; 'c} >>.
      
         declare type ty{'a; 'b; 'c} : tc
            -- The term << ty{'a; 'b; 'c} >> has type << type >>
            -- The term << ty{'a; 'b; 'c} >> has typeclass << tc >>
      
         declare type ty{'a; 'b; 'c}
            -- The term << ty{'a; 'b; 'c} >> has type << type >>
            -- The term << ty{'a; 'b; 'c} >> has typeclass << term >>
      
      Term declarations:
      
         declare t[typedparams]{typed_bterms} : ty
      
         Typed items include : constraints.  Consider the following
         for example.
      
            declare typeclass foo -> term
            declare type list{'a : type} : foo
            declare nil : list{'a}
            declare cons{'hd : 'a; 'tl : list{'a}} : list{'a}
      
         If a constraint is missing, the type is << term >> by default.
         The term << list{'a : type} >> is a type for any type << 'a >>,
         and << nil >> and << cons{'hd; 'tl} >> have the expected types.
      
         Also, << nil >> and << cons{'hd; 'tl} >> have typeclass << foo >>,
         which is included in << term >>.
      
         The terms << foo >> and << list{'a} >> have type << type >>.
      

Changes  Path
+31 -5 metaprl-branches/opname_classes2/filter/base/filter_cache_fun.ml
+0 -4 metaprl-branches/opname_classes2/filter/base/filter_cache_fun.mli
+0 -1 metaprl-branches/opname_classes2/filter/base/filter_type.ml
+12 -5 metaprl-branches/opname_classes2/filter/filter/filter_parse.ml
+20 -20 metaprl-branches/opname_classes2/filter/filter/term_grammar.ml
+38 -27 metaprl-branches/opname_classes2/refiner/reflib/term_ty_infer.ml
+7 -0 metaprl-branches/opname_classes2/refiner/reflib/term_ty_infer.mli
+7 -1 metaprl-branches/opname_classes2/support/display/perv.ml
+6 -1 metaprl-branches/opname_classes2/support/display/perv.mli
+1 -1 metaprl-branches/opname_classes2/theories/experimental/syntax/syntax_test.ml