# HG changeset patch # User Christian Urban # Date 1268124919 -3600 # Node ID 9ad610f4dbc8b78f98dd8cc23bca9d73bfaa0660 # Parent 75f1d7681a2492713c3a55b233a7f7588e6dd718# Parent 0e32379e452f50ba875874a80226e4288ff5878d merged diff -r 75f1d7681a24 -r 9ad610f4dbc8 Nominal/Test_compat.thy --- a/Nominal/Test_compat.thy Tue Mar 09 09:54:58 2010 +0100 +++ b/Nominal/Test_compat.thy Tue Mar 09 09:55:19 2010 +0100 @@ -20,6 +20,7 @@ "bi (BP x t) = {atom x}" thm alpha_lam_raw_alpha_bp_raw.intros[no_vars] +thm fv_lam_raw_fv_bp_raw.simps[no_vars] abbreviation "VAR \ VAR_raw" abbreviation "APP \ APP_raw" @@ -28,6 +29,20 @@ abbreviation "bi \ bi_raw" (* non-recursive case *) +primrec + fv_lam :: "lam_raw \ atom set" +and fv_compat :: "bp_raw \ atom set" +where + "fv_lam (VAR name) = {atom name}" +| "fv_lam (APP lam1 lam2) = fv_lam lam1 \ fv_lam lam2" +| "fv_lam (LET bp lam) = (fv_compat bp) \ (fv_lam lam - bi bp)" +| "fv_compat (BP name lam) = fv_lam lam" + +primrec + fv_bp :: "bp_raw \ atom set" +where + "fv_bp (BP name lam) = {atom name} \ fv_lam lam" + inductive alpha_lam :: "lam_raw \ lam_raw \ bool" and @@ -42,7 +57,6 @@ | "alpha_lam t t' \ pi \ x = x' \ compat_bp (BP x t) pi (BP x' t')" lemma test1: - assumes "distinct [x, y]" shows "alpha_lam (LET (BP x (VAR x)) (VAR x)) (LET (BP y (VAR x)) (VAR y))" apply(rule alpha_lam_alpha_bp_compat_bp.intros)