Nominal/Ex/SingleLet.thy
changeset 2034 837b889fcf59
parent 2028 15c5a2926622
child 2064 2725853f43b9
equal deleted inserted replaced
2033:74bd7bfb484b 2034:837b889fcf59
     1 theory SingleLet
     1 theory SingleLet
     2 imports "../Parser"
     2 imports "../NewParser"
     3 begin
     3 begin
     4 
     4 
     5 atom_decl name
     5 atom_decl name
     6 
     6 
     7 ML {* val _ = recursive := false *}
       
     8 
       
     9 nominal_datatype trm =
     7 nominal_datatype trm =
    10   Var "name"
     8   Var "name"
    11 | App "trm" "trm"
     9 | App "trm" "trm"
    12 | Lam x::"name" t::"trm"  bind x in t
    10 | Lam x::"name" t::"trm"  bind_set x in t
    13 | Let a::"assg" t::"trm"  bind "bn a" in t
    11 | Let a::"assg" t::"trm"  bind_set "bn a" in t
    14 and assg =
    12 and assg =
    15   As "name" "trm"
    13   As "name" "trm"
    16 binder
    14 binder
    17   bn::"assg \<Rightarrow> atom set"
    15   bn::"assg \<Rightarrow> atom set"
    18 where
    16 where
    19   "bn (As x t) = {atom x}"
    17   "bn (As x t) = {atom x}"
    20 
    18 
    21 print_theorems
       
    22 thm alpha_trm_raw_alpha_assg_raw_alpha_bn_raw.intros[no_vars]
       
    23 
       
    24 thm trm_assg.fv
    19 thm trm_assg.fv
    25 thm trm_assg.supp
    20 thm trm_assg.supp
    26 thm trm_assg.eq_iff[simplified alphas_abs[symmetric]]
    21 thm trm_assg.eq_iff
    27 thm trm_assg.bn
    22 thm trm_assg.bn
    28 thm trm_assg.perm
    23 thm trm_assg.perm
    29 thm trm_assg.induct
    24 thm trm_assg.induct
    30 thm trm_assg.inducts
    25 thm trm_assg.inducts
    31 thm trm_assg.distinct
    26 thm trm_assg.distinct
    32 ML {* Sign.of_sort @{theory} (@{typ trm}, @{sort fs}) *}
    27 ML {* Sign.of_sort @{theory} (@{typ trm}, @{sort fs}) *}
    33 thm trm_assg.fv[simplified trm_assg.supp]
    28 thm trm_assg.fv[simplified trm_assg.supp(1-2)]
       
    29 
       
    30 (*
       
    31 setup {* Context.theory_map (Nominal_ThmDecls.add_thm @{thm "permute_pure"}) *}
       
    32 declare permute_trm_raw_permute_assg_raw.simps[eqvt]
       
    33 declare alpha_gen_eqvt[eqvt]
       
    34 equivariance alpha_trm_raw
       
    35 *)
    34 
    36 
    35 end
    37 end
    36 
    38 
    37 
    39 
    38 
    40