TODO
changeset 2879 ac42c37ffbde
parent 2876 99583bd6a7b2
equal deleted inserted replaced
2877:3e82c1ced5e4 2879:ac42c37ffbde
     1 Function definitions
     1 Function definitions
     2 
     2 
     3 - export proofs bout alpha_bn
     3 - nominal_datatype should export proofs about alpha_bn: reflexivity, induction, ...?
     4 - equations like
       
     5 
     4 
       
     5 - nominal_datatype should declare xxx.fv_bn_eqvt as [eqvt]
       
     6 
       
     7 - equations that talk about True/False, for example
     6     | "simp p (App t1 t2) = (if True then (App (simp p t1) (simp p t2)) else t1)"
     8     | "simp p (App t1 t2) = (if True then (App (simp p t1) (simp p t2)) else t1)"
       
     9   do not work (since 'function' does not work)
     7 
    10 
     8   do not work
    11 - equivariance for functions can be derived automatically (knowing termination and
       
    12   equivariance of the graph).
     9 
    13 
    10 Parser should check that:
    14 - for multiple simultanously defined functions, compatibility cases should fold the
       
    15   definition and derive eqvt_at for the folded one
       
    16 
       
    17 - equivariance of the graph for multiple functions does not use equivariance
       
    18   infrastructure
       
    19 
       
    20 Nominal_Datatype Parser should check that:
    11 
    21 
    12 - types of bindings match types of binding functions
    22 - types of bindings match types of binding functions
    13 - fsets are not bound in lst bindings
    23 - fsets are not bound in lst bindings
    14 - bound arguments are not datatypes
    24 - bound arguments are not datatypes
    15 - binder is referred to by name and not by type
    25 - binder is referred to by name and not by type
    16 
    26 
    17 Smaller things:
    27 Smaller things:
    18 
    28 
    19 - maybe <type>_perm whould be called permute_<type>.simps;
    29 - maybe <t1_t2>.perm_simps should be called permute_<type>.simps;
    20   that would conform with the terminology in Nominal2
    30   that would conform with the terminology in Nominal2
    21 
    31 
       
    32 - nominal_induct does not work without an induction rule
       
    33 
       
    34 - nominal_induct throws strange "THM" exceptions if not enough
       
    35   variables are given
       
    36 
       
    37 - nominal_induct cannot avoid a term (for example function applied
       
    38   to an argument).
       
    39 
       
    40 - .induct and .exhaust could be the default methods for induction/cases
       
    41   on nominal datatypes
    22 
    42 
    23 Other:
    43 Other:
    24 
    44 
    25 - nested recursion, like types "trm list" in a constructor
    45 - nested recursion, like types "trm list" in a constructor
    26 
    46