equal
deleted
inserted
replaced
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 |