Nominal/Ex/Lambda.thy
branchNominal2-Isabelle2016
changeset 3243 c4f31f1564b7
parent 3242 4af8a92396ce
child 3245 017e33849f4d
equal deleted inserted replaced
3242:4af8a92396ce 3243:c4f31f1564b7
    69 by simp
    69 by simp
    70 
    70 
    71 lemma "Ident x = Ident y"
    71 lemma "Ident x = Ident y"
    72 unfolding Ident_def
    72 unfolding Ident_def
    73 by simp
    73 by simp
    74 
       
    75 thm lam.strong_induct
       
    76 
       
    77 lemma alpha_lam_raw_eqvt[eqvt]: "p \<bullet> (alpha_lam_raw x y) = alpha_lam_raw (p \<bullet> x) (p \<bullet> y)"
       
    78   unfolding alpha_lam_raw_def
       
    79   by perm_simp rule
       
    80 
       
    81 lemma abs_lam_eqvt[eqvt]: "(p \<bullet> abs_lam t) = abs_lam (p \<bullet> t)"
       
    82 proof -
       
    83   have "alpha_lam_raw (rep_lam (abs_lam t)) t"
       
    84     using rep_abs_rsp_left Quotient3_lam equivp_reflp lam_equivp by metis
       
    85   then have "alpha_lam_raw (p \<bullet> rep_lam (abs_lam t)) (p \<bullet> t)"
       
    86     unfolding alpha_lam_raw_eqvt[symmetric] permute_pure .
       
    87   then have "abs_lam (p \<bullet> rep_lam (abs_lam t)) = abs_lam (p \<bullet> t)"
       
    88     using Quotient3_rel Quotient3_lam by metis
       
    89   thus ?thesis using permute_lam_def id_apply map_fun_apply by metis
       
    90 qed
       
    91 
    74 
    92 
    75 
    93 section {* Simple examples from Norrish 2004 *}
    76 section {* Simple examples from Norrish 2004 *}
    94 
    77 
    95 nominal_function 
    78 nominal_function